Compare commits
2
Commits
a58754dbfc
...
1cea1df9e7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cea1df9e7 | ||
|
|
c7221e18ad |
@@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
name: Gerät melden
|
||||||
|
about: Ergebnis der Phase-0-Beweise auf deinem Telefon — Erfolg wie Fehlschlag
|
||||||
|
title: "[Gerät] Hersteller Modell (Android X)"
|
||||||
|
labels: geraet
|
||||||
|
---
|
||||||
|
|
||||||
|
**Ein Fehlschlag ist genauso wertvoll wie ein Erfolg.** Sauber dokumentiert zeigt er,
|
||||||
|
wo die Grenze verläuft — und das ist für andere oft nützlicher als eine weitere
|
||||||
|
Erfolgsmeldung. Bitte nichts beschönigen und nichts weglassen.
|
||||||
|
|
||||||
|
## Gerät
|
||||||
|
|
||||||
|
| | |
|
||||||
|
|---|---|
|
||||||
|
| Hersteller und Modell | |
|
||||||
|
| Codename (`getprop ro.product.device`) | |
|
||||||
|
| SoC / GPU | |
|
||||||
|
| Android-Version und ROM | |
|
||||||
|
| RAM / freier Speicher | |
|
||||||
|
|
||||||
|
## Ergebnisse
|
||||||
|
|
||||||
|
| Beweis | Ergebnis | Anmerkung |
|
||||||
|
|---|---|---|
|
||||||
|
| **S1** Plasma Mobile in proot | ⬜ bestanden / ⬜ gescheitert / ⬜ teilweise | |
|
||||||
|
| **S2** Mikrofon im Linux | ⬜ bestanden / ⬜ gescheitert / ⬜ teilweise | |
|
||||||
|
| **S3** Virtuelle PipeWire-Kamera | ⬜ bestanden / ⬜ gescheitert / ⬜ teilweise | |
|
||||||
|
| **S4** Intent-Handoff | ⬜ bestanden / ⬜ gescheitert / ⬜ teilweise | |
|
||||||
|
| **Übernacht-Test** | ⬜ bestanden / ⬜ gescheitert | |
|
||||||
|
|
||||||
|
## Leistung
|
||||||
|
|
||||||
|
| | |
|
||||||
|
|---|---|
|
||||||
|
| GPU-Pfad (Turnip / Zink / virgl / Software) | |
|
||||||
|
| `glmark2` | |
|
||||||
|
| Virtuelle Auflösung | |
|
||||||
|
| Akkuverbrauch im Leerlauf mit laufendem Stack | |
|
||||||
|
|
||||||
|
## Hintergrundbetrieb
|
||||||
|
|
||||||
|
Manche ROMs beenden Hintergrundprozesse deutlich aggressiver als andere. Das entscheidet
|
||||||
|
über die Alltagstauglichkeit, deshalb bitte ausfüllen:
|
||||||
|
|
||||||
|
- Welche Handgriffe waren nötig, damit der Stack eine Nacht überlebt?
|
||||||
|
- Was hat das ROM trotzdem beendet?
|
||||||
|
|
||||||
|
## Was schiefging
|
||||||
|
|
||||||
|
Bitte die Protokolle aus `spike/out/*.log` anhängen oder die entscheidenden Zeilen
|
||||||
|
einfügen. Interessant ist vor allem, **woran** etwas gescheitert ist — nicht nur, dass.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Protokoll</summary>
|
||||||
|
|
||||||
|
```
|
||||||
|
hier einfügen
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
@@ -41,24 +41,59 @@ Ergebnisse landen in [`docs/spike-protokoll.md`](docs/spike-protokoll.md).
|
|||||||
|
|
||||||
Getestet wird auf einem **OnePlus 7 Pro (Snapdragon 855, Adreno 640) mit Stock OxygenOS 12**.
|
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
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. Auf dem PC. Verbindet per USB oder WLAN — das Skript fragt danach.
|
./provision/adb-wireless.sh # Verbindung per WLAN (oder Kabel anstecken)
|
||||||
# Ein Kabel wird nicht gebraucht: Android 11+ kann Wireless Debugging.
|
./provision/install-termux.sh # lädt Termux + 3 Zusatz-Apps, installiert sie,
|
||||||
# Fehlt Termux, bietet es an, alle vier Apps herunterzuladen und
|
# erteilt die nötigen Berechtigungen
|
||||||
# fernzuinstallieren (oder direkt: ./provision/install-termux.sh).
|
./provision/provision.sh # Akku- und Hintergrundeinstellungen,
|
||||||
./provision/provision.sh
|
# 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
|
||||||
|
bash /sdcard/hpos-init.sh # installiert git, klont das Repo nach ~/hpos
|
||||||
|
cd ~/hpos
|
||||||
|
|
||||||
# 2. Auf dem Telefon in Termux:
|
|
||||||
bash spike/00-bootstrap-termux.sh
|
bash spike/00-bootstrap-termux.sh
|
||||||
|
|
||||||
# 3. Beweise der Reihe nach:
|
bash spike/01-s1-plasma-mobile.sh # S1 zuerst — der wackligste Beweis
|
||||||
bash spike/01-s1-plasma-mobile.sh
|
|
||||||
bash spike/02-s2-mikrofon.sh
|
bash spike/02-s2-mikrofon.sh
|
||||||
bash spike/03-s3-pipewire-kamera.sh
|
bash spike/03-s3-pipewire-kamera.sh
|
||||||
bash spike/04-s4-intent-handoff.sh
|
bash spike/04-s4-intent-handoff.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Details und Voraussetzungen: [`spike/README.md`](spike/README.md).
|
### 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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/hpos && git pull
|
||||||
|
```
|
||||||
|
|
||||||
|
Details, Stellschrauben und was bei Fehlschlägen zu tun ist:
|
||||||
|
[`spike/README.md`](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
|
## Dokumentation
|
||||||
|
|
||||||
@@ -78,8 +113,12 @@ Läuft es bei dir? [Geräte-Meldung eröffnen](.github/ISSUE_TEMPLATE/geraet-mel
|
|||||||
|
|
||||||
## Lizenz
|
## Lizenz
|
||||||
|
|
||||||
GPLv3 — siehe [LICENSE](LICENSE). Das Projekt verteilt Termux (GPLv3) mit;
|
GPLv3 — siehe [LICENSE](LICENSE).
|
||||||
die einheitliche Lizenz erfüllt die Quellen-Angebotspflicht.
|
|
||||||
|
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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -95,4 +134,23 @@ Currently in **Phase 0** — proving four load-bearing assumptions (S1–S4 abov
|
|||||||
any infrastructure gets built. See [`spike/`](spike/) and
|
any infrastructure gets built. See [`spike/`](spike/) and
|
||||||
[`docs/spike-protokoll.md`](docs/spike-protokoll.md).
|
[`docs/spike-protokoll.md`](docs/spike-protokoll.md).
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
|
||||||
|
No USB cable needed — Android 11+ pairs over WLAN.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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.
|
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.
|
||||||
|
|||||||
+15
-21
@@ -35,8 +35,16 @@ case "$REPO" in
|
|||||||
exit 1 ;;
|
exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Benutzernamen aus der Adresse entfernen. Lesen geht anonym; steht ein Name in
|
||||||
|
# der URL, fragt git trotzdem nach einem Passwort — auf einer Bildschirmtastatur
|
||||||
|
# eine unnötige Quälerei. Zum Schreiben braucht man ihn ohnehin nur auf dem PC.
|
||||||
|
REPO_ROH="$REPO"
|
||||||
|
REPO=$(printf '%s' "$REPO" | sed -E 's#^(https?://)[^/@]+@#\1#')
|
||||||
|
[ "$REPO" != "$REPO_ROH" ] && ANONYM=1 || ANONYM=0
|
||||||
|
|
||||||
kopf "HPOS — Ersteinrichtung auf dem Telefon"
|
kopf "HPOS — Ersteinrichtung auf dem Telefon"
|
||||||
hinweis "Repo: $REPO"
|
hinweis "Repo: $REPO"
|
||||||
|
[ "$ANONYM" = 1 ] && hinweis "(Benutzername entfernt — gelesen wird anonym)"
|
||||||
|
|
||||||
# ── git ──────────────────────────────────────────────────────────────────────
|
# ── git ──────────────────────────────────────────────────────────────────────
|
||||||
kopf "git"
|
kopf "git"
|
||||||
@@ -48,26 +56,9 @@ else
|
|||||||
else fehl "Installation von git fehlgeschlagen"; exit 1; fi
|
else fehl "Installation von git fehlgeschlagen"; exit 1; fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── Zugangsdaten ─────────────────────────────────────────────────────────────
|
# Das Telefon liest nur. Es soll nie versehentlich versuchen zurückzuschreiben —
|
||||||
# Bei einem privaten Repo fragt git bei jedem Zugriff nach dem Passwort. Auf einer
|
# ein Push von hier wäre weder gewollt noch möglich.
|
||||||
# Bildschirmtastatur ist das eine Zumutung, deshalb wird der Speicher angeboten.
|
git config --global credential.helper "" 2>/dev/null || true
|
||||||
# Er legt die Zugangsdaten im Klartext unter ~/.git-credentials ab — das gehört
|
|
||||||
# gesagt, damit die Entscheidung bewusst fällt.
|
|
||||||
case "$REPO" in
|
|
||||||
https://*@*)
|
|
||||||
if [ ! -f "$HOME/.git-credentials" ]; then
|
|
||||||
kopf "Zugangsdaten"
|
|
||||||
hinweis "Das Repo verlangt vermutlich ein Passwort."
|
|
||||||
printf ' Nach der Eingabe dauerhaft merken? (Klartext in ~/.git-credentials) [j/N] > '
|
|
||||||
read -r MERKEN
|
|
||||||
case "${MERKEN:-n}" in
|
|
||||||
j|J) git config --global credential.helper store
|
|
||||||
ok "Passwort wird nach der ersten Eingabe gespeichert" ;;
|
|
||||||
*) hinweis "Dann fragt git bei jedem Zugriff erneut." ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# ── Holen oder aktualisieren ─────────────────────────────────────────────────
|
# ── Holen oder aktualisieren ─────────────────────────────────────────────────
|
||||||
kopf "Repo"
|
kopf "Repo"
|
||||||
@@ -81,12 +72,15 @@ if [ -d "$ZIEL/.git" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
# --depth reicht nicht: für 'git pull' später brauchen wir eine vollwertige
|
||||||
|
# Arbeitskopie, kein abgeschnittenes Archiv.
|
||||||
if git clone "$REPO" "$ZIEL"; then
|
if git clone "$REPO" "$ZIEL"; then
|
||||||
ok "geklont nach $ZIEL"
|
ok "geklont nach $ZIEL"
|
||||||
else
|
else
|
||||||
fehl "git clone fehlgeschlagen."
|
fehl "git clone fehlgeschlagen."
|
||||||
hinweis "Bei privaten Repos: Benutzername und Passwort prüfen."
|
|
||||||
hinweis "Adresse war: $REPO"
|
hinweis "Adresse war: $REPO"
|
||||||
|
hinweis "Ist das Repo öffentlich lesbar? Ohne das braucht es Zugangsdaten,"
|
||||||
|
hinweis "und die gehören nicht aufs Telefon."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -282,6 +282,15 @@ if [ -z "$REPO_URL" ]; then
|
|||||||
read -r REPO_URL </dev/tty || REPO_URL=""
|
read -r REPO_URL </dev/tty || REPO_URL=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Benutzernamen entfernen: das Telefon liest nur, und Lesen geht anonym. Bliebe
|
||||||
|
# der Name in der Adresse, fragte git dort nach einem Passwort — auf einer
|
||||||
|
# Bildschirmtastatur eine unnötige Quälerei.
|
||||||
|
if [ -n "$REPO_URL" ]; then
|
||||||
|
REPO_URL_ROH="$REPO_URL"
|
||||||
|
REPO_URL=$(printf '%s' "$REPO_URL" | sed -E 's#^(https?://)[^/@]+@#\1#')
|
||||||
|
[ "$REPO_URL" != "$REPO_URL_ROH" ] && hinweis "Benutzername für das Telefon entfernt (Lesen geht anonym)"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$TROCKEN" = 1 ]; then
|
if [ "$TROCKEN" = 1 ]; then
|
||||||
warn "Trockenlauf — es wird nichts übertragen."
|
warn "Trockenlauf — es wird nichts übertragen."
|
||||||
elif [ -z "$REPO_URL" ]; then
|
elif [ -z "$REPO_URL" ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user