Framework 13 AMD 7840U - HDMI issues

Hi,

I’m currently running Ubuntu 22.04 (Jammy) with Linux 6.8.0-40-generic from Canonical’s Linux Kernel Team’s PPA. The BIOS version is the latest one, 3.05. The machine is a Framework 13 AMD Ryzen 7840U.

My expansion card configuration is:

  • Front left: USB-C
  • Rear left: USB-A
  • Front right: USB-C
  • Rear right: HDMI

When I plug my external HDMI monitor in, nothing happens. dmesg shows me this:

[   65.205654] amdgpu 0000:c1:00.0: [drm] Alt mode has timed out after 216 ms

If I leave the monitor plugged in, eventually a stack trace shows up. Unfortunately I don’t have one handy; I’ll post it later if when I manage to reproduce.

Here’s what I’ve tried:

  • Initially I tried running the regular OEM Linux kernel (6.5.0.1027.29), but the same problem was happening.

  • I obviously tried rebooting the machine.

  • I decided to upgrade to the latest OEM kernel from the PPA mentioned above, whose version is 6.8.0-40.40~22.04.3. Still seeing the same problem.

Interestingly (and strangely), I have a USB hub connected to one of the USB-C ports (front right), and when I plug the HDMI cable into it everything works as expected.

Another point worth making: I have just upgraded this machine using the AMD mainboard (it was an Intel 12th gen). After the first boot, I connected the HDMI cable directly to the rear right card and it worked. I then had to reboot the machine for another reason, and since then I’m seeing this problem.

I don’t think this is a hardware issue. Anyone else have any ideas on what could be the problem here?

Try turning off runtime PM on the HDMI card with sysfs. I wonder if that’s causing an issue?

Thanks for the reply, @Mario_Limonciello.

That reminds me of something else, actually. Although I have enabled your PPA, I am still using tlp instead of power-profiles-daemon. Now I wonder if that’s significant enough to cause this issue…

It’s way past bedtime here, but I will give it a try tomorrow. Thanks.

OK, I had a chance to test this now, but unfortunately the problem persists.

I installed @Mario_Limonciello’s power-profiles-daemon, set /sys/class/drm/card0/device/power_dpm_force_performance_level to high, but nothing works (except my USB-C hub).

Interestingly, xrandr reports the following:

Screen 0: minimum 320 x 200, current 2256 x 1504, maximum 16384 x 16384
eDP connected 2256x1504+0+0 (normal left inverted right x axis y axis) 285mm x 190mm
   2256x1504     60.00*+  48.00  
   1920x1200     60.00  
   1920x1080     60.00  
   1600x1200     60.00  
   1680x1050     60.00  
   1280x1024     60.00  
   1440x900      60.00  
   1280x800      60.00  
   1280x720      60.00  
   1024x768      60.00  
   800x600       60.00  
   640x480       60.00  
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 disconnected (normal left inverted right x axis y axis)
DisplayPort-2 disconnected (normal left inverted right x axis y axis)
DisplayPort-3 disconnected (normal left inverted right x axis y axis)
DisplayPort-4 disconnected (normal left inverted right x axis y axis)
DisplayPort-5 disconnected (normal left inverted right x axis y axis)
DisplayPort-6 disconnected (normal left inverted right x axis y axis)
DisplayPort-7 disconnected (normal left inverted right x axis y axis)

which is corroborated by sysfs:

# cat /sys/class/drm/card0-DP-*/status 
disconnected
disconnected
disconnected
disconnected
disconnected
disconnected
disconnected
disconnected

In other words, it doesn’t detect my monitor at all.

So I’m meaning specifically runtime PM on the USB end point for the card. Can you turn that off?

I took the output from lsusb and found that the HDMI adapter is plugged into /sys/bus/usb/devices/1-1/, so I did:

echo on | /sys/bus/usb/devices/1-1/power/control

It seems that this is all that’s needed to disable runtime PM on the USB interface? But unfortunately it didn’t work. I removed the HDMI cable and plugged it in again, to no avail.

Yeah that’s what was needed, unfortunate to hear still having problems.

I have a similar problem: display not detected.
With a FW16 AMD and display port expansion card.
Is there a debug setting for the amdgpu linux driver that will log messages about connect/disconnect events so one can diagnose this further? I am wondering if the cause might be swing or pre-emphasis negotiation not working well.
So, debug showing this negotiation would be helpful.

Yeah you can turn up drm debug logging and you’ll see all the hotplug events the driver sees.

FWIW, before I do this I will download a Fedora/Ubuntu live image and test with them.

I noticed I made a mistake when describing my expansion port configuration. It’s actually:

  • Front left: USB-A
  • Rear left: USB-C
  • Front right: HDMI
  • Rear right: USB-C

After some more testing with the live images, I was (accidentally) able to come up with a way to make the card work. If I remove the HDMI adapter and insert it again (with the computer still running), my monitor is recognized and things seem to work. This workaround worked with the Ubuntu 24.04 live image, but also with my Ubuntu Jammy system.

I did not have this problem with my previous Intel 12th gen configuration, so I’m thinking about opening an official ticket/support request with Framework.

FWIW, after a long exchange of emails with Framework support, it seems like the problem may be the fact that I’m using a 1st Gen HDMI adapter. At least we couldn’t find anything else that can explain what’s going on, and why disconnecting and reconnecting the adapter after boot fixes the issue.

Have you tried to see if it works every time on another device without replugging? Like a USB-C dongle.

I wonder if the device shows differently at all say in lsusb after booting and after replugging?

Found a guy that had the issue on Arch but it went away. Slimbook laptop.

https://bbs.archlinux.org/viewtopic.php?id=296117

Also the user had the same issue by it away Video out through USB-C? - #15 by motzky80 maybe a kernel issue but also the HDMI module might get into a weird state.

Does it work on an old kernel? Maybe try the sameish version that guy used on a livecd

Can confirm that it still works with Kernel version 6.10.5.

Thanks.

I haave already tried older Linux kernels (last one was 6.5), to no avail. And I tried 6.8 on Fedora and Ubuntu, with the same results.

I went ahead and ordered a 3rd Gen HDMI adapter; it should arrive in a few days. I’ll report back when I test it.

One user seemed to think a kernel caused the module to get into a weird state or perhaps a certain controller on the mainboard. So unsure. Could it be preboot environment is doing something? I only have a 3rd gen one.

Edit: Wondering if you’ve done a full board reset?

OK, my 3rd Gen HDMI adapter arrived and I was able to confirm my suspicions: it works as expected.

My take from all this saga is this: 1st Gen HDMI adapters may not work with AMD Ryzen mainboards. Be careful if you’re upgrading your machine and have a 1st Gen HDMI adapter; it’s best to go for the 3rd Gen.

@parawizard, regarding the full board reset: yeah, I had done it as part of the troubleshooting I did with the Framework support team. It didn’t help.

1 Like