27 Oct 2014, 00:00

Cartes son multiples et ordre sous ALSA

Share

Sur mon ordinateur portable, j’ai 2 cartes sons qui sont reconnues : le chipset de la CM, et la carte son intégrée à la carte graphique. Le système s’obstine à prendre par défaut la sortie HDMI, ce qui ne m’intéresse pas du tout. Voici ce que j’obtenais avec la commande cat /proc/asound/cards (qui liste les cartes détectées par ALSA) :

0 [Generic        ]: HDA-Intel - HD-Audio Generic
                     HD-Audio Generic at 0xf0344000 irq 45
1 [Generic_1      ]: HDA-Intel - HD-Audio Generic
                     HD-Audio Generic at 0xf0340000 irq 46

(les valeurs entre crochets sont les id des cartes).

Puis avec la commande cat /proc/asound/modules :

0 snd_hda_intel
1 snd_hda_intel

Le même pilote est donc utilisé pour les 2 cartes.

Le premier workaround que j’ai trouvé a été de demander à ALSA d’utiliser la carte avec l’inex n°1. Pour ce faire, j’ai mis dnas le fichier /etc/asound.conf :

defaults.ctl.card 1
defaults.pcm.card 1
defaults.timer.card 1

Ceci fonctionnait bien pour la lecture. Par contre, les touches de mon clavier controlant le son controllaient toujours la carte d’index 0.

J’ai donc voulu passer la carte intégrée en index 0. Il faut pour ceci éditer le fichier /etc/modprobe.d/alsa-base.conf : Echanger les numéros de slot sur les 2 première lignes :

install sound-slot-0 modprobe snd-card-0
install sound-slot-1 modprobe snd-card-1

deviennent donc

install sound-slot-1 modprobe snd-card-0
install sound-slot-0 modprobe snd-card-1

Puis ajouter à la fin :

## Carte interne avant HDMI
options snd-hda-intel id=Generic_1 index=0
options snd-hda-intel id=Generic index=1

en adaptant le nom des pilotes et les id des cartes.

Source