Test de la carte Wolfson pour Raspberry Pi

Posté le par | Réponse(s) : 8

Il y a peu de temps, je vous présentais la carte son Wolfson, un module audio spécialement créé pour le Raspberry Pi par Element 14 et Wolfson Microelectronics. La sortie de cette carte a été relayée sur de nombreux sites et blogs spécialisés mais deux mois après sa sortie, je n'ai pas trouvé de retour d'expérience et je trouve cela dommage car cette carte, elle envoie du lourd !

Cette carte son c'est un peu le Victorinox audio du Raspberry Pi. Elle a été conçue pour être polyvalente, les données transitent par en passant par le port GPIO du RPi (gérant les entrées/sorties de données) sans monopoliser un précieux port USB et assurant d'excellentes performances.

wolfson_unbox

Rappel des caractéristiques

Compatibilité : Raspberry Pi Modèle A, Modèle B Révision 2 uniquement (munis du connecteur P5)
Processeur : Wolfson WM5102 Codec
Dimensions : 59.1mm x 72.2mm x 25.3mm
Alimentation : optionnelle par jack DC
Sorties :

  • Jack 3,5 mm (4 contacts) pour un micro/casque (applications pour les jeux ou de VoIP).
  • Sortie jack 3,5 mm ligne stéréo pour la connexion à des périphériques tels que des amplificateurs stéréo externes ou haut-parleurs amplifiés.
  • Jack S/PDIF numérique électrique (NON OPTIQUE).
  • Petits connecteurs pour les fonctions supplémentaires si elles sont à faible coût, déjà sur la carte, et ne nécessitant pas d’autres composants.

Entrées :

  • Jack 3,5 mm : Entrée ligne stéréo pour la connexion de périphériques tels que les lecteurs audio numériques (iPod, etc) ou les téléphones mobiles.
  • Jack S/PDIF numérique électrique (NON OPTIQUE).
  • Deux microphone MEMS embarqués.

Que peut-on faire avec la carte Wolfson ?

Lecture audio :

  • Lecture de fichiers audio Haute Définition
  • Connexion de l’entrée/sortie ligne stéréo à votre chaine HI-FI pour écouter de la musique ou votre film préféré.

Enregistrement :

  • Enregistrement audio haute définition en utilisant soit les microphones embarqués, soit l’entrée ligne.
  • Action par la voix – Les microphones numériques embarqués permettent la réalisation de projets basés sur l’activation vocale.

Communication et interactivité :

  • VoIP avec le Raspberry Pi.
  • Connection d’un microphone, d’un casque pour faire des appels mains libre en utilisant la téléphonie VoIP.
  • Jeux en ligne multiplayer (utilisant les fonctions audio du jeu avec un casque connecté à la carte Wolfson).

L'assemblage

Maintenant qu'on a fait le tour de toutes les possibilités offertes par la carte, il est temps de passer aux choses sérieuses. L’assemblage est très simple, il suffit de connecter les broches de l'un sur l'autre.

wolfson_assemblage

Les broches GPIO du RPi viennent se loger dans l'emplacement GPIO de la carte (jaune), les 8 broches P5 de la carte (nommés aussi connecteurs pogo-pin - normalement associés aux connexions temporaires au cours de tests électroniques) viennent se loger sur les connecteurs P5 du Raspberry Pi (rouge). L'ensemble est maintenu par des vis de fixation de part et d'autre des deux cartes (emplacements en orange). Je vous conseille de procéder avec douceur et délicatesse, un circuit imprimé c'est fragile, ne forcer pas et procédez par petite pressions bien réparties. Je vous recommande la méthode de Joey "The Lips" Fagan (The Commitments) : "La hanche de ton sax, il faut te dire que c'est comme le téton d'une femme..." Ok, je sors...^^

Votre Raspberry Pi dopé à le carte Wolson est prêt à l'usage. On va passer à la partie software, pour cela je vais vous montrer comment utiliser votre nouveau dispositif.

Les pilotes ne sont pas encore intégrés à Raspbian (ils devraient être intégrés dans les prochaines versions de Raspbian), on va donc soit passer par une version pré-compilée de Raspbian, soit compiler soit-même les pilotes.

