darp11-b: UCSI ACPI device not exposed; USB-C dock enters PD renegotiation loop
- Model: darp11-b
- BIOS version: 2025-04-03_04c4e20
- EC version: 2025-04-03_04c4e20
- OS: Ubuntu 24.04 LTS
- Kernel: 6.18.7-76061807-generic (System76)
Summary
On Darter Pro 11 (darp11-b, Intel Core Ultra 7 255H: Arrow Lake-H compute tile with the Meteor Lake-derived SoC tile, which hosts TB4/xHCI/USB-C PD), the firmware does not expose a UCSI ACPI device, so the OS has zero visibility into USB-C Power Delivery. Under load (battery < ~90%, dock + external display attached), the connector enters a PD renegotiation loop: both xHCI controllers reset their ports simultaneously, repeatedly, until the dock is physically unplugged. Symptom is reproducible with two different Dell USB-C monitors (P2723QE 90W, P2722HE 65W) and two different USB-C hubs. The same docks and monitors work correctly on other laptops.
The UCSI absence is unusual for a Thunderbolt 4 platform and I believe it is the root cause of the OS being unable to observe, recover from, or mitigate the PD loop. Kernel-side workarounds have only reduced frequency, not eliminated it. Because the affected silicon (SoC tile, TB4 controller) is Meteor Lake-derived and reused across both Core Ultra 1xx (Meteor Lake) and Core Ultra 2xx (Arrow Lake-H) parts, this may also affect the non--b darp11 and other System76 MTL-era machines.
System
| Field |
Value |
| Model |
Darter Pro (darp11-b) |
| CPU |
Intel Core Ultra 7 255H |
| Silicon codename |
Arrow Lake-H compute tile + Meteor Lake SoC tile |
| FSP in use |
MeteorLakeFspBinPkg (per models/darp11-b/ in this repo) |
| System76 firmware |
v1.0.76 |
| BIOS/EC version |
2025-04-03_04c4e20 |
| Kernel |
6.18.7-76061807-generic (System76) |
| system76-dkms |
v1.0.22 |
| system76-power |
v1.2.8 |
| Distro |
Ubuntu 24.04 LTS |
| fwupdmgr get-updates |
"No updatable devices" |
UCSI absence (verified)
$ find /sys/bus/acpi/devices/ -name "USBC*"
(empty)
$ find /sys/bus/platform/devices/ -name "*ucsi*"
(empty)
$ ls /sys/class/typec/
(empty)
$ strings /sys/firmware/acpi/tables/DSDT | grep -i ucsi
(empty)
typec_ucsi and ucsi_acpi modules load successfully but bind to nothing because no ACPI device is advertised. On other Thunderbolt 4 laptops I have access to, /sys/class/typec/ is populated with port entries and ucsi_acpi binds normally.
Expected on a TB4 machine: UCSI ACPI device (USBC000 or similar) -> ucsi_acpi binds -> /sys/class/typec/portN/ populated -> OS can read PD state and intervene.
Steps to reproduce
- Boot with dock connected (Microchip USB5806-based hub, or generic USB3.2 hub; both reproduce).
- Drain battery below ~90% (or use with a heavy workload).
- Attach Dell P2723QE (90W USB-C PD) or P2722HE (65W USB-C PD) via dock.
- Observe behavior over 2-5 minutes.
Barrel charger attached in parallel does not prevent recurrence. This rules out insufficient power budget.
Expected behavior
UCSI ACPI device is enumerated; /sys/class/typec/ populated with port entries; dock attaches once and stays connected under normal charging load.
Actual behavior
No UCSI ACPI device exposed in firmware; /sys/class/typec/ empty. Dock enters a connector-level PD renegotiation loop, cycling every ~8-9 seconds, and does not self-recover.
Observed PD loop signature
Most recent recurrence (2026-04-10): 110 USB disconnect events, 10 full cycles in 2.5 minutes, did not self-stabilize. Dock was physically unplugged to end it.
19:04:21 Dock connects (USB5806 hub + 11 peripherals enumerate)
19:04:29 FULL DISCONNECT #1 (all 11 devices, both controllers)
19:04:38 FULL DISCONNECT #2
19:04:46 FULL DISCONNECT #3
19:04:53 FULL DISCONNECT #4
19:04:59 FULL DISCONNECT #5
19:05:28 FULL DISCONNECT #6
19:05:41 FULL DISCONNECT #7
19:06:03 FULL DISCONNECT #8
19:06:26 FULL DISCONNECT #9
19:06:36 FULL DISCONNECT #10 (user physically unplugged)
Critical observation: the dock splits across two independent PCI devices:
| Controller |
PCI Address |
Handles |
| Intel xHCI (0x777d) |
00:14.0 |
Dock USB 2.0 hub, webcam, BT |
| Thunderbolt 4 xHCI |
00:0d.0 |
Dock USB 3.0 hub |
| Thunderbolt 4 NHI |
00:0d.2 |
USB4 host |
| TB4 PCIe root |
00:07.0 |
Hotplug |
Both controllers see their ports drop at the exact same millisecond on every cycle. A simultaneous drop across two separate PCI devices is not explainable by per-controller xHCI fault. It is the signature of a connector-level PD reset upstream of both controllers: the USB-C PD state machine in EC/firmware is dropping the link.
xHCI errors during earlier cycles
hub 2-1:1.0: hub_ext_port_status failed (err = -71) # EPROTO
usb 2-1-port3: cannot reset (err = -110) # ETIMEDOUT
usb 2-1-port3: attempt power cycle
xhci_hcd 0000:00:0d.0: WARN Set TR Deq Ptr cmd failed due to incorrect slot or ep state
These appear on the TB4 xHCI (00:0d.0). Transfer ring dequeue pointer desync on this controller is consistent with the host losing link state mid-transaction because the port was reset underneath it.
Triggers identified
- Spontaneous: no preceding suspend/resume, kernel goes straight to
usb 3-6: USB disconnect. This is the dominant failure mode.
- Suspend/resume (S3): cascade immediately after resume; dock fails to cleanly re-enumerate.
- Boot-time: 2-3 cycles during the first ~2 minutes of uptime before stabilizing.
Power correlation (user-observed)
- Occurs when battery is significantly below ~90%.
- Does not occur when battery is near full.
- Both 90W and 65W monitors reproduce it.
- Barrel charger attached in parallel does not prevent it.
The 90W monitor provides the same wattage as the barrel charger, so this is not a power-budget problem. It appears to be the EC's PD logic failing under high simultaneous charge draw plus USB-C data, not insufficient supply.
Ruled out
- Cables (multiple tested)
- Monitor (two different Dell models)
- Dock hardware (two different docks, both work fine with other laptops on the same cables/monitors)
- USB autosuspend (pinned to
on via udev on all dock hubs and both xHCI controllers)
- Thunderbolt runtime PM (disabled via udev:
power/control=on on 00:07.0, 00:0d.0, 00:0d.2)
- LVFS firmware updates (none pending)
OS-side mitigations I already tried
| Mitigation |
Effect |
Load typec_ucsi + ucsi_acpi at boot |
Modules load, bind to nothing (no ACPI device) |
Pin dock hubs to power/control=on |
Reduced frequency, not eliminated |
Pin TB controllers to power/control=on |
Reduced frequency, not eliminated |
These kernel workarounds delayed recurrence by 11 days but did not prevent it. Because the PD renegotiation is firmware-managed and the OS has no UCSI visibility, there is no kernel-side intervention point.
What would help
- Expose UCSI in the ACPI tables. This is the concrete, high-value ask. With a working UCSI interface, the kernel can observe PD state, log actual renegotiation events, and potentially recover. Without it, every debug session is blind. I believe this alone would give you (and me) the observability needed to diagnose the underlying PD behavior.
- EC firmware PD stability fix. If the renegotiation loop is an EC state-machine bug, it needs a firmware-side fix. I can't narrow this down further without UCSI visibility.
I'm happy to:
- Run any diagnostic commands or boot with kernel parameters you suggest
- Capture traces (
dmesg, journalctl, lsusb -t, lspci -vvv, acpidump, TB tbtools) on request
- Test firmware builds from this repo on my machine
Attachments
I have the following logs from the 2026-04-10 recurrence:
usb-c-system-info-2026-04-10.log
usb-c-ucsi-boot-log-2026-04-10.log
usb-c-relevant-events-2026-04-10.log
usb-c-disconnect-events-2026-04-10.log
usb-c-dock-crash-loop-2026-04-10.log
Related
- System76 support ticket #20340 (submitted 2026-04-10)
darp11-b: UCSI ACPI device not exposed; USB-C dock enters PD renegotiation loop
Summary
On Darter Pro 11 (darp11-b, Intel Core Ultra 7 255H: Arrow Lake-H compute tile with the Meteor Lake-derived SoC tile, which hosts TB4/xHCI/USB-C PD), the firmware does not expose a UCSI ACPI device, so the OS has zero visibility into USB-C Power Delivery. Under load (battery < ~90%, dock + external display attached), the connector enters a PD renegotiation loop: both xHCI controllers reset their ports simultaneously, repeatedly, until the dock is physically unplugged. Symptom is reproducible with two different Dell USB-C monitors (P2723QE 90W, P2722HE 65W) and two different USB-C hubs. The same docks and monitors work correctly on other laptops.
The UCSI absence is unusual for a Thunderbolt 4 platform and I believe it is the root cause of the OS being unable to observe, recover from, or mitigate the PD loop. Kernel-side workarounds have only reduced frequency, not eliminated it. Because the affected silicon (SoC tile, TB4 controller) is Meteor Lake-derived and reused across both Core Ultra 1xx (Meteor Lake) and Core Ultra 2xx (Arrow Lake-H) parts, this may also affect the non-
-bdarp11 and other System76 MTL-era machines.System
MeteorLakeFspBinPkg(permodels/darp11-b/in this repo)UCSI absence (verified)
typec_ucsianducsi_acpimodules load successfully but bind to nothing because no ACPI device is advertised. On other Thunderbolt 4 laptops I have access to,/sys/class/typec/is populated with port entries anducsi_acpibinds normally.Expected on a TB4 machine: UCSI ACPI device (
USBC000or similar) ->ucsi_acpibinds ->/sys/class/typec/portN/populated -> OS can read PD state and intervene.Steps to reproduce
Barrel charger attached in parallel does not prevent recurrence. This rules out insufficient power budget.
Expected behavior
UCSI ACPI device is enumerated;
/sys/class/typec/populated with port entries; dock attaches once and stays connected under normal charging load.Actual behavior
No UCSI ACPI device exposed in firmware;
/sys/class/typec/empty. Dock enters a connector-level PD renegotiation loop, cycling every ~8-9 seconds, and does not self-recover.Observed PD loop signature
Most recent recurrence (2026-04-10): 110 USB disconnect events, 10 full cycles in 2.5 minutes, did not self-stabilize. Dock was physically unplugged to end it.
Critical observation: the dock splits across two independent PCI devices:
00:14.000:0d.000:0d.200:07.0Both controllers see their ports drop at the exact same millisecond on every cycle. A simultaneous drop across two separate PCI devices is not explainable by per-controller xHCI fault. It is the signature of a connector-level PD reset upstream of both controllers: the USB-C PD state machine in EC/firmware is dropping the link.
xHCI errors during earlier cycles
These appear on the TB4 xHCI (
00:0d.0). Transfer ring dequeue pointer desync on this controller is consistent with the host losing link state mid-transaction because the port was reset underneath it.Triggers identified
usb 3-6: USB disconnect. This is the dominant failure mode.Power correlation (user-observed)
The 90W monitor provides the same wattage as the barrel charger, so this is not a power-budget problem. It appears to be the EC's PD logic failing under high simultaneous charge draw plus USB-C data, not insufficient supply.
Ruled out
onvia udev on all dock hubs and both xHCI controllers)power/control=onon00:07.0,00:0d.0,00:0d.2)OS-side mitigations I already tried
typec_ucsi+ucsi_acpiat bootpower/control=onpower/control=onThese kernel workarounds delayed recurrence by 11 days but did not prevent it. Because the PD renegotiation is firmware-managed and the OS has no UCSI visibility, there is no kernel-side intervention point.
What would help
I'm happy to:
dmesg,journalctl,lsusb -t,lspci -vvv,acpidump, TBtbtools) on requestAttachments
I have the following logs from the 2026-04-10 recurrence:
usb-c-system-info-2026-04-10.log
usb-c-ucsi-boot-log-2026-04-10.log
usb-c-relevant-events-2026-04-10.log
usb-c-disconnect-events-2026-04-10.log
usb-c-dock-crash-loop-2026-04-10.log
Related