不久前我其中一篇发文内有提到 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
四处求救找不到方法,结果却因为这种蠢方式意外发现解法……