Raspberry Pi 無線LANとBluetoothの隣接は可能?

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-EZVID=0x2019 PID=0xed17 Realtek RTL8188CUS
Bluetooth USBドングルPlanex BT-MicroEDR1XVID=0x0a12 PID=0x0001 Cambridge Silicon Radio
Bluetooth マウスMicrosoft Bluetooth Notebook Mouse 5000Infineon Technologies AG

今回は、bluetooth パッケージだけしかインストールしなかったが必要に応じて、bluez-utils とbluemanパッケージもあわせてインストールしてもいい。20分ぐらいかかるので気長に待ちます。

  1. $ sudo apt-get update
  2. $ sudo apt-get install bluetooth

USBドングルが認識されていることを確認する。

  1. $ lsusb
  2. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  3. Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
  4. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
  5. Bus 001 Device 004: ID 2019:ed17 PLANEX GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS]
  6. Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

bluetoothデーモンが起動しているのを確認する。

  1. $ /etc/init.d/bluetooth status
  2. [ ok ] bluetooth is running.

パッケージに含まれているhcitoolを使って、スキャンする。もちろんこのときマウスのスイッチも入れておく。発見すると、機器名称とBluetoothアドレスが表示される。

  1. $ hcitool scan
  2. Scanning ...
  3. 7C:ED:8D:00:00:00 Microsoft Bluetooth Notebook Mouse 5000

パッケージに含まれているl2pingを使って、応答時間を計測してみる。同じテーブルの上に載せてあるのに40msecとは(><)

  1. $ sudo l2ping -c 1 7C:ED:8D:00:00:00
  2. Ping: 7C:ED:8D:00:00:00 from 00:1B:DC:00:00:00 (data size 44) ...
  3. 0 bytes from 7C:ED:8D:00:00:00 id 0 time 41.62ms
  4. 1 sent, 1 received, 0% loss

ここまでは、BluetoothプロトコルスタックのHCIおよびL2CAPレイヤでの接続確認だったが、とりあえずOKのようだ。次は、ペアリングである。PINコードは0000とした。

  1. $ sudo bluez-simple-agent hci0 7C:ED:8D:00:00:00
  2. RequestPinCode (/org/bluez/6717/hci0/dev_7C_ED_8D_00_00_00)
  3. Enter PIN Code: 0000
  4. Release
  5. New device (/org/bluez/6717/hci0/dev_7C_ED_8D_00_00_00)

信頼できる装置として接続する。この手順は一度だけでよくて、リブート後も自動的に接続されるとのこと。(参考

  1. $ sudo bluez-test-device trusted 7C:ED:8D:00:00:00 yes
  2. $ sudo bluez-test-input connect 7C:ED:8D:00:00:00

リブートして確かめてみる。HCIレイヤでの接続はOK。

  1. $ hcitool con
  2. Connections:
  3. > ACL 7C:ED:8D:00:00:00 handle 39 state 1 lm MASTER

信号強度もまずます。

  1. $ hcitool rssi 7C:ED:8D:00:00:00
  2. RSSI return value: -4

Bluetoothのプロトコルスタックがいくつか起動されている。接続したマウスはHIDプロファイルのデバイスとして認識された。

  1. $ dmesg
  2. :
  3. :
  4. [ 11.090221] Bluetooth: Core ver 2.16
  5. [ 11.325818] NET: Registered protocol family 31
  6. [ 11.500419] Bluetooth: HCI device and connection manager initialized
  7. [ 11.741601] Bluetooth: HCI socket layer initialized
  8. [ 11.962391] Bluetooth: L2CAP socket layer initialized
  9. [ 12.040185] Bluetooth: SCO socket layer initialized
  10. [ 12.142800] Bluetooth: Generic Bluetooth USB driver ver 0.6
  11. [ 12.234601] usbcore: registered new interface driver btusb
  12. :
  13. :
  14. [ 33.899310] Bluetooth: RFCOMM TTY layer initialized
  15. [ 33.899357] Bluetooth: RFCOMM socket layer initialized
  16. [ 33.899372] Bluetooth: RFCOMM ver 1.11
  17. [ 33.916660] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
  18. [ 33.916692] Bluetooth: BNEP filters: protocol multicast
  19. :
  20. :
  21. [ 49.380788] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
  22. [ 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
  23. [ 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)も使えそうである。

  1. $ lsmod
  2. Module Size Used by
  3. evdev 8682 0
  4. joydev 9102 0
  5. hidp 13111 0
  6. bnep 10514 2
  7. rfcomm 33663 10
  8. snd_bcm2835 12808 0
  9. snd_pcm 74834 1 snd_bcm2835
  10. snd_page_alloc 4951 1 snd_pcm
  11. snd_seq 52536 0
  12. snd_seq_device 6300 1 snd_seq
  13. snd_timer 19698 2 snd_seq,snd_pcm
  14. snd 52489 5 snd_timer,snd_seq_device,snd_seq,snd_pcm,snd_bcm2835
  15. btusb 11321 2
  16. 8192cu 485042 0
  17. bluetooth 157711 24 btusb,rfcomm,bnep,hidp
2012年11月24日