Skip to content

External USB-C display intermittently stops working; fwupdmgr reinstall + reboot reliably restores it #194

@Warbo

Description

@Warbo

Device Information

System Model or SKU

Please select one of the following

  • Framework Laptop 12 (13th Gen Intel® Core™)
  • Framework Laptop 13 (11th Gen Intel® Core™)
  • Framework Laptop 13 (12th Gen Intel® Core™)
  • Framework Laptop 13 (13th Gen Intel® Core™)
  • Framework Laptop 13 (AMD Ryzen™ 7040 Series)
  • Framework Laptop 13 (AMD Ryzen™ AI 300 Series)
  • Framework Laptop 13 (Intel® Core™ Ultra Series 1)
  • Framework Laptop 16 (AMD Ryzen™ 7040 Series)
  • Framework Laptop 16 (AMD Ryzen™ AI 300 Series)
  • Framework Desktop (AMD Ryzen™ AI 300 PRO Series)

BIOS VERSION

03.18

(was also present on 3.17; I don't know about earlier versions)

DIY Edition information

If you are experiencing an issue on a DIY system, Please also fill out the memory and storage devices you are using.

Memory:

	Size: 32 GB
	Type: DDR5
	Type Detail: Synchronous Unbuffered (Unregistered)
	Speed: 5600 MT/s
	Manufacturer: A-DATA Technology
	Part Number: AD5S560032G-SFW

Storage:

sn        : 25423G801245        
mn        : WD_BLACK SN7100 500GB                   
fr        : 7615M0WD

Port/Peripheral information

  1. USB-C, used with the supplied charger
  2. HDMI, unused (has never worked; gives no journald messages etc. when plugged/unplugged)
  3. USB-C, has dongle with vendor ID 25a4 (Algoltek, Inc.) and product ID 9311
  4. USB-A, unused

Standalone Operation (Laptop Only)

Are you running your mainboard as a standalone device. Is standalone mode enabled in the BIOS?

  • Yes
  • No

Describe the bug

I use a USB-C dongle with a bunch of USB-A ports (gamepads, etc.) and a HDMI output (connected to my TV). When I plug in the dongle, the USB ports always work (KDE usually shows 3 notifications in quick succession: USB plugged in, USB unplugged, then USB plugged in); but the external screen sometimes isn't detected. When it is detected, it works fine indefinitely (until unplugged); but when it doesn't work, no amount of unplugging/replugging will fix it; and rebooting does not help.

I originally noticed this on firmware 03.17, and when I updated to 03.18 using fwupdmgr I noticed that the display started working again. However, that was only a temporary fix, since it stop working again soon after. I've found that re-installing the system firmware 03.18 via fwupdmgr reinstall 1e4fa9cea0b89e613370cf9657ffa0b6d3f37fec, rebooting, and waiting for the BIOS firmware update to complete does reliably make the display work again. It also works if that reboot is a hibernate instead (although that can't be done consecutively, since the restored system doesn't know it's been rebooted, and refuses to allow another reinstall!).

Steps To Reproduce

  1. Plug in USB-C dongle with HDMI screen attached.
  2. Check which screens are available (e.g. in KDE display settings)
  3. Sometimes, only the internal display is available. If so, this will persist unless the system firmware is reinstalled.

Expected behavior

Plugging the USB-C dongle should always detect the external screen.

Operating System (please complete the following information):

  • OS/Distribution: NixOS Linux
  • Version: 25.11
  • Linux Kernel Version: Linux nixos-framework 6.17.9 #1-NixOS SMP PREEMPT_DYNAMIC Mon Nov 24 09:37:52 UTC 2025 x86_64 GNU/Linux

Additional context

I did a lot of digging into journal messages, sysfs contents, etc. before and after plugging/unplugging/reinstalling-firmware/etc. I thought it was caused by the laptop going to sleep/suspend, but that doesn't seem to be the case (I disabled all sleep settings, and it persists). I've tried disabling the external display before unplugging the dongle, but that doesn't help. I've had Claude Opus try poking around, to no avail. Here's a summary of it's findings:

The only observable difference between the working and broken states (checked
via `/sys/class/drm/`) is:

| State   | `card1-DP-2/status` |
|---------|---------------------|
| Broken  | `disconnected`      |
| Working | `connected`         |

All other system state checked is **identical** between broken and working:

- UCSI `GET_CABLE_PROPERTY failed (-5)` errors appear in `dmesg` in **both** states
- USB dongle enumerates as `bInterfaceClass 17 Billboard` (Full Speed, 12 Mbps) in **both** states
- HDMI Expansion Card (USB 32ac:0002) also enumerates as `bInterfaceClass 17 Billboard` in **both** states
- All 8 `/sys/class/drm/card1-DP-*/status` entries show `disconnected` in broken state; only `DP-2` changes to `connected` in working state
- USB4 ports show `link: none` in **both** states
- `typec` sysfs: `number_of_alternate_modes = 0` on all partners in **both** states
- UEFI variables (`AmdSetupPHX`, `AMD_PBS_SETUP`, `AmdAcpiVar`, `ActiveVgaDev`, `UserVgaSelection`, `AmdVariableProtection`, `AMD_RAID`) are **byte-for-byte identical** between broken and working states

### Component versions

| Firmware | Version        |
|----------|---------------|
| BIOS     | 3.18           |
| EC       | ec_318_76610   |
| PD       | 0.0.1C         |
| AMD PI   | 1.2.0.0e       |

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions