Hallo zusammen, ich arbeite an meinem ersten Projekt mit dem ESP32-D (ESP-IDF v5.5.2) und stecke beim Thema Bluetooth Classic Bonding fest. Setup: Der ESP32 agiert als HID Host (Master). Ich verbinde eine Amazon Fire TV Remote direkt über L2CAP (PSM 0x11/0x13). Hinweis zur Wahl von L2CAP: Ich nutze bewusst nicht den Standard-HID-Host-Layer der IDF (esp_hidh.h), da der integrierte Parser sehr strikt ist und die speziellen Reports dieser Remote leider verwirft. Über L2CAP bekomme ich die Rohdaten, habe aber Probleme beim schnellen Reconnect. Projekt-Link: https://github.com/Hokl3d/ESP32-FireTV-Remote-Bridge Das Problem: Initiales Pairing und Bonding funktionieren. Nach einem Neustart des ESP32 dauert es jedoch ca. 15–40 Sekunden, bis die Verbindung wieder steht (Ich wünsche mir <5 Sekunden). Da ich nach einem idf.py erase_flash oft Probleme hatte, das Pairing erneut zu triggern, sieht meine aktuelle Loop in der app_main so aus: C while (1) { if (!connected) { // Triggert den Paging-Prozess L2CA_ConnectReq(HID_PSM_CONTROL, remote_bda); // Parallel dazu Suche, falls die Remote im Discovery-Mode ist esp_bt_gap_start_discovery(ESP_BT_INQ_MODE_GENERAL_INQUIRY, 5, 0); } vTaskDelay(pdMS_TO_TICKS(5000)); } Meine Vermutung: Das parallele Ausführen von Inquiry (Discovery) und ConnectReq (Paging) als Master scheint den Reconnect bei bereits gebondeten Geräten massiv zu verzögern. Der "Fast Reconnect" wird vermutlich durch den Scan-Vorgang blockiert. Fragen an euch: Wie sollte der ESP32 als Master idealerweise auf ein gebondetes, aber schlafendes Device warten? Sollte auf discovery komplett verzichten, sobald eine MAC im NVS bekannt ist? Bonding-Check: Gibt es eine Möglichkeit, beim Booten zu prüfen, ob für die remote_bda bereits ein gültiger Link-Key im Stack/NVS vorhanden ist? L2CAP & Security: Ich nutze BTM_SEC_NONE beim Registrieren des Services. Erzwingt die Remote bei Master-Reconnect evtl. deshalb ein neues Pairing, weil der Security-Level des Kanals nicht zum Bond passt? Ich versteh leider nicht jedes Detail, da ich mich erst seit vier Wochen mit dem Thema beschäftige, aber ich möchte gerne eine saubere Lösung. Daher bin ich auf jede Art von Hinweisen die das Programm besser machen bzw. was ich falsch mache Dankbar! Viele Grüße Steffen
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.