[RESPONDED] HDMI display limited to 640x480 on AMD Ryzen 7040

Hi, I received the Framework 13 with AMD CPU today, and up until now this is a really nice machine. I can only regret that 4 ports is going to be short and I can’t wait to find dual USB expansion cards.

However, I have a problem connecting an external monitor. It seems that the monitor is not properly recognized. When I use the HDMI expansion card I bought with the Framework, it shows the external monitor as DP-2 (or DP-3 or DP-4 depending on the port location) and the only resolution available is 640x480.

Running Fedora 40 with KDE Plasma on Wayland.

edit: workaround is to override the EDID data: [RESPONDED] HDMI display limited to 640x480 on AMD Ryzen 7040 - #10 by Mildred

After disabling secure boot, I tried playing with the EDID file of my monitor and sending it to /sys/kernel/debug/dri/1/DP-3/edid_override (when the monitor is connected to DP-3). Unfortunately it does nothing.

What port do you have the card in?

Tried all 3 ports that support the HDMI expansion card. DP-3 is the USB4 port on the left, closest to the hinge.

Can you swap your session to X11 or if you’re using X11 to Plasma Wayland and check behaviour.

With X11 I have slightly more options, but none above 640x480

May we also know the make and model of the external monitor?

Well, the monitor is a Belinea o.display 24" wide model BB10004

It worked well with other computers, but it may well be a compatibility issue with it. I had the opportunity to test the framework 13 with a videoprojector and I get all resolutions correctly.

Looking at dmesg, I should have done it since the beginning, shows an error.

For some reason when I plug HDMI I get a USB disconnect/reconnect but there is an error EDID has corrupt header that would explain the problem. I don’t know however why I was not able to override the EDID using the Linux debugfs.

[55960.906376] usb 5-1: USB disconnect, device number 12
[55962.060449] xhci_hcd 0000:c3:00.3: Refused to change power state from D0 to D3hot
[55963.542591] EDID has corrupt header
[55963.547680] amdgpu 0000:c1:00.0: [drm] *ERROR* EDID checksum invalid.
[55963.772388] usb 5-1: new full-speed USB device number 13 using xhci_hcd
[55963.935418] usb 5-1: New USB device found, idVendor=32ac, idProduct=0002, bcdDevice= 0.00
[55963.935434] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[55963.935439] usb 5-1: Product: HDMI Expansion Card
[55963.935444] usb 5-1: Manufacturer: Framework
[55963.935449] usb 5-1: SerialNumber: 11AD1D00E2AD4019340F0B00
[55964.006277] hid-generic 0003:32AC:0002.000E: hiddev96,hidraw3: USB HID v1.11 Device [Framework HDMI Expansion Card] on usb-0000:c3:00.3-1/input1

I found a workaround. When I tried before to override the EDID, it did not work because override EDID is only applied when the monitor is replugged.


The workaround is as follows as root:

cat/path/to/your.edid >/sys/kernel/debug/dri/1/DP-2/edid_override
echo 1 > /sys/kernel/debug/dri/1/DP-2/trigger_hotplug

changing DP-2 depending on where you plugged the monitor.

There is also a trick to enable it on boot via the kernel command-line, but I prefer to keep the control of that.

I’ll have to see if in another computer I have this EDID error in dmesg too. To know if it comes from the monitor which got a corrupted EDID or if is a problem with the GPU driver.

There is no issue on another linux machine (Pinephone with USB-C dock having a HDMI port). dmesg just says:

[ 2471.666277] sun8i-dw-hdmi 1ee0000.hdmi: EVENT=plugin
[ 2471.666326] sun8i-dw-hdmi 1ee0000.hdmi: read_hpd result: 1
[ 2471.666572] anx7688 0-0028: DP state changed to 0x0302
[ 2472.681471] anx7688 0-0028: DP state changed to 0x040a
[ 2473.705509] anx7688 0-0028: DP state changed to 0x0502
[ 2475.753528] anx7688 0-0028: DP state changed to 0x0700

All resolutions are available.

Also and obvious one. Change the HDMI cable

When did you buy the HDMI card, for the record? I think there were two revisions of it- the original and v2.

I bought the expansion card with the FW13, 7 days ago. I’ll also check the cable. However the workaround is good for me now.

edit: it’s marked 3rd gen on the expansion card

Ah, I have the 2nd gen card that had more problems previously. Good to know the third revision seems to be working out.