我正在使用带有 4.4.0-113 内核的 Ubuntu 16.04.3。
我有两个不同的基于 XMOS 的 USB 声卡,一个运行正常,可以正常播放 DSD 文件。另一个可以运行,但无法识别为 XMOS 设备,因此为其加载了一个不太理想的驱动程序。
我该如何改变它以便为两个设备加载和使用相同的驱动程序?
对两个设备执行 lsusb 操作:
具有所需驱动程序的卡:
Bus 003 Device 007: ID 20b1:000a XMOS Ltd
驱动程序不太理想的卡:
Bus 001 Device 003: ID 16d0:09dd MCS
声音输出:
配有合适驱动程序的卡:
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 配合使用。
答案1
目前还没有标准允许驱动程序检测 DSD 设备。每个设备都必须驱动程序中列出的,到目前为止,还没有人知道“mDSD”。
使 mDSD 工作的唯一方法是重新编译驱动程序。