我が家のディスプレイの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