Comment configurer mon son pour Jasper sur Raspbian Jessie?

19

J'utilise Raspbian Jessie (2015-11-21) pour exécuter Jasper (branche principale) sur le Raspberry Pi 2 Model B. Les instructions d'installation dans la documentation semblent être pour Wheezy et non Jessie.

Exécuter Jasper sur Wheezy fonctionne très bien. Mais, sur Jessie, j'ai eu des problèmes de configuration du son. Soit mon micro fonctionnait mais pas le haut-parleur ou vice versa.

Ce qui doit être fait, c'est que la carte son par défaut doit être réglée sur USB car c'est là que mon micro USB est connecté et Jasper le requiert. Il y a beaucoup de réponses qui parlent de la configuration d'ALSA via ~/.asoundrc, /etc/asound.confet même /usr/share/alsa/alsa.confmais aucune d'entre elles n'a fonctionné pour moi.

Lorsque j'ouvre ma table de mixage via alsamixeret frappe F6, je vois toujours bcm2835comme la carte par défaut. C'est la carte par défaut du Pi2 mais je veux faire de mon USB la carte par défaut.

Comment puis-je faire cela?

Housni
la source

Réponses:

25

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:

  1. L'ancienne méthode "index ="
  2. 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 0là, la valeur par défaut bcm2835est 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/modulesressemblait 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 indexméthode pour y parvenir.

Housni
la source
Heureux que cela ait aidé :) Je vais avoir un script de configuration bash ainsi qu'un livre de recettes Chef pour faire tout cela dans quelques jours, sur mon compte Github (lien dans mon profil).
Housni
J'ai deux appareils appelés snd_usb_audio, malheureusement.
kleinfreund
@Housni Avez-vous déjà fait ce script?
not2qubit
0

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.

rchoppin
la source
1
WRT il "semble juste paresseux pour le programmeur jessie qui traite avec ALSA de ne pas en avoir créé un qui est testé", ne soyez pas confus en croyant que Debian 8, alias. jessie, à partir duquel Raspbian est construit, est principalement destiné au Raspberry Pi et au BCM2835 SoC. Ce dernier représenterait <1% des utilisateurs de Debian, donc cela peut difficilement être considéré comme une priorité pour eux. Le fait qu'un groupe de bénévoles principalement ne veuille pas travailler au clavier 25 heures / jour pour être tout pour tout le monde ne les rend pas paresseux ....
goldilocks
... Cela indique simplement qu'il n'y a pas suffisamment d'intérêt de la part des gens de la communauté possédant l'expertise technique nécessaire pour faire le travail.
goldilocks