Я использую Ubuntu 16.04.3 с 4.4.0-113 ядрами.
У меня есть две различных основанных на XMOS карты звука USB, каждый работает отлично и играет файлы 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 до соответствующего раздела в источнике ядра
../sound/usb/quirks.c
А именно, строка для Вызова на бис 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;
Затем я скомпилировал драйвер, установленный, перезагруженный, и карта работает отлично с собственным DSD до DSD256.
Нет никакого стандарта, который позволил бы драйверу обнаруживать устройства DSD. Каждое устройство должно быть перечислено в драйвере, и до сих пор, никто не знал о "mDSD".
Единственный способ заставить mDSD работать состоит в том, чтобы перекомпилировать драйвер.