如何更改用于声卡的驱动程序?

如何更改用于声卡的驱动程序?

我正在使用带有 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 工作的唯一方法是重新编译驱动程序。

相关内容