web-dev-qa-db-fra.com

Comment faire en sorte que Alsa choisisse automatiquement le périphérique audio de son choix?

J'ai acheté une carte son USB. J'aimerais configurer mon bureau Linux de sorte qu'il préfère le périphérique USB, s'il est branché et qu'il bascule automatiquement lorsque le périphérique est (non) branché. Est-ce possible et comment?

33
Petr Pudlák

Trouvez votre carte avec

$ cat /proc/asound/cards

Pour obtenir des noms de carte ALSA valides, utilisez aplay:

$ aplay -l | awk -F \: '/,/{print $2}' | awk '{print $1}' | uniq

puis créez /etc/asound.conf avec les éléments suivants:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

Remplacez "carte 1" par le numéro ou le nom de votre carte déterminé ci-dessus.

Vous pouvez également modifier l'ordre de vos cartes afin que votre carte USB soit la carte 0 et qu'elle fonctionne sans modification asound.conf.

29
Matija Nalis

c'est la méthode de sélection de la carte son par défaut dans Alsa. Vous voudrez peut-être installer Alsa pour que cette méthode fonctionne si vous utilisez Pulse Audio.

cat/proc/asound/modules

listera vos modules de sons. La sortie de la commande sera comme ceci (par exemple):

0 snd_hda_intel

1 snd_usb_intel

vous pouvez facilement comprendre lequel est votre carte son usb d’en haut.

nano /etc/modprobe.d/alsa-base.conf

éditez ce fichier alsa-base.conf de telle sorte que votre carte préférée porte un index = -2/0 et que l’autre carte possède un index = -1/1 (respectez les valeurs -2 et -1)

options snd_hda_intel index = -1

options snd_usb_intel index = -2

dans ce cas, le périphérique USB est le périphérique préféré.

si vous avez deux cartes différentes avec le même nom de la sortie, comme ceci:

options snd_hda_intel

options snd_hda_intel

émettez cette commande pour savoir qui est lequel:

cat/proc/asound/cartes

puis éditez les modules de cette manière:

options snd_hda_intel enable = 1 index = 0

options snd_hda_intel enable = 0 index = 1

un redémarrage peut être nécessaire. Vous devrez peut-être aussi basculer manuellement vos cartes son.

15
Ashildr

Je ne pouvais pas non plus obtenir de sortie de mon périphérique USB. Ma sortie cat /proc/asound/modules était:

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

J'ai essayé les deux réponses décrites ici qui n'ont pas aidé (avec beaucoup de combinaison d'index et beaucoup de redémarrage). Je pense que le problème était l'initialisation de mon périphérique USB après le démarrage. Quoi qu'il en soit, ma solution de travail consiste à mettre en liste noire un autre périphérique audio en mettant à jour /etc/modprobe.d/blacklist.conf en tant que:

blacklist snd_hda_intel
3
user533723

La réponse de Matija Nalis ne fonctionnait qu'à moitié pour moi (alsamixer a changé le paramètre par défaut, mais d'autres éléments tels que aplay et firefox se sont obstinément heurtés au mauvais paramètre). Cet exemple du wiki debian a fonctionné pour moi (sur un ordinateur portable CentOS-6):

defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0

Pour mémoire, ALSA est mal documenté, et en particulier cette tâche très simple, telle que choisir la carte à utiliser, est bien trop difficile. Pire, cela semble changer entre les systèmes. En outre, j'ai obtenu cette balise "Generic_1" de aplay -l où elle apparaît sous la forme "carte 1" dans la liste. D'autres personnes semblaient l'utiliser, alors j'ai fait de même ... ce que cela signifie, je ne peux pas le dire.

2
Tel

Bien que vous puissiez modifier la carte alsa par défaut en modifiant .asoundrc ou le système asound.conf, cette approche pose quelques problèmes importants.

Il est fragile et nécessite que les redémarrages d’application soient honorés.

Si vous souhaitez changer de carte à la volée, vous devez absolument utiliser un serveur de sons qui extrait correctement les applications de la carte son, tel que pulseaudio.

1
Grant Diffey

Les outils pavucontrol et paprefs peuvent également aider à la configuration, mais c'est peut-être trop facile :) ou peut-être que tout gâchera tout ce que vous avez déjà fait.

0
k9dog