Projekt

Allgemein

Profil

Feature #141

Von Julius Haman vor 5 Tagen aktualisiert

BleFtmsTester 1.3.1: Neuer Diagnosemodus `--dienste <Adresse>`, der sich mit einem BLE-Gerät verbindet und alle GATT-Dienste und -Merkmale mit ihren Eigenschaften auflistet. Er schreibt nichts ins Gerät und abonniert nichts. Anlass ist ein Tacx Vortex, das FTMS nicht bewirbt: Ob es den Dienst im Gerät trotzdem hat, lässt sich nur durch Verbinden klären. 

 ### Hintergrund 
 Folgeticket zu #140. Das `--alle`-Log eines externen Testers zeigt ein "Tacx Vortex 02869" (Adresse `DEA636F33D3B`, -66 dBm, verbindbar). Es bewirbt in der Scan Response Cycling Power (0x1818), Cycling Speed and Cadence (0x1816) und zwei Tacx-eigene 128-Bit-Dienste (`6e40fec1-b5a3-f393-e0a9-e50e24dcca9e`, `669aa305-0c08-969e-e211-86ad5062675f`), aber **kein FTMS (0x1826)**. Der Tester und die Geräteauswahl in ErControl filtern auf die Kennung im Advertisement und sehen das Gerät deshalb nicht als FTMS-Gerät. Ein Gerät kann einen Dienst anbieten, ohne ihn im Advertisement zu nennen; das zeigt erst der Dienstabruf nach dem Verbinden. 

 ### Technische Details 
 * Aufruf: `BleFtmsTester.exe --dienste DEA636F33D3B` (Adresse aus dem `--alle`-Log, mit oder ohne `:`/`-`). 
 * Ablauf: Scan bis zu 20 s auf das Advertisement der Adresse, dann `BluetoothLEDevice.FromBluetoothAddressAsync(address, addressType)` mit dem gesehenen Adresstyp. Das Warten auf das Advertisement ist nötig, weil Windows für Geräte mit Zufallsadresse sonst `null` liefert (siehe #133). 
 * Danach `GetGattServicesAsync` und je Dienst `GetCharacteristicsAsync` (beide ungepuffert). Ausgegeben werden Dienst-UUID (Standard-UUIDs kurz mit Namen, zum Beispiel `0x1826 (Fitness Machine (FTMS))`), Merkmal-UUID und Eigenschaften (Read, Write, Notify und so weiter) sowie am Ende eine Zeile "FTMS (0x1826): vorhanden / nicht vorhanden". 
 * Die Kurzform der UUIDs ist in einer Hilfsfunktion zusammengefasst, die auch das Logging von `--alle` nutzt. 
 * Version 1.3.1 in `BleFtmsTester.csproj` und im Kommentar in `Directory.Build.props`. 

 ### Hinweis zum Test 
 **Noch nicht an echter Hardware gelaufen.** Es steht kein Tacx zur Verfügung. Der externe Tester, der das Vortex hat, bekommt 1.3.1 und schickt das Log von `--dienste` zurück. Auch unklar: ob Windows beim Verbinden einen Kopplungsdialog anzeigt. 

 ### Recherche zum Tacx Vortex (08.10.2026) 
 **Tacx FE-C über Bluetooth** (Tacx, "FE-C over BLE - Simple how-to for engineers", v1.0.0, 2015; Kopie unter github.com/jedla22/BleTrainerControl): 
 * Dienst `6E40FEC1-B5A3-F393-E0A9-E50E24DCCA9E`, genau die Kennung aus dem `--alle`-Log. Das Vortex bietet diesen Weg also an. 
 * Zwei Merkmale wie eine serielle Schnittstelle: `6E40FEC2-…` (Notify, Trainer zum Host) und `6E40FEC3-…` (Write/WriteWithoutResponse, Host zum Trainer). 
 * Inhalt ist eine vollständige ANT-Nachricht: Sync `0xA4`, Länge, Typ (`0x4E` Broadcast, acknowledged möglich), Kanal (beim Senden ignoriert), 8 Datenbytes, Prüfsumme. Beispiel aus dem Dokument: `A4 09 4E 05 10 19 04 00 00 00 FF 24 30`. 
 * Die Prüfsumme ist das XOR aller Bytes inklusive `0xA4` (am Beispiel nachgerechnet: `0x30`). Der Text im Dokument spricht von "Summe ohne Sync", das passt nicht zum Beispiel. 
 * Empfohlene Rate 4 Hz. Die Daten sind die FE-C-Seiten (0x10, 0x19, 0x31), die ErControl über ANT+ schon kennt. 
 * Das Dokument wurde nicht gegen echte Hardware geprüft. Offen: ob das Vortex vor der Steuerung weitere Schritte verlangt. 

 **Fähigkeiten des Vortex Smart T2180** (nur Händler- und Drittquellen, nicht der Hersteller): ANT+ FE-C und Bluetooth Smart. FTMS ist für das Vortex nicht belegt. Mehrere Quellen (bikethe.world, DC Rainmaker 2019) berichten, Tacx habe FTMS bei den Nicht-NEO-Modellen per Firmware-Update nachgeliefert. Dass das Vortex FTMS nicht bewirbt, passt zu einer **alten Firmware**. Das ist eine Schlussfolgerung, keine Bestätigung. Garmins Tacx-Seite (developer.garmin.com/tacx-trainer) soll eine FTMS-Tabelle je Trainer enthalten, ließ sich nicht laden. Die Bedeutung des zweiten Tacx-Dienstes `669aa305-0c08-969e-e211-86ad5062675f` ist unbekannt. 

 ### Nächste Schritte 
 1. Der externe Tester prüft die Firmware des Vortex (Tacx-App bzw. Tacx Utility) und führt danach `--alle` und `--dienste` aus. Erscheint `0x1826`, funktioniert der Weg mit dem heutigen ErControl ohne Neuentwicklung. 
 2. Bleibt Je nach Ergebnis: FTMS aus: FE-C über Bluetooth als eigenes Feature prüfen. Neu wäre nur der Transport (Rahmen lesen und bauen, zwei Merkmale, ein Ergometer-Objekt), die Seiten selbst sind in `FecControlRole` (0x1826) vorhanden und müssten für ErControl nutzbar werden. Oder ANT+ FE-C mit dem Stick (wartet auf Hardware-Test, #138). 
 3. FTMS im Gerät, aber nicht im Advertisement: → Geräteauswahl und Verbindungsaufbau so ändern, dass solche auch Geräte ohne FTMS-Kennung im Advertisement gefunden werden. Nicht vorhanden → Tacx-FE-C-über-Bluetooth (Dienst `6e40fec1…`) oder ANT+ FE-C als Weg prüfen. 

Zurück