External Monitors (HDMI, and DP Alt Mode) not working on Linux

Dear all,

I am quite new to NixOS but managed to get everything working, except one thing: my external portable monitor which uses DP alt Mode (not Displaylink). When connecting it, it has the power to be powered on, but no video signal is being sent to it, and I don’t see it in Hyprland using hyprctl monitors.

My current config: GitHub - clementpoiret/nixos-config: ❄️ NixOs / Hyprland rice with Home-Manager ❄️

I only tried with the dGPU on, both on usual usb-c ports and the usb-c port on the dGPU.

Do you have any clue about the issue?

Thanks a lot!

Here is what I see when I plug the screen:

[  355.424475] ucsi_acpi USBC000:00: GET_CABLE_PROPERTY failed (-5)
[  355.841433] ucsi_acpi USBC000:00: unknown error 0
[  355.841451] ucsi_acpi USBC000:00: UCSI_GET_PDOS failed (-5)

I also see that when I plug extension cards

EDIT: Just in case, I use the cable provided with the screen, which worked well on my previous laptop

I’m also using a portable external screen with my Framework 16, which is working fine on all the usb-c ports that carry the alt-DP signal (2 on the left side, 1 on the right side).
On the dGPU I’ve found that it does not have enough power to power the external screen, if i connect the screen to a separate power supply all is working fine.
I suggest you first try the normal usb-c ports, they should always have a signal, and try some other cables (perhaps you can try the cable from your 180W power supply?), I have noticed that for power and alt-DP the laptop is sometimes picky about the cable quality.

I tried on all possible usb ports, even those not marked as compatible with video output, same thing :confused:
I tried with multiple cables too, all of which worked well on another laptop (arch, not nixos). Maybe I misconfigured something with AMD drivers ?

Indeed there could be something wrong with the OS/driver configuration, perhaps you can try booting from a recent Ubuntu 24.04 live iso? It should have recent amdgpu drivers, so perhaps that will work. Also it is a supported Linux distro, so if things still don’t work, you can take it to the official Framework channels.

By the way, are you running X or Wayland? And which desktop environment? I have found that the right combination here is also important to success. Not all DE’s are ready for Wayland, and not all modern gpu features are available on X. Sometimes a reboot with the external screen already connected can also make a difference.

I tried what you suggested, I had a kubuntu 24.04 iso so I tried it there too, same issue.
The thing is that I also tested with “real” monitor, plugged using HDMI (directly on the HDMI extension card), and the screen is not detected, both on NixOS and Kubuntu.

On NixOS I am using Wayland, with Hyprland. My hyprland config is nearly identical as on my previous laptop where everything worked, the only difference is that I now have Hyprland 0.41, i.e. the release with most wlroot dependencies removed / reimplemented from scratch.

I updated the title of the thread as apparently my issue is neither specific to dp alt mode, nor NixOS…

I also tried on a EndeavourOS ISO. I am on the latest bios (v3.03), and tried to reset all my settings by “loading optimal defaults”. No success…

If a supported distro (e.g. Ubuntu 24.04 or Fedora 40) does not work, and you have tried multiple ports and cables, then I suggest you contact Framework support, because there may be a hardware issue.
Do make sure that you have tried an officially supported distro and desktop environment, because that can make all the difference.

1 Like

Thanks, I’ll contact the support :smiling_face_with_tear:
Anyway, thanks for your time!

Okay I am not giving up! I found something interesting. I read on reddit there were issues with usb conflicts, and handling both powering the external screen and sending the video signal so I tried one of the quickfix:

  1. plug the external screen on a power bank to turn it on a give it power,
  2. plug the usb cable between the laptop and the screen,
  3. the screen is correctly recognized and I can use it! However, as soon as a unplug the power bank, it stops working even though it is still connected to the laptop.

Any idea?

EDIT: it happens also for other users (FW13 here) https://www.reddit.com/r/framework/s/Ep6P8vJ3tK

Hey, sorry to bother you again.
After days of discussion with the support, and showing that the monitor works on all laptops, except the framework ones (both FW13 and FW16), the support tells me it is my monitor that has a problem.

May I know the reference of yours please? This would allow me to check if this one works. Thanks!

The usb-c ports on the FW16:
Ports 1,2,4,5: 15W output
Ports 3,6: 4.5W output.
Usb-c at the back: 0W output. (Not sure on this one)

My guess is your display needs more than 15W so it needs powering separately.

I specifically chose the Arzopa Z1C (FHD, 60Hz) for its low power consumption, it is declared to be using 8W :confused:

It is a little unclear what you are trying to do and what you are using to do it.

  1. can you post the output of “dmesg” after starting from power off, with the display already plugged in, then power on, login, then collect dmesg.
  2. with that setup, say which slot is being used.
  3. which slot card type
  4. any 3rd party adapters being used.
  5. which cable: usb-c, hdmi, dp etc. Between laptop and screen.
  6. the screen make, model.

Generally best to plug displays, faster, more power hungry devices into Slot 1 or Slot 4 (These ports seem to have the best USB compatibility)
Plug Power Bricks into Slot 2 or Slot 5
Plug slower devices into Slot 3 or Slot 6

The manual for the Arzopa Z1C says:
“Please ensure the connected device or power adapter can supply a minimum power of 5V / 2.4A”
So, that is 12W minimum, but still less that 15W the FW16 can do, so should be ok.

Thanks for your clarification.

As also requested by the support I:

  • Booted a live usb of Fedora 40,
  • Connected the screen,
  • Collected the following logs: demidecode · GitHub

I am on the latest bios version, I tried the screen on all possible slots, with and without a usb-c expansion card, with the laptop being plugged or not.

I used no thirdparty cable nor hub, I used only the stock usb-c cable, the one with which the screen is working on other laptops.

For the sake of reference, this looks like the same issue as: DisplayPort over USB-C not working (AMD 13)

May it be related to AMD Framework USB-C charger compatibility issues ?

As mentioned in the first linked thread, I just ordered a USB 4, thunderbolt compatible cable, which solved the issue for at least one user.

There is a GPU crash in that dmesg on github.
So, I think this is likely to be an AMD GPU driver bug.
Do you have any other PC/Laptop with an AMD GPU and boot that same Live usb Fedora 40 on, and see if it works?
The important comparison is that the other device has an AMD GPU. If an intel GPU works, it will not be helpful.
Something to try would be to try a more recent Linux Kernel. AMD might have fixed the bug in it.
I have looked at the latest 6.10-rc7 kernel, and it does not seem to have fixed this problem.
So, you might be better reporting this problem to the linux amd-gfx mailing list.

1 Like

Unfortunately I do not have any other PC with an AMD GPU :confused:
The thing is, if it was a graphics issue, why does the screen work when it is already plugged on an external power bank? Wouldn’t it crash in this case too? Or does graphics driver also play a role in power delivery?

But thanks for your suggestion, I’ll report the issue there too.

The crash is shown in the dmesg output.

  1. Try boot up without external display, see if any stack traces are in dmesg output.
  2. plug in alternative power to the display, then plug it into the usb-c port of the laptop. See if any stack traces are in dmesg output.
  3. unplug display, remove alternative power, then plug it into the usb-c port of the laptop. See if any stack traces are in dmesg output.

If the stacktrace only appears in (3), you have your answer.