Thunderbolt Is Finally Coming to Linux on Mac, but Not for Every Model
Asahi Linux is the name of the project that makes it possible to run Linux on a Mac equipped with an Apple Silicon chip. It has existed for several years, but one major gap remained: the USB-C ports did not support Thunderbolt. That is changing, as on August 30, 2026, developer Sven Peter published 19 patches that change the game for M1, M2 and M3 chips.
Let's start with a reminder: since 2021, the Asahi Linux project has made it possible to run Linux on Apple ARM Macs, even though Apple provides no documentation. The goal is therefore to use Linux on a machine equipped with an Apple Silicon chip: M1, M2, etc. Since this is undocumented, developers have a huge amount of reverse-engineering work to do across all components: GPU, trackpad, Wi-Fi, and so on...
But for several years, Thunderbolt had held out. It was already listed among the missing features when Apple chip support arrived in Linux kernel 6.2. Three years later, Sven Peter, one of the project’s key figures, published a series of 19 patches on the Linux kernel mailing list. His goal is for the support code to no longer remain limited to the Asahi project, but to become part of the official Linux kernel used by all distributions.
Thunderbolt: why is it so complicated?
The answer comes down to four letters: ACIO, for "Apple Converged I/O". Where a standard PC connects its Thunderbolt controller to a standard, well-documented bus, Apple chose a different path. Each USB-C port compatible with USB4 has its own in-house hardware block, with a small dedicated processor inside. And until that block is powered on, the OS cannot access it.
The sequence of operations is also very strict. The block can only start once the port has been switched to Thunderbolt mode, and it must be shut down before the port powers off. So, in practical terms, the Linux kernel did not know how to perform this sequence, which led to the creation of a dedicated mechanism in the first patches of the series. In total, 3,872 lines of code were added, including a new driver, plus the hardware description for the M1 and M2 chips, including the Pro, Max and Ultra variants.
What you will be able to do with it, and when
For now, you won't be able to do much with it. On his Mastodon account, the developer describes the real-world use case like this: the current code is only used to connect two machines together over USB4NET, in other words, networking. That means the following are still missing:
- PCIe tunnels, which are essential for enclosures and docking stations
- DisplayPort tunnels, meaning external displays connected over Thunderbolt
- Sleep support, to the point that the kernel must block suspension while a device is connected.
In his presentation, Sven Peter explains that PCIe and DisplayPort tunnels will come later, because they still require work and reverse-engineering that has not been done yet. Patience, patience.
The patches must now first be reviewed and validated by the Linux kernel maintainers. According to XDA Developers, this code could be integrated into Linux kernel 7.4, but that is only speculation at this stage. And there is an important constraint: this support is limited to M1, M2 and M3 chips.
What about M4 and M5 chips, you may ask? That is still another project, and an even more difficult one. In fact, the Asahi Linux project’s working method is to run macOS under a hypervisor to observe exchanges with the hardware. However, starting with M4, Apple enforces a new memory protection mechanism without which the macOS kernel refuses to boot, preventing this technique from being used. Sven Peter eventually worked around this obstacle by emulating the components involved, but it is not as effective. Work is slowly getting underway... NVMe storage now works on M4 and M5, and PCIe detects peripherals, but we are still a long way from being able to run Linux.
In the meantime, support for ARM Macs continues to move forward in small steps, as shown by the arrival of the macsmc-power driver in Linux kernel 7.1 to track battery status.

