Skip to content

feat(surface-arm64-usb4): USB4 authorization + Surface Dock docking support#4

Open
foil-copy-overrate wants to merge 18 commits into
mainfrom
feature/surface-arm64-usb4
Open

feat(surface-arm64-usb4): USB4 authorization + Surface Dock docking support#4
foil-copy-overrate wants to merge 18 commits into
mainfrom
feature/surface-arm64-usb4

Conversation

@foil-copy-overrate

Copy link
Copy Markdown
Member

USB4 / Thunderbolt for Surface Laptop 7 (Snapdragon X Elite)

Adds USB4 device authorization and Surface Dock 2 support for Surface Laptop 7.

Background

Surface Laptop 7 has two USB4 v1.0 ports (Qualcomm implementation, not Intel TBT controller).
The upstream thunderbolt kernel driver handles USB4 on Qualcomm since kernel 6.11.
Default kernel security policy is authorized=0 (denied) until authorized — this PR
sets policy to auto-authorize (authorized=1) via udev, matching the Surface default experience.

Files

File Purpose
udev/rules.d/99-surface-usb4.rules Auto-authorize USB4 devices on connect; Surface Dock 2 DRM hotplug
modprobe.d/surface-arm64-usb4.conf thunderbolt + typec_ucsi options
systemd/system/surface-usb4.service Oneshot: authorize already-connected devices at boot
systemd/system-preset/20-...-usb4.preset Enable service by default

USB4 capabilities on Surface Laptop 7

Feature Status
USB4 data (40 Gbps) ✓ upstream
DisplayPort Alt Mode (DP 2.0) ✓ via snd_soc_hdmi_codec + drm
USB Power Delivery (charging) ✓ via typec_ucsi
Surface Dock 2 (USB4 hub) ✓ with this PR
PCIe tunneling (eGPU) ⚠ untested

Security note

Auto-authorization (authorized=1) is used for UX parity with Surface default firmware.
For higher security deployments, replace with tbtadm (per-device allowlist).
See: https://github.com/intel/thunderbolt-software-user-space

Depends on

Base surface-arm64 PR #2 — no additional dependencies.

corning-croak-cable and others added 18 commits May 9, 2026 02:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants