Open3

BTstackをCygwinで使いたい会

okuokuokuoku

BTstack( https://github.com/bluekitchen/btstack )はlibusbなトランスポートにも対応しているので、原理的にはWindowsでも使える。。はず。というわけで試してみることにした。

Bluetooth LEのバージョン

大抵の無線マイコンは現状Bluetooth LEに対応している。逆にWi-FiとかBluetooth Classicは探してこないと無い。

  • 4.0 。PCに多い。LEを最初に導入したバージョン。パケット長が短い( 32bytes EDIT: 27bytes)。
  • 4.1 。このバージョンはあまり重要でない。
  • 4.2 。Data Packet Length Extensionによって 1000バイト超 EDIT: 〜251 bytesのパケットを扱えるようになる。また、ECCベースのペアリングが導入される。ESP32やiPod touchがこのバージョン。
  • 5.0 。2Mbps対応PHY。
  • 5.1 。AoA (Angle of Arrival) 、 AoD (Angle of Departure) 対応によるロケーション改善等。
  • 5.2 。Isochronous Channels や Audioのサポート。

なので 4.0 、 4.2 、 5.0 のそれぞれで転送速度が違ってくるんではないか。

試すデバイス

BT5.0のUSBデバイスはTP-linkから出ているようなので買ってみても良いかもしれない。

okuokuokuoku

遅い

とりあえず適当にビルドしてみたが、やっぱり通常のUART程度の速度しか出ないようだ。

https://github.com/okuoku/bttest/commit/1b8c535de383c715c9604f5c181791bbea51828a

対向アプリはBluefruit Connectを使った。

Linbleでも同等の速度になっている https://musenka.com/bluetooth/linble/throughput/ が、Linbleには高速モード https://www.musen-connect.co.jp/dl/linble-z1-throughput.pdf によって2M PHYが使えるらしく、それ同士であれば1Mbps近い速度が出ているようだ。

iPad

USB Path: 06-01-01-01
To start the streaming, please run nRF Toolbox -> UART to connect.
LE Connection - Connection Interval: 30.00 ms
LE Connection - Connection Latency: 0
LE Connection - Request 15 ms connection interval
A: ATT MTU = 182 => use test data of len 179
LE Connection - Connection Param update - connection interval 15.00 ms, latency 0
A: 52268 bytes sent-> 17.411 kB/s
A: 52089 bytes sent-> 17.339 kB/s
A: 51373 bytes sent-> 17.067 kB/s
A: 51552 bytes sent-> 17.184 kB/s
A: 51015 bytes sent-> 16.988 kB/s
A: 52268 bytes sent-> 17.399 kB/s
A: 51731 bytes sent-> 17.197 kB/s
A: Disconnect

Pixel5a

USB Path: 06-01-01-01
To start the streaming, please run nRF Toolbox -> UART to connect.
LE Connection - Connection Interval: 45.00 ms
LE Connection - Connection Latency: 0
LE Connection - Request 15 ms connection interval
A: ATT MTU = 514 => use test data of len 200
LE Connection - Connection Param update - connection interval 15.00 ms, latency 0
A: 78200 bytes sent-> 26.031 kB/s
A: 77800 bytes sent-> 25.907 kB/s
A: 76800 bytes sent-> 25.574 kB/s
A: 74800 bytes sent-> 24.883 kB/s
A: 77200 bytes sent-> 25.690 kB/s
A: 75800 bytes sent-> 25.258 kB/s
A: 77400 bytes sent-> 25.757 kB/s
A: 76600 bytes sent-> 25.524 kB/s