StefanandClaude Opus 5 f3ef48fd10 S1: GL-Prüfung mit Rückgabewert, Software-Rendering als Rückfallebene
Die GPU-Prüfung lieferte auf dem Gerät nicht einmal eine Fehlermeldung — die
Ausgabe war leer. Ursache: stürzt glxinfo ab, kommt die Meldung von der Shell und
nicht vom Programm, und geht in einer Kommandoersetzung verloren. Ein Absturz sah
dadurch aus wie 'kein Treiber gefunden'. Jetzt wird der Rückgabewert ausgewertet
und ein Wert über 128 ausdrücklich als Absturz benannt. Gegen Erfolg, Absturz und
stillen Fehlschlag geprüft.

Davor steht jetzt ein xdpyinfo: ist schon der X-Server aus dem Container nicht
erreichbar, sagt jeder GL-Test darunter nichts aus.

Der wichtigere Punkt ist aber ein Denkfehler im Aufbau: S1 fragt, OB Plasma
Mobile in proot läuft — nicht, wie schnell. Die GPU zur Voraussetzung zu machen
verwechselt Machbarkeit mit Leistung. Schlägt virgl fehl, wird deshalb auf
Software-Rendering ausgewichen und weitergemacht: KWin mit QPainter-Compositor,
QtQuick mit Software-Renderer. Beide umgehen die GL-Ebene ganz und sind für eine
Oberfläche ohne Animationen brauchbarer als llvmpipe.

Damit lässt sich S1 auch dann beantworten, wenn die GPU-Anbindung noch klemmt —
und die wird zu dem, was sie ist: ein eigenes, nachgelagertes Problem.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 22:51:02 +02:00

HPOS — Linux-Smartphone auf Stock-Android, ohne Root

Arbeitstitel. Der Projektname steht noch nicht fest.

Ein beliebiges gebrauchtes Android-Smartphone wird zum Linux-Telefon: Debian 13 mit Plasma Mobile in Termux/proot, mit einem Backup- und Provisioning-System drumherum, das die eigentliche Substanz des Projekts ausmacht.

Kein Root. Kein entsperrter Bootloader. Kein Server nötig.

Was es ist

"Linux auf dem Handy" gibt es schon. Was es nicht gibt, ist der Rest:

  • Backup mit echten Snapshots — Einzeldatei-Restore, Web-Manager im Browser, ZIP-Export aufs Telefon, Ziele über SFTP/SMB/FTP/WebDAV
  • Provisioning in einem Rutsch — Telefon auspacken, eine APK, ~20 Minuten, fertiges System
  • Klonen aufs neue Telefon per WLAN — Gerätewechsel als Normalfall, nicht als Notfall
  • Bridge zum Android darunter — SMS, Telefonie, Kamera, Sensoren erscheinen im Linux über Standard-D-Bus-Schnittstellen, sodass unveränderte Plasma-Anwendungen sie nutzen

Die Android-Installation darunter ist nur noch Treiber-Layer und Prozess-Host. Alle Nutzdaten leben im Linux und damit im Backup.

Status

Phase 0 — Machbarkeits-Spike. Vier Annahmen tragen das Projekt und werden zuerst bewiesen, bevor Infrastruktur entsteht:

Annahme Wenn es scheitert
S1 Plasma Mobile läuft in proot (genestetes KWin) XFCE-Profil wird Hauptweg
S2 Mikrofon-Eingang erreicht die Linux-Seite Keine Videocalls, keine Sprachaufnahme
S3 Virtuelle PipeWire-Kamera ohne Kernel-Modul Kamera nur in einer eigenen App
S4 Intent-Handoff Linux → Android-App Keine Navigation aus dem Linux-Adressbuch

Noch nichts davon ist bewiesen. Die Skripte in spike/ führen die Beweise; Ergebnisse landen in docs/spike-protokoll.md.

Loslegen

Getestet wird auf einem OnePlus 7 Pro (Snapdragon 855, Adreno 640) mit Stock OxygenOS 12.

Voraussetzung ist nur, dass die Entwickleroptionen aktiv sind. Ein USB-Kabel wird nicht gebraucht — ab Android 11 läuft die Ersteinrichtung über WLAN.

Auf dem PC

./provision/adb-wireless.sh      # Verbindung per WLAN (oder Kabel anstecken)
./provision/install-termux.sh    # lädt Termux + 3 Zusatz-Apps, installiert sie,
                                 # erteilt die nötigen Berechtigungen
./provision/provision.sh         # Akku- und Hintergrundeinstellungen,
                                 # legt das Startskript aufs Telefon

