CuBox-iのAndroidではSettingsを使って、簡単にBluetooth機器の接続ができている。
ところが、Ubuntu, Debian, Arch LinuxなどはOSをインストールしただけではBluetoothデバイスを認識できません。

[原因]
その原因をちょっと、調べてみたところ、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

コンパイルしてできたbrcm_patchram_plusを/usr/local/binに移動ーしておきましょう。

$ sudo mv brcm_patchram_plus /usr/local/bin

ソースと実行モジュールをhttp://monoid.jp/downloads/cubox-i/ubuntu/bluetooth/にアップしておきました。

3. Linux起動時にデバイスファイルを生成するようにしましょう。
/etc/init.dの下に、 btdevicesというファイルを生成します。テキスト・エディタで /etc/init.d/btdevicesファイルの中を次のように記述してください。

#! /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

btdevicesファイルをhttp://monoid.jp/downloads/cubox-i/ubuntu/bluetooth/にアップしておきました。

ランレベルに合わせてbtdevicesを自動的に実行するようにしましょう。

$ cd /etc/init.d
$ sudo update-rc.d btdevices defaults

これで、OSを再起動するとBluetoothデバイスファイルが生成されるようになります。実際に、再起動させて /sys/class/bluetoothディレクトリをみてください。
下のように,
hci0, hci0:11が生成されていれば成功です。

$ 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

[Bluetooth機器接続]
ここまでくれば、Bluetooth機器の接続は簡単です。
ELECOMのTK-FBP014シリーズのキーボードを接続してみましょう。

1. System SettingsのBluetoothを起動します。
bt00
2. [+]ボタンでBluetooth機器を追加しましょう。
bt01
3. キーボードのほうでスキャンモードにしてから、下のダイアログボックスで[Continue]ボタンをクリックします。
bt02
4.スキャンが始まり、しばらくするとDeviceリストにそのキーボードが表示されます。リストのキーボードを選択して、[Continue]ボタンをクリックします。
bt03
5.ダイアログボックスに表示されている数字列をBluetoothキーボードから入力してEnterキーを押します。
bt04
6. コネクション成功メッセージが表示されたら[Close]ボタンをクリックします。
bt05
7. 元のダイアログボックスのDeviceリストにキーボードが表示されていたら完了です。
bt06

以上、要の点は、Linux用のbrcm_patchram_plusを生成するということでした。