Tireless (iOS) - BLE Reifendruck (TPMS) Sensor Reader

Hallo zusammen,

aus Langeweile habe ich über die Feiertage die Tesla Bluetooth API reverse engineered. Herausgekommen ist u.a. eine iOS App namens Tireless zum Auslesen der neuen BLE Reifendruck Sensoren für Model 3 und Y. Für diese App bin ich auf der Suche nach Freiwilligen, die sie vorab testen wollen, bevor ich die App in den App Store schiebe.

Die aktuelle Version enthält das Minimalset, um die Sensoren anzusprechen. Bis zum Release im App Store werden noch einige coole Sachen dazukommen ;-).

UPDATE vom 4. Januar 2022

Tireless ist jetzt über den App Store verfügbar.

Wie komme ich an die Testversion?

Bei Interesse, einfach eine PM mit eurer Emailadresse an mich, dann lade ich euch zu Apple Testflight ein, wo ihr die Testversion beziehen könnt.

Funktionsumfang

  • Auffinden und Verbinden zu Tesla Bluetooth Reifendrucksensoren
  • Reifendruck, Reifentemperatur und State of Charge der Batterie im Sensor

Bekannte Probleme und Einschränkungen

  • Aktuell nur in Englischer Sprache
  • Animationen des 3D Modells können in sehr seltenen Fällen hängen bleiben
  • Kein iPad Support

Auszug der geplante Features

  • Verschiedene Felgen zur Auswahl
  • Weitere Sprachen
  • Mehr Sensordaten
  • Überarbeitetes UI
  • iPad Support
  • Apple Watch Support
  • Und ein paar coole Features :wink:

Screenshots

Nicht über die Reifendruck- und Temperaturwerte in den Screenshots wundern: Nachdem ich meine Sensoren aus den USA bekommen habe, habe ich damit getestet als diese noch nicht in meinen Winterräder eingebaut waren.

11 „Gefällt mir“

Sehr interessantes Projekt was Du da am Start hast! Ich würde mich als Tester zur Verfügung stellen, habe allerdings nur ein betagtes iPhone 6…was sind denn die Hardware / iOS Voraussetzungen, um mitzumachen?

Hardwareseitig ist dein iPhone 6 kein Problem. Welche iOS Version hast du denn drauf? Vermutlich iOS 12. Die aktuelle Testversion läuft auf iOS 15.2, aber ich taste mich langsam nach unten durch. Irgendwann wird allerdings der Aufwand recht groß, um diese alten Betriebssystemversionen zu unterstützen, aber ich schaue mal, was ich tun kann :slight_smile: .

Ne interessante Idee! Leider hat unser Auto die falschen Sensoren, da es zu „alt“ ist :sweat_smile:

Retrofit ist doch genau dein Ding :smiley:

2 „Gefällt mir“

Haha das stimmt wohl :joy:

Verteilst du mit TestFlight? Ich mach gerne mit.

Jepp, wird per Testflight verteilt. Einfach Email rüberschicken, dann füge ich dich hinzu. :blush:

Würde das auch mit den Baolong Sensoren gehen?

Wenn du die Baolong Sensoren vorliegen hast, kann ich dich gerne zu Testflight einladen und du kannst schauen, ob die wider Erwarten doch funktionieren. Bisher kenne ich nur zwei Sensortypen, die mit den neueren Teslas funktionieren:

  • Tesla BLE Sensoren
  • CUB BLE Sensoren

Alles was man sonst so auf Amazon oder Aliexpress findet, nutzt zwar auch Bluetooth, aber implementieren eben nicht die Tesla spezifische Nachrichtenstruktur und Advertising Pakete. Daher kann man die Sensoren dann meist nur über eine eigene App auslesen, aber eben nicht im Tesla nutzen.

Wäre natürlich schön, wenn wir auf Basis der App eine Liste aller kompatibler BLE Sensoren erstellen könnten.

1 „Gefällt mir“

Kurze Frage zur App: Wenn die Sensoren verbaut sind, dann werden sie doch mit dem Fahrzeug gekoppelt. Kann es sein, dass die App die Sensoren dann nicht mehr „sieht“ bzw. es anders herum auftritt, das Auto die Sensoren nicht mehr erkennt, wenn die App mit den Sensoren gekoppelt ist?

Die Sensoren werden nicht mit dem Fahrzeug gekoppelt, also kein Pairing oder Bonding auf Bluetooth-Ebene aufgebaut. Das Fahrzeug merkt sich zwar, welche Sensoren es schonmal gesehen hat, aber es verbindet sich automatisch mit alle Sensoren, die sich in der näheren Umgebung befinden. Da sich die Sensoren nur durch Rotation aktivieren, ist es natürlich sehr unwahrscheinlich, dass du dich mit Sensoren von einem anderen Fahrzeug verbindest, weil irgendwann die Verbindung abreißt.

