[SOLVED] Linux support for USB-C to HDMI on AMD RX 7700S? (Yes, lspci wakes it up)

Hi Folks,
Wanted to see specifically for the framework 16’s GPU, the RX 7700S, whether there was linux support for USB-C (on the laptop) to HDMI, or for that matter if I needed to plug into a specific USB port for that to work?

I am running Garuda Linux (Arch Linux variant that enables all the AMD CPU/GPU performance goodies by default), and can’t seem to get my monitor working… I know for example the linux driver for the RX 7900 XT is broken for usb-c support, so I was hoping to find out if I was on a “fools errand” before I spent time debugging…

Does anyone have USB-C video output working on the FW16, and did you have to make any tweaks?

Works fine for me on Ubuntu.

I have not gotten that port working on Fedora Silverblue 40. I’d be curious who it’s working for and how.

The FW16 supports DP alt mode, not DP+
One therefore needs a slightly more expensive active DP to HDMI Adapter. The USB C to HDMI expansion slot card does this.

I have been unable to get a video signal when trying to connect a display port cable to the back of the 7700S using the Framework DP expansion card.

@Ollie_Crumwell
Have you managed to get DP output working on any of the side card slots? It is supposed to work on 3 out of the 6 ports.

I have on all 3 of the listed supported expansion slots.

@Ollie_Crumwell
It should work plugging an DP expansion card into the back slot. I don’t have the 7700 myself, but have seen people on YouTube do it.

So I am specifically wondering about USB-C to HDMI; not DP.

I have a couple monitors with HDMI via USB-C input connections (no displayport) that I would like to use but have been unsuccessful on Arch and Fedora. The monitors work on wintel for my Lenovo laptops with usb-c, but would rather not install windows 11 on the framework 16 just to check.

Try running lspci or any sensor application to wake up the GPU.

The HDMI over USB-C standard is long dead (and was flawed from the beginning).

USB-C to HDMI adapters use DisplayPort over USB-C internally and then have a DisplayPort to HDMI protocol conversion chip.

So it relies on the DisplayPort capabilities of the GPU and OS, not any HDMI capabilities.

@DaveWK
What is the Make/Model of the monitor do you have?
I think laptops with DP+ might work with your monitor, but the FW has DP, not DP+
DP has Display Port Alt mode, no HDMI alt mode
DP+ has Display Port alt mode, and HDMI alt mode.
I think you need a USB-C port with HDMI alt mode support.

Ah, that did it. Using the Framework HDMI expansion card to connect the dGPU directly to a monitor via an HDMI cable WHILE an application that was using the dGPU was running had the monitor light right up. Thank you!

nailed it – thanks! After I ran lspci it detected the monitor.

@Kyle_Reis not sure but I see this in dmesg which would suggest it’s HDMI:
snd_hda_codec_hdmi hdaudioC0D0: HDMI: Unknown ELD version 0

I have the framework 16 laptop with a 7700S.

Edit: My monitor does not have a displayport port, and only has 2 USB-C connectors (one for signal, one for power) and an HDMI mini. I connected 2 USB-C cables (no HDMI converter) and it started working. This is a KUU brand 15" portable monitor that runs at 144hz.

Those don’t exist.

The HDMI alt mode feature of the USB-C standard was crippled when it was released and never updated (and then discontinued).

Afaik no company ever mass produced any chips for HDMI alt mode and no laptop (or other mass produced device) has support.

Instead the DisplayPort Alt Mode is used in conjunction with DisplayPort to HDMI protocol converter chips (such as the PS186 that is used in Framework’s HDMI expansion cards).

Glad that worked for you guys. In my opinion, this should be something that opening up display settings in your DE does (wakes up all GPUs).

What this boils down to is that the dGPU is totally off (it’s in D3cold) so there is no hardware circuity active that can detect the hotplug event. When the dGPU is woken up from software it checks for anything connected and goes through training.

Windows wakes it up a lot more regularly so you don’t see this happen in Windows as much.

1 Like

I think something else is at play here. I noticed in dmesg:

[   57.103114] [drm] Seamless boot condition check passed
[   57.103674] [drm] Display Core v3.2.273 initialized on DCN 3.1.4
[   57.103677] [drm] DP-HDMI FRL PCON supported
[   57.105765] [drm] DMUB hardware initialized: version=0x08003A00
[   57.107838] snd_hda_intel 0000:c4:00.1: bound 0000:c4:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])

it seems something called “DP-HDMI2.1 PCON” is available even without using an HDMI expansion card, and seems to suggest it has some built-in ability to convert DP to HDMI

@Kyle_Reis
I agree with Kyle.
USB-C HDMI alt mode - Standard exists, can you actually buy it: No. No one actually makes it.

Some Graphics cards have Display Ports that support DP+.
DP+ → Passive HDMI adapter → HDMI display. ← Exists, but not on FW13/FW16
USB-C → (mostly) Passive DP adapter → DP display ← Works on the FW13/FW16 using the DP expansion card using something called DP-alt-mode.
USB-C → (mostly) Passive DP adapter → Active DP-to-HDMI → HDMI Display ← Works on FW13/16 using the DP expansion card and an external active DP-to-HDMI adapter. It will not work with a Passive DP-to-HDMI adapter.
USB-C → HDMI expansion card → HDMI Display ← This does the equivalent of DP adapter + Active DP-to-HDMI.

@Dave
DP-HDMI2.1 PCON is just a method to support active DP-to-HDMI adapters a bit better.
You still need the active DP-to-HDMI adapter, a passive DP-to-HDMI adapter will not work.

Hmm, so I am a bit puzzled. I am not using any adapter/plug between the rear dGPU USB-C port and the monitor, which is also USB-C and by all accounts the monitor only can “speak HDMI” and has no dp support.

I also have no HDMI expansion cards (ended up buying one but its in the mail) and removed the USB-C->DP card I had in the side port.

So it seems as though at least the FW16 does have some sort of USB-C->DP->HDMI conversion out of the box with the 7700S dgpu without needing the physical USB->HDMI expansion card.