amdgpuにファイルに入ったEDIDを喰わせる手順のメモ

我が家のディスプレイの1つにEDIDをちゃんと返さない不調があるので、ビデオカードを交換したときに対応したメモ。

適当なディレクトリにedidが入ったファイルを置く

# mkdir /lib/firmware/edid
# cp benq-edid.bin /lib/firmware/edid

initramfsにファイルを追加する設定

/etc/dracut.conf.d/99-local.conf

install_items+="/lib/firmware/edid/benq-edid.bin"

EDIDファイルを利用する設定

EDIDがない状態でdmesgを見るとエラーを出力しているのでポートの名前(DVI-D-1)がわかる。

エラーの例

Jul 13 14:36:31 dragon kernel: amdgpu 0000:01:00.0: DVI-D-1: EDID is invalid:
Jul 13 14:36:31 dragon kernel:         [00] BAD  a1 a1 ff 01 a1 ff ff 00 09 d1 0a 78 45 54 00 00
Jul 13 14:36:31 dragon kernel:         [00] BAD  10 12 01 03 80 34 20 78 2e c5 c4 a3 57 4a 9c 23
Jul 13 14:36:31 dragon kernel:         [00] BAD  12 4f 52 a5 6b 80 71 00 81 00 95 00 81 80 b3 00
Jul 13 14:36:31 dragon kernel:         [00] BAD  a9 40 d1 00 01 01 28 3c 80 a0 70 b0 23 40 30 20
Jul 13 14:36:31 dragon kernel:         [00] BAD  36 00 07 44 21 00 00 1a 00 00 00 ff 00 45 34 38
Jul 13 14:36:31 dragon kernel:         [00] BAD  30 35 30 31 37 53 4c 30 0a 20 00 00 00 fd 00 32
Jul 13 14:36:31 dragon kernel:         [00] BAD  55 1f 5e 11 00 0a 20 20 20 20 20 20 00 00 00 fc
Jul 13 14:36:31 dragon kernel:         [00] BAD  00 42 65 6e 51 20 47 32 34 30 30 57 0a 20 00 06
Jul 13 14:36:31 dragon kernel: [drm:dc_link_detect [amdgpu]] *ERROR* No EDID read.

ディスプレイとEDIDの対応づけはdrm_kms_helperモジュールがやるので以下オプションをmodprobeの設定に書く。

/etc/modprobe.d/drm-kms-helper.conf

options drm_kms_helper edid_firmware=DVI-D-1:edid/benq-edid.bin

dracutでinitramfs再構成

# dracut --force /boot/initrd.img-4.19.0-5-amd64 

参考リンク