I have a custom board/display for my Raspberry Pi CM4. It’s worked great for the last two years or so, up until and including Linux kernel 6.1.77-v8 in/around Balena OS 6.4.2. Today I tried to upgrade to BalenaOS 6.4.3+rev1 and now the display on my device isn’t working any longer. I have pinpointed it to the updated Linux kernel in 6.12.1-v8 and it’s probably due to the fact that my hardware doesn’t have an EDID EEPROM chip (it’s a driver chip connected directly to the HDMI output on the CM4 and I’ve had to specify a cmdline.txt option to set the video mode). But now with the latest kernel I’m getting this error in dmesg
:
[ 0.626997] vc4-drm gpu: [drm] *ERROR* Failed to get ddc i2c adapter by node
followed by a ton of:
[ 0.895312] vc4-drm gpu: [drm] HDMI Sink doesn't support RGB, something's wrong.
And the display isn’t working. My application starts up, but I can’t see anything. I’ve tried a variety of ways to set the edid with a custom file, but for the life of me I can’t figure it out. I saw this post:
But it’s either out-dated, or it doesn’t work. I’ve tried to put my edid.dat file in various locations, granted it may not actually be there during boot time, but I figured at least it would be in /mnt/boot
since that’s where the cmdline.txt is loaded from, but I still get this in dmesg:
[ 1.006250] [drm] Initialized vc4 0.0.0 for gpu on minor 0
[ 1.006364] vc4-drm gpu: Direct firmware load for /mnt/boot/edid.dat failed with error -2
[ 1.006373] vc4-drm gpu: [drm] *ERROR* [CONNECTOR:33:HDMI-A-1] Requesting EDID firmware "/mnt/boot/edid.dat" failed (err=-2)
[ 1.007292] vc4-drm gpu: Direct firmware load for /mnt/boot/edid.dat failed with error -2
[ 1.007297] vc4-drm gpu: [drm] *ERROR* [CONNECTOR:33:HDMI-A-1] Requesting EDID firmware "/mnt/boot/edid.dat" failed (err=-2)
[ 1.008667] vc4-drm gpu: [drm] HDMI Sink doesn't support RGB, something's wrong.
This is what the section in cmdline.txt looks like: drm.edid_firmware=/mnt/boot/edid.dat
.
I don’t know if it’s hard-coded in the kernel to only allow a relative path under /lib/firmware
, or what could be the issue?