Durch meine Arbeit bin ich letztes Jahr an ein 15” Apple MacBook Pro (14,3) gekommen. An und für sich handelt es sich hierbei um ein ganz nettes Stück Hardware, allerdings setzte sehr schnell eine gewisse Ernüchterung ein, was die Verwendung von Linux auf diesem Gerät betrifft. Apple hat sich bei diesem Notebook für… exotische Hardware entschieden, für die es nur eine mangelhafte Unterstützung im Kernel gibt…

Aktueller Stand

Gleich vorweg: Es gibt einige Dinge, die bis heute schlicht nicht funktionieren. Dabei handelt es sich um die Audioeingabe/-ausgabe, den TouchID Fingerabdruckscanner und das integrierte WLAN.

Die Standby/Aufwecken-Funktion ist ebenfalls nicht zuverlässig nutzbar. Ich habe das Gerät einmal in den Standby-Modus versetzt, und nach einigen Sekunden wieder aufgeweckt. Bei mir hat es nach einigen Sekunden und etwas Bildschirmgeflacker funktioniert, viele Andere berichten aber von Problemen. Daher sollte dies auch als nicht funktionsfähig gehandelt werden.

Bluetooth soll seit Kernel Version 4.18 funktionieren. Ich kann zwar nach Geräten suchen und mit ihnen Koppeln, aber danach funktioniert nichts.

Außerdem funktionieren die Tastatur sowie das Touchpad nur mit einem separaten Treiber, was besonders bei der ersten Installation von Linux eine spannende Entdeckung war…

Zur Funktionalität von Thunderbolt 3 unter Linux kann ich leider noch nichts sagen, da ich zuhause kein Dock besitze. Laut Berichten soll es ohne Probleme funktionieren, ich werde es selber testen, sobald ich wieder im Büro bin.

Der Github-User Dunedan hat sich die Arbeit gemacht, den aktuellen Stand der Hardwareunterstützung in einem Repo zusammenzufassen: Github Repo mbp-2016-linux

Diese Repo sollte immer die erste Anlaufstelle sein, um sich über den Stand der Kompatibilität zu informieren.

Wer sich nach der langen Liste der fehlenden Funktionalitäten nicht hat abschrecken lassen, für den folgen hier einige Hinweise, die bei der Installation helfen sollen. Ich beschreibe hier die Schritte, die ich auf meinem System durchgeführt habe. Als Distribution verwende ich Arch Linux mit der aktuellen Kernelversion 4.20.0.

Hierbei handelt es sich explizit nicht um eine Schritt-für-Schritt-Anleitung, sondern lediglich um einen groben Wegweiser.

Schwarzes Bild beim Boot

Bei einigen Kernelversionen < 4.20 gab es unter Umständen Probleme mit dem Modeset bei AMD Grafikakrten. Dies führte zu einem schwarzen Bildschirm. Beheben kann man dies, indem man beim Boot den Kernelparameter amdgpu.dc=0 mitgibt, was die Display Code Funktion des Treibers deaktiviert.

Bei meinem System trat dieser Fehler ab Kernelversion 4.19.12 (eventuell auch schon einige Minor-Releases früher) nicht mehr auf, und ich konnte ohne den zusätzlichen Parameter booten.

Tastatur, Touchpad und Touchbar

Wie bereits erwähnt wurde, funktionieren die Eingabegeräte out of the box nicht. Hierfür wird ein separates Kernelmodul benötigt, der apple-spi-Treiber. Einen weiterentwickelten Fork des Treibers vom User roadrunner2 findet man auf Github: Github Repo macbook-12-spi-driver

Die Installation ist dank DKMS sehr einfach. Man klont die Repo in das Verzeichnis /usr/src/applespi-0.1 (unbedingt darauf achten, dass man den Branch touchbar-driver-hid-driver auscheckt), und installiert das Modul mittels DKMS:
dkms install -m applespi -v 0.1

