web-dev-qa-db-fra.com

Comment puis-je changer le pilote utilisé pour une carte son?

J'utilise Ubuntu 16.04.3 avec le noyau 4.4.0-113.

J'ai deux cartes son USB différentes basées sur XMOS, l'une fonctionne parfaitement et lit les fichiers DSD comme prévu. L’autre fonctionne, mais n’est pas reconnu en tant que périphérique XMOS, donc un pilote non idéal est chargé pour celui-ci.

Comment puis-je le changer pour que le même pilote soit chargé et utilisé pour les deux périphériques?

lsusb pour les deux appareils:

La carte avec le pilote désiré:

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

La carte avec le pilote le moins optimal:

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

Sortie de asound:

Carte avec bon chauffeur:

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

Carte avec conducteur incorrect:

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

Modifier pour documenter la solution:

Après ce guide , j'ai téléchargé la source du noyau, modifiée et compilée.

J'ai ajouté le fournisseur et l'ID de périphérique de la sortie lsusb à la section correspondante du code source du noyau

../sound/usb/quirks.c

Plus précisément, une ligne pour 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;

Ensuite, j'ai compilé le pilote, installé, redémarré et la carte fonctionne parfaitement avec DSD natif jusqu'au DSD256.

2
JLC

Aucune norme ne permet au pilote de détecter les périphériques DSD. Chaque périphérique doit être répertorié dans le pilote , et à ce jour, personne ne connaissait l'existence du "mDSD".

Le seul moyen de faire fonctionner mDSD consiste à recompiler le pilote.

1
CL.