[分享] 罕見 HDMI 只能輸出單聲道解決方式

作者: s9209122222 (海海海)   2021-11-24 13:14:56
不久前我其中一篇發文內有提到 HDMI 只能輸出左聲道的問題,
因為 TV EDID 無法正常傳送給電腦,所以必須套用其他 EDID,
這狀況困擾了我好幾年,MPV 播放影片只能夠強迫輸出單聲道,
否則影片對白音量會過小,特效音量過大,不管哪個桌面皆是,
也嘗試過在 PulseAudio 與 PipeWire 與 ALSA 之間切換使用,
最終心力交瘁失敗收場,但前幾天被我運氣好找到解決的方式。
1. 複製另一臺螢幕的 EDID 檔至家目錄並命名 edid.bin
$sudo find /sys/devices/pci*/*/*/*/*/*HDMI* -name "*edid*"
$sudo cp <屬於您輸出裝置的 edid> ~/edid.bin
2. 在 /lib/firmware/ 下自創 edid 資料夾
$sudo mkdir /lib/firmware/edid
3. 複製 EDID 至 /lib/firmware/edid/
$sudo cp ~/edid.bin /lib/firmware/edid/
4. 編輯 /etc/default/grub,在 kernel command line 加入選項
$sudo vim /etc/default/grub
找到 GRUB_CMDLINE_LINUX_DEFAULT=""
在 "" 內加入 drm.edid_firmware=edid/edid.bin
5. sudo grub-mkconfig -o /boot/grub/grub.cfg
6. 重開機
以上步驟結束後可能會有用,但下次電腦、電視重開後就會失效。
以下就是我暫時解決的方法,只能說這到底是什麼智障 bug!
1. 同樣編輯 /etc/default/grub,將先前設定的 edid.bin 改成內建 EDID
找到 GRUB_CMDLINE_LINUX_DEFAULT=""
將 drm.edid_firmware=edid/edid.bin 更改爲 drm.edid_firmware=edid/1920x1080.bin
2. 如先前一樣,更新 grub.cfg 後重開機
這時會發現只有畫面能正常輸出,HDMI 音效輸出完全失效。
3. 編輯 /etc/default/grub 將剛剛設定的 1920x1080.bin 改回 edid.bin
4. 更新 grub.cfg 重開機
5. DONE
四處求救找不到方法,結果卻因為這種蠢方式意外發現解法……
作者: OrzOGC (洞八達人.拖哨天王)   2021-11-26 12:58:00
不考慮加入linux開發者群?
作者: Bencrie   2021-11-26 21:02:00
你有把 edid.bin 塞進 initramfs 嗎
作者: s9209122222 (海海海)   2021-11-26 22:48:00
怎麼塞,求解照 Archwiki 文件是說改 grub 內參數就好了呀
作者: Bencrie   2021-11-27 17:35:00
我是不知道指定 edid 會什麼時候 load 起來但是如果 drm/kms 有在 initramfs 的話應該是要跟著進去
作者: fourdollars (四元)   2021-12-08 11:37:00
可以先用 edid-decode 檢查一下 EDID 的內容參考 EDID 規範 https://bit.ly/3lK3Td9 看問題在哪
作者: shadowjohn (轉角遇到愛)   2021-12-25 15:14:00
有點意思

Links booklink

Contact Us: admin [ a t ] ucptt.com