CuBox-iの標準となっているAndroid4.3ではSettingsを使って、簡単にBluetooth機器の接続ができている。ところが、Ubuntu、Debian、Arch Linux などはOSをインストールしただけではBluetoothデバイスを認識できません。そこで原因を調べ、bluetoothを使えるようにすることに成功した。このコラムで紹介しているUbuntuやDebianで使えるようにしてみました。
[原因]
その原因をちょっと、調べてみたところ、Linux起動時に /sys/class/bluetooth/ディレクトリ下にデバイス・ファイルが生成されていない。 Androidではどうしているのかとシステムファイルをみたところ、起動時にbrcm_patchram_plusコマンドを実行してデバイスファイルを生成しているらしいことがわかった。 そこで、Linux用のbrcm_patchram_plusコマンドを作ってやって、起動時にAndroidと同じようにbrcm_patchram_plusを実行すればいいことがわかった。
[対処方法]
1. Androidのファームウェアファイルのコピー
オリジナルのAndroidのSDのシステムにある etc/firmware/brcmディレクトリごとLinuxのSDの/lib/firmwareの下にコピーしておきます。 このディレクトリ下の bcm4330.hcd というファイルが実際には必要になります。 http://monoid.jp/downloads/cubox-i/ubuntu/bluetooth/brcm においてあります。
2. Linux用のbrcm_patchram_plusコマンド生成
brcm_patchram_plusのソースファイルbrcm_patcharm_plus.c を
http://code.google.com/p/broadcom-bluetooth/source/browse/brcm_patchram_plus.c
からダウンロードします。 ソースファイルをCuBox-iでコンパイルします。 (Ubuntu Linaroならコンパイラも既にインストールされているはずです。)
$ cc -o brcm_patchram_plus rcm_patchram_plus.c
$ sudo mv brcm_patchram_plus /usr/local/bin
#! /bin/sh
### BEGIN INIT INFO
# Provides: brcm_patcharm_plus
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: brcm_patcharm_plus
### END INIT INFO
/usr/local/bin/brcm_patchram_plus --enable_hci --scopcm=0,2,0,0,0,0,0,0,0,0 --baudrate 3000000 --use_baudrate_for_download --patchram /lib/firmware/brcm/bcm4330.hcd --no2bytes --enable_lpm --tosleep=50000 /dev/ttymxc3
$ sudo chmod +x /etc/init.d/btdevices
$ cd /etc/init.d
$ sudo update-rc.d btdevices defaults
$ ls -l /sys/class/bluetooth
lrwxrwxrwx 1 root root 0 Jun 10 13:31 hci0 -> ../../devices/platform/imx-uart.3/tty/ttymxc3/hci0
lrwxrwxrwx 1 root root 0 Jun 10 13:31 hci0:11 -> ../../devices/platform/imx-uart.3/tty/ttymxc3/hci0/hci0:11
1. System SettingsのBluetoothを起動します。
2. [+]ボタンでBluetooth機器を追加します。
3. キーボードのほうでスキャンモードにしてから、下のダイアログボックスで[Continue]ボタンをクリックします。
4.スキャンが始まり、しばらくするとDeviceリストにそのキーボードが表示されます。リストのキーボードを選択して、[Continue]ボタンをクリックします。
5.ダイアログボックスに表示されている数字列をBluetoothキーボードから入力してEnterキーを押します。
6. コネクション成功メッセージが表示されたら[Close]ボタンをクリックします。
7. 元のダイアログボックスのDeviceリストにキーボードが表示されていたら完了です。
以上、要の点は、Linux用のbrcm_patchram_plusを生成するということでした。