This repo holds the implementation for the sideloadapk that will write the key_ files to the TBox, which enables our app for communication
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
erdbruegger 5957e15132
All checks were successful
Build APK / build (push) Successful in 1m47s
app/src/main/java/net/openaiways/provision/MiniFtp.java aktualisiert
Test für auto release
2026-08-27 00:11:39 +02:00
.forgejo/workflows .forgejo/workflows/build-apk.yml aktualisiert 2026-08-27 00:11:16 +02:00
app app/src/main/java/net/openaiways/provision/MiniFtp.java aktualisiert 2026-08-27 00:11:39 +02:00
gradle/wrapper Add files via upload 2026-08-14 08:54:30 +02:00
build.gradle Add files via upload 2026-08-14 08:54:30 +02:00
gradle.properties Add files via upload 2026-08-14 08:54:30 +02:00
gradlew Add files via upload 2026-08-14 08:54:30 +02:00
gradlew.bat Add files via upload 2026-08-14 08:54:30 +02:00
README.md Add files via upload 2026-08-14 08:54:30 +02:00
settings.gradle Add files via upload 2026-08-14 08:54:30 +02:00

Aiways TBox Provision (Community-APK)

Sideload-App für die Aiways-Head-Unit (Android 4.4.2 / API 19). Schreibt den gemeinsamen OpenAiways-Public-Key als /usrdata/pem/key_OPENAIWAYS (+ _expiretime) per FTP auf die TBox. Danach akzeptiert das Fahrzeug die BLE-Authentifizierung mit dem passenden (community-weit gleichen) Private Key.

Interoperabilität mit dem eigenen Fahrzeug, nachdem Aiways Europe den Dienst abgeschaltet hat. Kein Backend, kein Binary-Patch — nur zwei Dateien schreiben.

Was die App tut

  1. Standard 192.168.1.1 ist vorbelegt (TBox am usb0-Link). Abweichend: IP anpassen oder „TBox suchen (:21)" (Scan auf offenen FTP-Port).
  2. „Auf TBox schreiben" lädt key_OPENAIWAYS und key_OPENAIWAYS_expiretime per FTP (root / oelinux123) nach /usrdata/pem/.
  3. expiretime = 9999999999999 → der Key ist permanent (überlebt Reconnects/Reboots).

Kein System-/Platform-Signing nötig — die App braucht nur die INTERNET-Permission.

APK bauen (einmalig, dann verteilen)

Variante A — GitHub Actions (kein lokales SDK nötig, kostenlos)

  1. Repo bei GitHub anlegen und diesen Ordner hochladen (push).
  2. Tab Actions → Workflow Build APK läuft automatisch (oder „Run workflow").
  3. Nach ~35 Min: Artefakt aiways-tbox-provision-apk herunterladen → app-debug.apk.
  4. Optional: einen Tag v1.0 pushen → die APK wird als Release veröffentlicht.

Die entstehende app-debug.apk ist debug-signiert und normal installierbar („Unbekannte Quellen" auf der Head-Unit erlauben, dann per ES File Explorer öffnen).

Variante B — lokal

./gradlew assembleDebug
# -> app/build/outputs/apk/debug/app-debug.apk

Voraussetzung: Android SDK (Platform 34, Build-Tools), JDK 17.

Installation auf der Head-Unit

  1. app-debug.apk auf einen FAT32-USB-Stick.
  2. Head-Unit: „Unbekannte Quellen" erlauben, ES File Explorer → APK vom USB öffnen → installieren.
  3. App einmal starten, TBox suchen/IP eingeben, „Auf TBox schreiben".

Danach: BLE-Steuerung

Der zum APK-Key passende Private Key liegt separat (Repo-intern / beim BLE-Client aichi_ble_client.py --btkey OPENAIWAYS --privkey OPENAIWAYS_private.pem).

Sicherheitshinweis (gemeinsamer Schlüssel)

Alle so provisionierten Fahrzeuge vertrauen demselben Schlüssel. Wer die APK bzw. den Private Key hat, kann sich per BLE an jedes so eingerichtete Auto anmelden (physische BLE-Nähe vorausgesetzt). Für ein reines Community-Interop-Tool ist das ein bewusster Trade-off zugunsten Einfachheit. Wer Einzel-Keys will: die App key_<ID> on-device generieren lassen (andere Variante — sag Bescheid).


## Projektstruktur

app/src/main/java/net/openaiways/provision/MainActivity.java UI + Scan + Push app/src/main/java/net/openaiways/provision/MiniFtp.java Minimaler FTP-Client app/src/main/assets/key_OPENAIWAYS Public Key (SPKI PEM) app/src/main/assets/key_OPENAIWAYS_expiretime 13 Bytes, permanent .github/workflows/build-apk.yml CI-Build