BLE: Pairing schlaegt auf Android fehl — SC_MITM_BOND inkompatibel #4

Open
opened 2026-05-28 18:20:18 +02:00 by ppfeiffer · 0 comments
Owner

Problem

Das Geraet ist per BLE sichtbar (nRF Connect und MeshCore-App zeigen es an), aber das Pairing schlaegt fehl.

Ursache: SerialBLEInterface in der MeshCore-Bibliothek setzt ESP_LE_AUTH_REQ_SC_MITM_BOND:

BLESecurity sec;
sec.setStaticPIN(pin_code);
sec.setAuthenticationMode(ESP_LE_AUTH_REQ_SC_MITM_BOND);

Dieser Modus verlangt MITM-Schutz mit Passkey-Dialog. Android 12+ zeigt diesen Dialog fuer BLE-UART-Geraete nicht mehr als Vordergrund-Dialog an — Verbindung schlaegt still fehl.

Zusaetzlich erscheinen BLE-UART-Geraete grundsaetzlich nicht in den Android-System-Bluetooth-Einstellungen (nur Classic BT / bekannte Profile wie HID).

Betroffene Datei

lib/MeshCore/src/helpers/esp32/SerialBLEInterface.cpp (upstream MeshCore-Submodul)

Loesung

Security-Mode auf ESP_LE_AUTH_BOND (Just Works) aendern:

// Vorher:
sec.setStaticPIN(pin_code);
sec.setAuthenticationMode(ESP_LE_AUTH_REQ_SC_MITM_BOND);

// Nachher:
sec.setAuthenticationMode(ESP_LE_AUTH_BOND);

Kein PIN-Dialog — Android verbindet automatisch. Datensicherheit bleibt: MeshCore nutzt eigene ed25519-Verschluesselung, BLE-Transportverschluesselung ist redundant.

Optionen

  1. Submodul direkt patchen (bricht Upstream-Updates)
  2. Fix als PR an https://github.com/ripplebiz/MeshCore melden
  3. MeshCore forken und gepatchte Version verwenden
## Problem Das Geraet ist per BLE sichtbar (nRF Connect und MeshCore-App zeigen es an), aber das Pairing schlaegt fehl. Ursache: `SerialBLEInterface` in der MeshCore-Bibliothek setzt `ESP_LE_AUTH_REQ_SC_MITM_BOND`: ```cpp BLESecurity sec; sec.setStaticPIN(pin_code); sec.setAuthenticationMode(ESP_LE_AUTH_REQ_SC_MITM_BOND); ``` Dieser Modus verlangt MITM-Schutz mit Passkey-Dialog. Android 12+ zeigt diesen Dialog fuer BLE-UART-Geraete nicht mehr als Vordergrund-Dialog an — Verbindung schlaegt still fehl. Zusaetzlich erscheinen BLE-UART-Geraete grundsaetzlich nicht in den Android-System-Bluetooth-Einstellungen (nur Classic BT / bekannte Profile wie HID). ## Betroffene Datei `lib/MeshCore/src/helpers/esp32/SerialBLEInterface.cpp` (upstream MeshCore-Submodul) ## Loesung Security-Mode auf `ESP_LE_AUTH_BOND` (Just Works) aendern: ```cpp // Vorher: sec.setStaticPIN(pin_code); sec.setAuthenticationMode(ESP_LE_AUTH_REQ_SC_MITM_BOND); // Nachher: sec.setAuthenticationMode(ESP_LE_AUTH_BOND); ``` Kein PIN-Dialog — Android verbindet automatisch. Datensicherheit bleibt: MeshCore nutzt eigene ed25519-Verschluesselung, BLE-Transportverschluesselung ist redundant. ## Optionen 1. Submodul direkt patchen (bricht Upstream-Updates) 2. Fix als PR an https://github.com/ripplebiz/MeshCore melden 3. MeshCore forken und gepatchte Version verwenden
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ppfeiffer/OpenMeshOS#4
No description provided.