In Bluetooth Low Energy 4.0 und 4.1 beträgt die maximale PDU eines OTA-Pakets 39 Byte (47 Byte mit Präambel, Zugriffsadresse und CRC) und wurde in Version 4.2 auf 257 Byte erhöht . Der Grund für ein kurzes Paket ist die Stabilität des Funkgeräts, lange Pakete erwärmen das Silizium und zusätzliche Schaltungen, um die Frequenz stabil zu halten. So ist in BLE 4.1 das längste mögliche Paket 376 Mikrosekunden, um den Heizeffekt zu vermeiden. Da die Datenrate 1 MHz beträgt, sind 376 Mikrosekunden 376 Bits = 47 Bytes, so dass die Größe der PDU erklärt wird. Aber in der Version 4.2 ist das längste Paket 2120 Bit, also 2.12ms und ich lese 3ms Pakete in Bluetooth Classic sind lang genug, um Probleme zu verursachen. Meine Frage ist also: Warum und wie es SIG gelungen ist, die PDU in Version 4.2 zu erhöhen, wissen einige Halbleiterhersteller, dass die Hardware für alle Versionen gleich ist. Was hat zu dieser neuen PDU-Länge geführt?Erläuterung der PDU-Größe in Bluetooth Low Energy 4.2
Antwort
In 4. [01] ist 39 Bytes die maximale LL-PDU-Größe, die für Werbepakete erreicht wurde (2 Byte Header, 6 Byte Geräteadresse, 31 Byte AD). Für Datenpakete beträgt die maximale PDU-Größe 33 Byte (2 Header + 4 L2CAP + 23 ATT + 4 MIC).
Hinweis Der Datenkanal-Header zählt die PDU-Größe ohne Header, sodass die Nutzdatengröße des Datenkanals auf bis zu 31 Byte erhöht wird. Dies ist die Zahl, die in 4.2 vergrößert wurde (der tatsächliche minimale Wert ist 27 Bytes, wenn Krypto nicht unterstützt wird, weil 4-Byte-MIC niemals in dem Paket erscheinen wird).
Die neue Datenkanal Nutzlastgröße in 4.2 definiert ist das maximal mögliche Wert Protokoll unterstützen kann, so ist es ein Wert, eine Chip kann Unterstützung anstatt eine absolute Paketgrße jedes Chip must Unterstützung.
Tatsächliche Nutzdatengröße des Datenkanals wird mit LL_LENGTH_REQ und LL_LENGTH_RSP zwischen den beiden beteiligten Funkgeräten ausgehandelt. Sie können eine beliebige Länge von 27 bis zu 251 Bytes (auf der Nutzlast-Ebene) verhandeln (siehe Core_v4.2 6.B.2.4.2.21).
In der ersten Version der BLE-Spezifikation war die maximale Paketgröße 27 Byte (Datennutzlast ohne MIC). Spec verwendete ein 5-Bit-Feld für die LL-Paketgröße, 3 andere Bits dieses Header-Bytes waren RFU. Es wurde schließlich auf 8-Bit mit voller Abwärtskompatibilität in 4.2 erweitert, aber es gibt kein zusammenhängendes Bit mehr in der Kopfzeile. Das erklärt, warum Limit bei 256 Bytes liegt (Geben oder Nehmen wegen fester Header-Größen, die nicht Teil der Byteanzahl sind): es gibt eine vernünftige Erweiterung, ohne das Protokoll sehr zu ändern.
- 1. IOS Bluetooth Low Energy Verbindungsintervall
- 2. Bluetooth Low Energy Android Studio
- 3. Bluetooth low energy - Ein-/Ausgabefehler
- 4. Bluetooth Low Energy Notification Intervall
- 5. Bluetooth Low Energy Sensor-Simulator
- 6. Random Adresse Einstellung in Bluetooth Low Energy
- 7. Mit Bluetooth Low-Energy in Linux-Befehlszeile
- 8. Authentifizierungsproblem in BLE Bluetooth Low Energy-Gerät
- 9. Bluetooth Low Energy APIs in Java
- 10. Bluetooth Low Energy Beacons Entfernung mit Python
- 11. Bluetooth Low Energy - Verbindung mit demselben Gerät
- 12. Android Bluetooth Low Energy Geräte nicht finden
- 13. Bluetooth Low Energy: RFDuino wird nicht erkannt
- 14. Android Studio: Bluetooth Low Energy BLE Werbung
- 15. Bluetooth Low Energy unter Windows 7?
- 16. Qt - WINDOWS - Bluetooth Low Energy funktioniert?
- 17. Chrome Bluetooth Low Energy API - Plattformübergreifende Unterstützung
- 18. Init-Verbindung ohne Synchronisierung mit Bluetooth Low Energy in Android
- 19. Android: Bluetooth Low Energy Scanner empfängt Null-Daten
- 20. So senden Sie Bluetooth Low Energy GATT Benachrichtigung mit Bluez?
- 21. Bluetooth Low Energy Verbindungsparameter für Android, iOS und Win8
- 22. Unterschied zwischen iOS und Android Bluetooth Low Energy Verbindung
- 23. Ist es in der Spezifikation, verborgene Dienste zu haben, bis sicher in Bluetooth Low Energy gepaart?
- 24. Wie viele Bluetooth-Geräte können gleichzeitig mit einem Bluetooth Low Energy Master verbunden/gescannt werden?
- 25. Was ist die korrekte Methode zum Aktualisieren der Eigenschaften eines Bluetooth Low-Energy-Geräts in Angular.js?
- 26. Der Standort muss für Bluetooth Low Energy Scanning unter Android 6.0 aktiviert sein.
- 27. Bluetooth Low Energy in C - mit Bluez zum Erstellen eines GATT-Servers
- 28. Wie manuell an ein BlueTooth Low Energy Device in einem WinForm mit C# zu binden?
- 29. Ist das Verfahren korrekt, um eine Charakteristik in Bluetooth Low Energy zu schreiben?
- 30. Entdecken Sie spezifische Bluetooth Low Energy Service von UUID in Android
Danke. Ich hatte die Spezifikationen als "muss" gelesen und nicht als "darf". – JJM
Die Antwort nur Kommentare über die Nachwirkungen der Größenzunahme, Es ging nicht um die ursprüngliche Frage "Der Grund des kurzen Pakets ist die Stabilität des Radios, lange Pakete erhitzen das Silizium und zusätzliche Schaltungen hinzugefügt werden, um die Frequenz zu halten stabil ", wenn dies tatsächlich der Fall ist, wie bewirkt die Erhöhung der Paketgröße keinen Erwärmungseffekt/Instabilität? –
Die eigentliche Frage lautete: "Warum und wie ist ** SIG ** gelungen [...]". Die eigentliche Antwort ist die ** may/must ** Unterscheidung. Der Effekt ist chipabhängig, und Anbieter können das Limit, das sie tatsächlich unterstützen, in ihren Chips durchsetzen. Selbst wenn die Chips vor Version 4.2 erstellt wurden, können sie in erster Linie längere Pakete unterstützen, selbst wenn sie die 251-Byte-Grenze nicht erreichen können. – Nipo