Das Bluetoothmodul im Tesla ist übrigens immer aktiviert, d.h. er sucht und verbindet sich automatisch, sobald ein Keyfob, Smartphone oder Reifendrucksensor gefunden wird. Allerdings verbindet sich das iPhone aus eigener Erfahrunge schneller mit den Sensoren, als der Tesla.

Wenn du also dein iPhone auf die Ladeschale legst, den Suchprozess startest und dann erst losfährst, wird dein iPhone mindestens einen Sensoren wegschnappen können :wink: . Das bedeutet dann aber auch, dass der Tesla wieder die Fehlermeldung anzeigt, dass ein Sensor nicht gefunden werden konnte. Sobald du aber die App trennst, schnappt sich dein Tesla wieder den Sensor.

OK, letzteres meinte ich - kann man also nicht parallel betreiben. Bin mal gespannt, ob bisher nicht freigegebene Sensoren von Deiner App gefunden werden :slight_smile:

Habe gerade eine neue Version auf Testflight veröffentlich:

  • Mindestanforderungen auf iOS 14 reduziert
  • Neue Sensorwerte: Connection Metrics, Rotation Direction und Message Protocol Version
  • Kleinere Bugfixes

1 „Gefällt mir“

Hier noch ein paar Erkenntnisse und Schlussfolgerungen bzgl. der BLE Sensoren.

Firmware Updates

Die Tesla Sensoren, wie auch die Keyfobs, können over the air (via Bluetooth) eine neue Firmware bekommen. Sofern Hersteller wie z.B. CUB nicht den exakt gleichen Chip verwenden, und auch diese Firmware-API implementieren, kann das mal zum Problem werden, sofern deren Nachbausensoren nicht über eine andere Möglichkeit zum OTA Update verfügen.

Keyfobs, die Smartphone App und die Reifendrucksensoren sprechen alle die selbe „Sprache“, d.h. wenn Tesla irgendwann eine neue Version des Message Protocols herausbringt (aktuell sind wir bei Version 2) und dann sowohl Keyfobs, Apps und Reifendrucksensoren updaten muss, könnte es bei Drittanbietersensoren zum Problem kommen. In der Vergangenheit hatte Tesla beim Model S Keyfob z.B. ein Firmwareupdate nach einer entdeckten Sicherheitslücke bereitgestellt.

Bestimmung der Laufrichtung & Position

Die Sensoren ermitteln selbst, auf welcher Fahrzeugseite sie montiert sind. Das passiert vermutlich auf Basis des Beschleunigungssensors und Gyroskop. Neben der Laufrichtung der Räder, liefern die Sensoren auch die Beschleunigung auf der Z-Achse ans Fahrzeug. Ich vermute, dass hierrüber die Bestimmung der Positionierung (vorne/hinten) auf der jeweiligen Fahrzeugseite passiert. Je höher die Z-Achsen Beschleunigung, desto wahrscheinlicher ist es, dass das Rad an der Vorderachse montiert ist. Evt. wird auch noch die Bluetooth Signalstärke einbezogen, allerdings ist das reine Spekulation von mir. Die Signalstärke bei Bluetooth ist generell ein Schätzeisen und kann von vielen Faktoren verfälscht werden.

Verschlüsselung

Die Sensordaten werden aktuell unverschlüsselt übertragen, allerdings kann Tesla alle Daten auch verschlüsseln. Das Nachrichtenprotokoll und der Sensor unterstützen das bereits. Es handelt sich hierbei um ein asymmetrisches Verschlüsselungsverfahren mit Private und Public Keys. Theoretisch kann Tesla das einfach beim nächsten Softwareupdate einschalten. Das kann natürlich bei Drittanbieter Reifendrucksensoren auch wieder zum Problem werden, wenn diese Funktion nicht implementiert ist und nicht per OTA nachgerüstet werden kann.

Aktivierung der Sensoren

Die Sensoren werden über einen Beschleunigungssensor aktiviert. Dieser reagiert allerdings nur auf Rotation in vertikaler Richtung, also in der normalen Montageposition des Rades. Sonstige Erschütterungen oder Rotation um die horizontale Achse oder Z-Achse wecken den Sensor nicht auf.

Batterie

