bluetooth 関係のメモ
5/26
プラネックス の GW-BH01U という USB Bluetooth アダプタが 8800 円で 売っていたので、買ってしまう。
ケースを割って中をみてみる。...
中に入っていたのは、 WML-C06NU という ミツミ製 モジュール。
あれ? 製品の説明には、ベースチップは、CSR 製と書いてある。 CSR 製チップを使った ミツミ製モジュール?
それはともかく、ミツミ製モジュールには、インターフェイス 3 種類 x アンテナ あり/なし で 6 タイプの製品があるようだ。
インターフェイスには、UART BCSP/ UART H4 / USB --- ふうむ。 このモジュールは、USB にしか つながらないのか?
モジュールは、28 ピンで、
Top View アンテナ (1) PIO[0]/RX_EN (28) ANT (2) PIO[1]/TX_EN (27) GND (3) GND (26) -- (4) GND (25) PIO[2] (5) PIO[4]/IRQ1 (24) PIO[3] (6) PIO[5]/IRQ2 (23) UART_TX (7) PIO[6] (22) UART_RX (8) PIO[7] (21) UART_RTS/USB_D+ (9) PCM_OUT (20) UART_CTS/USB_D- (10) PCM_CLK (19) SPI_MISO (11) PCM_IN (18) SPI_CLK (12) PCM_SYNC (17) SPI_MOSI (13) GND (16) SPI_CSB (14) Vdd (15) GND
となっている。
インターフェイスがちがっても pin 配置は同じということは、ファームウェアが ちがうだけなのかも知れない。
CSR 製チップということは、
BlueCore というやつ?
このチップは、マイクロコントローラと RAM , I/O が内蔵されていて、
外付チップとして flushROM と クリスタル 、アンテナを付けるものらしい。
チップ自体は、81pin bga で、とても手がだせるものではなさそう。
で、このチップは、USB and UART version と UART only version の2つがある。
とにかく、bluetooth モジュールって 一般に かなり多様なインターフェイスを もっているようだ。
SPI とか、UART(シリアル) とか、WML-C06NU では利用できないのかも知れないが 利用できるモジュールは存在するわけだ。
シリアルでつなげられる と幸せな もの は沢山ありそうだ。
重量9g で 9800円 小さいですね。これは。--ksr
そうですね。WML-C06NU で出ている写真そのものモジュールが入って いました。
アンテナ付きのモジュールに USB のコネクタがくっついている感じ。 USB のコネクタ( 取り付け部を含む) が Bluetooth モジュールと同じぐらいの長さ。
部品をよおくみてみると、5V->3.3V の レギュレータ と 数個のチップ抵抗が あるだけ。ほとんど Bluetooth モジュールに USB コネクタ付けた だけのもののようです。
ちなみに、Linux には、bluetooth ドライバがある模様。
usb.c: registered new driver hci_usb bluetooth.c: USB Bluetooth support registered usb.c: registered new driver bluetooth bluetooth.c: usb_bluetooth_probe - improper number of endpoints. Bluetooth driver not bound. ( x 7行 ) bluetooth.c: USB Bluetooth tty driver v0.12
T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 5 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=03ee ProdID=641f Rev= 1.14 C:* #Ifs= 3 Cfg#= 1 Atr=c0 MxPwr=200mA I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl= 1ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl= 1ms E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 1ms I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=(none) E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl= 1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl= 1ms I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=(none) E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl= 1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl= 1ms I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=(none) E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl= 1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl= 1ms I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=(none) E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl= 1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl= 1ms I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=(none) E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl= 1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl= 1ms I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=(none) E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl= 1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl= 1ms I: If#= 2 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=00 Driver=(none)ひょっとして、プロファイル毎に ドライバを割り当てるという感じ?
場所 ドライバ名(ポートのドライバに見える) 0 Bluetooth Serial-Client (COM3) 1 Bluetooth Modem-FAX (COM4) 2 Bluetooth Serial-Host (COM5) 3 Bluetooth Modem-DUN (COM6) 4 Bluetooth Modem-LAN (COM7) 5 Bluetooth Modem-DUN-Host (COM8) 6 Bluetooth LAN-Host (COM9)
この linux(2.4.18) に入っているのは、bluez-1.1 だそうだ。 bluez-1.2 が既に出たあと いまは 2.1 かなりちがっているということか。
実際に なにかをしようとするときは、 Bluetooth_1.1_Specification_Book を理解しなくてはならなさそう。
あ、ミツミの WML-C06 に関する話題が Linux bluetooth-dev ML でみつかった。
VDD,GND,Tx,Rx だけつないで 115200 bps BCSP で BlueTest? という プログラムで接続できたらしい。
なるほど、OpenBTという プロジェクトがあるのか。それで動かないという話題らしい。
リプライを見ると bcsp-version of openbt が通信する セッテイングを チェックしろとある。
bluetooth のプロジェクトには、OpenBT 以外に BlueZ というのがあるらしい。 BlueZ の Hardware List には、
Mitsumi USB Adapter CSR 1.1 hcp_usb working
という情報が。
どうやってインストールするかというと Bluetooth_Installation_HOWO が。
これでホスト側の環境が作れるわけだ。で、どうするのだろう? PC 間をつなげることができたって、嬉しくもなんともないぞ。 NetBSD/hpcmips で という 可能性はないのだろうか?
NetBSD ではどうなっているんだろう?とか思ってしらべてみたら、
アイピースクエア なんて会社をみつけた。 なんでも NetBSD 関係の 依託開発?しているところみたい。
その FAQ には、
なんてあるぞ。自社でのportも辞さずということか。しかし、 Linux からの port だと GPL ? NetBSD で組込みやる以上 bluetooth ドライバ がないと困るだろうが... すごい意気ごみだ。
それはともかく、IrDA とちがって 誰もが欲しいものだろう。 いつか誰かが port してくれるにちがいない。
bluz の最新版をインストールしてみる。
をとにかく ./configure; make; make install しまくる。
で、bluetooth の UNIT を挿す。
I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb : I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb I: If#= 2 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=00 Driver=(none)という風に 7 つのドライバ(hci_usb) が ロードされた。
hub.c: USB new device connect on bus1/1/3, assigned device number 10 usb.c: USB device 10 (vend/prod 0x3ee/0x641f) is not claimed by any active driver. BlueZ Core ver 2.0 Copyright (C) 2000,2001 Qualcomm Inc Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> BlueZ HCI USB driver ver 2.0 Copyright (C) 2000,2001 Qualcomm Inc Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> usb.c: registered new driver hci_usb bluetooth.c: USB Bluetooth support registered usb.c: registered new driver bluetooth bluetooth.c: usb_bluetooth_probe - improper number of endpoints. Bluetooth driver not bound. bluetooth.c: USB Bluetooth tty driver v0.12
とにかく 初期化されたっぽい。
さてコマンドは、
hciattach --- シリアル接続の BlueTooth モジュールはこれで組み込む。 (USB は必要ない) hciconfig --- 組み込まれたドライバに対して 初期化する(up) hcid --- サービスをするデーモン? hcitool --- scan するとか inquire するとか。
まずは、
hciconfig up とすると hci0: Type: USB BD Address: 00:A0:96:1F:AD:44 ACL MTU: 128:8 SCO MTU: 64:8 UP RUNNING PSCAN ISCAN RX bytes:1511 acl:6 sco:0 events:53 errors:0 TX bytes:474 acl:0 sco:0 commands:31 errors:0 といったメッセージが出る。 hcitool scan で、 Scanning ... 00:A0:96:1F:AD:35 NINJA 相手がみつかる。 そして hcitool info 00:A0:96:1F:AD:35 とすると Requesting information ... BD Address: 00:A0:96:1F:AD:35 Device Name: NINJA LMP Version: 1.1 (0x1) LMP Subversion: 0x72 Manufacturer: Cambridge Silicon Radio (10) Features: 0xff 0xff 0x05 0x00 <3-slot packets> <5-slot packets> <encryption> <slot offset> <timing accuracy> <role switch> <hold mode> <sniff mode> <park mode> <RSSI> <channel quality> <SCO link> <HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD> <power control> それはともかく、hcid は? ... /etc/bluetooth/hcid.conf でサービスを 定義するものらしい。 hcid をうごかせば.. hcicofing up せずとも 自動的に up するようだ。 で、相手側は、 名称 : Bluz(0) タイプ: デスクトップ PC と認識してくれた。
なんかこれだけじゃダメらしい。
てのも make してみる。
make するのはよいのだがよくわからんという状態に ...
まあ、このページは、電子工作のページだから。BlueZ というのが どういうものか、だいたいわかればいいか。
主題は、シリアルに どうやって BlueTooth モジュールをつなげるか。
まずは、
ダメなら、別のものを考える。
こんなデータをみつけた。
これによると、
BCSP ,H4 とは何なのか
の中をみてようやく理解した。H2(USB),H3(RS232C),H4(UART) という3つの 物理レイヤのプロトコルの定義は、Bluetooth_1.1_Specification_Book で 説明があった。
H3 は、9600 bps で ネゴシエーションして、通信モードを その後で設定する。ボードに載っていてエラーを気にしなくてよいケース のために H4 がある。ある固定の通信モードでネゴシエーションせずに、 通信できるものらしく、通信モードの設定について記載されていない。
そして、BCPS は、BlueCore Serial Protocol の略で CSR 社の プロトコルらしい。
H4 とおなじく、ある固定の通信モードでネゴシエーションせずに、 通信できるが、CRC や チェックサムをつけて、データの信頼性 / エラー検出 の面で、改良したもの。また、TxD/RxD のみでも通信できる。
で、H4 (or H3) と 共存はできないから、UART のモデルは、2 種類ある ということになるようだ。
ひょっとしたら、USB モデルは、CTS/RTS が使えないから、シリアルが使えると すれば BCSP に決まっているのかも知れない。
bcsp.zip には、2種類の コードが 含まれている。Windows 系用のコードと 組み込み系のコードのようだ。
さて、BlueZ で、BCSP が使えるかというと まだ無理のようだ。 ハードウェアのリストは、
COM1 Platinum Card CSR 1.1 bcsp_cs in progress
となっていて、開発中らしい。これ以外の BCSP モジュールは、 not working になっている。
また、メーリングリストで
上でも でてきたが OpenBT の方も Mitsumi のシリアル接続はあやしい らしい。ただし、他の CSR で BCSP での接続は 実績があるらしい。
参考:
そういったことはともかく、なんとなく、USB version では、シリアル接続 なんてできないような気がしてきた。
おとなしく、USB で使えばいい。無理矢理シリアル に USB をつなげると すれば、
USB Bluetooth -- SL811HST (Usb HOST) -- H8
なんてつなぎかたをすればよいのか。ただ、それができたとしても消費電力が...
ネットワーク周りだし、おもしろいところですね。何かできないかな。
なんか面白みがないですね。無線ということは 電源系さえなんとかすれば、 完全防水できるとか ...
メモ
iPAQ の Bluetooth 版は BlueZ で使えているらしい。
Compaq iPAQ 3870 CSR 1.1 hci_uart working Compaq iPAQ Bluetooth CSR 1.1 hci_uart working
いいなぁ。
それ関係で、http://www.cs.umd.edu/~gvijay/bluez.html というのをみつける。 なんか pskey というので設定を変更できるっぽい。
iPAQ の デフォルトは、BCSP モードなのを pskey でファームウェアを 書き変えて H4 mode にするとある。
... よくわからんが、hciattach とかに、CSR の UART speed がどうのという コードがあるなぁ。OpenBT の方にも bt_vendor.c とかあって、なんか操作 できるようだ。
pskey そのものはわからなかったが、bt_vendor.c に 設定のコードが入っている。
あとは、USB version でもシリアルで接続できると嬉しいなぁ。