[RESOLVED] AMD 7640u Debian 12 - External Monitor no longer working

Hello,

I installed Debian 12 on my Framework 13 AMD 7640u earlier today.

Everything worked great out of the box, except for the suspend issue mentioned on this board previously (which I was able to fix thanks to the firmware update).

I currently use a secondary monitor with my laptop, and on first boot it worked perfectly on Debian 12 using Gnome + Wayland.

However, after installing some apps I rebooted the computer, and ever since my second monitor no longer shows any picture. It is, however, still recognized in settings.

Some things I’ve tried thus far to fix it:

-Switching between HDMI and Display Port
-Re-installing AMD GPU drivers and using the non-free ones
-Logging out then re-logging in with Gnome + Xorg
-Plugging the DP/HDMI in and out

After uninstalling and re-installing the amd gpu drivers I still get the following message when I boot:

amdgpu 0000:cl:00.0: firmware: failed to load amdgpu

None of these have worked unfortunately, so I thought I’d ask here in case someone is experiencing a similar problem and/or has a solution.

Thank you

1 Like

Manually load the updated Linux GPU firmware.

Debian 12 ships an outdated snapshot.
See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1053856.

2 Likes

Hi Mario,

Thanks for replying.

I just want to double check that I’m on the right track, does this mean I need to get the updated firmware from here?

I already ran the following which confirmed that’s the firmware I’m currently on.

sudo apt-get install firmware-amd-graphics
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
firmware-amd-graphics is already the newest version (20230210-5).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

From my understanding the bug report states that this version works, but my monitor issue persists.

Thank you,

That version is ancient. Get a newer snapshot.

You can manually clone the repo and get everything in amdgpu/
kernel-firmware / Linux Firmware · GitLab and put it in /lib/firmware/updates/amdgpu

1 Like

Thank you,

This worked :).

Please make noise in Debian to get this fixed. You’re like the 8th person raising it.

1 Like

Hi, thanks for your investigation, I’m a Debian Developer (but not working on kernel stuff) and I got my framework 13 amd yesterday, I will try to push to make this fixed ASAP.

4 Likes

Thanks!
When you push for getting it fixed have the whole directory snapshot get updated. Otherwise this is going to be repeated again with the 16" model and dGPU it can have.

1 Like

What would the commands for this be? I’m trying to get Debian running but it goes black immediately after the login screen - it seems like this is the most likely solution but I am not super tech savvy. It’s the distro I remember using and I’m trying to give Linux a shot again.

You can follow this: Firmware - Debian Wiki.
I used the URL suggested by @Mario_Limonciello in [RESOLVED] AMD 7640u Debian 12 - External Monitor no longer working - #5 by Mario_Limonciello instead of git.kernel.org.

So i would do the following:

  1. after the screen goes black, go to tty2, for example, with CTRL + ALT + F2 and log in.
  2. Remove the firmware-amd-graphics package since it’s ancient: sudo apt purge firmware-amd-graphics
  3. Download https://gitlab.com/kernel-firmware/linux-firmware/-/archive/main/linux-firmware-main.zip?path=amdgpu (this will give you a zipfile with only amdgpu firmware, extract the zipfile and put them in /lib/firmware/amdgpu¹.
  4. run sudo update-initramfs -c -k all
  5. reboot

Hope this help!

¹ @Mario_Limonciello suggested /lib/firmware/updates/amdgpu but at first when I got firmware from git.kernel.org it did not worked. I did not checked if git.kernel.org is not updated as the gitlab repository (this snapshot from gitlab worked for me) or is something Debian specific, but anyway since I also removed firmware-amd-graphics package, the path /lib/firmware/amdgpu doesn’t exist and you can move the directory with the manually firmware.

Hey guys,

Just wanted to flag that this update messed up the AMD GPU drivers once more (https://i.imgur.com/NtVGcRU.png).

(Not sure why intel stuff was in there, or does it not matter?)

At first, I got the same issue with the blackout upon log in screen and my external display no longer being recognized at all.

dmesg | grep -i amdgpu gave me the following:

1.895868] [drm] amdgpu kernel modesetting enabled.
[ 1.898911] amdgpu: Ignoring ACPI CRAT on non-APU system
[ 1.898913] amdgpu: Virtual CRAT table created for CPU
[ 1.898919] amdgpu: Topology: Add CPU node
[ 1.898955] [drm:amdgpu_pci_probe [amdgpu]] ERROR amdgpu requires firmware installed
[ 1.899078] amdgpu: See Firmware - Debian Wiki for information about missing firmware

I once again cloned the repo that Mario provided above, and rebooted my system, this fixed the login screen blackout issue. However, my external display is once again not recognized by my system.

Edit: The login screen now blacks out after 5-10 seconds if I don’t log in in time.

Something seems wrong with how Debian is handling the updates directory.

I’d suggest removing the package providing the firmware and placing it in /lib/firmware/amdgpu instead.

Thanks again, Mario, got it working now.

Great. I do think you should raise this with debian though. Their kernel patch breaking the updates directory isn’t expected.

To be honest their patch to look for firmware makes NO SENSE at all. Amdgpu internally checks for missing firmware since kernel 6.2 and will abort init before it does actions that can cause the system to lose the framebuffer provided by the system firmware.

Something seems wrong with how Debian is handling the updates directory.

Yes Debian finally fixed it by dropping amdgpu part of the broken patch.

1 Like

@Mario_Limonciello’s solution worked for me, although the reason why I did it was because resizing windows in Chromium based apps were making my system crash…this (plugging in an HDMI cable not working) was the other nagging problem, though.

The only caveat is that I’ve found that when I plugged in a third monitor using a USB-C to HDMI adapter it might not always work. However, the solution to that is to use lsusb to find the device and then use usbreset to reset it (use this StackExchange response as a reference). Using usbreset and maybe unplugging it and putting it back in should do the trick, and failing that running usbreset again and plugging it into another screen compatible port.