Squeezelite multiroom en Raspberry Pi: elegir la salida ALSA correcta y por qué evitar dmix

· Última revisión: 08/09

El audio multiroom con Squeezelite se monta con dos decisiones: qué tarjeta de sonido usa cada instancia y cómo se llama el reproductor en Logitech Media Server (LMS). La mayoría de los fallos no están en Squeezelite, están en la capa ALSA que hay debajo.

Diagrama de Squeezelite multiroom: un servidor LMS conectado a una Raspberry Pi con tres salidas ALSA y una instancia por habitación

Identifica la salida antes de tocar nada

Estos tres comandos te dicen qué ve ALSA en la Raspberry Pi:

aplay -l            # dispositivos de reproducción
cat /proc/asound/cards   # tarjetas detectadas por el kernel
aplay -L            # nombres ALSA utilizables

No asumas que la salida USB se llama igual en todas las Pi. Con un DAC USB conectado, aplay -l muestra el nombre exacto que luego va en la configuración; con la salida de auriculares de la placa, el nombre suele ser Headphones.

Salidas ALSA y cuál usar para Squeezelite
DispositivoQué hacePara Squeezelite
hw:CARD=X,DEV=0Acceso directo al hardware, sin mezcladoEl preferido: una sola app controla la salida
plughw:CARD=X,DEV=0Convierte formatos si hace faltaAceptable si la tarjeta no soporta el formato nativo
dmix:CARD=X,DEV=0Mezcla software para varias apps a la vezEvitarlo: añade inestabilidad en sesiones largas
sysdefault:CARD=XDispositivo por defecto del sistemaSolo para pruebas; no deja claro qué mezclador hay debajo

Configuración en /etc/default/squeezelite

Si Squeezelite está instalado como servicio, su configuración de arranque vive en /etc/default/squeezelite. Para la salida de auriculares de una Raspberry Pi, la plantilla queda así:

# /etc/default/squeezelite
SL_NAME="salon"
SL_SOUNDCARD="hw:CARD=Headphones,DEV=0"
# SL_SERVER="192.168.1.20"   # LMS, descomentar si no se autodescubre

Cambia SL_SOUNDCARD por lo que devuelva aplay -l en tu caso. Un DAC USB puede aparecer como hw:CARD=Audio,DEV=0 o con el nombre del chip; no lo copies a ciegas.

Por qué dmix te corta el audio

El mezclador dmix permite que varias aplicaciones compartan la misma salida, pero lo hace añadiendo una capa de software entre Squeezelite y el DAC. En sesiones largas esa capa es justo lo que se cae. Un montaje documentado desde hace años (Multi-Room Home Audio) pasó de cortes recurrentes a días seguidos sin fallos quitando dmix y asignando el DAC en exclusiva a Squeezelite. Para mantener dos fuentes de audio (música y notificador de calendario), la solución que usó su autor fue brutal pero real: dos DACs y mezcla en hardware.

Que dmix no aparezca en tu SL_SOUNDCARD no es un capricho de formato, es parte de la estabilidad.

Una instancia por habitación con systemd

Para varias habitaciones, crea una unidad systemd por salida. Cada una con su nombre y su dispositivo ALSA:

[Unit]
Description=Squeezelite salon
After=sound.target

[Service]
ExecStart=/usr/bin/squeezelite -n salon -o hw:CARD=Headphones,DEV=0
Restart=always

[Install]
WantedBy=multi-user.target

Guárdala como /etc/systemd/system/squeezelite-salon.service, y actívala con:

sudo systemctl enable --now squeezelite-salon.service
systemctl status squeezelite-salon.service

Repite el bloque para cada habitación cambiando -n (el nombre que verá LMS) y -o (la salida). Si dos instancias comparten la misma salida ALSA, se pisan; si dos comparten el mismo nombre, LMS no sabe cuál es cuál.

Problemas típicos

Diagnóstico rápido de Squeezelite multiroom
SíntomaCausa más probableQué tocar
No hay sonido y el reproductor arrancaSalida ALSA equivocadaComprueba aplay -l y cambia SL_SOUNDCARD
Cortes aleatorios tras horasdmix compartía el dispositivoUsa hw: con acceso exclusivo
Dos habitaciones se mezclanDos instancias usan la misma salidaUna salida y un nombre por unidad systemd
LMS no ve el reproductorNombre duplicado o servidor no accesibleCambia -n y revisa SL_SERVER

Fuentes

¿Te sirvió esta guía?

Recibe la siguiente cuando esté publicada. Sin ruido: solo el contenido nuevo.