Méthode simple : utiliser une image système pré-compilée

  1. Téléchargement de l'image. Le site Element 14 propose de télécharger une image NOOBS patchée (Raspbian). Cette solution fonctionne correctement.
  2. Installation de l'image sur carte SD. Je ne vais pas revenir dessus, vous pouvez utiliser les utilitaires dont vous avez l'habitude d'utiliser.
  3. Insérer la carte SD et alimenter votre RPi.
  4. Rebooter (optionnel ?) : à la lecture de la documentation, une fois que le système a démarrer, il est suggéré qu' un cycle de redémarrage complet soit effectué avant de tenter l'une des prochaines étapes.
  5. Commencer à se servir de la carte Wolfson.

Manuel de référence (en anglais)

La carte son Wolfson a été créée pour fonctionner pleinement sous GNU/Linux et par conséquent repose sur ALSA (Advance Linux Sound Architecture). Sur la Raspbian que vous venez de mettre en route, le lecteur audio pris en charge, basé sur LXmusic, se nomme Music Player. Ce sera l'outil de référence pour l'écoute comme pour l'enregistrement.

Ce qu'il faut garder à l'esprit, c'est qu'il existe deux principales étapes pour effectuer une tâche audio, que ce soit pour lire un fichier, ou en enregistrer un. Explications :

En premier lieu, un "mode utilisateur" doit être défini de sorte que le dispositif sonore soit correctement configuré pour la tache qu'on souhaite lui faire accomplir. Ce "mode utilisateur" est tout simplement un ensemble de commandes qui sont exécutées en série contenu dans un script et qui vont définir les chemins de signal pour l'audio qui est lu ou enregistré. Un script se compose d'un ensemble de commandes qui peuvent être exécutées en une seule instruction.

Vous l'avez compris, cette carte son ne fonctionne pas tout à fait de la même manière que la carte son de votre ordinateur de bureau avec laquelle on peut jongler entre lecture, enregistrement (via différentes entrées/sorties) sans aucune activation/désactivation du moyen de transport du son.

Les scripts présents dans votre /home/pi vont activer/désactiver une fonction (lecture/enregistrement) sur une entrée/sortie que vous avez choisie :

Pour exécuter un de ces scripts, il suffit de taper dans un terminal : ./Playback_to_Headset.sh

  • Playback_to_Headset.sh : active la sortie audio sur la prise casque (fiche noire de la carte Wolfson).
  • Playback_to_Lineout.sh : active la sortie audio sur Lineout (sortie ligne, fiche verte de la carte Wolfson).
  • Playback_to_Speakers.sh : active la sortie audio sur les haut-parleurs (correspondant aux deux séries de deux broches nommées sur la carte "SPKOUT").
  • SPDIF_playback.sh : active la sortie audio sur la sortie S/PDIF (connecteur RCA jaune sur la carte).
  • Record_from_DMIC.sh : active l'enregistrement audio grâce aux deux microphones intégrés ("DMIC R" et "DMIC L" sur la carte).
  • Record_from_Headset.sh : active l'enregistrement audio sur la prise casque (fiche noire de la carte Wolfson) muni d'un microphone.
  • Record_from_lineIn.sh : active l'enregistrement audio sur Linein (entrée ligne, fiche rose de la carte Wolfson).
  • SPDIF_record.sh : active l'enregistrement audio sur la sortie S/PDIF (connecteur RCA blanche sur la carte).

Enfin, deux autres scripts peuvent être utilisés pour :

  • Reset_paths.sh : réinitialisation des chemins de transport audio
  • debug_info.sh : va "tuer" tous les processus en cours des commandes aplay et arecord.

Le Raspberry Pi a été créé à la base pour permettre le développement et accessoirement pour les loisirs multimédia, il en est de même pour la carte son Wolfson. Et comme avec toute bonne distribution GNU/Linux, on va pouvoir lire et enregistrer en mode graphique ou en ligne de commande.

  • En mode graphique, on active l'entrée/sortie dont on a besoin et on lance Music Player dans laquelle se trouve une playlist qui va permettre de tester les capacités audio de la Wolfson. Les fichiers audios sont en .flac, encodage audio sans perte. Le son qui en sort est réellement pur.
  • Dans un terminal, on active l'entrée/sortie dont on a besoin et on va utiliser deux commandes : aplay et arecord (les mêmes utilisées par Music Player).

Pour la fonction écouter : aplay -Dhw:0 -r 44100 -c 2 -f S32_LE votre_fichier_audio

