ペアリングして、waitForEvents でスリープしている時間の電流値、つまりアプリケーション的にはアイドル時の各OSごとの消費電流を測った。
というのも基本的に OSX でデバッグしていて殆ど他のOSで検証してなかったからです。
- OSX: 0.0054mA
- Windows 10: 0.8mA
- Android 5系: 0.185mA
なんでこんなに違うんだろうという結果でした。Windows で消費電流が多いのはうすうす気付いてたんですが、あまりにも多過ぎる。
OSドライバが Input Report を READ しまくってる? Notification による実装になっていないとか? よくわからない。slave latency を鬼のように増やしても消費に影響がほとんどないので、強制的に起こすようなパケットがめっちゃ送られていそう。さっぱりわからない。
コネクションまわりのパラメータは実装上、
- Max Connection Interval
- Min Connection Interval
- Slave Latency
- Connection Supervision Timeout
ぐらいしかなく、どれを変えても変化がない。PnP ID によって専用ドライバが呼ばれるとかがあるのだろうか? と思ったけど、よくわからない。
USB ベースのHIDで実装するとそういうことになってる可能性もないことはない気がする。しかし Microsoft自身も BLE キーボードは発売しているし、こんなことになるはずはないと思う。
BLE のパケットスニファができればもうすこし原因に近付けるかもしれないけど、流れてるパケットがわかっても対処方法が思いつくとは限らないのでやる気があまり沸いてない。というか既に割と飽きてるので OSX で問題ない挙動のために頑張るモチベーションがない……
BLE + HOGP でまともに動いているデバイスの service / characteristics / descriptor のダンプなどをお持ちのかたはお知らせください……
現状の BLE 接続の市販キーボード
市販のBluetoothキーボードの大半は 3.0 です。BLE にしてもそんな意味ないですしね。
Designer Bluetooth® Desktop (デザイナー Bluetooth® デスクトップ)
マイクロソフト デザイナー Bluetooth デスクトップ 7N9-00023 : ワイヤレス キーボード マウス セット 長時間バッテリー Bluetooth ( ブラック ) cho45
高いうえに日本語配列なので買う気はしないんだけど、評判が良い。そして、スペックシートがすごいしっかりしてて
- Nordic nRF51822 (Bluetooth Low Energy)
- Bluetooth Profile Support HID Over Gatt Profile (HOGP)
- Keyboard: Up to 12 months typical ( 2 AAA alkaline batteries)
と書いてある。使用条件が書いてないのでなんともいえないけど、ディープスリープも実装されてそう。
Universal Foldable Keyboard (ユニバーサル フォルダブル キーボード)
これも高い…… Bluetooth 4.0 の HID 接続って書いてあるので、おそらく HOGP だけど、スペックシートには詳しく書いてない。
- Rechargeable 3.7V 165mAh (min.) Lithium battery
- 3 months typical
OS X でもペアリング可能っぽい。
英語配列なら買ってみてもいいかと思ったけど、国内だと英語版は売ってない。まじひどい。「製品のイメージは英語版です。実際の製品は日本語のキー配列となります」とか書いてあるので写真に騙されないように。
ただ、技適は国際モデルで共通のようで、国内でも相互承認(MRA)による工事設計認証で認証が通っており、製品にも技適マークがある模様。なので輸入さえすれば法的にも問題なく使えるっぽい。
マイクロソフトの製品の技適検索は数字しかないからわかりにくい。技術データシートに Model
number: 1695, Universal Foldable Keyboard. FCC ID: C3K1695 とか書いてあって、モデル番号がわかる。
Amazon.com だと現時点で$53だった。どうせ日本に発送しないんだろ、、と思ったらちゃんと発送してくれる。送料は最低で$6。結構いいんじゃないか?
Apple Magic Keyboard 2
まじで高い…… BLE らしいけど、詳細は書いてない。