Ich mache gerade ein Projekt, das Ziel ist mit ESP32S3, ein Nuki Lock zu
simulieren. Das simulierte NukiLock(ESP32S3) wird mit Nuki Fob
verbinden.
Ich habe mit nrf52840 dongle und wireshark die Verbindung zwischen Nuki
Lock und Nuki Fob beobachtet, bitte sehen Sie NukiLock-Fob.JPG, hier
Nuki Lock ist Server/Slave und Nuki Fob ist Client/Master. es gibt MTU
Exchange nach dem "LL_SLAVE_FEATURE_REQ", Es ist sehr interessant, dass
"MTU Exchange Request" ist von Nuki Lock (Server/Slave) zu Nuki Fob
(Client/Master). Weil "MTU Exchange Request" normalweise von Cilent zu
Sever gesand ist.
Im zweite Bild ESP32-Fob.JPG, simulierte Nuki Lock(ESP32S3) ist
Server/Slave, und Nuki Fob ist Client/Master. ich habe probiert mein
simulierte Nuki Lock(ESP32S3) mit Nuki Fob zu verbinden, es fehlt "MTU
Exchange" nachdem "LL_SLAVE_FEATURE_REQ".
meine Frage: wie kann ich im ESP32 Gatt Server das "MTU Exchange
Request" senden?
Hi,
ich kann Dir leider nicht beantworten, wie Du den MTU Size Exchange
initiierst. Aber: bist Du Dir sicher, dass Du den brauchst? Ohne MTU
Size Exchange wäre der default 23 Byte. Reicht das ggf. schon für Deine
Anwendung?
mfg Torsten
ich habe Nuki Mitarbeiter gefragt, und Nuki Fob MTU ist 247. Ich habe
auch mit 247 bei meiner NukiLock(simulierte von ESP32S3) probiert. aber
leider funktioniert nicht, und es passiert kein MTU Exchange zwischen
NukiLock(simulierte von ESP32S3) und Nuki Fob...
Ich habe gerade mal die GATT-Server Dokumentation überflogen
(https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/bluetooth/esp_gatts.html).
Da scheint es keine Möglichkeit zu geben, den MTU Size Exchange
anzustoßen.
Ist ja aber Open Source, damit könntest Du die fehlende Funktion
einbauen. Vielleicht gibt es aber auch einen Automatismus, der den
Exchange auslöst, wenn klar wird, dass es Characteristic values gibt,
die größer 20 Byte sind.
Für LE Secure Connections wäre ein MTU > 23 auf jeden Fall nötig.
Dank für die schnelle Rückmeldung!
ich habe eine Frage nach Ihre Rückmeldung.
was meinen Sie :
"vielleicht gibt es aber auch einen Automatismus, der den
Exchange auslöst, wenn klar wird, dass es Characteristic values gibt,
die größer 20 Byte sind."
> was meinen Sie :>> "vielleicht gibt es aber auch einen Automatismus, der den> Exchange auslöst, wenn klar wird, dass es Characteristic values gibt,> die größer 20 Byte sind."
Ich kenne die API nicht. Aber vielleicht kann man irgendwo bei der
Beschreibung der GATT Tabelle angeben, dass bestimmte characteristics
länger sein werden als 20 Byte. Wenn der BLE Stack auf der Server-Seite
davon ausgeht, dass alle Characteristic values <= 20 Byte sein werden,
dann bräuchte er keinen MTU Size Exchange initiieren.
Was würde den passieren, wenn Du LE secure connections einschaltest
(falls das geht)?
es wird ein Pairing passieren, und NukiLock(simulierte von ESP32S3) und
Nuki Fob sollen zusammengekoppelt wwerden.
im Anhang gibt es ein API Dokuiment von Firma Nuki. auf der Seite 74
gibt es ein Beispiel über Authorize App, also ein Schlüssel Koppollung
zwischen Nuki Lock und Nuki APP. Ich habe schon mit NukiLock(simulierte
von ESP32S3) und Nuki APP erfolgreich probiert.
Jetzt bin ich stoppt hier von "MTU Exchange request von Server zu
Client" zwischen NukiLock(simulierte von ESP32S3) und Nuki Fob.
ich freue mich auf Ihre weitere Rückmeldung.
Lidong W. schrieb:> es wird ein Pairing passieren, und NukiLock(simulierte von ESP32S3) und> Nuki Fob sollen zusammengekoppelt wwerden.
LE Secure connections setzt aber eine MTU von 65 voraus. Deswegen fände
ich das mal interessant. Ich tippe aber mal, dass Du da an der Stelle
nichts machen kannst, wenn Du den Client nicht ändern kannst und die API
des Servers das Auslösen des MTU Size Exchange nicht implementiert hat.
Du könntest das natürlich als feature request einstellen und hoffen,
dass sich das jemand anguckt. Bei 1200 offenen issues würde ich mir da
allerdings wenig Hoffnung machen.
Wenn Du nicht auf ESP32 festgelegt bist, und z.B. auf nRF52 wechseln
möchtest, würde ich das Feature in Bluetoe
(https://github.com/TorstenRobitzki/bluetoe) einbauen ;-)