Pour enregistrer : arecord -Dhw:0 -r 44100 -c 2 -d 10 -f S32_LE votre_fichier_audio.wav (-D : le dispositif, -c : nombre de canaux, -d : la durée d'enregistrement en secondes, -f : la qualité d'enregistrement). Pour lire votre enregistrement : aplay votre_fichier_audio.wav

Comme vous le voyez, les commandes aplay et arecord contiennent des options. Pour connaitre la puissance de ces commandes, il est impératif de consulter le man dans un terminal : man aplay et man arecord.

J'ai testé plusieurs enregistrements via le microphone intégré. La qualité est excellente, les sons proches sont pleinement restitués en stéréo, ainsi que les sons enregistrés de plus loin (à deux mètres le chuchotement est très audible).

Note importante : on peut activer plusieurs entrées/sorties en même temps 🙂

Méthode pour utilisateurs avertis : compiler soit-même

La méthode que je vais décrire fonctionne sur version Noobs (version 1.3.4), de mon côté, je vais tenter de l'appliquer à une Raspbian (Release 2014-01-07). Étant basée sur Raspbian, j'ai tenté une installation sur Raspbmc mais pour faire bref, ce fut un échec. Sam Nazarko de la team Raspbmc, a contacté un développeur chez Wolfson qui lui a confirmé qu'un patch serait réalisé pour cette version dans un futur proche. Des bidouilleurs plus experts que moi (il n'y a pas de mal ^^) s'y sont aussi cassés les dents.

D'après les instructions fournies par element14, ce guide devrait également fonctionner avec des versions plus anciennes de Raspbian mais cela n'a pas été testé et il est recommandé de faire une copie de sauvegarde de votre carte SD avant de tenter de suivre ce guide. Dans ce qui suit, j'ai volontairement évité de faire un upgrade du firmware qui passe le kernel en version 3.12. Dans le doute, même si le downgrade de kernel est possible, je n'ai pas voulu prendre de risque.

