Servidor de audio PipeWire

Tutorial de Audio Avanzado: PipeWire en Arch Linux

Actualizado a diciembre de 2025

PipeWire se ha consolidado como el servidor de audio y vídeo moderno en la mayoría de distribuciones Linux, incluido Arch. Sustituye en la práctica a PulseAudio y cubre muchos casos de uso de JACK, ofreciendo una infraestructura unificada con baja latencia, buena gestión de dispositivos y compatibilidad con aplicaciones antiguas.

Este tutorial está orientado a usuarios de Arch Linux que quieren ir más allá de la configuración por defecto y sacarle partido a PipeWire para producción musical, streaming y escenarios algo más avanzados.

 

0. Situación actual en Arch

En instalaciones recientes de Arch (especialmente si usaste archinstall con un escritorio moderno) es bastante probable que PipeWire ya esté instalado y activo.

Compruébalo con:

pacman -Qs pipewire wireplumber
systemctl --user status pipewire pipewire-pulse wireplumber

Si los servicios aparecen como active (running), ya estás usando PipeWire y puedes saltar directamente a las secciones 3–7.

 

1. Instalación (o completar lo que falta)

En Arch, el servidor base es pipewire y los módulos de audio se reparten en varios paquetes. Para una configuración completa de escritorio + compatibilidad con PulseAudio y JACK:

sudo pacman -S \
  pipewire \
  pipewire-alsa \
  pipewire-pulse \
  pipewire-jack \
  wireplumber \
  alsa-utils

Resumen rápido:

  • pipewire: servidor multimedia principal.

  • pipewire-alsa: redirige aplicaciones ALSA a PipeWire.

  • pipewire-pulse: reemplazo drop‑in de PulseAudio.

  • pipewire-jack: proporciona la API de JACK a las apps de audio profesional.

  • wireplumber: gestor de sesiones/políticas (imprescindible hoy en día).

  • alsa-utils: herramientas como alsamixer para depurar la capa ALSA.

Con esto tienes el stack moderno recomendado.

 

2. Migrar desde PulseAudio y habilitar PipeWire

2.1. Eliminar PulseAudio

Si aún tienes PulseAudio instalado, es mejor quitarlo para evitar conflictos. Por ejemplo:

sudo pacman -R pulseaudio pulseaudio-alsa pulseaudio-bluetooth
sudo pacman -S pipewire pipewire-alsa pipewire-pulse

El paquete pipewire-pulse proporciona el servidor de sonido compatible con PulseAudio que usarán tus aplicaciones.

2.2. Activar servicios de usuario con systemd

Hoy se recomienda usar sockets de usuario en lugar de servicios “pelados”:

systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service

Esto hará que PipeWire se lance automáticamente cuando alguna aplicación lo necesite.

Si todavía tienes servicios de PulseAudio activos, deshabilítalos:

systemctl --user disable --now pulseaudio.service pulseaudio.socket
 

3. Verificar que todo funciona

3.1. wpctl: la navaja suiza moderna

WirePlumber instala la herramienta wpctl, muy cómoda para ver el estado del audio:

wpctl status

Ahí verás:

  • Dispositivos de salida (sinks) y entrada (sources),

  • Aplicaciones reproduciendo o capturando audio,

  • Qué dispositivos están marcados como por defecto.

3.2. Inspección avanzada con pw-cli

Si quieres ver la lista completa de nodos PipeWire:

pw-cli ls Node

Deberían aparecer tus tarjetas de sonido, micrófonos y flujos de audio de las aplicaciones.

 

4. Configuración avanzada de WirePlumber

Desde WirePlumber 0.5 la configuración es en formato tipo JSON/INI y se organiza en archivos *.conf y directorios *.conf.d.

4.1. Rutas de configuración

Orden de prioridad típico:

  1. ~/.config/wireplumber/ (usuario)

  2. /etc/wireplumber/ (sistema)

  3. /usr/share/wireplumber/ (config por defecto de los paquetes)

4.2. Crear tu propia configuración

  1. Copia la configuración base al directorio de usuario:

mkdir -p ~/.config/wireplumber
cp /usr/share/wireplumber/wireplumber.conf ~/.config/wireplumber/
mkdir -p ~/.config/wireplumber/wireplumber.conf.d
  1. Ejemplo: impedir que ALSA suspenda la tarjeta de sonido (evita clics al reactivarse):

# ~/.config/wireplumber/wireplumber.conf.d/51-no-suspend.conf

monitor.alsa.rules = [
  {
    matches = [
      { node.name = "~alsa_input.*" }
      { node.name = "~alsa_output.*" }
    ]
    actions = {
      update-props = {
        session.suspend-timeout-seconds = 0
      }
    }
  }
]
  1. Reinicia WirePlumber para aplicar cambios:

systemctl --user restart wireplumber

Con reglas similares puedes:

  • Forzar que una interfaz USB use siempre el perfil "Pro Audio".

  • Cambiar prioridades para que ciertos dispositivos se escojan como predeterminados.

  • Aplicar políticas diferentes con auriculares, HDMI, etc.

     

5. Optimización de rendimiento en tiempo real

Para producción musical o escenarios de baja latencia, la idea es:

  1. Dar a PipeWire hilos en tiempo real (RT) con prioridad alta.

  2. Permitir que tu usuario pueda usar esas prioridades de forma segura.

5.1. Ajustar nice.level y rt.prio con un drop‑in

En lugar de editar /etc/pipewire/pipewire.conf, crea un override de usuario:

mkdir -p ~/.config/pipewire/pipewire.conf.d
nano ~/.config/pipewire/pipewire.conf.d/99-rt.conf

Ejemplo de contenido:

# ~/.config/pipewire/pipewire.conf.d/99-rt.conf

context.modules = [
  { name = libpipewire-module-rt
    args = {
      nice.level   = -11   # prioridad alta (más negativo = más prioridad)
      rt.prio      = 88    # prioridad RT (0–99)
      rt.time.soft = -1
      rt.time.hard = -1
    }
    flags = [ ifexists nofail ]
  }
]

Tras guardarlo, reinicia PipeWire:

systemctl --user restart pipewire pipewire-pulse

5.2. Dar privilegios de tiempo real al usuario

Instala y configura realtime-privileges:

sudo pacman -S realtime-privileges
sudo usermod -a -G realtime $USER

Cierra sesión y vuelve a entrar para que el grupo realtime se aplique. Este paquete crea reglas de límites RT razonables para el grupo, pensadas justamente para uso de audio profesional.

 

6. Uso avanzado de PipeWire con JACK

PipeWire puede actuar como servidor JACK sin que tengas que lanzar jackd manualmente.

6.1. Capa de compatibilidad JACK

Ya la tienes con:

sudo pacman -S pipewire-jack

Esto instala las bibliotecas libjack que redirigen las apps JACK hacia PipeWire.

6.2. Patchbays gráficos

  • QjackCtl (clásico, ahora funcionando sobre PipeWire):

    sudo pacman -S qjackctl
    pw-jack qjackctl
    
  • qpwgraph: patchbay nativo para PipeWire (muy recomendable):

    sudo pacman -S qpwgraph
    qpwgraph &
    
  • Helvum: patchbay GTK alternativo.

Con cualquiera de ellos puedes enrutar:

  • DAW → bus de efectos → monitores,

  • DAW → capturador para streaming,

  • Micrófonos y retornos hacia mezclas personalizadas, etc.

     

7. Monitorización y control en tiempo real

7.1. pw-top para ver carga y latencia

pw-top

Te mostrará para cada cliente PipeWire:

  • Uso de CPU.

  • Latencia efectiva.

  • Tamaños de bloque y estado.

Muy útil para localizar plugins o procesos que se comen la CPU y provocan XRUNs.

7.2. Controlar volúmenes y dispositivos con wpctl

Algunos ejemplos prácticos:

# Ver todo
wpctl status

# Subir volumen del sink por defecto un 5 %
wpctl set-volume @DEFAULT_SINK@ 0.05+

# Bajar volumen del micrófono por defecto un 10 %
wpctl set-volume @DEFAULT_SOURCE@ 0.10-

# Silenciar salida por defecto
wpctl set-mute @DEFAULT_SINK@ 1

# Cambiar dispositivo de salida por defecto (usando ID de wpctl status)
wpctl set-default 42
 

8. Depuración y resolución de problemas

8.1. Volcado completo del estado

pw-dump > pipewire-config.json

Ese JSON contiene la topología completa de nodos, dispositivos y propiedades. Es ideal para depurar o pedir ayuda en foros.

8.2. Revisar logs en vivo

journalctl --user -u pipewire -u pipewire-pulse -u wireplumber -f

Así puedes ver en tiempo real errores de dispositivos, módulos que fallan o reglas de WirePlumber que no se aplican.

8.3. Resetear la configuración del usuario

Si has roto algo tocando demasiadas cosas, puedes volver a la configuración por defecto haciendo:

systemctl --user stop pipewire pipewire-pulse wireplumber

rm -rf ~/.config/pipewire
rm -rf ~/.config/wireplumber

systemctl --user start pipewire pipewire-pulse wireplumber

Arch volverá a usar las configuraciones empaquetadas en /usr/share.

 

9. Bonus: cadena de efectos y uso "de estudio"

Para aprovechar PipeWire en entornos de producción/streaming se suele combinar con:

  • EasyEffects: procesador de efectos global (EQ, compresor, limitador, etc.) integradísimo con PipeWire.

  • qpwgraph o Helvum: para crear layouts de ruteo distintos (grabación, mezcla, streaming, directo…).

  • Ajustes de sistema orientados a audio profesional (gobernador de CPU en modo rendimiento, swappiness baja, etc.).

Ejemplo típico de flujo con PipeWire:

  1. Interfaz USB de audio como dispositivo por defecto.

  2. DAW (Ardour, Reaper, Bitwig…) conectado a través de pipewire-jack.

  3. EasyEffects como bus de efectos global para salida de monitores.

  4. Un patchbay (qpwgraph) gestionando rutas hacia OBS/streaming, grabadores externos, etc.

     

10. Conclusión

PipeWire ya no es “la novedad”: es el estándar moderno en Arch Linux. Con la combinación de PipeWire + WirePlumber + realtime-privileges puedes conseguir un sistema de audio:

  • Flexible (ruteos complejos estilo JACK),

  • Cómodo para el escritorio (todo lo que funcionaba con PulseAudio sigue funcionando),

  • Y apto para producción musical y streaming con baja latencia.

A partir de este tutorial puedes profundizar en:

  • Crear perfiles específicos por interfaz o escenario (estudio, directo, gaming…).

  • Automatizar cambios de ruteo con scripts.

  • Integrar efectos y mezcladores externos.

La documentación oficial de PipeWire y WirePlumber, junto con la wiki de Arch, son tu referencia principal para seguir subiendo de nivel.

Comentarios

Entradas populares de este blog

Mejorar rendimiento Firestorm Viewer

Nuestro Primeros Minutos en second life