Raspberry PiのUSBポートに無線LANとBluetoothのドングルを直挿しても使えるだろうか?802.11b/gの無線LANとBluetoothは、同じISMバンド(2.4GHz帯)を使うので干渉するかもしれない。
次の機器を使って試してみた。無線LAN USBドングルは、すでにここで使用可能な状態にしてあり、この試験自体をすべて無線LAN経由で行った。Bluetooth USBドングルの方は、Raspberry PiのVerified Peripheralsにあることを確認してある。
| 使用機器 | メーカ 型式 | ICチップベンダ |
|---|---|---|
| 無線LAN USBドングル | Planex GW-USValue-EZ | VID=0x2019 PID=0xed17 Realtek RTL8188CUS |
| Bluetooth USBドングル | Planex BT-MicroEDR1X | VID=0x0a12 PID=0x0001 Cambridge Silicon Radio |
| Bluetooth マウス | Microsoft Bluetooth Notebook Mouse 5000 | Infineon Technologies AG |
今回は、bluetooth パッケージだけしかインストールしなかったが必要に応じて、bluez-utils とbluemanパッケージもあわせてインストールしてもいい。20分ぐらいかかるので気長に待ちます。
$ sudo apt-get update$ sudo apt-get install bluetooth USBドングルが認識されていることを確認する。
$ lsusbBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.Bus 001 Device 004: ID 2019:ed17 PLANEX GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS]Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)bluetoothデーモンが起動しているのを確認する。
$ /etc/init.d/bluetooth status[ ok ] bluetooth is running.パッケージに含まれているhcitoolを使って、スキャンする。もちろんこのときマウスのスイッチも入れておく。発見すると、機器名称とBluetoothアドレスが表示される。
$ hcitool scanScanning ... 7C:ED:8D:00:00:00 Microsoft Bluetooth Notebook Mouse 5000パッケージに含まれているl2pingを使って、応答時間を計測してみる。同じテーブルの上に載せてあるのに40msecとは(><)
$ sudo l2ping -c 1 7C:ED:8D:00:00:00Ping: 7C:ED:8D:00:00:00 from 00:1B:DC:00:00:00 (data size 44) ...0 bytes from 7C:ED:8D:00:00:00 id 0 time 41.62ms1 sent, 1 received, 0% lossここまでは、BluetoothプロトコルスタックのHCIおよびL2CAPレイヤでの接続確認だったが、とりあえずOKのようだ。次は、ペアリングである。PINコードは0000とした。
$ sudo bluez-simple-agent hci0 7C:ED:8D:00:00:00RequestPinCode (/org/bluez/6717/hci0/dev_7C_ED_8D_00_00_00)Enter PIN Code: 0000ReleaseNew device (/org/bluez/6717/hci0/dev_7C_ED_8D_00_00_00)信頼できる装置として接続する。この手順は一度だけでよくて、リブート後も自動的に接続されるとのこと。(参考)
$ sudo bluez-test-device trusted 7C:ED:8D:00:00:00 yes$ sudo bluez-test-input connect 7C:ED:8D:00:00:00リブートして確かめてみる。HCIレイヤでの接続はOK。
$ hcitool conConnections: > ACL 7C:ED:8D:00:00:00 handle 39 state 1 lm MASTER信号強度もまずます。
$ hcitool rssi 7C:ED:8D:00:00:00RSSI return value: -4Bluetoothのプロトコルスタックがいくつか起動されている。接続したマウスはHIDプロファイルのデバイスとして認識された。
$ dmesg::[ 11.090221] Bluetooth: Core ver 2.16[ 11.325818] NET: Registered protocol family 31[ 11.500419] Bluetooth: HCI device and connection manager initialized[ 11.741601] Bluetooth: HCI socket layer initialized[ 11.962391] Bluetooth: L2CAP socket layer initialized[ 12.040185] Bluetooth: SCO socket layer initialized[ 12.142800] Bluetooth: Generic Bluetooth USB driver ver 0.6[ 12.234601] usbcore: registered new interface driver btusb::[ 33.899310] Bluetooth: RFCOMM TTY layer initialized[ 33.899357] Bluetooth: RFCOMM socket layer initialized[ 33.899372] Bluetooth: RFCOMM ver 1.11[ 33.916660] Bluetooth: BNEP (Ethernet Emulation) ver 1.3[ 33.916692] Bluetooth: BNEP filters: protocol multicast::[ 49.380788] Bluetooth: HIDP (Human Interface Emulation) ver 1.2[ 49.404708] input: Microsoft Bluetooth Notebook Mouse 5000 as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/bluetooth/hci0/hci0:41/input0[ 49.414318] generic-bluetooth 0005:045E:0700.0001: input: BLUETOOTH HID v1.00 Mouse [Microsoft Bluetooth Notebook Mouse 5000] on 00:1B:DC:00:00:00最後に、startxでX画面を立ち上げてBluetoothマウスが動くことを確認した。同じ周波数帯域を使いながら、その間わずか1センチ足らずであるのに、Bluetoothと無線LANは、ともかくも動いた。理想的には、やはり離した方がいいのだろうが、、、HIDプロファイルのほかにネットワークエミュレーション(BNEP)や仮想シリアルポート(RFCOMM)、ゲーム端末(joypad)も使えそうである。
$ lsmodModule Size Used byevdev 8682 0joydev 9102 0hidp 13111 0bnep 10514 2rfcomm 33663 10snd_bcm2835 12808 0snd_pcm 74834 1 snd_bcm2835snd_page_alloc 4951 1 snd_pcmsnd_seq 52536 0snd_seq_device 6300 1 snd_seqsnd_timer 19698 2 snd_seq,snd_pcmsnd 52489 5 snd_timer,snd_seq_device,snd_seq,snd_pcm,snd_bcm2835btusb 11321 28192cu 485042 0bluetooth 157711 24 btusb,rfcomm,bnep,hidp