ほぼ雑記的メモ
いろいろと案件がありまして、LinuxやらほげほげやらいろんなものでBLEを使って調べ物をしていたのですが、これがなかなか期待通り動いてくれないんですよねぇ・・・いつものようにソースやらBluetooth4.0の仕様書(2000頁以上ある)などをいろいろ読み始めたのですが linuxの bleno -> Bluezという流れが複雑で実験環境すらままならないので使い慣れたFreeBSDで動かんものかとtwitterでつぶやいてみました。すると・・・
@issei10193 ん呼んだ? CURRENTに一応突っ込んであるよ。— Takanori Watanabe (@takawata19) 2015, 9月 7
@issei10193 ん呼んだ? CURRENTに一応突っ込んであるよ。
以外と近いところに解はあるんだなー。まさかフォロワーさんがCURRENTにコミットしてたとわ。 ということで手持ちのPCに最新のCURRENTをいれてセコセコ調査を始めた次第。
ちなみにドングルはこれ アイ・オー・データ機器 I-O DATA USB-BT40LE [Bluetooth4.0+EDR/LE準拠 USBアダプター]
ぱっと調べたところBroadcomの BCM20702を使ってるドングルはアイオーのこれしかないようなので無難に。あきばお~とかで安売りしているやつは地雷の可能性が大そうなのでやめました。
これをBSDに差してみるとこういうメッセージが出ます
Sep 10 10:45:01 kernel: WARNING: attempt to domain_add(netgraph) after domainfinalize() Sep 10 10:45:06 kernel: ugen0.3: <Broadcom Corp> at usbus0 Sep 10 10:45:06 kernel: ubt0: <Broadcom Corp BCM20702A0, rev 2.00/1.12, addr 3> on usbus0 Sep 10 10:45:06 kernel: WARNING: attempt to domain_add(bluetooth) after domainfinalize()
何やらwarningは出ますがとりあえず使えそう…… ngctl listで見ると
# ngctl list There are 8 total nodes: Name: ubt0 Type: ubt ID: 00000002 Num hooks: 1 Name: btsock_hci_raw Type: btsock_hci_raw ID: 00000003 Num hooks: 1 Name: btsock_l2c_raw Type: btsock_l2c_raw ID: 00000004 Num hooks: 1 Name: btsock_l2c Type: btsock_l2c ID: 00000005 Num hooks: 1 Name: btsock_sco Type: btsock_sco ID: 00000006 Num hooks: 0 Name: ubt0hci Type: hci ID: 00000008 Num hooks: 3 Name: ubt0l2cap Type: l2cap ID: 0000000c Num hooks: 3 Name: ngctl714 Type: socket ID: 00000012 Num hooks: 0
hccontrolでスキャンをしてみます。BLE対応の接続先が必要ですが、iOSでlightBlueをつかって立てました
# hccontrol le_enable enable # hccontrol le_set_scan_param passive 10 10 public all # hccontrol le_set_scan_enable enable
結果は近傍キャッシュから読めました
# hccontrol read_neighbor_cache BD_ADDR Features Clock offset Page scan Rep. scan XX:XX:XX:XX:XX:XX 00 00 00 00 00 00 00 00 0 0 0
今回はここまで
Powered by Red Leaf ( Rev. c78c769f2 ), © Issei Numata, 2007-2021