Skip to content

mikeeq/mbp-fedora-kernel

Repository files navigation

mbp-fedora-kernel

Fedora kernel with Apple T2 patches built-in (Macbooks produced >= 2018).

Fedora ISO (with mbp-fedora-kernel builtin): https://github.com/mikeeq/mbp-fedora

Kernel patches: https://github.com/t2linux/linux-t2-patches

Tested on: Macbook Pro 15,2 13" 2019 i5 TouchBar Z0WQ000AR MV972ZE/A/R1 && Macbook Pro 16,2 13" 2020 i5

Boot ROM Version:	220.270.99.0.0 (iBridge: 16.16.6571.0.0,0)
macOS Mojave: 10.14.6 (18G103)

CI status

GitHub Actions kernel build status

Build Status

Github Actions kernel publish status - https://mikeeq.github.io/mbp-fedora-kernel/

Publish Status

How to update mbp-fedora-kernel

Starting from Fedora 37 mbp-fedora release - mbp-fedora-kernel should be automatically updated using builtin package manager - DNF, so simply run dnf update --refresh, and it should automatically fetch all required updates.

If the DNF fail, or you're updating your older mbp-fedora, you can still use previously used method with update_kernel_mbp described below.

### First run or if you want to update your copy of update_kernel_mbp script
sudo -i
curl -L https://raw.githubusercontent.com/mikeeq/mbp-fedora-kernel/v6.4-f38/update_kernel_mbp.sh -o /usr/bin/update_kernel_mbp
chmod +x /usr/bin/update_kernel_mbp
update_kernel_mbp

### Next runs
sudo -i
update_kernel_mbp

### Update to specific version of kernel
sudo -i
KERNEL_VERSION="6.4.16-f38" update_kernel_mbp

### Update to specific version of kernel using specific version of update script
#### Usually not needed, because scripts are shared between branches, but you can use it to update your update_kernel_mbp script
##### If the script fails, try to rerun it - it's due to self-upgrading feature of this script
sudo -i
KERNEL_VERSION="6.4.16-f38" UPDATE_SCRIPT_BRANCH="v6.4-f38" update_kernel_mbp

### If kernel update using dnf would file you can execute update_kernel_mbp script with `--github` argument, it will force it to use github to download kernel RPMs
sudo -i
update_kernel_mbp --github

Known issues

  • TouchID - (@MCMrARM is working on it - Dunedan/mbp-2016-linux#71 (comment))
  • Audio
    • Internal Microphone (it's recognized with new apple t2 sound driver, but there is a low mic volume amp)

Partially working

  • Suspend - really unstable, I recommend disabling it. If you would stuck in sleep mode, try to keep pressing power off button for a while to force poweroff and then turn on the Macbook.
  • Touch Bar, if you encounter any issues, I recommend reboot to MacOS/Windows to initialize TouchBar and then back to Linux - it should fix the problem.

Working with upstream stable kernel 6.0

  • Display/Screen
  • USB-C
  • Battery/AC
  • Ethernet/Video USB-C adapters
  • Bluetooth
  • NVMe
  • Camera
  • Thunderbolt

Working with mbp-fedora-kernel

  • with builtin BCE driver
    • Audio
    • Keyboard
    • Keyboard Backlight
    • Touchpad (scroll, right click)
  • with builtin iBridge driver
    • MacBook Pro Touch Bar
      • If there's an issue with Touch Bar startup on Linux I recommend installing Win10 and boot it once a while to initialize Touch Bar using BootCamp driver, it seems to fix the issue
  • WiFi

Not tested

  • eGPU

How to build mbp-fedora-kernel

  1. Make sure that Docker is installed and running correctly on your machine
  2. Clone repo
  3. Generate GPG key: gpg --full-generate-key, choose RSA and RSA and Real name: mbp-fedora
  4. Change version in build.sh, https://bodhi.fedoraproject.org/updates/?search=&packages=kernel
  5. Run ./build_in_docker.sh

Docs

Fedora

Github

Old

Other

Credits

  • @MCMrARM - thanks for all RE work
  • @ozbenh - thanks for submitting NVME patch
  • @roadrunner2 - thanks for SPI (touchbar) driver
  • @aunali1 - thanks for Kernel Patches
  • @ppaulweber - thanks for keyboard and Macbook Air patches
  • @AdityaGarg8 - thanks for support and upkeeping kernel patches
  • @kekrby for T2 Audio config
  • @Redecorating for Arch support