LineageOS auf Oneplus One (bacon) installieren
Urlaub. Mistwetter. Da könnte man ja mal das Oneplus One (OPO) mit LineageOS bespielen, oder?
Was gibt es zu berücksichtigen?
seufz
Hürden
Signal. Die Schlüssel von Signal lassen sich leider nicht retten, da ich das OPO nicht gerootet hatte. Jeder App-Entwickler kann in der Manifest-Datei seiner App angeben, ob sie auf "adb backup" reagieren soll oder nicht. Und OpenWhispersystems hat sich dagegen entschieden aus Sicherheitsgründen (die ich komplett nachvollziehen kann, mir aber so ein wenig die Motivation nehmen).
Google Authenticator. Ich habe sechs Dienste in den Authenticator eingebunden. Was für Signal gilt, gilt auch hier: kein Backup möglich. Immerhin kann ich die Verknüpfung temporär auf ein anderes Gerät schieben, um das später wieder zurück auf das OPO zu schieben. Nicht, dass ich falsch verstanden werde: Es gibt keine Automatik. Das muss bei jedem Dienst so gemacht werden, als würde ich die Zweifaktorauthentifizierung neu einrichten.
Syncthing. Auch hier liegen die kryptographischen Schlüssel außerhalb meines Zugriffs. Hier muss ich im Anschluss all meinen Geräten die neue Installation wieder bekanntmachen.
Vorbereitung
Laden wir erstmal die passenden Pakete herunter:
Netterweise stellen die Leute von LineageOS auch eine leichtverständliche Anleitung zu Verfügung.
Hintergrund
An der Stelle kann ich mal kurz erläutern, warum ich das überhaupt auf mich nehme. Seit September 2016 hat das OPO keine Updates mehr bekommen. Das war auch ungefähr der Zeitpunkt, als Cyanogen Inc. beschlossen hat, den Betrieb und die Weiterentwicklung ihres Cyanogen OS einzustellen. Schon vorher fiel Cyanogen Inc. durch fragwürdige Geschäftsentscheidungen auf:
Exklusive, wenn auch zeitlich befristete Vertriebsrechte für einen indischen Smartphone-Hersteller für Cyanogen OS in Indien, was Oneplus als early supporter verärgerte.
Einführung von Microsoft-Apps in das System-Image von Cyanogen OS.
Entwicklung von "MOD ready", einer Infrastruktur im OS, um Bestandteile durch Komponenten anderer Anbieter austauschen zu können
Das alles hinterließ einen schalen Nachgeschmack zu einem Produkt, das zu großen Teilen auf dem Engagement der Community beruht, die sich um Emanzipation ihrer Nutzer*innen bemüht. Der Name Cyanogen jedenfalls erschien der Community derart beschädigt, dass sie das Community-Projekt CyanogenMod zu LineageOS umbenannten. Cyanogen Inc. ist jedenfalls nicht mehr, und damit sind auch eventuelle Updates eher fragwürdig, zumal Oneplus sicher mehr Interesse daran hat, ihr hervorragendes Oneplus 5 (und bald 5T) zu verkaufen.
An der Stelle wäre es interessant mal zu recherchieren, wie Wileyfox mit dem Cyanogen-Debakel umgegangen ist. Kolleg*innen haben mir berichtet, dass die Swifts (1. Generation) noch Updates auf Android 7.0 oder 7.1 bekommen hätten, die aber sicher nicht von Cyanogen Inc. stammen konnten. Aber auch auf den Swifts hat sich LineageOS 14.1 als bessere Wahl herausgestellt.
Zwei meiner Motivationen sind aber KRACK, ein Angriff auf die WiFi-Verschlüsselung WPA2, für die LineageOS seit Mitte Oktober wohl Patches eingespielt hat, und BlueBorne, ein Angriff auf Bluetooth, der entfernte Code-Ausführung allein über aktiviertes und sogar ungepaartes Bluetooth ermöglicht, was bei LineageOS seit Anfang Oktober gepatcht ist. Ist ersteres vielleicht nur eine theoretische Bedrohung, ist zweiteres komplett fahrlässig zu ignorieren.
Weiterhin gibt es ein paar Ärgernisse, die ich hoffe behoben zu sehen:
Das OPO versucht ständig Kontakt zum sog. Cyanogen-Konto aufzunehmen, dessen Server aber längst abgeschaltet ist. Selbst mit deaktiviertem "Sicherheit->Geräteadministrator" von Cyanogen belastet das den Akku.
Wenn der Massenspeicher des OPO voll läuft, so ab 80 bis 90 Prozent Belegung, scheitern nicht nur Bluetooth-Verbindungen häufiger mal, das Gerät vergisst auch Paarungen.
Bluetooth selber frisst im Leerlauf enorm viel Akkukapazität. Der Unterschied über Nacht ist ungefähr 100 → 85 Prozent zu 100 → 45 Prozent. Ich kann mich ehrlich gesagt nicht daran erinnern, dass das anfangs auch so war. Ich vermute ja, das letzte Cyanogen-OS-Update hat diesen Regress mitgebracht.
Das Mikrofon wird offensichtlich stummgeschaltet, wenn ich beim Telefonieren auf freisprechen schalte. Das war anfangs ganz sicher nicht der Fall.
Durchführung
Heute geht es hier um LineageOS auf dem OPO, weswegen ich den Umzug der Authenticator-ZFA auf das andere Gerät nicht beschreibe.
Zwingend notwendig ist die Android Debug Bridge (adb). Unter Linux ist sie einfach über das Paketmanagement zu installieren, unter Windows … nun, Windows-Nutzer*innen müssen sich was suchen.
Am OPO wird dann Android-Debugging in den Entwickleroptionen aktiviert. Dazu müssen diese erstmal freigeschaltet werden: In den Einstellungen wird heruntergescrollt bis "Über das Telefon". Dort wird 7× auf die Buildnumber getippt. Im Anschluss können die "Entwickleroptionen" oberhalb von "Über das Telefon" gefunden werden. Ein bis zwei Bildschirme heruntergescrollt ist "Android-Debugging aktivieren" zu finden.
An der Stelle ließe sich dann das Telefon ans USB-Kabel und dieses an den Computer anschließen. Mein Arch Linux hat hier aber die Kooperation verweigert, indem es das Telefon nicht mehr finden wollte, nachdem USB-Debugging aktiviert wurde. Dementsprechend konnte ich nicht
adb reboot bootloader
ausführen. In den Entwickleroptionen konnte ich aber ein etwas besser ausgestattetes Neustart-Menü aktivieren, was mir das direkte Booten in den Bootloader Fastboot erlaubt.
Sobald auf dem Display des OPO "fastboot" erscheint, kann es über den Befehl "fastboot" angesprochen werden. Bei Linux ist das meines Wissens Teil des adb-Pakets, bei Windows … siehe oben. Mit
fastboot devices
lässt sich anzeigen, ob das Gerät zu finden ist. Ist dem so, lässt sich das OPO mit folgendem Befehl entsperren, falls es noch nicht entsperrt ist:
fastboot unlock oem
Das Gerät wird gelöscht (auf Werkseinstellungen zurückgesetzt)! Im Anschluss startet es neu. Android-Debugging ist leider wieder deaktiviert worden, deswegen erneut aktivieren und wieder in den Fastboot-Bootloader booten. Jetzt lässt sich das oben heruntergeladene TWRP vorübergehend installieren:
fastboot flash recovery twrp-x.x.x-x-bacon.img
Die Versionsnummer ist entsprechend anzupassen. "Vorübergehend" deswegen, weil ich Warnungen gelesen habe, dass ein dann startendes Cyanogen OS das TWRP-Recovery einfach wieder löscht und durch das originale ersetzt. Sollte aus Versehen das OPO also nicht ins Recovery, sondern ins Android gebootet werden, muss diese Prozedur ggf. wiederholt werden. Ist TWRP geschrieben worden, kommt der Teil, der etwas Fingerfertigkeit erfordert: Das OPO muss ausgeschaltet werden. Bei mir half es nicht, lange auf den Power-Button zu drücken – ich musste mit [Power]+[Vol-Down] hart ausschalten. Netterweise ist das gleich die Tastenkombination, mit der auch ins Recovery gebootet werden kann, was dann jetzt ansteht.
TWRP erlaubt es, die benötigten Daten per adb oder per Dateimanager auf das OPO zu kopieren. Da eh schon das Terminal offen ist, heißt es
adb push lineage-14.1-20171023-nightly-bacon-signed.zip /sdcard
LineageOS darf die Google-Apps nicht beinhalten. Deswegen müssen diese für die Verwendung des Play Store gesondert heruntergeladen werden, z.B. von OpengGApps.org. Das OPO braucht Pakete für die ARM-Plattform, LineageOS 14.1 entspricht Android 7.1. Mit ein bisschen Herumprobieren fand ich heraus, dass das größte installierbare Paket die Mini-Version ist (hier direkt verlinkt). Dieses wird dann auch auf das OPO kopiert:
adb push opengapps-arm-7.1-mini.zip /sdcard
Werden optional root-Rechte gewünscht, ist noch das LineageOS-SU-Addon von https://download.lineageos.org/extras zu beschaffen: ebenfalls ARM, ebenfalls für 14.1. Auch dieses dann rüberkopieren:
adb push addonsu-14.1-arm-signed.zip /sdcard
Damit wäre alles beisammen. Am OPO dann in TWRP "Wipe" auswählen, "Advanced Wipe" und dort dann System, Data und Cache auswählen. Das Löschen bestätigen, kurz warten und zurück ins Hauptmenü. Jetzt können die ZIP-Dateien installiert werden mit "Install". Dort können die eben kopierten Dateien dann nacheinander ausgewählt werden, und zum Schluss wird die Installation dann bestätigt. Weil es nichts kostet, habe ich das Angebot, Dalvik Cache und Data zu wipen angenommen, ebenso die Installation der TWRP-Android-App (die eigentlich nur ein Platzhalter für die richtige App ist). Jetzt kann neugestartet werden. Das erste Mal Android 7.1. zu booten, kann ein wenig länger dauern.
Anmerkung: Mein adb-Problem in Arch Linux habe ich nicht behoben bekommen. Netterweise stellte mir Katja kurzzeitig ihren Ubuntu-Laptop zur Verfügung, wo das Kopieren per adb problemlos verlief. Trotzdem hat mich das wahnsinnig gemacht, da ich in dmesg mitansehen konnte, wie das OPO am USB im Halbsekundentakt die USB-Verbindung verlor und wiederherstellte. Wenn ich ehrgeizig bin, recherchiere ich da mal eine Lösung.
Nach dem Bootvorgang bot mir LineageOS die Wiederherstellung aus verschiedenen Quellen an, unter anderem über mein Google-Konto. Dort konnte ich dann mein A0001 auswählen. Ärgerlicherweise wurde mir keine Option zur Auswahl des WLAN gegeben, bevor ich mit der Ersteinrichtung durch war. Immerhin stellte das Gerät nicht alles wieder her, bevor ich durch war. Sobald ich auf dem Startbildschirm war, aktivierte ich das WLAN und war beruhigt, nicht mein Datenvolumen aufzubrauchen. Immerhin fing es an, mehr als 150 Apps herunterzuladen.
Fazit
Abgesehen von meinen adb-Schwierigkeiten war der Vorgang eigentlich recht problemlos. Ärgerlich ist natürlich, dass einige Apps unwiderruflich ihre Einstellungen verlieren (Signal, Syncthing, Authenticator, WhatsApp (naja, WhatsApp ist mir egal)). Das OPO bootet Android N klaglos und verrichtet seinen Dienst. Bacon, so der Codename des OPO, ist ein offiziell unterstütztes Gerät von LineageOS. Ich erwarte nicht mehr Probleme von LineageOS als vom vorher installierten Cyanogen OS, eher weniger, wegen gereifterer Software und engagierter Community. Ich bin sicher, es wird seine eigenen Macken mitbringen. Mal schauen. So weit bin ich bislang ganz angetan.
Comments