provision.sh allein genügt auch — es ruft die anderen bei Bedarf selbst auf.

Auf dem Telefon, in Termux

bash /sdcard/hpos-init.sh        # installiert git, klont das Repo nach ~/hpos
cd ~/hpos

bash spike/00-bootstrap-termux.sh

bash spike/01-s1-plasma-mobile.sh   # S1 zuerst — der wackligste Beweis
bash spike/02-s2-mikrofon.sh
bash spike/03-s3-pipewire-kamera.sh
bash spike/04-s4-intent-handoff.sh

Aktualisieren

Per adb kommt bewusst nur das Startskript aufs Telefon, nicht das Repo selbst. Dadurch liegt dort eine echte Arbeitskopie — spätere Änderungen brauchen keinen PC:

cd ~/hpos && git pull

Wenn git pull scheitert:

rm -rf ~/hpos && bash /sdcard/hpos-init.sh

Das Startskript versucht zuerst wieder einen Klon und weicht, falls der Server keine Pakete ausliefert, auf den Archiv-Endpunkt aus (/archive/main.tar.gz). Der geht nicht über git upload-pack und funktioniert deshalb auch dann noch.

Das Ergebnis ist dann allerdings ein Abzug, keine Arbeitskopiegit pull geht damit nicht mehr, jede Aktualisierung braucht denselben Befehl erneut. Sobald der Server wieder Pakete liefert, stellt genau dieser Befehl auch die Arbeitskopie wieder her.

Typische Meldung, wenn es so weit ist:

fatal: early EOF
fatal: fetch-pack: invalid index-pack output

Das ist ein serverseitiges Problem — upload-pack stirbt beim Schnüren des Pakets, während die Objekte selbst heil sind. Erkennbar daran, dass sich ein Archiv weiterhin erzeugen lässt.

Details, Stellschrauben und was bei Fehlschlägen zu tun ist: spike/README.md.

Warum Termux nicht aus dem Play Store

Termux und seine Plugins teilen sich eine Android-UID. Android verlangt für Apps mit gemeinsamer UID denselben Signaturschlüssel — mischt man F-Droid und GitHub, scheitert die Installation mit INSTALL_FAILED_SHARED_USER_INCOMPATIBLE, ohne dass die Meldung den Grund nennt. install-termux.sh nimmt deshalb durchgängig GitHub und räumt vorhandene Installationen aus fremder Quelle auf Nachfrage weg.

Nebeneffekt der Entscheidung: Termux:X11 gibt es dort in einer sharedUid-Variante, die in Termux' Prozessgruppe läuft und dessen Akku-Ausnahmen erbt. Bei ROMs, die Hintergrund-Apps aggressiv beenden, ist das der Unterschied zwischen „läuft über Nacht" und „war morgens weg".

Dokumentation

Geräte

Gerät SoC / GPU Android Status
OnePlus 7 Pro (guacamole) Snapdragon 855 / Adreno 640 OxygenOS 12 🔬 im Test

Läuft es bei dir? Geräte-Meldung eröffnen.

Lizenz

GPLv3 — siehe LICENSE.

Termux wird nicht mitverteilt: install-termux.sh lädt die APKs zur Laufzeit von den offiziellen GitHub-Releases. Eine Quellen-Angebotspflicht entsteht dadurch nicht. Sollte die Installer-APK in Phase 2 Termux als Asset mitbringen, ändert sich das — die einheitliche GPLv3 deckt es dann ab.


HPOS — a Linux phone on stock Android, no root

Turns any second-hand Android phone into a Linux phone: Debian 13 with Plasma Mobile inside Termux/proot, wrapped in the backup and provisioning system that is the actual point of the project.

No root. No unlocked bootloader. No server required.

Currently in Phase 0 — proving four load-bearing assumptions (S1S4 above) before any infrastructure gets built. See spike/ and docs/spike-protokoll.md.

Quick start

No USB cable needed — Android 11+ pairs over WLAN.

# On the PC
./provision/adb-wireless.sh      # pair and connect over WLAN
./provision/install-termux.sh    # download and remote-install Termux + addons
./provision/provision.sh         # battery/background settings, push init script

# On the phone, in Termux
bash /sdcard/hpos-init.sh        # installs git, clones this repo to ~/hpos
cd ~/hpos && bash spike/00-bootstrap-termux.sh

Updating later needs no PC: cd ~/hpos && git pull.

Documentation is currently German-first; English will follow once Phase 0 concludes. Device reports are welcome in either language — a well-documented failure is as valuable as a success.

S
Description
No description provided
Readme GPL-3.0
181 KiB
Languages
Shell 95.8%
Python 4.2%