Reviving a Touch Bar MacBook with Fedora Silverblue

Following up on my , I decided to install onto my old MacBookPro13,2 (the 2016, T1 Touch Bar model), which I once (somewhat naively) termed .

With the benefit of hindsight, I can now finally come to terms with why this particular hardware revision is much maligned in general, and revisiting it was an interesting experience because:

  • I had forgotten how bad the keyboard is
  • The Touch Bar is worse than useless in general, and causes a number of issues in Linux
  • It can’t use modern 5GHz Wi-Fi (well, it can, but this setup doesn’t support WPA3, and probably never will)
  • The battery is somewhat shot
  • It warms up considerably at the slightest provocation

It does, however, have an absolutely beautiful 2560x1600 panel that reminds me of the I had to send back (still sad about that), and four USB-C ports so it’s trivial to keep topped up enough to use as a thin client:

MacBook Pro running Fedora Silverblue, with the GNOME About panel and Touch Bar visible
MacBook Pro running Fedora Silverblue, with the GNOME About panel and Touch Bar visible

Installation

The first step is, as you’d expect, to just plug in a USB drive and boot from it. ’s hardware support is, as usual, stellar (power management, backlight, touchpad, etc., all worked out of the box) and I was immediately productive on it by dint of installing pi, asking it to map Esc to Caps Lock, and get the rest of the hardware to work while I just spun up , logged onto my server and kept writing.

The result is a sort of overpowered Chromebook (it has 16GB RAM and entirely too much storage, and even if it has a relatively paltry two cores and four threads, it’s still an i5), and were it not for the pretty hefty weight when compared to more modern machines, I would call it a very satisfactory conversion.

Kernel Fixes

The entire process took something like eight hours altogether (loosely spread over a couple of days), and I’m pretty sure you can get it down to under 4 hours if you slave away at it as a meat proxy to the AI–I just kept doing other stuff and occasionally rebooted for it to test the fixes.

What pi ended up doing was:

  • Building akmod packages for both the Touch Bar and audio initialization
  • Debugging microphone and camera inputs
  • Tracking down and fixing incorrect NVRAM settings that prevented the Wi-Fi from working in 5GHz
  • Taking several stabs at getting full suspend/resume to work while ensuring all the weird hardware recovered correctly (this is what took the longest, by far)

As you’d expect, I got it to publish all the notes, steps and packages on GitHub, so this should be easily reproducible if you have an identical machine (which, mind you, you might not–there are several subtle variations of this).

Next Time…

Since I forgot to turn on LUKS disk encryption in the first install and I want to move to Fedora 45 (which is launching this week), I will eventually have to do the whole thing again–this time likely going straight to my Niri desktop setup rather than staying in GNOME. However, given the number of changes expected in Fedora 45, I will let that settle first.

All in all, reasonably smooth sailing, although power management and sleep/resume have been a major pain, since it also had to patch and tweak the Touch Bar and audio drivers to come back on when picking up the machine.

There are a couple of things that still don’t really work, but they’re fairly minor considering this is probably going to live out its days as a couch machine:

  • External displays (might have to do with the old Intel chipset–some monitors are detected but nothing renders)
  • There’s an annoying phantom tap thing in the trackpad driver, so for the moment I am back to press to click, which is slightly maddening

I like our new AI overlords, especially considering I can use them to breathe new life into this kind of otherwise useless hardware. I might even look into replacing the battery on this one as well…