Translation(s): English - Français - Italiano
Périphériques Cirrus Logic Sound Fusion CS4280, CS461x, CS462x, CS463x
Cette page décrit comment utiliser, sur les systèmes Debian, les périphériques audio basés sur les chipsets CS46xx.
Contents
snd-cs46xx est un module du noyau Linux qui prend en charge les contrôleurs audio Sound Fusion CS46xx de Cirrus Logic. C'est un pilote d'ALSA fourni avec le noyau Linux.
Avec la version 2.6.23-1 du noyau linux-2.6, le microcode, disponible seulement sous forme binaire, de ce pilote a été retiré du fait de problèmes de licence. Le pilote a alors été désactivé. Le microcode a été aussi retiré du paquet alsa-source pour résoudre le bogue 483918.
Avec la version 2.6.23-1~experimental.1 du noyau linux-2.6, le pilote snd-cs46xx a été réactivé et patché pour utiliser un microcode à partir de l'espace utilisateur (résolvant le bogue de Debian 464197).
Avec le noyau Linux 3.14, le microcode, disponible seulement sous forme binaire, a été rétiré de l'arborescence du noyau, et le pilote modifié pour le charger de l'extérieur. Le microcode du périphérique fait partie des versions d'ALSA depuis la version 1.0.28.1
Le microcode du périphérique ne peut pas être distribué par le projet parce que le pilote snd-cs46xx n'a pas de licence.2 Une licence pour une diffusion libre a été demandé à Cirrus Logic.3
Installation
Debian 8 « Jessie »
Plusieurs fichiers de microcode sont nécessaires pour utiliser ce périphérique et peuvent être récupérés dans le projet ALSA.
Installez le paquet alsa-utils :
$ su # aptitude update && aptitude install alsa-utils # exit
Récupérez une archive d'alsa-firmware (≥ v1.0.28) à partir du serveur du projet ALSA, par exemple :
$ wget ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.28.tar.bz2
Extrayez l'archive, par exemple :
$ tar xvf alsa-firmware-1.0.28.tar.bz2
Installez le microcode sur votre machine, par exemple :
$ cd alsa-firmware-1.0.28/cs46xx $ su # mkdir /lib/firmware/cs46xx # cp ba1 cwc4630 cwcasync cwcbinhack cwcdma cwcsnoop /lib/firmware/cs46xx
Rechargez le module snd-cs46xx :
# modprobe -r snd-cs46xx ; modprobe snd-cs46xx
Si ce n'est pas déjà fait, ajoutez votre compte utilisateur au groupe audio, déconnectez-vous puis reconnectez-vous au système :
# adduser yourusername audio # exit $ exit
Exécutez alsamixer(1) pour activer les canaux audio et montez le volume.
Testez le périphérique audio, par exemple :
$ aplay /usr/share/sounds/alsa/Noise.wav $ speaker-test -t sine -f 440 -c 2 $ speaker-test -t wav -c 2
Debian 7 « Wheezy »
Un fichier de firmware est nécessaire pour utiliser ce périphérique.
Installez les paquets alsa-base, alsa-utils et build-essential :
$ su # aptitude update && aptitude install alsa-base alsa-utils build-essential # exit
Téléchargez le fichier cs46xx_image.h à partir de l'arborescence du noyau de Linus :
$ wget https://raw.github.com/torvalds/linux/v3.2/sound/pci/cs46xx/cs46xx_image.h
Téléchargez le code source pour le programme qui va créer le firmware à partir de cs46xx_image.h :
$ wget 'https://wiki.debian.org/snd-cs46xx?action=AttachFile&do=get&target=write_images.c' -O write_images.c
Téléchargez le patch pour cs46xx_image.h:
$ wget 'https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=181;att=0;bug=464197' -O cs46xx_image.diff
Appliquer le patch:
$ patch -i cs46xx_image.diff
Compilez le programme write_images :
$ gcc -o write_images write_images.c
Exécutez le programme pour créer le firmware :
$ ./write_images
Installez le microcode :
$ su # mkdir /lib/firmware/cs46xx # cp cs46xx/cs46xx-old.fw /lib/firmware/cs46xx
Rechargez le module snd-cs46xx module :
# modprobe -r snd-cs46xx ; modprobe snd-cs46xx
Si ce n'est pas déjà fait, ajoutez votre compte utilisateur au groupe audio, déconnectez-vous puis reconnectez-vous au système :
# adduser nom_d'utilisateur audio # exit $ exit
Exécutez alsamixer(1) pour activer les canaux audio et montez le volume.
Testez le périphérique audio, par exemple :
$ aplay /usr/share/sounds/alsa/Noise.wav $ speaker-test -t sine -f 440 -c 2 $ speaker-test -t wav -c 2
Dépannage
Examinez le "ring buffer" (liste circulaire) du noyau (dmesg(1)) pour vérifier que le firmware a été chargé.
Si la sortie ressemble à ceci :
[16576.681738] Sound Fusion CS46xx 0000:00:06.0: found PCI INT A -> IRQ 11 [16576.681774] Sound Fusion CS46xx 0000:00:06.0: sharing IRQ 11 with 0000:00:02.0 [16576.681827] Sound Fusion CS46xx 0000:00:06.0: sharing IRQ 11 with 0000:01:00.0 [16577.224760] Sound Fusion CS46xx 0000:00:06.0: firmware: requesting cs46xx/cs46xx-old.fw [16577.403887] cs46xx: firmware hunk out of range [16577.406087] image download error [16577.412213] Sound Fusion CS46xx: probe of 0000:00:06.0 failed with error
c'est que le firmware n'est pas au bon format.
Assurez-vous que le patch pour cs46xx_image.h a été appliqué avant la compilation de write_images.c.
Assurez-vous que write_images a été exécuté sur un système où les entiers longs non signés sont de type petit-boutien 32-bits.
Périphériques pris en charge
La page fr/HowToIdentifyADevice/PCI explique comment identifier un périphérique PCI.
La liste suivante est basée sur les champs alias de modinfo snd-cs46xx des images noyau de Debian 3.16 (3.16.7-ckt9-3~deb8u1).
PCI: 1013:6001 Cirrus Logic CS 4610/11 [CrystalClear SoundFusion Audio Accelerator] PCI: 1013:6003 Cirrus Logic CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] PCI: 1013:6004 Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
Voir aussi
CategoryHardware | CategorySound
Projet ALSA : journal des modification entre les versions 1.0.27 et 1.0.28 (1)
Le pilote audio CS46xx n'a pas de licence - Bogue 10750 du Kernel Bug Tracker (2)
cs46xx_image.h (sound/pci/cs46xx) - KernelFirmwareLicensing (3)