4.4.0-113カーネルでUbuntu 16.04.3を使用しています。
2つの異なるXMOSベースのUSBサウンドカードがあり、1つは完全に動作し、DSDファイルを期待どおりに再生します。その他は機能しますが、XMOSデバイスとして認識されないため、理想的なものではないドライバーがロードされます。
同じドライバーがロードされて両方のデバイスに使用されるように変更するにはどうすればよいですか?
両方のデバイスのlsusb:
目的のドライバーを備えたカード:
Bus 003 Device 007: ID 20b1:000a XMOS Ltd
最適性の低いドライバーを使用したカード:
Bus 001 Device 003: ID 16d0:09dd MCS
Asoundからの出力:
適切なドライバーを備えたカード:
card 4: x20 [xCORE USB Audio 2.0], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
不適切なドライバーを使用したカード:
card 3: mDSD [Encore mDSD], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
ソリューションを文書化するために編集します。
このガイド に従って、カーネルソースをダウンロードし、変更し、コンパイルしました。
Lsusb出力のベンダーとデバイスIDをカーネルソースの関連セクションに追加しました
../sound/usb/quirks.c
具体的には、Encore mDSDの行:
case USB_ID(0x16d0, 0x09dd): /* Encore mDSD */
case USB_ID(0x20b1, 0x000a): /* Gustard DAC-X20U */
case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */
case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */
case USB_ID(0x20b1, 0x3023): /* Aune X1S 32BIT/384 DSD DAC */
case USB_ID(0x2616, 0x0106): /* PS Audio NuWave DAC */
if (fp->altsetting == 3)
return SNDRV_PCM_FMTBIT_DSD_U32_BE;
break;
その後、ドライバーをコンパイルし、インストールして再起動すると、カードはDSD256までのネイティブDSDで完全に動作します。
ドライバーがDSDデバイスを検出できるようにする標準はありません。各デバイスは ドライバにリストされている である必要があり、これまでのところ、「mDSD」について誰も知らなかった。
MDSDを機能させる唯一の方法は、ドライバーを再コンパイルすることです。