[0]BSD小僧の日記
2012/03/18(日)ZBOX nano VD01でBluetoothを使う
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が生えてきたのでありました。
やっとスタートラインに立てたようです。まずは、ここまで。
[2]コメントを書く
■コメント(0件)
■トラックバック(0件)
[9]ログイン
[*]検索