User Tools

Site Tools


de:access

So kommst du rein

Das Android auf der Head-Unit ist das erste lohnende Ziel.
Dieses Video zeigt uns den ersten Schritt, um an das Dateisystem zu kommen und zusätzliche Software zu installieren. Bei deinem Auto kann das je nach Softwareversion anders aussehen. Es gibt zum Beispiel Versionen, bei denen du fünfmal auf das Airbag-Symbol in der unteren rechten Ecke tippen musst, oder vielleicht in der oberen rechten Ecke. Finde heraus, wie du bei dir dorthin kommst, und dokumentiere es hier zusammen mit deiner Softwareversion.
Ignoriere im Entwicklermenü den adb-Schalter, der hilft nicht viel. Suche den ES-Browser und öffne ihn. Er gibt dir Zugriff auf das Dateisystem, lässt dich Apps installieren und ausführen. Wenn du den adb-Modus aktivierst, schaltet der USB-Port auf OTG um und funktioniert nicht mehr mit USB-Sticks, und CarPlay ist dann auch weg.

Schritt für Schritt

  1. Das versteckte Menü freischalten. Geh auf Settings → About (Einstellungen → Über), tippe fünfmal auf About — unter dem Menüpunkt Factory Reset erscheint ein neuer Eintrag AP Version — tippe AP Version fünfmal an. Dann klicke auf ES-Browser Bei älterer Software wurde mit fünfmal Tippen auf das Airbag-Symbol in der unteren rechten Ecke freigeschaltet. Für Firmware 1.9.2 wird ein Passwort gebraucht, es lautet Aiways7921
  2. Den eingebauten Dateimanager öffnen — ES File Explorer (bei manchen Versionen will er eine Entsperr-PIN 0000). Er kann einen USB-Stick durchsuchen und APKs installieren.
  3. Einen USB-Stick vorbereiten (FAT32) mit der App ADC Connect darauf (APK, Quellcode) und ihn in den USB-Port der Head-Unit stecken.
  4. Die Bootstrap-App vom Stick installieren, über den ES File Explorer.
  5. Ins eigene Wi-Fi bringen, damit das Auto in deinem LAN hängt (die Bootstrap-App verwaltet Wi-Fi-Netze, oder nimm die Android-Einstellungen).
  6. ADB über Wi-Fi aktivieren — die Bootstrap-App setzt den ADB-TCP-Port und startet adbd neu. Sie kann das, weil sie systemsigniert ist (siehe unten).
  7. Einen Root-SSH-Key setzen (empfohlen). Die Bootstrap-App bringt außerdem einen SSH-Server für root mit. Öffne von einem beliebigen Gerät im selben Wi-Fi http://<HEAD-UNIT-IP>:8080/ und füge dort deinen öffentlichen Schlüssel ein — anders als reines ADB übersteht das einen Neustart und streitet sich nicht mit dem adb eines Laptops um die eine Verbindung, die dieses Gerät zulässt.
  8. Vom Rechner verbinden: ssh root@<HEAD-UNIT-IP> (sobald ein Key gesetzt ist) oder adb connect <HEAD-UNIT-IP>:5555. Beides gibt dir eine root-Shell, und du kannst alles Weitere installieren und debuggen — siehe Entwicklung.



Diese Schritte wurden auf Softwareversion 1.7.0 gemacht — Head-Unit-Build F5.37 (Firmware MX64_V2.01.0051.05-9-R-210326, vom 2021-03-26). Die Freischaltung des versteckten Menüs kann sich je nach Softwareversion unterscheiden — schau zuerst im About-Bildschirm deines Autos nach, wie es bei dir ist.

Warum das funktioniert

  • adbd läuft als root auf diesem ROM — sobald du es über TCP erreichst, hast du vollen Zugriff.
  • Systemrechte sind frei zu bekommen. Aiways hat das ROM nie mit eigenen Schlüsseln neu signiert — es ist mit dem öffentlichen Testschlüssel des NXP/Freescale-i.MX-BSP signiert (nicht aus einem Gerät extrahiert; NXP hat ihn rund ein Jahrzehnt lang über die i.MX-BSPs hinweg wiederverwendet, und er ist offen verfügbar). Eine ganz normale App, die mit genau diesem öffentlichen Schlüssel signiert ist, darf deshalb völlig legitim sharedUserId=“android.uid.system” deklarieren und mit Systemrechten laufen — was nötig ist, um ADB umzuschalten, das Kombiinstrument zu überlagern und an den CAN-Dienst zu kommen — und sie kann sich an Ort und Stelle selbst aktualisieren, ohne ihre Einstellungen zu verlieren. Fingerprint und woher du den Schlüssel bekommst: Signieren — der Platform-Key. Das ist es, was die Bootstrap-App überhaupt möglich macht.

Das Detail zu ADB über Wi-Fi

adbd ist ein deaktivierter init-Dienst, der nur von einem USB-Config-Trigger gestartet wird, und er liest seinen TCP-Port nur beim Start. Die Bootstrap-App setzt service.adb.tcp.port 5555 und schaltet dann sys.usb.config durch (none → adb), wodurch adbd neu startet und an TCP gebunden ist. Das ist nicht dauerhaft über Neustarts hinweg, deshalb wendet die App es bei jedem Boot automatisch wieder an.

de/access.txt · Last modified: by 127.0.0.1