Carte son « Wolfson » pour Raspberry Pi 2/3 : Configuration.
Distribution utiliser : Raspbian 2014-01-07
Raspberry Pi : Modèle B 512 Mo, plus d’info technique : http://fr.farnell.com/jsp/displayProduct.jsp?sku=2191863
Sur les différents articles que j’ai pu lire sur Internet, beaucoup ne font que des présentations détaillées de la carte mais avec peu de mise en pratique. Je vais donc vous présenter comment installer pas-à-pas cette carte son sur le Raspberry Pi. Les instructions qui vont suivre s’adresse à des utilisateurs chevronnés n’ayant pas peur d’utiliser les lignes de commande et de compiler des applications à la main.
Vous pouvez acheter cette carte audio chez Farnell, ici : http://fr.farnell.com/jsp/search/productdetail.jsp?SKU=2347264&MER=BN-2347264
Pour les débutant, il existe une distribution prête à l’emploi qui intègre directement les modules audios et quelques fichiers audios en très hautes qualités : http://downloads.element14.com/wolfson/wolfson_3.10_master.zip?COM=WolfsonAudioCard
I) Les caractéristique techniques :
Les puces intégrés sont :
– WM5102 : un Hub audio programmable pour un taux d’échantillonnage de 192 kHz avec 8 canaux en entrés.
– WM8804 : Pour le S/PDIF.
– WM7220 : Pour les microphones.
– WM9082 : Pour les amplificateurs audios.
II) Les différents connecteurs :
– Prise Jack 3,5 mm en entrée avec la stéréo
– Prise Jack 3,5 mm en sortie avec la stéréo
– Prise Jack 3,5 mm avec 4 pôles
– Prise microphone en entrée
– Prise S/PDIF en entrée avec le transceiver Wolson WM8804
– Sortie vers des haut-parleurs
– 2 microphones MEMS (micro-électromécanique ) Wolfson WM7220
– Un amplificateur intégré de puissance « classe D » avec une source d’alimentation externe.
III) Installation :
La branchement de la carte audio se fait classiquement par les headers GPIO, positionner aussi correctement la carte sur le connecteur P5. Des pins de la carte étant en contact avec les 8 pins de P5, il n’y a pas besoin de faire de soudure en plus. L’entretoise et vis permettent de faire tenir solidement la carte audio sur le Raspeberry Pi.
Endroit où la carte son doit être correctement inséré :
Montage final :
Déballage et montage de la carte audio sur la Raspeberry Pi plus en détail ici : https://miniordi.hacktech.dev/carte-wolfson-montage-raspberry-pi/
IV) Configuration de la distribution :
1) Mise-à-jour des dépôts des paquetages :
pi@framboisepi ~ $ sudo apt-get update
2) Installation des outils de compilation :
pi@framboisepi ~ $ sudo apt-get install build-essential git-core
3) Installation des logiciels pour la lecture et le paramètrage de l’audio :
pi@framboisepi ~ $ sudo apt-get install lxmusic xmms2 xmms2-plugin-all volumeicon-alsa mpg123 mplayer
V) Compilation des modules et du noyau.
1) Téléchargement et installation des patchs pour le support matétiel Wolfson :
– Téléchargement des fichiers pour modifier le noyau Linux :
pi@framboisepi ~ $ wget http://www.element14.com/community/servlet/JiveServlet/download/104303-128960/wolfson_drivers.tar.gz
– Décompression de l’archive :
pi@framboisepi ~ $ tar xvfz wolfson_drivers.tar.gz
– Code source des patchs :
pi@framboisepi ~ $ ls -l rpi_wlf_3.10_beta/ total 208 -rw-r--r-- 1 pi pi 924 janv. 9 13:48 0001-Allow-writing-into-the-debugfs-register-files.patch -rw-r--r-- 1 pi pi 964 janv. 9 13:48 0002-ASOC-WM5102-Add-dapm-routes-for-CPVDD.patch -rw-r--r-- 1 pi pi 2486 janv. 9 13:48 0003-ASoC-arizona-Hookup-SYSCLK-to-inputs-and-noise-gener.patch -rw-r--r-- 1 pi pi 2721 janv. 9 13:48 0004-ASOC-WM8804-Add-alsa-control-for-SPDIF-RX.patch -rw-r--r-- 1 pi pi 5162 janv. 9 13:48 0005-ASOC-dapm-add-param_fixup-callback.patch -rw-r--r-- 1 pi pi 3482 janv. 9 13:48 0006-ASoC-arizona-Check-clocking-during-hw_params-rather-.patch -rw-r--r-- 1 pi pi 1675 janv. 9 13:48 0007-ARM-bcm2708-Limit-the-boot-time-interrupt-allocation.patch -rw-r--r-- 1 pi pi 8158 janv. 9 13:48 0008-ASOC-arizona-Use-virtual-IRQs.patch -rw-r--r-- 1 pi pi 30804 janv. 9 13:48 0009-ASOC-RPi-Add-support-for-Wolfson-Audio-Card.patch -rw-r--r-- 1 pi pi 2919 janv. 9 13:48 0010-dma-bcm2708-synchronise-dma-and-dmaengine-drivers.patch -rw-r--r-- 1 pi pi 2781 janv. 9 13:48 0011-ASoC-WM8804-MCLK_DIV-to-be-set-by-set_clkdiv-rather-.patch -rw-r--r-- 1 pi pi 1201 janv. 9 13:48 0012-ASOC-RPi-Set-WM8804-MCLK_DIV-0-256fs.patch -rw-r--r-- 1 pi pi 92735 janv. 9 13:48 0013-config-add-config-for-wolfson-audio-card.patch -rw-r--r-- 1 pi pi 1107 janv. 9 13:48 0014-ASOC-BCM2708-Update-pcm-hw-info-flag.patch -rw-r--r-- 1 pi pi 965 févr. 11 21:03 0015-ASoC-arizona-An-OUTDIV-of-1-is-not-valid-avoid-this.patch -rw-r--r-- 1 pi pi 2437 févr. 11 21:03 0016-ASoC-arizona-Disable-AIF-TX-RX-before-configuring-it.patch -rw-r--r-- 1 pi pi 18092 févr. 17 13:31 gpl-2.0.txt
– Ces scripts permettent d’activer une des fonctions de la carte audio. Ce sont des « wrappers » des outils de configuration du serveur de son Alsa (the Advanced Linux Sound Architecture).
pi@framboisepi ~ $ ls *.sh debug_info.sh Playback_to_Speakers.sh Record_from_lineIn.sh SPDIF_record.sh Playback_to_Headset.sh Record_from_DMIC.sh Reset_paths.sh Playback_to_Lineout.sh Record_from_Headset.sh SPDIF_playback.sh
Voici une description des différents scripts shell :
Fonction audio Script à exécuter Lecture un fichier audio vers des écouteurs Playback_to_Headset.sh Lecture un fichier audio vers la prise jack Playback_to_Lineout.sh Lecture un fichier audio vers les haut-parleurs Playback_to_Speakers.sh Lecture un fichier audio vers la sortie SPDIF SPDIF_playback.sh Enregistrement audio depuis les microphones Record_from_DMIC.sh Enregistrement depuis le micro du casque audio Record_from_Headset.sh Enregsitrement depuis l'entrée analogique Record_from_lineIn.sh Enregistrement depuis l'entrée SPDIF SPDIF_record.sh Réinitialiser la configuration audio Reset_paths.sh
2) Téléchargement du code source du noyau en version 3.10 :
– Répertoire de travail :
pi@framboisepi ~ $ mkdir kernel_source pi@framboisepi ~ $ cd kernel_source pi@framboisepi ~/kernel_source $
– Initialisation du repository git :
pi@framboisepi ~/kernel_source $ git init Initialized empty Git repository in /home/pi/kernel_source/.git/
– Récupération du code source du noyau :
pi@framboisepi ~/kernel_source $ git fetch git://github.com/raspberrypi/linux.git rpi-3.10.y:refs/remotes/origin/rpi-3.10.y remote: Counting objects: 3073162, done. remote: Compressing objects: 100% (509320/509320), done. remote: Total 3073162 (delta 2535760), reused 3072959 (delta 2535605) Receiving objects: 100% (3073162/3073162), 826.00 MiB | 1021 KiB/s, done. Resolving deltas: 100% (2535760/2535760), done. From git://github.com/raspberrypi/linux * [new branch] rpi-3.10.y -> origin/rpi-3.10.y
– Se positionner sur la bonne version du noyau :
pi@framboisepi ~/kernel_source $ git checkout rpi-3.10.y Checking out files: 100% (43371/43371), done. Switched to a new branch 'rpi-3.10.y'
– Revenir vers une version antérieur de la version du noyau :
pi@framboisepi ~/kernel_source $ git reset --hard c43739885d512c92c0aa443b5895b96df5141da0 Checking out files: 100% (767/767), done. HEAD is now at c437398 Merge pull request #472 from luked99/vc-mem-tidyup
– Configuration de git pour l’adresse électronique :
pi@framboisepi ~/kernel_source $ git config --global user.email "lesanglierdesardennes@gmail.com"
– Configuration de git pour le nom du « committer » :
pi@framboisepi ~/kernel_source $ git config --global user.name "Le Sanglier des Ardennes"
– Appliquer les patchs sur le code source du noyau :
pi@framboisepi ~/kernel_source $ git am -3 /home/pi/rpi_wlf_3.10_beta/* Applying: Allow writing into the debugfs register files Applying: ASOC: WM5102: Add dapm routes for CPVDD Applying: ASoC: arizona: Hookup SYSCLK to inputs and noise generators Applying: ASOC: WM8804: Add alsa control for SPDIF-RX Applying: ASOC: dapm: add param_fixup callback Applying: ASoC: arizona: Check clocking during hw_params rather than startup Applying: ARM: bcm2708: Limit the boot time interrupt allocation Applying: ASOC: arizona: Use virtual IRQs Applying: ASOC: RPi: Add support for Wolfson Audio Card Applying: dma: bcm2708: synchronise dma and dmaengine drivers Applying: ASoC: WM8804: MCLK_DIV to be set by set_clkdiv rather than within set_pll Applying: ASOC: RPi: Set WM8804 MCLK_DIV=0 (256fs) Applying: config: add config for wolfson audio card Applying: ASOC: BCM2708: Update pcm hw info flag Applying: ASoC: arizona: An OUTDIV of 1 is not valid, avoid this Applying: ASoC: arizona: Disable AIF TX/RX before configuring it Patch is empty. Was it split wrong? If you would prefer to skip this patch, instead run "git am --skip". To restore the original branch and stop patching run "git am --abort".
3) Compilation du noyau :
– Copie le nouveau fichier de configuration :
pi@framboisepi ~/kernel_source $ cp arch/arm/configs/rpi_wolfson_sound_pi_defconfig .config
– Compilation :
pi@framboisepi ~/kernel_source $ make HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c ... IHEX firmware/cpia2/stv0672_vp4.bin IHEX firmware/yam/1200.bin IHEX firmware/yam/9600.bin
Attention, la compilation dure très très longtemps !!! O_o
La durée est d’environs : 11 heures
– Installation du noyau :
pi@framboisepi ~/kernel_source $ sudo make modules_install ... INSTALL /lib/firmware/yam/1200.bin INSTALL /lib/firmware/yam/9600.bin DEPMOD 3.10.25+
4) Remplacer l’actuel noyau par le nouveau :
– Vérification de la version actuel du noyau :
pi@framboisepi ~ $ uname -a Linux framboisepi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l GNU/Linux
– Remplacement avec le nouveau noyau :
pi@framboisepi ~/kernel_source $ sudo mv /boot/kernel.img /boot/kernel.img.backup pi@framboisepi ~/kernel_source $ sudo cp arch/arm/boot/Image /boot/kernel.img
5) Redémarrer le Raspberry Pi.
– Vérification de la version actuel du noyau :
pi@framboisepi ~ $ uname -a Linux framboisepi 3.10.25+ #1 PREEMPT Tue Apr 29 05:49:29 CEST 2014 armv6l GNU/Linux
6) Tester la nouvelle configuration de la distribution :
Le Raspberry Pi est maintenant prêt à jouer des fichiers audios en haute-définitions.
Voir cette article : https://miniordi.hacktech.dev/carte-wolfson-test-audio-video/
V) Liens :
Guide de l’utilisateur : http://www.farnell.com/datasheets/1803925.pdf
Guide pour compiler les pilotes audio Wolfson : http://www.element14.com/community/servlet/JiveServlet/download/104303-128961/Building%20the%20Wolfson%20Audio%20drivers%20into%20the%20kernel%20on%20the%20Raspberry%20Pi.pdf
Vidéo de démonstration : http://www.element14.com/community/community/raspberry-pi/raspberry-pi-accessories/wolfson_pi
Un article sur le site Framboise314 : http://www.framboise314.fr/enfin-une-vraie-carte-son-wolfson-pour-le-raspberry-pi/
Un autre article de présentation : http://www.minimachines.net/actu/carte-son-avec-chipset-wolfson-concue-pour-la-raspberry-pi-16103