[分享] 罕见 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