NetBSDでCreative BT-W3を使ってみる

この記事は、NetBSD Advent Calendar 2021の2日目の記事です。 2日目から遅刻してすみません。

はじめに

Bluetooth Audio on OpenBSD with the Creative BT-W3という記事を読む前ではあったのですが、 Bluetooth Audioをより安定してNetBSD/amd64-currentで使いたいと思っていました。 確かにbta2dpd(8)を使えば、A2DPプロファイルでSBCではありますが、btsco(4)を使うよりは良い音質で音を聞くことができます。 2020年8月までNetBSD-currentはxhci(4)でアイソクロナス転送をサポートしていなかったので ですが、今はサポートされていますので、uaudio(4)を使うことができます。 ですので、uaudio(4)として認識されるはずのCreative BT-W3を使ってみることにしました。 2021年1月に最初に試した時には使えなかったのですが、NetBSD-currentでは、2021年6月19日以降は使えるようになっています。

Creative BT-W3とは?

BT-W3は、Bluetooth A2DPプロファイル、または、Hands-FreeプロファイルをUSBオーディオクラスのデバイスに変換してくれるアダプターです。 BT-W3とBluetoothヘッドセットをペアリングしておくと、USBヘッドホンやUSBヘッドセットとして利用できます。 Hands-Freeプロファイルのモードの場合には、Bluetoothヘッドセットのマイクも入力として利用できます。 Creativeの商品紹介ページによると、aptX LLやaptX HDも利用できる らしいですが、私の持っているJabra Move WirelessはA2DPではコーデックとしてSBCしかサポートしていませんので、試せていません。 BT-W3は、USB Type-Cのコネクターで接続するようになっていますが、USB Type-CからType-Aに変換するアダプターが附属しています。

NetBSD/amd64-currentにつないでみる

私が最初に試した2021年1月の時点では、”no usable endpoint found”というエラーでuaudio(4)として機能しませんでした。 どうやら、その時点のuaudio(4)が想定するディスクリプターの登場する順序と、BT-W3の持つ順序が異なっているようです。

NetBSDで動くように

FreeBSDの実装を見てみると、ディスクリプターを一定の順番に処理するNetBSDの実装とは違って、ディスクリプター毎にタイプを判別して 登場する順序によらないような実装になっていました。 Creative HP-BTW3 (BT-W3) USB audio device has another descriptor layout #55919で サポートする方法を模索してみましたが、2021年6月19日にJabra Evolve 75を サポートする変更で無事に動くようになりました。

uaudio0 at uhub4 port 1 configuration 1 interface 0
uaudio0: Creative Technology Ltd (0x041e) Creative BT-W3 (0x3270), rev 2.00/1.00, addr 4
uaudio0: audio rev 1.00
audio1 at uaudio0: playback, capture, full duplex, independent
audio1: slinear_le:16 2ch 48000Hz, blk 11520 bytes (60ms) for playback
audio1: slinear_le:16 1ch 48000Hz, blk 5760 bytes (60ms) for recording
spkr2 at audio1: PC Speaker (synthesized)
wsbell at spkr2 not configured
uhidev0 at uhub4 port 1 configuration 1 interface 3
uhidev0: Creative Technology Ltd (0x041e) Creative BT-W3 (0x3270), rev 2.00/1.00, addr 4, iclass 3/0
uhidev0: 3 report ids
uhid0 at uhidev0 reportid 1: input=2, output=0, feature=0
uhid1 at uhidev0 reportid 2: input=18, output=18, feature=0
uhid2 at uhidev0 reportid 3: input=64, output=64, feature=0
uhidev1 at uhub4 port 1 configuration 1 interface 4
uhidev1: Creative Technology Ltd (0x041e) Creative BT-W3 (0x3270), rev 2.00/1.00, addr 4, iclass 3/0
uhidev1: 4 report ids
uhid3 at uhidev1 reportid 1: input=0, output=65, feature=0
uhid4 at uhidev1 reportid 2: input=65, output=0, feature=0
uhid5 at uhidev1 reportid 3: input=0, output=0, feature=3
uhid6 at uhidev1 reportid 4: input=0, output=0, feature=3

おわりに

実を言うと、bta2dpd(8)も2021年3月7日に-nオプションが追加されています。 これで、より安定して使えるようになっているかもしれません。 でも、Dell XPS 13 9300のxhci(4)デバイスは、そもそもあまり安定していないのですが…。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

Arvel USBシリアルケーブルSRC06-USBをWindows 10 x86_64で使う

Arvel SRC06-USB USBシリアルケーブルというUSBシリアル変換器を持っている。 これにはFDTI製のUSBシリアル変換チップをい利用していて、USB VendorID/ProductID=0x0403/0x6001として認識される。 Arvelを買収...