Friday, August 22nd 2025
Linux Kernel May Soon Support USB 3.x on Apple M1 and M2 MacBooks and Desktops
The Asahi Linux project has been working on Linux support for Apple's Arm-based Apple Silicon Macs, and the latest success to come out of the mammoth task is support for the USB 3.1 Gen 2 ports on M1 and M2 SoCs. While this support has been available to Asahi Linux for a while, the feature may soon be merged into the Linux kernel, since the feature addition has been submitted for comments via the Linux kernel public inbox.
The implementation still doesn't have support for DisplayPort or Thunderbolt alt modes, with the developer behind the driver stating that "there's also some preparations to eventually enable DisplayPort AltMode and Thunderbolt but those need future work." The driver is clearly still a work in progress, and the comments by the developers suggest that they are effectively fighting against the USB controller firmware to get some of the features to work, but that this implementation is so far the best that they could come up with. So far, Asahi Linux only supports M1 and M2 series Apple Silicon, and the only items missing in the hardware support section are USB-C Displays, USB4 and Thunderbolt connectivity, and TouchID support.The full explanation for the Asahi USB 3 support RFC follows:
Sources:
Phoronix, Linux kernel mailing list archive
The implementation still doesn't have support for DisplayPort or Thunderbolt alt modes, with the developer behind the driver stating that "there's also some preparations to eventually enable DisplayPort AltMode and Thunderbolt but those need future work." The driver is clearly still a work in progress, and the comments by the developers suggest that they are effectively fighting against the USB controller firmware to get some of the features to work, but that this implementation is so far the best that they could come up with. So far, Asahi Linux only supports M1 and M2 series Apple Silicon, and the only items missing in the hardware support section are USB-C Displays, USB4 and Thunderbolt connectivity, and TouchID support.The full explanation for the Asahi USB 3 support RFC follows:
This series includes changes to dwc3, tipd and a new phy driver to enable USB3 on these machines. There's also some preparations to eventually enable DisplayPort AltMode and Thunderbolt but those need future work. Overall, this entire setup is quite a mess and we've tried to make it work for quite a while now and finally came up with this solution here.
The USB 3 controller is a very special kind of broken: It never sees any port plug/unplug events that should normally arrive directly at dwc3. Additionally, it needs to go through a full hard reset for every new connection and most mode change. Details on why this is required are in the commit description.
On top of that we need to keep the Type-C PHY bringup and dwc3 bringup tightly synchronized. If there's a race between the two systems at best the port stops working until a system reboot and at worst there's a watchdog somewhere that forcefully resets the entire SoC after ~5 seconds. I've only seen the latter when bringing up thunderbolt so far but wouldn't be surprised if it happens with just USB 3 as well.
The entire bringup/bringup is orchestrated by a TIPD variant called CD321x found on these machines. Unlike the original chips we however get no control over which mode is negotiated or are even able to see the PDOs or VDOs. We only get to know once the mode has been negotiated and have to act accordingly. I even went as far as dumping the firmware from the chip to confirm this.
Hector wrote another summary of this early in January as well and this series is the only way we've been able to bring these ports up reliably. It's not pretty in some places but I have no other idea how to implement this, hence the RFC tag. Happy to discuss other approaches as well.
Both the PHY and the TIPD driver already include changes for DisplayPort AltMode and USB4/Thunderbolt. These need additional work though but since we can't control the mode devices end up in we can already merge them now.
I used phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml as a template for the dt-binding for atcphy (especially the ports). That was the most recent binding I found for a PHY with similar features.
In order to test this you need to run the latest m1n1 master because the 1.5.0 release does not include the code that lifts the tunables from Apple's device tree. A kernel tree for testing is also tagged as apple-usb3-v1.
If the overall approach here is fine and no one can think of a better way to support this SoC I'll drop the RFC and include the dts changes for the other M1 and M2 machines as well.

4 Comments on Linux Kernel May Soon Support USB 3.x on Apple M1 and M2 MacBooks and Desktops
Summary: apple hardware has no linux support. ** for over 6 years soon **
I assume it is this hardware.
support.apple.com/en-us/111883Apple hardware most features do not work with highly specialised linux kernel (kernel.org) and gnu userspace distrbution called Asahi Linux project. That implies the usual user will not have working hardware with their Phrased linux. It needs ASAHI and not Ubuntu, Mint, bazzite, ...., Arch, Slackware, GEntoo. Most likely only working semi stable code from a git repository or similar "unstable" "alpha" code.
I wonder if the apple "USB controller firmware" is open source or if apple provided any specifications?
I would not invest my cash into hardware which is such dated from year 2020.
Hell, you can still get brand new sealed M1 devices today.
ipowerresale.com/products/apple-mac-studio-config-parent-good