Selon le Wiki ALSA , sous le titre qui se lit " Comment choisir une commande particulière pour plusieurs cartes installées ", il indique ce qui suit:
Quelle carte est le numéro de carte 0, 1 et est donc déterminée par défaut par l'ordre de chargement du module. Ceci est particulièrement utile pour choisir la carte qui deviendra la carte par défaut.
En théorie, il est donc possible de choisir laquelle de plusieurs cartes installées devient la carte 0, la carte par défaut, en s'assurant que son module de pilote est chargé en premier. (Remarque: cela suppose que chaque carte son nécessite un pilote différent. Si vous avez deux cartes son du même type, veuillez passer à la section suivante.)
Il existe deux façons d'y parvenir, l'option "old" index = du module de pilote de carte et l'option alternative (et nouvelle) slots = du module snd.
Il documente deux méthodes pour ce faire:
- L'ancienne méthode "index ="
- La nouvelle méthode "slots ="
Le premier est ce que les instructions d'installation de Jasper recommandent. C'est aussi ce dont parlent la plupart des solutions. Cependant, c'est la méthode la plus ancienne et peut ne pas fonctionner sur les images Raspbian Jessie plus récentes.
Une combinaison des deux méthodes est ce qui a fonctionné pour moi.
Tout d'abord, vérifiez dans quel ordre vos cartes ont été chargées:
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
Le comptage des cartes commence à partir de 0
là, la valeur par défaut bcm2835
est chargée en premier et ma carte USB qui a mon micro est chargée en second.
Pour réorganiser mes cartes, je crée d'abord un fichier nommé /etc/modprobe.d/alsa-base.conf
. Il peut être nommé comme vous voulez tant qu'il se termine par .conf
. J'ai ensuite ajouté ce qui suit:
# This sets the index value of the cards but doesn't reorder.
options snd_usb_audio index=0
options snd_bcm2835 index=1
# Does the reordering.
options snd slots=snd_usb_audio,snd_bcm2835
Les commentaires doivent expliquer ce que fait chaque ligne. Une fois que vous avez fait cela, il semble que vous deviez redémarrer votre machine pour qu'elle fonctionne.
Une fois que vous redémarrez, vous devriez pouvoir enregistrer de l'audio avec la carte par défaut qui devrait maintenant être votre micro:
$ arecord temp.wav
puis jouez-la, en spécifiant la carte comme 1 et l'appareil comme 0, c'est là que devrait se trouver la sortie de votre haut-parleur:
aplay -D plughw:1,0 temp.wav
Au début, j'ai seulement ajouté la ligne avec slots
. Cela a fonctionné pour faire de ma carte USB la carte par défaut mais elle a été mal indexée. Par exemple, une fois que j'ai fait ça, voici à quoi /proc/asound/modules
ressemblait mon :
$ cat /proc/asound/modules
1 snd_usb_audio
2 snd_bcm2835
Idéalement, cela devrait ressembler à ceci:
0 snd_usb_audio
1 snd_bcm2835
Et c'est pourquoi j'utilise également la index
méthode pour y parvenir.
snd_usb_audio
, malheureusement.Après avoir essayé de déboguer les problèmes alsa pour ce projet et de faire fonctionner les deux micros USB et les haut-parleurs bcm2835, je pense qu'il y a un problème de base que TOUS les conseils d'ALSA que j'ai reçus ne traitent pas.
Le répertoire / usr / share / alsa / cards n'a pas de fichier bcm2835.conf. Le fichier de répertoire / usr / share / alsa alsa.conf laisse BEAUCOUP de stubs qui doivent être spécifiés. À moins qu'une carte pour bcm2835 ne soit fournie, le lancement de Jasper.py affiche de nombreux messages d'erreur supposément non fatals. En travaillant sur un fichier bcm2835.conf, vous pouvez vous débarrasser des messages irritants.
Il me semble que c'est un bug Jessie; il devrait vraiment y avoir un fichier qui résout ces messages d'erreur. Je semble juste paresseux pour le programmeur Jessie qui traite avec ALSA de ne pas en avoir créé un qui est testé.
Je n'ai pas travaillé sur tous les messages d'erreur, mais je soupçonne que d'autres messages sont également causés par cela.
Un autre cas de ne pas avoir de version mature est l'échec de la vérification de l'ancien firmware lors du démarrage. L'ancien firmware de mon jessie a entraîné un bureau qui ne répondait pas au clavier ou à la souris, qui est un outil incontournable pour utiliser jessie avec un ancien firmware, sauf si vous connaissez ssh. Pas une situation d'utilisateur naïf.
la source