Carte son « Wolfson » pour Raspberry Pi 2/3 : Configuration

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

Wolfson-Pi-Audio-Card-für-Raspberry-Pi

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 :

wolfson_audiocard_detail

– 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é :

Raspberry_Pi

Montage final :

RASPPI-WOLF-AUD-montage

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *