“We truly believe T2 MacBooks can make the best Linux laptops.”

None

“KAIT2EN is meant to disappear. Every module and fix that gets upstreamed leaves the repo.”

None

“There is a distinct difference in making broken things work and fixing things.”

None
Touch Bar and keyboard of a MacBook Pro running KAIT2EN Fedora

You Run It, We Fix It.

We bring Linux to your T2 Mac with instant driver fixes, straight from the developers.

Vanilla Fedora. DKMS modules. Aimed upstream.

Features & status

What works today, and what is on its way into mainline Linux.

Status
Upstream
FeatureStatusUpstreamUpdated
Panel Self Refresh on Apple T2 displaysEnables PSR on Apple T2 eDP panels using the sink-specific DPCD setup and capture sequence, reducing idle display power and enabling deeper package C-states up to PC10.Linux kernel · DRM / i915 · v4 · @4f1sh3rIn progress
Wi-Fi PM_MAX power managementWithdrawn after extended BCM4364 testing found intermittent 50-250 ms latency spikes with PM_MAX. PM_FAST remains the driver default.Linux kernel · Wi-Fi / brcmfmac · v3 · @4f1sh3rIn progressWithdrawn
AirDrop and Quick Share in one app: T2 AirShareAirDrop between your T2 Mac and other Apple devices, in both directions, while the Mac stays on its Wi-Fi network. The same app does Quick Share with Android phones, so Apple devices and Android phones share one send window, one notification to accept and one list of trusted devices. Android phones connect via Bluetooth first and then transfer using a Wi-Fi hotspot of the Mac.KAIT2EN Fedora · t2-airshare · @deqrocksAvailableDownstream only
Bluetooth LE devices show up within a secondThe Broadcom Bluetooth chips of the T2 Macs set extra bits in the type of LE advertising reports, and the kernel dropped most of them as unknown. The drivers also left duplicate filtering in the controller on, so a device that changed its advertisement was only seen again after up to 11 seconds. btbcm now clears the extra bits for hci_bcm and hci_bcm4377, and both let the kernel turn the controller's duplicate filter off. A Mac opening AirDrop is now seen within a second instead of up to 30 seconds.KAIT2EN Fedora · Bluetooth / btbcm · @deqrocksAvailableDownstream only
Wi-Fi: AWDL for AirDrop on the Apple firmwareThe Apple firmware of the Broadcom Wi-Fi chips runs AWDL itself once the host sets it up. brcmfmac now creates the AWDL interface, passes its firmware events to user space and carries AWDL data over awdl0. The t2-drop system service drives it as macOS does: it follows the AWDL master, announces the AirDrop service and removes the interface before suspend.KAIT2EN Fedora · Wi-Fi / brcmfmac · @deqrocksAvailableDownstream only
Butterfly keyboard debounceOptional filter against keystrokes that butterfly keyboards register twice. Enabled with the kernel argument t2hid.debounce_ms=40.KAIT2EN Fedora · t2hid · @deqrocksAvailableDownstream only
No more Wi-Fi P2P errors on BCM4364brcmfmac searched the firmware capability list for "p2p" as a substring and found it in Apple's "hp2p". It then offered Wi-Fi Direct, which the BCM4364 firmware does not support, and every boot logged three P2P errors. Capabilities are now matched as whole words.KAIT2EN Fedora · Wi-Fi / brcmfmac · @deqrocksAvailablePreparing
Wi-Fi hotspot clients can connect on BCM4364The BCM4364 firmware claims to run the WPA2 handshake for its access point, but never completes it, so phones were dropped after about 8 seconds. brcmfmac now leaves the handshake to wpa_supplicant or hostapd.KAIT2EN Fedora · Wi-Fi / brcmfmac · @deqrocksAvailablePreparing
Automatic brightness (ALS)Optional service that follows the ambient light like macOS on Intel Macs, with its smooth curve, 20 % dead band, slow perceptual fades and learning from manual changes. Replaces GNOME's own automatic brightness, which flashbangs you with coarse steps.KAIT2EN Fedora · t2-autobrightness / ambient light sensor · @deqrocksAvailableDownstream only
Bluetooth audio without dropouts during Wi-Fi trafficOn 2.4 GHz with Wi-Fi traffic the Broadcom controller held Bluetooth packets for up to 200 ms and A2DP audio dropped out. hci_bcm and hci_bcm4377 now give every Bluetooth link high priority in the controller as it connects, as macOS/Android does for Broadcom chips. This covers headphones, mice and keyboards.KAIT2EN Fedora · Bluetooth / btbcm · @deqrocksAvailableDownstream only
Lower Wi-Fi idle powerbrcmfmac kept the Wi-Fi radio awake for 2 s after every frame when NetworkManager asked for power save without a timeout. It now uses 200 ms, the value Apple configures for the BCM4364. Idle system power on the MacBookPro15,1 dropped from 11.3 W to 9.2 W with Wi-Fi connected.KAIT2EN Fedora · Wi-Fi / brcmfmac · @deqrocksAvailableDownstream only
Two stream Wi-Fi uplink on BCM4364With TX beamforming on, the BCM4364 firmware sends a single beamformed stream and the uplink tops out at about 350 Mbit/s next to the router. brcmfmac now turns beamforming off on this chip, the firmware picks two streams and the uplink reaches about 620 Mbit/s.KAIT2EN Fedora · Wi-Fi / brcmfmac · @deqrocksAvailableDownstream only
No more dGPU crashes on MacBookPro16,1Apple's pptable lists other memory clock levels than the VBIOS trained the memory controller at. Switching into such a level hung the SMU and ended in a CATERR at boot or under dGPU load. amdgpu now takes the trained levels from the VBIOS, so the 5300M and 5500M can switch their memory clock freely again.Linux kernel · DRM / amdgpu · v1 · @deqrocksAvailable
Low-latency video encoding (T2 Sidecar encoder)Exposes the encoder the T2 offers macOS for Sidecar as a V4L2 H.264/HEVC encoder. Usable today through ffmpeg and the t2-sidecar Sunshine build https://github.com/deqrocks/Sunshine for streaming to Moonlight.KAIT2EN Fedora · t2bce_sidecar · @deqrocksAvailableDownstream only
No more prochot throttling under loadThe SMC shares the heatpipe between CPU, iGPU and dGPU and asks the OS for lower limits in steps, which Linux used to ignore until prochot dropped the CPU to 800 MHz. t2smc now exposes these steps and T2 Zone Power applies them like macOS does, so CPU and GPU settle on steady clocks under load. An amdgpu patch lets the Navi GPUs of Apple Macs lower their power limit to 40 % of TDP, so the SMC can balance the dGPU as well.KAIT2EN Fedora · t2smc / t2-zone-power · @deqrocksAvailableDownstream only
T2 Touch BarOptional Touch Bar daemon that stays dark until touched, with media and F-key rows, multitouch gestures for volume and brightness, the Touch ID prompt and track changes from media players.KAIT2EN Fedora · t2bdrm / t2touchbar · @deqrocksAvailableDownstream only
Wi-Fi suspend on BCM4377 T2 MacsThe downstream systemd suspend service handles BCM4377 today. Our v2 kernel patch was superseded by Sebastian Reichel's accepted generic brcmfmac fix, which ignores a missing D3 ACK when Wake-on-WLAN is not armed and uses the cold-reprobe recovery path on resume: https://lore.kernel.org/linux-wireless/20260915-brcmfmac-bcm43752-suspend-fix-v2-1-1bd84914998b@collabora.com/Linux kernel · Wi-Fi / brcmfmac · v2 · @deqrocksAvailableSuperseded
5K display on iMac20,1 and iMac20,2Drives the internal 5K panel at full resolution by genlocking the two display streams that feed it. Ships as an amdgpu patch in the KAIT2EN kernel builds.KAIT2EN Fedora · DRM / amdgpu · @byteAvailableDownstream only
Hybrid graphics and dGPU power management on MacBookPro16,1 and 16,4Runtime GPU switching, dGPU power management, and working suspend and resume are available on MacBookPro16,1 and MacBookPro16,4.KAIT2EN Fedora · t2gmux / amdgpu · @byte, @deqrocksAvailableDownstream only
Force Click trackpad controlsProvides adjustable click and Force Click pressure, Taptic Engine feedback, and configurable actions for the separate Force Click event.KAIT2EN Fedora · Input / Force Touch · @deqrocksAvailableDownstream only
Audio DSPReverse engineered T2 input/output audio DSP and exposed it to ALSA.KAIT2EN Fedora · t2bce_audio · @deqrocksAvailableDownstream only
Hardware video encoding (T2 AVE)Exposes the T2 Apple Video Encoder for hardware HEVC encoding. Usable today through the t2-ave HandBrake build https://github.com/deqrocks/HandBrake or ffmpeg.KAIT2EN Fedora · t2bce_ave · @deqrocksAvailableDownstream only
Touch ID loginThe finger enrolled under macOS unlocks login and sudo on Linux through stock fprintd, with nothing patched. Aimed at a libfprint driver upstream. Enrollment on Linux is prepared through T2sep, but not implemented.KAIT2EN Fedora · t2-touchid / BiometricKit · @deqrocksAvailableDownstream only
Trackpad on T2 Macs is incorrectly bound by the hid-apple driverTrackpad and keyboard share the same VID/PID. Use the existing APPLE_IGNORE_MOUSE quirk.Linux kernel · HID / Input · v1 · @AdityaGarg8AvailableMerged
Thunderbolt device linksThe three-patch series moves Apple device-link discovery into the Thunderbolt PCI code and adds Titan Ridge and Ice Lake support separately. Was merged and is expected to ship with kernel 7.4.Linux kernel · Thunderbolt · v9 · @byte, @deqrocksAvailableMerged
Thunderbolt controller stays powered (15,1)The original xHCI patch was withdrawn after native PCIe port services restored USB 3 hotplug from runtime D3. Further testing found a separate system-resume regression: allowing the Titan Ridge xHCI controllers and their ports into D3 delays EC interrupt unblock by about 20 seconds. Kait2en therefore retains the D3 restriction downstream while the proper upstream fix is investigated.Linux kernel · USB / xHCI · v1 · @deqrocksAvailableWithdrawn
Fast CPU restore after suspendMoves secondary CPU hotplug outside the generic CPU PM notifier window on Apple T2 systems, avoiding multi-second delays per CPU during resume.Linux kernel · ACPI / CPU hotplug · v1 · @deqrocksAvailable
Hybrid graphics and dGPU power managementRuntime GPU switching is available downstream on MacBookPro15,1. The apple-gmux, amdgpu and ALSA HDA changes were submitted upstream as v3.KAIT2EN Fedora · t2gmux / amdgpu · v1 · @byte, @deqrocksAvailable
Touch Bar suspend and resume without PM deadlockAvoids nested runtime PM references in the HID callbacks that could stall Touch Bar suspend and resume.Linux kernel · HID / Touch Bar · v1 · @deqrocksAvailableMerged
Package C-statesGetting the platform into deep package C-states so idle power draw and battery life come closer to macOS.KAIT2EN Fedora · Power management · @deqrocksAvailableDownstream only
Display brightness restored after rebootThe backlight had no stable path ID, so the brightness setting was lost on every reboot.systemd · udev · @deqrocksAvailableMerged
Keyboard backlight after re-enumerationThe backlight did not come back on after the keyboard re-enumerated. Was merged and is expected to ship with kernel 7.4.upower · @deqrocksAvailableMerged
Volume slider without DSP cracklingDragging the Quick Settings volume slider caused audible crackles on PipeWire DSP sinks.GNOME Shell · Quick Settings · @deqrocksAvailableMerged
Fn double press switches F-keys and media controlsLinux kernel · HID / Touch Bar · v5 · @AdityaGarg8, @deqrocksAvailableMerged
dGPU dies up on MacBookPro15,1The SMU was dead after resume, leaving the discrete GPU unusable.Linux kernel · PCI / amdgpu · v1 · @FrederickGeek8, @deqrocksAvailableMerged
Keyboard backlight after resumeThe butterfly keyboard backlight came back on at 0% after resume, and now uses the same LED naming as the magic keyboards.Linux kernel · HID / Input · v1 · @deqrocksAvailableMerged
Keyboard backlight brightness levelsThe backlight reports were parsed with the wrong endianness.Linux kernel · HID / Input · v1 · @deqrocksAvailableMerged

Concept

This is not easy to explain#

This one is a bit of a read. But while writing, I discovered that non-nerds wouldn't even understand what I'm talking about without knowing the context. You can skip this if you want. But for many this may be valuable information.

The Linux mainline kernel still lacks drivers for certain T2 hardware components. The thing with T2 drivers is that they require reverse engineering. Which is particularly difficult on Apple hardware because Apple stuff is "thought different". There are not many developers who still deal with T1/T2 hardware on Linux. Many moved on to Apple Silicon for understandable reasons.

The flow usually is that someone writes a driver by reverse engineering. In the best case a community would test it and then it would be submitted to upstream maintainers to check and merge. After that the driver would live in the Linux kernel. And that means you can just install vanilla Fedora, Ubuntu, Arch or whatever and the kernel will support your hardware natively.

Some T2 drivers indeed went that way. Some are still missing. And these are the most complex drivers. Because of their complexity they are not easy to upstream. The devs who wrote them knew there were still issues with the code and its architecture. Upstreaming a driver like that would create plenty of friction and work. That's like squeezing it in. So they tried and failed or even never tried.

Upstreaming Apple stuff is difficult. Because it's unconventional hardware. It needs a lot of explaining why the code is like it is.

Going upstream = moving against the flow#

Traditional distros like CachyOS or T2Linux work around this by shipping patched kernels. The patches are not created by the distro people. T2Linux collects the code we talked earlier about and maintains it in a GitHub repo. Also KAIT2EN provides some patches to that repo. Like t2bce and audio drivers. Then these patches are compiled against the current kernel. This means they integrate the drivers into the latest release. Distros like CachyOS or Omarchy make use of the same T2Linux patches and also integrate them in their kernels.

Should be all good, right? You just choose your favorite distro and done. The problem is that most devs stopped upstreaming their patches to the mainline Linux kernel. Instead they submit their patches to the T2Linux patches repo.

This has some downsides.

  • T2Linux would need to maintain the patches forever.
  • You will lose the safety of the standard distribution kernel.
  • Kernel updates are delayed.
  • You are not talking to the actual developer when you file an issue.
  • When T2Linux stops maintaining, T2 Macs will stop working on Linux.

Since we are currently the provider of some of these missing drivers, we know that getting updates into external distros takes time and can be difficult. Many third-party maintainers also naturally lack deep T2-specific context, making regressions more likely. The informational flow or communication can be difficult when breaking changes are introduced. Maintainers have to deal with incredibly complex workflows. The more you go upstream, the more complex it gets.

With KAIT2EN we jump over the middlemen. It is a unified platform. We take care that it works on your Mac. So we know your hardware, your command line, your drivers, your systemd units, your udev rules, etc. Users can test, talk to devs directly and we can submit to upstream. Third-party maintainers can choose to package our code or just profit from upstreamed patches. Devs can directly PR to us.

Stream me up, Linus!#

So KAIT2EN is specialized exclusively for T2 Macs. We deliver T2 drivers and dedicated T2 utilities. For you this is like cherry-picking: standard upstream kernels directly from Fedora, combined with immediate hardware fixes straight from us. Yummy!

