weirdnet
weirdnet.org
Home
Strangeland
Directory
Links

Faire marcher une carte son ESS Tech Allegro sous Debian

« back to Strangeland


---
layout: project
title: "Faire marcher une carte son ESS Tech Allegro sous Debian"
date: 2012-02-21 00:33:30 +0100
id: "0221"
---

Sous Debian Lenny et Squeeze au moins, certaines cartes sons ESS
(maestro) ne fonctionnent pas par défaut. Pourtant, dans le cas
présent, la carte est bien détectée et les modules sont chargés :

$ lspci |grep audio
02:03.0 Multimedia audio controller: ESS Technology ES1988 Allegro-1 (rev 12)
$ lsmod |grep maestro
snd_maestro3 12703 1
snd_ac97_codec 79200 2 snd_intel8x0m,snd_maestro3
snd_pcm 47226 3 snd_intel8x0m,snd_maestro3,snd_ac97_codec
snd 34423 9 snd_intel8x0m,snd_maestro3,snd_ac97_codec,snd_pcm,snd_seq,snd_timer,snd_seq_device

Cependant pas de son. Les tests de bases avec VLC ou aplay renvoient
des erreurs. En cherchant un peu plus on trouve ceci :

[ 8.757898] firmware: requesting ess/maestro3_assp_kernel.fw
[ 8.865895] ACPI: PCI interrupt for device 0000:02:09.0 disabled
[ 8.873406] Maestro3: probe of 0000:02:09.0 failed with error -2

Selon dmesg il manque donc apparement les firmwares pour
le bon fonctionnement de la carte son. Pour des raisons obscures ils
ne sont pas fournis par Debian. Il nous faut donc les récupérer sur le
ftp du projet alsa (ftp://ftp.alsa-project.org/pub/firmware/) :

$ cd /tmp
$ wget ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.25.tar.bz2
$ tar xvjf alsa-firmware-1.0.25.tar.bz2
$ cd alsa-firmware-1.0.25/
$ ./configure
$ cd mestro3
$ sudo make install
gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" \
-DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" \
-DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" \
-DPACKAGE=\"alsa-firmware\" -DVERSION=\"1.0.25\" \
-DSTDC_HEADERS=1 -I. -g -O2 -MT fw_writer.o -MD -MP -MF .deps/fw_writer.Tpo \
-c -o fw_writer.o fw_writer.c
mv -f .deps/fw_writer.Tpo .deps/fw_writer.Po
gcc -g -O2 -o fw_writer fw_writer.o
./fw_writer
writing maestro3_assp_kernel.fw ...
writing maestro3_assp_minisrc.fw ...
make[1]: entrant dans le répertoire `/tmp/alsa-firmware-1.0.25/maestro3'
make[1]: Rien à faire pour `install-exec-am'.
test -z "/lib/firmware/ess" || /bin/mkdir -p "/lib/firmware/ess"
/usr/bin/install -c -m 644 maestro3_assp_kernel.fw \
maestro3_assp_minisrc.fw '/lib/firmware/ess'
make[1]: quittant le répertoire `/tmp/alsa-firmware-1.0.25/maestro3'
$ ls /lib/firmware/ess/
maestro3_assp_kernel.fw maestro3_assp_minisrc.fw

Après un reboot tout entre dans l'ordre :

$ dmesg |grep -i maestro
[ 8.867069] Maestro3 0000:02:03.0: PCI INT A -> Link[LNKD] -> GSI 5 (level, low) -> IRQ 5
[ 8.867082] Maestro3 0000:02:03.0: firmware: requesting ess/maestro3_assp_kernel.fw
[ 9.100840] Maestro3 0000:02:03.0: firmware: requesting ess/maestro3_assp_minisrc.fw