Genauere Schritte stehen in der README der Repository. Wurde das Modul korrekt installiert, sollten nach dem nächsten Boot die Tastatur, das Touchpad und die Touchbar funktionieren.
Die Touchbar unter Linux zeigt die selben Steuerelemente wie unter macOS an, also Buttons für die Steuerung der Display- und Tastaturhelligkeit, Medienkontrolle sowie die Lautstärke, und beim Halten der fn-Taste die Funktionstasten F1-F12. Die Escape-Taste wird hier ebenfalls gefunden (wie sollte man sonst auch vim benutzen…)

Notiz für Arch-User (trifft ggf. auch auf andere Distributionen zu): Bei der Installation das Package xf86-input-synaptics nicht vergessen. Wenn man das vergisst, sucht man an vielen anderen Stellen, wieso es denn nicht recht funktioniert…

Lüfter drehen nicht hoch

Bei meiner Installation drehten die eingebauten üfter Lüfter nicht hoch, selbst bei einer CPU-Temperatur von 100ºC. Nach einer kurzen Suche stolperte ich über mbpfan, eine kleine Anwendung, die die Lüfter von MacBooks kontrolliert:
Github Repo mbpfan | Projekthomepage | AUR

Nach der Installation müssen noch einige Paramter in der Konfigurationsdatei /etc/mbpfan.conf angepasst werden. Eine Anleitung zur Konfiguration von mbpfan stellt der Autor auf seiner Seite bereit: Konfigurationsanleitung
Nun nur noch den Dienst starten, und schon sollten die Lüfter die Temperatur regulieren.

Bonus: Touchpad-Wischgesten

Ein Feature, an das ich mich unter macOS gewöhnt habe, ist das Wechseln der aktuellen Arbeitsfläche mittels Dreifinger-Swipe. Diese (und andere) Funktionalitäten kann man unter Linux ganz einfach mittels libinput-gestures replizieren:
Github Repo libinput-gestures

Nach der Installation kann man die Konfigurationsdatei von /etc/libinput-gestures.conf nach ~/.config/libinput-gestures.conf kopieren, und dort nach belieben anpassen. Um ein einfaches Wechseln der Arbeitsflächen zu erreichen, reichen folgende Zeilen aus:

gesture swipe right 3 _internal ws_up
gesture swipe left 3 _internal ws_down

Dies definiert die Gesten “mit drei Fingern nach links/rechts wischen” mit den internen Befehlen ws_up bzw. ws_down, welche unter Gnome und KDE Plasma die Arbeitsflächen wechseln. Um eine Geste mit 4 Fingern zu definieren, wird einfach die 3 durch eine 4 ersetzt.
Weitere Gesten können entsprechend der Kommentare in der Konfigurationsdatei bestimmt werden.

Akkulaufzeit

Neben der Tatsache, dass es etwas stört, ständig einen kleinen WLAN USB Stick am Notebook haben zu müssen, ist die Akkulaufzeit der andere wirklich störende Faktor. Mit niedriger Bildschirmhelligkeit beim Surfen und leichter Textbearbeitung kam ich auf eine Laufzeit von ca. 3 Stunden 30 Minuten, was doch ein wenig mager ist.

Hierbei habe ich bereits alle Paramter optimiert, die powertop mir ankreidete, sowie die maximale Taktung der CPU mittels cpupower auf 3GHz begrenzt. Hoffen wir mal, dass sich hier in Zukunft noch einiges tut.

Quellen

Dunedans Github Repo mit Infos zur Hardwarekompatibilität: github.com
roadrunner2s Github Repo mit dem Apple SPI Treiber: github.com
dgraziotins Github Repo mit mbpfan: github.com
Projektseite von mbpfan: ineed.coffee
mbpfan Konfiguration: ineed.coffee
mbpfan im AUR: archlinux.org
buttletmarks Github Repo mit libinput-gestures: github.com