Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Ordinateurs embarqués (SBC) > La carte Raspberry PI > Installation et configuration de la R-Pi > Activer le son sur Raspberry Pi

Activer le son sur Raspberry Pi

dimanche 24 juin 2012, par Eric P., Julien H.

Un de nos objectifs avec la RPi est de faire de la synthèse vocale. Il faut donc activer le son pour pouvoir utiliser nos outils en ayant accès aux fonctions audio. Ces instructions fonctionnent sur une Raspberry Pi version B avec la distribution Debian d’avril 2012.

Note : cet article n’est pas nécessaire avec une distribution Occidentalis qui comporte déjà la configuration audio

On commence par essayer de lire un fichier wav ou mp3 : l’installation de VLC ne suffit pas :

PNG - 144.7 ko
Paquet d’erreur sur la RPi

Il faut donc lire la documentation et installer les logiciels demandés, regroupés dans "alsa-utils" :

# sudo apt-get install alsa-utils

Dans le détail, cela donne :
- sudo : demander à exécuter un programme disposant d’une sécurité de droits
- apt-get : le programme d’installation aptitude propre à Debian, Ubuntu et dérivés
- install : la commande qui précise à apt-get ce qu’on souhaite faire
- alsa-utils : le paquet à installer

Plusieurs programmes vont être installés, ce sont les dépendances. Répondez Oui ou Yes aux questions posées et attendez que les téléchargements soient terminés :

PNG - 54.2 ko

Tout n’est pas terminé : l’erreur initiale de VLC concernait l’accès au DSP (processeur de traitement du signal) par défaut. Il faut donc charger dans le noyau linux la partie spécifique au matériel de la Raspberry Pi qui contrôle le son :

# sudo modprobe snd_bcm2835

Vous connaissez déjà "sudo", il n’y a donc que :
- modprobe : ajouter ou enlever un module dans le noyau Linux
- snd_bcm2835 : la gestion du son sur le processeur Broadcast 2835, le ARM11 de la RPi.

Cette ligne est nécessaire à chaque démarrage.
Pour l’instant, nous allons éditer un fichier .bashrc dans le répertoire de l’utilisateur :

sudo nano .bashrc

Ce qui ouvre un éditeur : si le fichier n’existe pas, il sera créé lors de l’enregistrement. Vous pouvez resaisir la ligne contenant modprobe (mais pas l’installation d’alsa-utils bien sûr...). Pour enregistrer, CTRL+X suivi de Y pour valider l’enregistrement.

Désormais, à chaque connexion il y aura un appel au chargement du module. Il est possible d’automatiser le lancement de scripts, c’est ce que nous verrons dans un prochain article.

 Lecteur mp3 en ligne de commande

Pour la carte Raspberry Pi du club, j’ai installé mocp comme lecteur de fichiers multimédia en ligne de commande, c’est très rapide.

 Un petit complément d’info sur les sorties audio

[EDIT EricP - 29/12/12]

Le son peut sortir aussi bien sur la prise HDMI que sur la sortie analogique (embase jack). Plusieurs cas peuvent se présenter :

- vous avez connecté un écran HDMI équipé de haut-parleurs (typiquement une TV) et le son ne sort pas dessus

La cause la plus probable est que l’écran est resté en mode DVI. Selon le matériel et la manière dont il discute sur la liaison HDMI, il se peut que la bascule ne se soit pas faite automatiquement. Dans ce cas il faut activer la ligne :

hdmi_drive=2

dans le fichier /boot/config.txt, ce qui force le mode HDMI et active la transmission de l’audio.

En principe ça doit suffire et au prochain boot le son devrait être présent sur la TV.

- vous avez un moniteur HDMI mais voulez faire sortir l’audio sur le jack

Eh oui, les deux sorties sont exclusives, et par défaut la commutation est automatique et passe sur le HDMI si il est actif (sauf si vous êtes dans le cas précédent). Si on veut contrôler les choses à la main, il faut recourir à la commande amixer de l’outil alsa. Ca donne ceci :

# audio sur le jack
$ sudo amixer cset numid=3 1

# audio sur le HDMI
$ sudo amixer cset numid=3 2

# commutation automatique
$ sudo amixer cset numid=3 0

Un simple script à 2 balles pour enrober cela et éviter de se souvenir de la commande et le tour est joué.

Vos commentaires

  • Le 28 mars 2014 à 11:47, par Baptiste En réponse à : Activer le son sur Raspberry Pi

    Merci beaucoup !

    Répondre à ce message

  • Le 24 juin 2012 à 17:41, par Keuronde En réponse à : Activer le son sur Raspberry Pi

    Pour charger un module au démarrage, vous conseillez l’ajout d’une ligne dans le .bashrc. J’avais lu qu’on pouvait utiliser /etc/modules pour cela.

    Je ne suis pas un expert Linux, et je me trouve confronté à des problèmes similaires, j’aimerais donc savoir s’il y a une raison à l’utilisation du .bashrc plutôt qu’à celle de /etc/modules

    • Le 24 juin 2012 à 19:11, par Julien H. En réponse à : Activer le son sur Raspberry Pi

      Salut !

      Le chargement automatique a un inconvénient : on oublie ce qu’on a chargé et on encombre le noyau de tout plein de modules.

      Avec bashrc, on peut scripter les conditions dans lesquelles le module est chargé : sur un démarrage autonome, sur une connexion de l’utilisateur portant le bashrc, etc...

      Dans notre cas, un interrupteur placé sur Nono le robot sera relié à la Raspberry et permettra de choisir l’utilisateur donc le bashrc donc les modules chargés.

      Bon, pour le son et vu les capacités de la bête, on pourrait le charger à chaque fois, merci d’avoir donné le lien pour ceux qui veulent faire ainsi.

    • Le 27 juin 2012 à 21:54, par Keuronde En réponse à : Activer le son sur Raspberry Pi

      Merci pour ta réponse, je n’avais pas vraiment songé que le noyau pouvait être encombré de module.

      Ce qui paraît superflu sur un "gros" PC prend un autre sens sur une carte comme celle-ci !

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document