Apple Silicon USB Type-C: USB, Thunderbolt and DisplayPort support in the kernel

Apple Silicon devices have various USB Type C ports used to serve a set of common needs: Power input, low-speed USB2 connections, high-speed USB3 data connections, display output and USB4/Thunderbolt tunneling. Each of those capabilties is controlled by different, usually proprietary and undocumented hardware for which we had to add support to various kernel subsystems. In this talk, I’ll summarize how USB Type-C ports work and then explain how the hardware was reverse engineered and how drivers for various kernel subsystems were written.


Sven has been working on Linux support for Apple Silicon machines since they have been released and co-maintains the drivers in his free time.

When he isn’t hacking on kernel code he works as a Machine Learning Engineer for a big German company and enjoys hiking and playing the piano.