Die Batterie in den Sensoren hat im Auslieferungszustand knapp über 3000mV. Ich vermute, es handelt sich hierbei um eine einfache 3V Knopfzelle, die im Sensor vergossen ist. Für die Berechnung des state of charge versuche ich gerade zu ermitteln, wo die untere Grenze liegt, um eine entsprechende Warnung in der App anzeigen zu können. Auch nach intensiven Tests hat sich an der angezeigten Spannung meiner Sensoren bisher nur sehr wenig geändert, daher gehe ich von mehreren Jahren bzw. mehreren Tausend Kilometern Laufleistung aus, bevor die Batterie bzw. der komplette Sensor ersetzt werden muss.

2 „Gefällt mir“

DAS Problem hatten wir ja gerade mit Gen1 vs. Gen2 CUB Sensoren - letztendlich nur ein Firmware-Update. Eventuell kannst Du ja mal RTS kontaktieren und das mit denen bequatschen. Wäre für die ja ein Riesen Gewinn. So haben sie für jeden Gen1 nach Gen2 Tausch epischen Aufwand (neue Sensoren schicken, Tausch bezahlen, Rücksendung). Hab ich grad mitgemacht.

Stimmt, das war genau der Fall. Eigentlich ist das heute kein Hexenwerk mehr ein OTA Update via BLE zu implementieren. Ich habe in der Vergangenheit viel mit Nordic Semiconductor Chipsätzen gearbeitet. Dort bietet man bereits Templates für den Bootloader und Firmwarekomponenten an, um das zu implementieren. Einmal integriert, kann man ab dann über jedes beliebige Smartphone mit BLE neue Firmware aufspielen.

Von CUB gibt es zwar eine Smartphone App, allerdings scheint die nicht mit den Tesla spezifischen Sensoren sprechen zu können und bietet auch keine Möglichkeit zum OTA Update.

Hallo,

habe die erste Version mit Cub Sensoren (auf M3 2021) probiert:
Sensor wacht nach ein paar Metern auf und wird erkannt, Anzeige wechselt von keep Rolling zu Druck/Temperatur etc. Jedoch noch keine Werte.
Wenn man jetzt auf Druck oder Temperatur klickt beendet sich die Äpp (reproduzierbar)
Beim nächsten Versuch kam eine Anzeige der Werte (alle zusammen, nicht für jedes Rad einzeln?) App beendet nicht mehr wenn Werte angezeigt werden und man darauf klickt.

Beednet und neu gestartet: es kommt gleich keep rolling…aber es wird nichts gefunden, auch nicht nach 10min Fahrt, Stillstand und erneutem Versuch.

Neue Version:
Verbindung kommt nach ein paar Metern, auch Werte. Beende die App und starte neu, keine Verbindung mehr, auch nicht nach Fahrt über 50km/h.

iPhone 12pro, aktuelles OS 15.2
Wenn die BT Suche läuft werden alle anderen BT Verbindungen geblockt, HomeKit zB ist nicht mehr erreichbar. Das passiert auch bei einer anderen BT App die universelle Reifendrucksensoren (BT) ausliest. Ist wohl iOS bedingt. Man muß die App beenden, auch wenn sie im Hintergrund läuft.

Original Tesla BT Sensoren kann ich auch testen, muss die Räder erst aus dem Regal holen.

1 „Gefällt mir“

Danke für das Feedback. Schaue mir gerade deine Crashlogs an. :+1:

Aktuell verbindet sich die App zum erstbesten Sensor, der gefunden wird und stoppt dann den Scan. Bin gerade dabei eine Funktion zum gleichzeitigen Ansehen aller gefundenen Sensoren zu implementieren.

Das ist leider erwartetes Verhalten auf iOS. Jede App teilt sich den Bluetooth Chip mit allen anderen Apps, daher passiert eine Art Multiplexing. Befindet sich die App im Vordergrund, hat man erweiterte Rechte auf dem Bluetooth Stack. Wenn die App im Hintergrund läuft, ist das alles noch eine Nummer schwieriger.

Da klaut leider der Tesla der App den Sensor weg. :wink: Muss mal versuchen, ob man durch einen Reset während der Fahrt die Sensorverbindung vom Tesla trennen kann.

Es gibt eine neue Version zum Testen. Größte Änderung ist ein erster Wurf vom Track Mode. Die Idee ist, dass man eine abgespeckte Darstellung des Track Modes von den Performance Modellen hat, um neben dem Reifendruck auch die Temperatur und die Position des Rades am Auto tracken zu können.

Mein größtes Problem ist allerdings eine zuverlässige Methode zu finden, wie man die Sensoren aktivieren kann, bevor sich das Auto alle vier schnappt. Falls jemand eine Idee hat, immer her damit. Was bei mir nicht funktioniert hat, war ein Reset über die Daumenrädchen. Da das Model 3 auch im Tiefschlaf den BLE Chip aktiviert hat, hätte mich das auch gewundert.