Dieser Vortrag beschreibt den Prozess des Portierens und Ausführens von Mainline-Linux (insbesondere mittels PostmarketOS) auf Smartphones, exemplifiziert am OnePlus 8T. Es werden die Motivationen für die digitale Unabhängigkeit, die Wahl geeigneter Hardware (vorzugsweise Qualcomm-SoCs), notwendige Werkzeuge wie PMbootstrap sowie die technischen Schritte zur Integration von Peripheriegeräten, Sensoren, Displays und UART-Debug-Schnittstellen erläutert. Zudem werden Herausforderungen beim Schreiben von Device Trees und dem Umgang mit herstellerspezifischen Android-Kernel-Treibern beleuchtet.
Wichtigste Punkte & Zeitstempel
0:00 Mainline Linux auf Smartphones: Vorstellung der Installation des aktuellen, offiziellen Linux-Kernels (Mainline) anstelle des herstellerspezifischen Android-Kernels auf mobilen Endgeräten.
0:39 Motivation & Use-Cases: Einsatz des Smartphones als universeller Computer (General Purpose Computer), beispielsweise zur Abfrage von Sensordaten über SSH, sowie die Förderung digitaler Unabhängigkeit.
0:59 Eigene Entwicklungen: Der Vortragende nutzt PostmarketOS auf einem OnePlus 8T als Alltagsgerät und hat dafür unter anderem den Touchscreen-Treiber implementiert und das Display repariert.
07:20 Terminologie: Definition zentraler Begriffe wie Device Tree Source (DTS) zur Hardwarebeschreibung und „Downstream“ für den modifizierten Android-Kernel.
08:13 Hardware-Auswahl: Empfehlung von Smartphones mit Qualcomm-Chipsätzen (SoCs) aufgrund des besten Upstream-Linux-Supports; Nutzung von Altgeräten oder LineageOS-kompatibler Hardware.
09:29 Vorbereitung & Werkzeuge: Einsatz von PMbootstrap als zentrales Build-Tool, Android-Tools (bzw. Heimdall für Samsung) und das Entsperren des Bootloaders als Basis für den Installationsprozess.
13:26 Treibersuche & Sensoren: Analyse von Android-Device-Trees zur Anbindung von Peripherie über SPI oder I2C; Einbindung von Low-Power-Coprozessoren wie dem SLPI (Sensor Low Power Island) via Hexagon RPCD.
21:18 Mainlining von Grund auf: Erstellung eigener Device-Packages und DTS-Dateien für Geräte ohne bisherigen Linux-Support; Nutzung spezifischer Kernel-Parameter, um ungenutzte Regulatoren und Clocks vor dem Abschalten zu bewahren.
27:21 UART-Debugging: Aktivierung der seriellen Schnittstelle (Universal Asynchronous Receiver-Transmitter) zur Ausgabe von Kernel-Logs; erfordert teils präzises Löten direkt auf Leiterbahn-Pads (Traces).
31:54 Display & GPU-Beschleunigung: Ansteuerung des Bildschirms über Framebuffer und DSI (Display Serial Interface); Nutzung von Panel-Generatoren und Aktivierung der GPU für mobile Desktop-Umgebungen wie Phosh oder Plasma Mobile.
37:39 Q&A - UART & Telefonie: Hinweise zum Auffinden von UART-Pins über die PostmarketOS-Wiki, Status der Anruffunktion (eingeschränkt durch Kopplung an die Systemlautstärke) und Hürden bei neueren Geräten mit geschlossenen Bootloadern nach 2022.
Glossar
Mainline Linux: Der offizielle, direkt von den Linux-Kernel-Maintainern gepflegte Hauptentwicklungsstrang des Betriebssystemkerns, im Gegensatz zu stark angepassten und oft veralteten Hersteller-Kernel-Zweigen.
PostmarketOS (pmOS): Eine auf Alpine Linux basierende, schlanke Linux-Distribution, die speziell für den Einsatz auf Smartphones und portablen Geräten konzipiert wurde.
Device Tree (DT) / DTS: Eine hierarchische Datenstruktur und Textdatei (Device Tree Source), mit der Hardwaredetails (wie Prozessoren, Speicher und Peripherie) für den Linux-Kernel beschrieben werden, ohne dass diese im Quellcode fest codiert sind.
SoC (System-on-Chip): Ein Mikrochip, der wesentliche Komponenten eines Computers oder Smartphones – darunter Hauptprozessor (CPU), Grafikeinheit (GPU) und Schnittstellen-Controller – auf einem einzigen Halbleiter integriert.
PMbootstrap: Das zentrale, auf Python basierende Kommandozeilenwerkzeug von PostmarketOS zum Erstellen, Konfigurieren und Flashen von Betriebssystem-Images für mobile Endgeräte.
Heimdall: Ein Open-Source-Software-Tool zum Übertragen (Flashen) von Firmware-Dateien auf Samsung-Android-Geräte als plattformunabhängige Alternative zu herkömmlichen Windows-Tools.
SPI (Serial Peripheral Interface) / I2C (Inter-Integrated Circuit): Gängige, serielle Kommunikationsprotokolle, die von Mikrocontrollern und SoCs genutzt werden, um periphere Hardware wie Sensoren oder Touchscreens anzusteuern.
SLPI (Sensor Low Power Island) / ADSP: Energieeffiziente Signal- und Sensor-Coprozessoren auf Qualcomm-Chipsätzen, die Sensordaten oder Audiosignale im Standby verarbeiten, um die Haupt-CPU zu entlasten.
Hexagon RPCD: Ein Software-Daemon und Framework in Mainline-Linux (bzw. SSC RPCD unter Android), das die Kommunikation mit den digitalen Signalprozessoren (DSP) auf Qualcomm-SoCs ermöglicht.
UART (Universal Asynchronous Receiver-Transmitter): Eine klassische, serielle Hardwareschnittstelle zur asynchronen Datenübertragung, die bei der Embedded-Entwicklung unverzichtbar für die Ausgabe von Bootloader- und Kernel-Konsolenmeldungen ist.
DSI (Display Serial Interface): Ein standardisierter Hochgeschwindigkeits-Serienbus der MIPI-Alliance, der primär für die Datenübertragung zwischen dem Prozessor und dem Display-Panel in Smartphones genutzt wird.
Bootloader: Die initialisierende Software, die beim Einschalten des Geräts als Erstes ausgeführt wird, um die Hardware zu initialisieren und das Betriebssystem oder den Kernel zu laden.