Projekt

Allgemein

Profil

Feature #141

Von Julius Haman vor 4 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. Die Vermutung, dass Dass das Vortex FTMS nur wegen alter Firmware nicht bewirbt, hat sich **nicht bestätigt** (siehe Ergebnis unten: Firmware aktuell, FTMS nicht vorhanden). 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. 

 ### Ergebnis von `--dienste` und Nächste Schritte 
 1. Der externe Tester prüft die Firmware (09.10.2026, externer Tester) 
 BleFtmsTester 1.3.1 verbindet sich mit dem "Tacx des Vortex 02869" (`DEA636F33D3B`, Adresstyp Random, Advertisement nach 1,2 s gesehen) (Tacx-App bzw. Tacx Utility) und liest 8 Dienste. Ein Screenshot führt danach `--alle` und `--dienste` aus. Erscheint `0x1826`, funktioniert der Tacx-Training-App ("Software-Update") zeigt: Deine Software 3.1.22 / 1.1.3, Aktuellste Version 3.1.22 / 1.1.3. **Die Firmware ist aktuell.** 

 | Dienst | Merkmale (Eigenschaften) | Weg mit dem heutigen ErControl ohne Neuentwicklung. 
 |---|---| 
 | `0x1800` Generic Access | `2A00`, `2A01`, `2A04` (Read) | 
 | `0x1801` Generic Attribute | `2A05` (Indicate) | 
 | `0x180A` Device Information | `2A26` (Read) | 
 | `669aa305-0c08-969e-e211-86ad5062675f` (Tacx, unbekannt) | `669aab01` (Write), `669aab02` (Notify), `669aab21` (WriteWithoutResponse, Write), `669aab22` (Notify) | 
 | `669aa501-0c08-969e-e211-86ad5062675f` (Tacx, unbekannt) | `669aac01` (Read, Write) | 
 | `0x1816` Cycling Speed and Cadence | `2A5B` (Notify), `2A5C`, `2A5D` (Read), `2A55` (Write, Indicate) | 
 | `0x1818` Cycling Power | `2A63` (Notify), `2A65`, `2A5D` (Read), `2A66` (Write, Indicate) | 
 | `6e40fec1-b5a3-f393-e0a9-e50e24dcca9e` (Tacx FE-C über BLE) | `6e40fec2` (Notify), `6e40fec3` (WriteWithoutResponse, Write) | 

 Schluss des Logs: **"8 Dienste. 2. Bleibt FTMS (0x1826): nicht vorhanden."** 

 **Folgerungen:** 
 * Dieses Vortex hat bei aktueller Firmware **kein FTMS**, auch nicht verdeckt. Über den Bluetooth-FTMS-Weg von ErControl ist es nicht ansteuerbar, und ein Update ändert daran nichts. 
 * Der Tacx-Dienst für aus: FE-C über Bluetooth ist vorhanden und entspricht als eigenes Feature prüfen. Neu wäre nur der Beschreibung von Tacx genau: `…FEC2` Notify (Trainer zum Host), `…FEC3` WriteWithoutResponse Transport (Rahmen lesen und Write (Host zum Trainer). Das ist der naheliegende Bluetooth-Weg für dieses Gerät. 
 * Cycling Power (`0x1818`) und Cycling Speed and Cadence (`0x1816`) liefern Messwerte (`2A63`, `2A5B` Notify). Die Merkmale mit Write und Indicate (`2A66`, `2A55`) sind Steuerpunkte des jeweiligen Standard-Dienstes, nicht für eine Zielleistung. 
 * Die beiden `669aa…`-Dienste (vermutlich bauen, zwei Merkmale, ein älteres Tacx-Protokoll) Ergometer-Objekt), die Seiten selbst sind unbekannt in `FecControlRole` vorhanden und werden nicht weiter untersucht. 

 ### Nächste Schritte 
 1. Entscheidung, ob ein eigenes Feature "Tacx FE-C über Bluetooth" kommt. Vorschlag müssten für den ersten Schritt: ein lesender Test im BleFtmsTester (Notifications auf `…FEC2` abonnieren und die FE-C-Seiten 0x10/0x19 dekodieren, ohne zu schreiben), analog zum früheren Vorgehen bei FTMS, bevor es in ErControl eingebaut wird. 
 2. Alternativ nutzbar werden. Oder ANT+ FE-C mit dem Stick (wartet auf einen Hardware-Test, #138). 
 3. FTMS im Gerät, aber nicht im Advertisement: trifft für dieses Gerät nicht zu. Die Änderung an der Geräteauswahl ist deshalb nicht nötig. und Verbindungsaufbau so ändern, dass solche Geräte gefunden werden. 

Zurück