Open3
BTstackをCygwinで使いたい会
BTstack( https://github.com/bluekitchen/btstack )はlibusbなトランスポートにも対応しているので、原理的にはWindowsでも使える。。はず。というわけで試してみることにした。
Bluetooth LEのバージョン
大抵の無線マイコンは現状Bluetooth LEに対応している。逆にWi-FiとかBluetooth Classicは探してこないと無い。
-
4.0 。PCに多い。LEを最初に導入したバージョン。パケット長が短い(
32bytesEDIT: 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 のそれぞれで転送速度が違ってくるんではないか。
試すデバイス
- https://www.buffalo.jp/product/detail/bshsbd08bk.html -- Bluetooth 4.0 、 チップはCSR製。
- https://www.elecom.co.jp/products/LBT-UAN05C2N.html -- Bluetooth 4.0 、これもCSR製で刻印は LBT-PCSCU01D
BT5.0のUSBデバイスはTP-linkから出ているようなので買ってみても良いかもしれない。
遅い
とりあえず適当にビルドしてみたが、やっぱり通常のUART程度の速度しか出ないようだ。
対向アプリはBluefruit Connectを使った。
- (iOS) https://apps.apple.com/jp/app/bluefruit-connect/id830125974
- (Android) https://play.google.com/store/apps/details?id=com.adafruit.bluefruit.le.connect&hl=ja&gl=US
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
PRしといた
そのままだとCygwinでは動かないのでPRしといた。