BLE App zur Steuerung der Aiways U5 remote commands (Fenster, Türen, Klima, etc.)
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-27 00:18:22 +02:00
.forgejo/workflows .forgejo/workflows/build-apk.yml aktualisiert 2026-08-26 23:51:11 +02:00
app app/src/main/java/net/openaiways/aiwaysapp/BleManager.java aktualisiert 2026-08-26 23:54:57 +02:00
gradle/wrapper Add files via upload 2026-08-14 13:30:07 +02:00
build.gradle Add files via upload 2026-08-14 13:30:07 +02:00
gradle.properties Add files via upload 2026-08-14 13:30:07 +02:00
gradlew Add files via upload 2026-08-14 13:30:07 +02:00
gradlew.bat Add files via upload 2026-08-14 13:30:07 +02:00
README.md README.md aktualisiert 2026-08-27 00:18:22 +02:00
settings.gradle Add files via upload 2026-08-14 13:30:07 +02:00

AiwaysApp — BLE-Fernsteuerung für den Aiways U5 (Community)

Steuert den eigenen Aiways U5 direkt per Bluetooth LE — ohne Backend, ohne die (abgeschaltete) Original-App. Nutzt den gemeinsamen OpenAiways-Community-Key.

Voraussetzung: Das Auto wurde einmalig mit dem Community-Key provisioniert (siehe Provision-APK), schreibt key_OPENAIWAYS, _expiretime und ac_public_key.pem nach /usrdata/pem/ der TBox).

Was sie kann

Ein Tap = frische BLE-Verbindung → A001-Auth → B001-Befehl → Ergebnis: Entriegeln, Verriegeln, Kofferraum, Fenster hoch/runter, Schiebedach kippen/zu, Blinker, Hupe. Dazu Klima An/Aus mit Zieltemperatur (1630 °C, Stepper) — sendet {"type":"9","param":{"temp":"215"}} (temp × 10, also 215 = 21.5 °C).

Verifiziert am echten Fahrzeug (resCode 0, Auto reagiert). Klima-Temperatur nutzt die aus der TBox-Firmware abgeleitete param.temp-Skalierung (× 10).

Oberfläche

Dunkles, kategorisiertes UI (Türen/Kofferraum, Fenster/Dach, Signale, Klima), abgerundete Karten, Farbcodierung, Status-Punkt und Live-Statuszeile. Eigenes adaptives App-Icon.

Technik

  • Reines Java, minSdk 26, kein AndroidX, keine Dependencies, keine nativen Libs.
  • Krypto byte-genau zum verifizierten Python-Client (AES-128-CBC, RSA-1024 PKCS#1, MD5). RSA-Community-Key als CRT-Parameter eingebettet (Crypto.java).
  • Protokoll V1 (Protocol.java): A001 (Login-Key, RSA-signiert) → Session-Key aus rk → B001 {"type":"N"} mit Session-Key.
  • BLE (BleManager.java): Scan AICHI_*, GATT 0x2B70 (write) / 0x2B71 (notify), 20-B-Chunks write-with-response, LE-Frame-Reassembly.

APK bauen (einmalig, dann verteilen)

GitHub Actions (empfohlen, kein lokales SDK)

  1. Repo anlegen, diesen Ordner-Inhalt hochladen (push).
  2. Tab ActionsBuild APK läuft → Artefakt aiwaysapp-debug-apk = app-debug.apk.
  3. APK auf dem Handy installieren (Unbekannte Quellen erlauben).

Lokal

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

Benutzung

  1. Bluetooth an, in BLE-Reichweite des Autos.
  2. App öffnen, Berechtigungen erlauben (Scannen/Verbinden bzw. Standort ≤ Android 11).
  3. Befehl antippen → Statuszeile zeigt Fortschritt, Toast das Ergebnis.

Sicherheitshinweis (gemeinsamer Schlüssel)

Alle mit dem Community-Key provisionierten Autos vertrauen demselben Schlüssel; wer diese App/den Key hat, kann sich per BLE-Nähe an ein so eingerichtetes Auto anmelden. Bewusster Trade-off für ein einfaches Community-Tool.

To-do / Ideen

  • Klima/Vorheizen (Remote-/TSP-Payload finden und als B00x nachbauen).
  • Verbindung offen halten für mehrere Befehle (statt pro Tap neu verbinden).
  • Fahrzeug-Auswahl/Merken (MAC), Statusabfrage (gbRealtime).