Bref, revenons à nos moutons, Antoine.

  1. Télécharger, installer et configurer Raspbian
  2. Upgrader Noobs (ou Raspbian). Connecter-vous au RPi par SSH (pour plus de facilité).
    sudo apt-get update
    sudo apt-get upgrade -y
  3. Télécharger les sources de la carte Wolfson et décompressez-les (dans votre /home/pi):
    wget http://www.element14.com/community/servlet/JiveServlet/download/104303-128960/wolfson_drivers.tar.gz
    tar -zxvf wolfson_drivers.tar.gz
  4. Installer les pré-requis pour la compilation
    sudo apt-get install bc
  5. Installer les logiciels multimédia
    sudo apt-get install lxmusic xmms2 xmms2-plugin-all volumeicon-alsa mpg123 mplayer
  6. Télécharger le kernel 3.10 via Github (durée : 1 heure environ, grab a coffee)
    mkdir kernel_source
    cd kernel_source
    git init
    git fetch git://github.com/raspberrypi/linux.git rpi-3.10.y:refs/remotes/origin/rpi-3.10.y
    git checkout rpi-3.10.y
  7. Patcher le kernel
    git reset --hard c43739885d512c92c0aa443b5895b96df5141da0
    git config --global user.email "votre addresse email"
    git config --global user.name "votre nom"
    git am -3 /home/pi/rpi_wlf_3.10_beta/*
  8. Compiler le kernel (l'opération "make" prend plusieurs heures, quasiment 12 heures, courage)
    cp arch/arm/configs/rpi_wolfson_sound_pi_defconfig .config
    make
    sudo make modules_install
  9. Remplacement du kernel
    sudo mv /boot/kernel.img /boot/kernel.img.backup
    sudo cp arch/kernel/boot/Image /boot/kernel.img
    // si vous avez ce message " cp: impossible d'évaluer « arch/kernel/boot/Image »: Aucun fichier ou dossier de ce type", utilisez cette commande :
    sudo cp arch/arm/boot/Image /boot/kernel.img
    sudo reboot

Vous avez survécu à cette longue compilation de noyau, il ne reste plus qu'à vous amuser. Les échantillons sonores ne sont pas présents, on va les importer dans /home/pi :

wget http://downloads.element14.com/wolfson/Wolfson%20Audio%20Card%20HD%20Audio%20Tracks.zip -O Wolfson_Audio_Card_HD_Audio_Tracks.zip
// Puis on le décompresse :
unzip Wolfson_Audio_Card_HD_Audio_Tracks.zip

Note post installation : le résultat de la compilation/patchage d'une Raspbian n'est pas très concluant, le système audio fonctionne de manière aléatoire. Je conseille donc pour le moment d'installer la version pré-compilée proposée par element14.

Conclusion

Je vais commencer par les points négatifs ou plutôt le point négatif : la partie logiciel. Pour être certain que la carte fonctionne, il est pratiquement recommandé d'utiliser l'image Noobs (Raspbian) pré-patchée/compilée qui, je dois le reconnaitre, fonctionne out of the box sans trop de difficultés. Avec Noobs, on se retrouve avec une version récente mais dans laquelle il manquera les correctifs et nouvelles fonctionnalités qu'offrent un upgrade firmware. En gros, les projets basés sur la capture vidéo et audio seront pénalisés des nouvelles fonctionnalités de la RasPiCam/PiNoIR.

Il faut toutefois temporiser cette critique, les développeurs Element14/Wolfson et Raspberry Pi travaillent déjà sur un support natif des drivers audio directement intégrés dans les images à venir (Noobs, Raspbian) et par conséquent la carte Wolfson sera fonctionnelle sur des version multimédia comme Raspbmc. Je suis impatient.

Un autre point négatif (ou pas), à mes yeux, réside dans l'utilisation de scripts pour activer les différents modes qui risque de rebuter les nouveaux utilisateurs Raspberry Pi et/ou GNU/Linux. Il est tout de même possible d'automatiser ses choix au démarrage de Raspbian/Noobs, rendant l'utilisation plus transparente. Le Raspberry Pi, comme je ne répète souvent, a été créé pour l'apprentissage du codage, aussi la manière de fonctionner de cette carte n'est absolument pas incohérente et il ne tient qu'à nous de créer des scripts pour simplifier cet utilisation.

Une fois l'installation matérielle et logiciel achevé, on se rend compte que la qualité audio de la carte Wolfson est impressionnante. Le codec WM5102 supporte pleinement la haute définition audio 24 bits à un taux d'échantillonnage 192 kHz. L'exécution des fichiers FLAC 24 bits (sans perte) fonctionne parfaitement, et ce malgré le débit de 5Mb/s. J'ai eu le temps de tester toutes les sorties avant que ma vieille chaine Hi-Fi ne rende l'âme (l'ampli et les enceintes qui commençaient à montrer des signes de faiblesse n'ont pas supporté le traitement de choque) et toutes les sorties sont claires et nettes sans souffle anormal.

Du côté du microphone embarqué, j'ai été agréablement surpris, le son enregistré est clair, net avec un léger souffle que l'on peut atténuer avec les options arecord. La stéréo est correctement restituée lorsqu'on enregistre à une distance inférieure à 20 cm. Lors d'un autre test, où j'ai placé le RPi/Wolfson au centre d'une pièce de 20 m², l'enregistrement est très bon, des chuchotements sont audibles et se comprennent, la stéréo quant à elle est peu moins présente (ce n'est pas un micro 3D...).

L'assortiment RPi/Wolfson ne semble pas chauffer plus que le RPi seul, cependant, je préfère le laisser respirer hors d'un boitier ne serait-ce que pour l'accès au microphone embarqué.

Cette mise à niveau matérielle montre les capacités impressionnantes du Raspberry Pi. Les mélomanes, bidouilleurs/développeurs seront ravis de ce nouveau module.

Vous êtes comme moi sous le charme et vous souhaitez vous la procurer ? La carte Wolfson est une exclusivité Wolfson/Element 14. Elle est vendue par Farnell (pour les professionnels) et son distributeur en France est Kubii pour 33,95€.

Remerciement à Diane et à Farnell de m'avoir fait parvenir cette carte tant rêvée.


Licence Creative Commons
Cet article, sauf mention contraire expresse, est publié sous licence Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported Licence.

Vous avez aimé cet article ? Alors partagez-le avec vos amis en cliquant sur les boutons ci-dessous :
Google Plus Twitter Facebook Linkedin Framasphere email Flattr !

8 commentaires sur “Test de la carte Wolfson pour Raspberry Pi

  1. Bravo et merci pour ce test en bonne et due forme, comme toujours ! Je suis assez déçu du côté alambiqué de la partie logicielle, c'est dommage. Mais ça ne peut que s'améliorer (souvenons-nous des débuts de la PiCam...). Dès que j'aurais du temps et la carte, j'essayerai de comparer sa qualité audio avec celle du HifiBerry, en restitution. Je suis curieux de tester les entrées !

    • Merci 🙂
      En effet, le côté alambiqué de la partie logicielle m'a beaucoup rappelé la PiCam mais on s'en est accommodé rapidement. Finalement, le plus galère reste l'intégration des pilotes dans l'OS. À moins de s'y connaitre parfaitement et/ou avoir beaucoup de temps devant soi, il vaut mieux privilégier la version pré-compilée. Je ne doute pas que les pilotes soient rapidement intégrés aux prochaines versions Noobs et Raspbian et que les autres distributions pré-installées (Xbmc, OwnCloud, Jasper, etc..) seront mises à jour. Celui qui veut développer des applications, n'a pas forcément envie de mettre les doigts dans le kernel...
      Un comparatif avec HifiBerry serait une excellente idée, mon blog t'est ouvert au cas où tu as envie de rédiger un article 😉
      En attendant de recevoir un RPi supplémentaire, je sors le fer à souder et je vais me lancer dans un petit projet rigolo, à suivre...

    • Bonjour Marc
      Je n'ai certainement pas développé mon article correctement et je vais y remédier. Le Raspberry Pi (ainsi que les nombreux périphériques qui lui sont spécialement dédiés) a été conçu dans l'objectif premier d'encourager l'apprentissage de la programmation informatique. Ses caractéristiques techniques ont ainsi été pensées pour répondre à un public ne voulant pas investir dans un matériel informatique onéreux et c'est pour cela que le Raspberry Pi ne dispose que d'une configuration de base : une sortie son/video, 2 ports USB et un port Ethernet (permet de diminuer les coûts et permettre l'utilisation de matériel de récupération, comme clavier, souris, webcam, etc...).
      Comme je le disais, le RPi a été créé pour répondre à une carence en matériel programmable accessible pour les étudiants, de promouvoir l'étude de l'informatique et les applications qui en découlent (automatisation, robotique, etc...) et d'introduire dans les écoles le côté ludique dans l'apprentissage de l'informatique.
      Le RPi n'a donc pas été créé pour des performances en bureautique, montage vidéo/photo mais pour être un excellent support pour celles et ceux qui ont envie de bidouiller en ligne de commande et mieux comprendre l'écosystème informatique qui devient de plus en plus présent dans notre vie quotidienne, les objets connectés vont nous envahir d'ici 1 ou 2 ans.
      La carte son Wolfson ne déroge pas à ce type d'utilisation, même si elle offre des capacité audio très intéressantes, le point le plus négatif est qu'il n'est pas "plug and play". Elle permet d'ouvrir la voie à une meilleure gestion sonore du RPi, de ses fonctions d’enregistrement avancées qui permettront de piloter la carte à la voix mais aussi de sampler des données audio ou de créer des solutions VoIP ou de vidéo conférence avancées. En gros, elle est un outil qui va permettre à l'utilisateur de créer ses propres applications pour une utilisation bien précise.
      Un des autres points négatif est que cette carte n'est pour le moment pas exploitable par le grand public qui souhaite juste avec une très bonne qualité sonore lors d'une utilisation avec un média center par exemple sans trop mettre les mains dans les lignes de commande. Ces lacunes vont être rapidement comblées.
      Pour tout ce que je viens d'exposer, j'encourage en effet les personnes non novices avec un environnement Linux qui souhaitent apprendre de manière ludique autour de l'audio, pour une utilisation qui consiste à brancher la carte et à l'exploiter directement, cet achat est inutile.
      J'espère avoir répondu à vos interrogations et que vous allez continuer à vous intéresser à cette surprenante petite machine.

  2. Bonjour,
    article particulièrement intéressant et qui répond à bon nombre de mes questions ! Cependant, y a t-il eu des avancées significatives depuis votre article concernant l'utilisation de cette carte son sous raspbmc ?

    Merci beaucoup et encore une fois, félicitation pour votre site !

  3. Bonjour,

    Quelles sont l'encodage et fréquence d'échantillonnage maximales en enregistrement ?

    Je recherche une carte son pour Raspberry permettant un enregistrement en 24 bits 192 kHz afin d'enregistrer les sons produits par des animaux.

    Bonne journée à vous,

    Michel

Répondre à Nicolas Annuler la réponse

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.