Because we rely on out-of-tree modules, we can test and iterate without full kernel recompilations. This streamlined architecture lets us roll out fixes and handle feature requests in minutes. Literally. All while working toward our goal, which is upstreaming every driver into the official Linux kernel, while dropping them downstream. This means, when we are done, T2 people can install Linux from official sources just like everyone else. And specialized distros or repos that are scattered all around the interwebs are no longer needed to maintain the code.

Yes, we know there is Apple Silicon#

But someone needs to close the gap! We truly believe T2 MacBooks can make perfect Linux laptops. Once everything is properly fixed, models like the MacBook Pro 15,1 or MacBook Air 9,1 run cool, offer great battery life, and cost very little. All while keeping Apple’s exceptional build quality, Retina displays, and Touch Bar. (Mentioning these two models specifically, because they are running perfectly on KAIT2EN. The MacBookPro16,1 and MacBookPro16,4 now join them with complete hybrid graphics and suspend support, and the 15,2 also runs well. The 15,3 and 15,1 vega models do not support hybrid graphics yet, due to lack of testers.

So this is x86 architecture and we won't get anywhere near to what Asahi with Apple Silicon can do. But the message is not to buy into T2 Macs. It's about making them usable and using them sustainably. If you already own a T2 Mac, you will appreciate it. Because you know and we know that this era of devices was always kinda "meh!". Even at the time. But on Linux they are great. Even the "portable egg fryer" MacBook Air 9,1 is.

And actually, before Apple began with their security chip shenanigans, Apple computers have always been great for Linux. Let's put butterfly keyboards, flexgate, staingate and whatnotgate aside now. They are still sexy. Aren't they? And if you can get hold of one for cheap for study or travel, you will appreciate when you just can run Linux on it natively. Without the need of reading half the Internet about how to make it work. Somehow.

Is the grass greener on the KAIT2EN side?#

Our grass is KAIT2EN red. There is a lot of discussion and arguing involved when you want to get things moving. It's the sound of grinding gears while trying to find solutions for everyone. We move fast, and our frequent update cycle might feel relentless and annoying. Staying informed means following announcements in our Discord community or checking GitHub for updates. We wouldn't recommend KAIT2EN to total Linux noobs. But we are surprised to see how fast people grow with new tasks.

Updating is entirely up to you, but KAIT2EN is built for active testing, not passive convenience. If you want to call us opinionated, then this is your chance. We share this project because we need real-world testers to validate our fixes on a base we know. Not updating will lead to a non-working Mac when outdated DKMS modules stop compiling against an updated kernel that contains new symbols.

This is something you should keep in mind before jumping in.

Install KAIT2EN

The installation starts in macOS and continues in Fedora.

macOS Terminal
curl -fsSL https://github.com/kaiT2en/KaiT2en-Fedora/releases/latest/download/install-kait2en-fedora.sh | bash

Run this in macOS with an empty USB drive attached. The script downloads and verifies the official Fedora image, collects the Apple firmware from your Mac and writes a bootable installer.