FreeBSDでbluetoothを使う
以前書いたはずのメモがどこかにいってしまったので、メモ代りに。
FreeBSDでbluetoothを使う。目標は、ビデオチャット(skype/ekiga)のために使うこと。
まず、USB接続のbluetoothレシーバを用意。公式をよく読む。http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-bluetooth.html
# kldload uhci # kldload ng_ubt # /etc/rc.d/bluetooth start ubt0
そしてbluetoothレシーバをUSB端子に差す。認識されているか、dmesg(8)で確認。
手元にWiiリモコンがあったので、これでテスト。Wiiリモコンの電池ボックス付近の赤いSyncボタンを押して、
# hccontrol -n ubt0hci inquiry Inquiry result, num_responses=1 Inquiry result #0 BD_ADDR: 00:17:ab:xx:xx:xx Page Scan Rep. Mode: 0x1 Page Scan Period Mode: 0x2 Page Scan Mode: 00 Class: 00:25:04 Clock offset: 0x16fd Inquiry result, num_responses=1 Inquiry complete. Status: No error [00]
とすると、BlueToothデバイスが反応を返す。Wiiリモコン以外のものも、もしかしたら拾うかもしれない。デバイスIDを指定すると名前が返って来る。
# hccontrol -n ubt0hci remote_name_request 00:17:ab:xx:xx:xx BD_ADDR: 00:17:ab:xx:xx:xx Name: Nintendo RVL-CNT-01
pingはl2pingである。Wiiリモコンの場合は、Syncボタンを押すこと。
# l2ping -a 00:17:ab:xx:xx:xx 0 bytes from 00:17:ab:xx:xx:xx seq_no=0 time=4563.491 ms result=0 0 bytes from 00:17:ab:xx:xx:xx seq_no=1 time=5.462 ms result=0
この後、Plantronicsのイヤーピースにl2pingするところまで同様にうまくいったが、l2controlで応答がない。ソケットがない。hcsecdでうまく認証(?)できない。
とりあえず、
# sdpcontrol -a 00:23:7f:xx:xx:xx search HSET Record Handle: 0x00010001 Service Class ID List: Headset (0x1108) Generic Audio (0x1203) Protocol Descriptor List: L2CAP (0x0100) RFCOMM (0x0003) Protocol specific parameter #1: u/int8/bool 2 Bluetooth Profile Descriptor List: Headset (0x1108) ver. 1.0
などと反応はあった。HSETはヘッドセット類を表すらしい。