110 Raspberri Pi 1 con I2S Wolfson Audio Card - Rsantct/FIRtro-light GitHub Wiki
Raspberry Pi 1 con Tarjeta de sonido I2S Wolfson Audio Card
(TAMBIÉN APLICA A CUALQUIER RPI x con CIRRUS LOGIC AUDIO CARD)
Overclock
$ raspi-config → Overclock: Turbo
Turbo 1000MHz ARM, 500MHz core, 600MHz SDRAM, 6 overvolt
--------------------
Thermal Zone 0
57.838 °C
--------------------
CPU
https://wiki.linuxaudio.org/wiki/raspberrypi
/etc/rc.local
for cpu in /sys/devices/system/cpu/cpu[0-9]*; do echo -n performance | sudo tee $cpu/cpufreq/scaling_governor; done
Wolfson Audio Sound Card / Cirrus Logic Audio Card para Raspberry Pi
http://www.horus.com/~hias/cirrus-driver.html
-
Actualizar Raspbian para tener un kernel >= 4.x
sudo apt-get update sudo apt-get upgrade
-
Instalar drivers oficiales
sudo rpi-update
OjO parece ser que este punto ya no es necesario ¿!? https://www.raspberrypi.org/forums/viewtopic.php?t=200029 Update with
sudo apt update
sudp apt -y dist-upgrade
- Y activarlos
/boot/config.txt
dtoverlay=rpi-cirrus-wm5102
/etc/modprobe.d/cirrus.conf
softdep arizona-spi pre: arizona-ldo1
-
Reiniciar:
$ sudo reboot
-
Comprobar:
$ aplay -l
-
Instalar las utilidades de configuración de la tarjeta:
mkdir /home/pi/bin_cirrus/
wget http://www.horus.com/~hias/tmp/cirrus/cirrus-ng-scripts.tgz
cd /home/pi/bin_cirrus/
tar zxf ../cirrus-ng-scripts.tgz
-
Ajustes de la tarjeta
El alsamixer de las tarjetas Wolfson/CirrusLogic es muy complicado, dispone de un DSP interno. Para seleccionar la entrada, salida, o resetar ajustes ejecutar los scripts del fabricante:
/home/pi/bin_cirrus/
Cirrus_listen.sh
Playback_to_Headset.sh
Playback_to_Lineout.sh
Playback_to_SPDIF.sh
Playback_to_Speakers.sh
Record_from_DMIC.sh
Record_from_Headset.sh
Record_from_Linein_Micbias.sh
Record_from_Linein.sh
Record_from_SPDIF.sh
Reset_paths.sh
Para ajustar los niveles de entrada/salida y guardarlos para el arraque de FIRtro podemos usar estos scripts:
/home/pi/bin_clac_custom/clac_dBlevel.py
/home/pi/bin_clac_custom/clac_dBlevel_headset.py
Guardamos los ajustes para el arranque de FIRtro
$ alsactl -f /home/firtro/audio/asound.RPiCirrus store RPiCirrus
Archivos ad-hoc:
Ver en https://github.com/Rsantct/FIRtro-light
/etc/sudoers.d/020_firtro
/etc/rc.local # con ajustes ad-hoc y scripts BT/Spotify
/home/firtro/.asoundrc
/home/firtro/bin_custom/
patch_firtro.sh
restart_jack.sh
librespot_watchdog.sh
escuchaBT.py
/home/firtro/bin/
webcustombutton_7.sh
webcustombutton_8.sh
webcustombutton_8.sh
/home/www/config/config.ini
/home/audio/inputs
Prestaciones:
- librespot OK aunque en RPI1 funciona mejor con --bitrate 160
- LineIn OK, necesita jackd -p 1024 o menor para material audiovisual
- bluetooth OK
Si el ajuste --period (frames per period) de jackd es inferior a 4096, se observan underruns desde el plugin jack de .asoundrc cuando es usado por librespot debido a su alto consumo CPU. Otros usos como por ejemplo el receptor BT (bluealsa) no presentan problemas.
Como se necesita --period pequeño para escuchar material audiovisual por la entrada analógica LineIn, preparamos unos botones de la web de control para relanzar jack/brutefir/ecasound, ajustando --period en Jack y filter_lenght en Brutefir.
bin_custom/restart_jack.sh tamaño_buffer
Alternativamente, se ha intentado ajustar el slave del pcm.jack de .asoundrc con un valor period_time alto, pero no funciona :-/
pcm.jack {
type plug
slave {
pcm "rawjack"
period_time 8192 # <-- esto no funciona
}