NetBSD Advent Calendar 2017の4日目の記事です。
はじめに
Bluetoothでオーディオを再生するには、以前はbtsco(4)しかなく、 ubt(4)でbtsco(4)を使おうとすると、USBアイソクロナス転送が必要で、 NetBSDのechi(4)やxhci(4)ではアイソクロナス転送はサポートされて いないので、btsco(4)ではBluetoothのオーディオデバイスでは オーディオの録音、再生ができなかった。
しばらく前に、bta2dpd(8)と言うのがnat@によってNetBSD-currentに追加された。 これがxhci(4)で使えるのかが、ずっと気になっていた。 やっと、Jabra MOVE Wireless で試してみた。 結果としては、ubt(4)につないだJabra MOVE Wirelessで再生できた。
Bluetoothの基本的な設定
ペアリングやプロファイルの選択は、btsco(4)の場合と同じであった。 以下のようにすれば良い。
まずは、Bluetooth接続に必要なデーモン等を起動しておく。 以下のように追加する。
# vi /etc/rc.conf
bluetooth=YES
# /etc/rc.d/bluetooth start
configuring Bluetooth controllers: ubt0.
starting Bluetooth Link Key/PIN Code manager
starting Bluetooth Service Discovery server
もし、継続的に使用しないのであれば、以下のようにしても良い。
# /etc/rc.d/bluetooth onestart
configuring Bluetooth controllers: ubt0.
starting Bluetooth Link Key/PIN Code manager
starting Bluetooth Service Discovery server
ワイヤレスヘッドフォンをペアリング待ちにした上で、以下のように実行し、 ワイヤレスヘッドフォンのアドレスを取得する。
$ btconfig ubt0 inquiry
Device Discovery from device: ubt0 ... 1 response
1: bdaddr XX:YY:ZZ:XX:YY:ZZ
: name "Jabra MOVE v2.5.0"
: class [0x240404] Wearable Headset
簡便のためこのアドレスを/etc/bluetooth/hosts
ファイルに
登録しておく。ここでは、headset1
と言う名前を付けておく。
# vi /etc/bluetooth/hosts
XX:YY:ZZ:XX:YY:ZZ headset1
次に、BluetoothのPINを設定する。
$ btpin -d ubt0 -a headset1 -p 0000
Jabra MOVE Wirelessでは、PINは0000で良いようだ。
次は、アドレスheadset1のデバイスをヘッドセット(HSET)に設定する。
# btdevctl -d ubt0 -a headset1 -s HSET -A
※ この設定は不要だった (2020-06-06)。
ここまでは、btsco(4)の場合と一緒である。 次がbta2dpd(8)の使用方法である。 まずテストしてみる。
$ file test.wav
test.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz
# bta2dpd -a headset1 test.wav
しかし、これではwavファイルしか再生できないので、例えばmplayer等で
OSSで再生したものをヘッドセットで聞くには以下のようにする。
# bta2dpd -a headset1 /dev/pad
このように実行すると、以下のようにdmesgに表示された。
pad0: outputs: 44100Hz, 16-bit, stereo
audio2 at pad0: half duplex, playback, capture, mmap
pad0: Virtual format configured - Format SLINEAR, precision 16, channels 2, frequency 44100
spkr3 at audio2: PC Speaker (synthesized)
wsbell at spkr3 not configured
よって、/dev/sound2
で再生すると、
/dev/pad
(/dev/pad0
と同じものを指している)に
その内容がコピーされることになると分かる。
例えば、以下のようにmplayerで再生すれば、ヘッドセットで聞こえた。
$ mplayer -ao oss:/dev/sound2 test.mp3
おわりに
xhci(4)でBluetoothオーディオを使えるのは非常に便利だった。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。