App Update: Version 1.7.7
Das Update fügt lediglich ein neues Informationsfeld zur App hinzu: Wenn ihr auf den Info Button klickt (das "(i)" in der Mitte des Bildschirms), öffnet sich ein neuer Dialog in dem euch folgende Informationen angezeigt werden:
- UID: Eindeutige Kennung des Controllers (MCU ID)
- BLTID: Eindeutige Kennung des BLE Clients (bei Aktivierung festgeschrieben)
- TOKEN: Pairing Token, wird bei jedem Pairing neu generiert
Die
UID sollten diejenigen kennen, die ihren Controller manuell neu geflasht haben oder die XiaoGen Firmware nutzen. Es ist eine eindeutige Kennung die in der MCU (Mikrocontroller, STM32 Chip) eingebrannt ist. Bei m365rec wird diese als "Salt" bezeichnet, bei anderen Flash Skripten und XiaoGen teils als "UUID". Damit der Controller überhaupt funktioniert, muss die UID von der MCU in die Firmware eingetragen werden. Der Bereich, wo dies eingetragen wird, ist nicht über den normalen Flashvorgang erreichbar, deshalb muss das bereits beim manuellen Flashen geschehen. m365rec und andere Skripte übernehmen diese Aufgabe, indem sie zuerst die UID von der MCU lesen und dann in die Firmware schreiben.
Die
BLTID sollte weniger bekannt sein. Dabei handelt es sich um eine Kennung, die für den Pairingvorgang ganz wichtig ist: Man sendet eine Anfrage zum Verbinden mit dem BLE, das BLE antwortet mit der BLTID. Diese wird anschließend verschlüsselt und zurück ans BLE geschickt. Wenn das BLE die Kennung wieder entschlüsseln kann, darf man sich mit dem Controller verbinden, ansonsten ist irgendwas bei der Kryptographie schiefgelaufen.
Durch eigene Experimente habe ich herausgefunden, dass die BLTID nicht auf dem BLE Chip festgebrannt ist. Nach einem zweiten Aktivierungsvorgang hat sich diese geändert! Danach war es mir nicht mehr möglich, mich mit der Mi Home App zu verbinden: Man erhält dann dort den
Fehler "Konnte Kriterien nicht authentifizieren (-29)" / "Standard verification error (-29)".
Dieser Fehler kommt deshalb zustande, weil die bei der Erstaktivierung auf dem Server hinterlegte ID nicht mit der aktuellen ID übereinstimmt. Da zumindest die letzten Zeichen der ID zufällig generiert werden, gibt es hier dann auch keine Möglichkeit mehr, jemals den Roller wieder in korrekten Region in der offiziellen App zu nutzen, außer man hat sich vorher zufällig die BLTID notiert. Diese kann man dann manuell über ST-Link an die richtige Stelle im Flash des BLE Chips eintragen. Danach verschwindet auch der Fehler bei der Verbindung mit der offiziellen App. Meinen Roller konnte ich auf diese Weise wieder "retten".
Ich kann jedem nur empfehlen, die BLTID zu notieren, dafür gibt es nun die Funktion in meiner App!
Der
TOKEN wird beim Pairing mit dem Gerät generiert, dieser verändert sich also bei jedem Pairingvorgang, z.B. auch wenn man zwischen verschiedenen Apps springt. Der Token ist nur im Zusammenhang mit der MAC des Endgerätes gültig, d.h. man kann ihn nicht auf ein anderes Handy übertragen und sich dann dort einloggen. In Zukunft soll es so sein, dass SHU und downG den Token über das Android System broadcasten und miteinander teilen. Das möchte ich mir dann auch zunutze machen, damit erübrigt sich dann nämlich das ständige Pairing beim App-Wechsel.
Das Update ist absofort verfügbar. Bemerkung: Die UID hat 24 Stellen, wenn diese nicht vollständig angezeigt werden, bitte die Daten der App löschen bzw. die App zuerst deinstallieren und dann erneut installieren. Gleiches gilt, wenn die BLTID nicht angezeigt wird.