ZBOX nano VD01でBluetoothを使う
2012/03/18(日) 28:50 NetBSD はてブ情報 はてブに登録 はてブ数

ZBOX nano VD01にはBluetoothが装備されているらしく、せっかくだから使ってみましょうと思い立ちました。

The NetBSD Guide Chapter 21 Bluetooth on NetBSDという文書を発見。

ほー、これは助かる。と思いつつ読みはじめて、まずデバイスを認識してなきゃ話になりませんなー、ということでubtがあるのか確認です。

...

ubtはありませんでした。なんだかな。うーんと思いつつbtで検索すると次のようなメッセージが。
aubtfwl0 at uhub3 port 1
aubtfwl0: ath3k-1.fw open fail 2
man aubtfwlしても何も出てきません。とはいえ、これまで見たこともないデバイス名ですし、なんだか気になるので調べてみるとどうやらAtherosのBluetoothのためのドライバのようです。おぉ、なんとかとっかかりを見つけることができたようです。

しかし、Atherosといえば無線LANとばかり思っていましたが、いわれてみればBluetoothも同じ無線ですからAtherosの製品があったとしても不思議ではないですね。

さて、どうやらaubtfwlはath3k-1.fwをファームウェアとして必要としているらしく、そのopenに失敗しているようです。

fail 2の2って何かといえばENOENTですからNo such file or directoryということのようです。確かにath3k-1.fwなんてファイルはシステムのどこにも存在しません。

じゃぁ、ath3k-1.fwはどこにあるのさ、と思って探してみるとhttp://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.gitにあるようです。ここにあるLICENCE.atheros_firmwareを見て、今回の用途においては問題がないと判断したので、ここのath3k-1.fwを使わせてもらうことにしました。

では、どこにファームウェアを置けば良いのでしょう。
ファームウェアを開いている firmware_open -> firmware_path_first -> firmware_paths -> FIRMWARE_PATHS と追っかけていくと、
     75 #define	FIRMWARE_PATHS		\
     76 	"/libdata/firmware:/usr/libdata/firmware:/usr/pkg/libdata/firmware:/usr/pkg/libdata"
     77 #endif
という記述にたどり着きました。どうやらsysctlのhw.firmware.pathで見ればわかったようですね。しらんがな。

じゃぁ、/libdata/firmwareに置くことにしましょう。といって、どう置けば良いのでしょう。先のfirmware_path_firstからfirmware_path_nextに読み進めると、drvnameつまりドライバ名をディレクトリとしてファームウェアファイルを読み込むわけです。

今回だとdrvnameはaubtfwlですから/libdata/firmware/aubtfwl/ath3k-1.fwというファイルの置き方をすれば良いということになります。

あれ?

あいかわらず、
aubtfwl0: ath3k-1.fw open fail 2
のようです。

おっかしーな、と思ってもう一度aubtfwl.cを見てみると、
    104 	error = firmware_open("ubt", "ath3k-1.fw", &fwh); /* XXX revisit name */
なんと、ubtって書いてあるじゃないですか!!! 直接書くなよ。

あらためて、/libdata/firmware/ubt/ath3k-1.fwで起動してみると、
aubtfwl0 at uhub3 port 1
aubtfwl0: beginning firmware load
aubtfwl0: firmware load complete
aubtfwl0: detached
aubtfwl0: at uhub3 port 1 (addr 2) disconnected
aubtfwl0 at uhub3 port 1
aubtfwl0: beginning firmware load
aubtfwl0: firmware load complete
aubtfwl0: detached
aubtfwl0: at uhub3 port 1 (addr 2) disconnected
ubt0 at uhub3 port 1
ubt0: vendor 0x0cf3 product 0x3005, rev 1.10/0.01, addr 2
何度かaubtfwlがattachとdetachを繰り返して、見事ubt0が生えてきたのでありました。

やっとスタートラインに立てたようです。まずは、ここまで。

名前:  非公開コメント   

  • TB-URL  http://www.tokuda.net/diary/0782/tb/