Open5

Bluetooth Low Energyに良い汎用トランスポートが無い

okuokuokuoku

Wio TerminalのようにBluetoothがBLEだけというのはたまに有るので、BLEで動く良い感じの汎用プロトコルを探したい。

... が、色々探してみたけどなかなか良い候補が無い。。

okuokuokuoku

6LoWPAN(IPv6 over BLE)

6LoWPANはBLE上の実装も規格化されていて、この規格に従ったIPスタックとしてはlwIPがある。

https://datatracker.ietf.org/doc/html/rfc7668

ただ、これ GATT 上には載っておらず、直接L2CAP上に構築されている。端的に言えば Web Bluetoothで実装できない

okuokuokuoku

HID over GATT(HOGP)

HID over GATTは、GATT経由でHIDを転送するプロファイルで多くのプラットフォームでサポートされている。

https://www.bluetooth.com/ja-jp/specifications/specs/hid-over-gatt-profile-1-0/

ただしHIDなデバイスは意図的にWeb Bluetoothの対応から外されている。

https://github.com/WebBluetoothCG/registries/blob/38ad58c9f5e5c8977a1349805ac12e73b5e7dd19/gatt_blocklist.txt#L6-L9

# org.bluetooth.service.human_interface_device
# Direct access to HID devices like keyboards would let web pages
# become keyloggers.
00001812-0000-1000-8000-00805f9b34fb

HIDはキーボードの実装に使われ、キーボードはパスワードのようなセンシティブな情報の入力に使われる可能性がある。(の、割にはWebHIDという別のAPIが企画されている https://wicg.github.io/webhid/ )

okuokuokuoku

BLE MIDI

BLE MIDIはAppleが実装したBLEなMIDIをMIDIがRP-052として規格化したものとなっている。

http://amei.or.jp/midistandardcommittee/Recommended_Practice/e/rp52spec(ble-midi).pdf

基本的にはMIDIメッセージの転送に特化していて、MIDIにおけるフリーフォーマットなメッセージであるところの SysEx (システムエクスクルーシブ) も伝送路が7bitになることに注意する必要がある。よって一般的なデータバスとしてはちょっと使い辛い気はする。

okuokuokuoku

(様々な) UART over BLE

Classic Bluetoothでは SPP として標準のシリアルポートプロファイルが存在したが、同様のものはBLEには無いため、様々な独自UART実装が存在する。

https://punchthrough.com/serial-over-ble/

Microchip Technology’s Transparent UART Service, Nordic Semiconductor’s Nordic UART Service, and Texas Instruments’ Serial Port Service are just a few of the custom profiles created for Serial over BLE. They do this for a good reason, as there are many benefits to choosing Serial over BLE for your Bluetooth Low Energy product.

Nordic の実装が最も良く知られている気はするが、少くともWindowsとかMac向けのドライバは存在しない。需要自体はあるので、専用のハードウェアドングル等が市販されている。

https://www.musen-connect.co.jp/blog/course/product/linble-dongle-usable/

LINBLEドングルの場合は、LINBLE UART Serviceという通信仕様に対応したペリフェラル機器としか通信出来ません。

と書きつつ、UUIDの書き換えでNordicの実装と通信している。記事中で指摘されているように、フロー制御類が無いので信頼性には問題が出る。