Como posso alterar qual driver é usado para uma placa de som?

1

Estou usando o Ubuntu 16.04.3 com o kernel 4.4.0-113.

Eu tenho duas placas de som USB baseadas em XMOS diferentes, uma funciona perfeitamente e reproduz arquivos DSD conforme o esperado. O outro funciona, mas não é reconhecido como um dispositivo XMOS, portanto, um driver abaixo do ideal é carregado para ele.

Como posso alterá-lo para que o mesmo driver seja carregado e usado para os dois dispositivos?

lsusb para os dois dispositivos:

O cartão com o driver desejado:

Bus 003 Device 007: ID 20b1:000a XMOS Ltd 

A placa com o driver menos ideal:

Bus 001 Device 003: ID 16d0:09dd MCS 

Saída do asound:

Cartão com driver adequado:

card 4: x20 [xCORE USB Audio 2.0], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Cartão com driver impróprio:

card 3: mDSD [Encore mDSD], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Editar para documentar a solução:

Seguindo este guia , eu fiz o download do código fonte do kernel, modifiquei e compilei.

Eu adicionei o ID do fornecedor e do dispositivo da saída lsusb à seção relevante na origem do kernel

../sound/usb/quirks.c

Especificamente, uma linha para o mDSD do Encore:

    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;

Depois eu compilei o driver, instalei, reiniciei e a placa funciona perfeitamente com o DSD nativo até o DSD256.

    
por JLC 16.02.2018 / 04:10

1 resposta

0

Não existe um padrão que permita ao driver detectar dispositivos DSD. Cada dispositivo deve ser listado em o driver , e até agora ninguém sabia sobre o "mDSD".

A única maneira de fazer o mDSD funcionar é recompilar o driver.

    
por CL. 17.02.2018 / 08:29