PipeWire en Debian 12
El servidor de sonido predeterminado en Debian 12 Bookworm, es PipeWire en su versión 0.3.65. En una nueva instalación, no tendrá que realizar ninguna operación posterior, ya que el instalador de Debian, se ocupa de instalar y configurar el servidor de sonido PipeWire.
Este manual esta creado para aquellos ordenadores que se actualizan de Debian 11 a 12 y por algún motivo el proceso de actualización no a sido el correcto. Teniendo nosotros que solucionar el problema a posteriori.
Revisar la configuración actual
Lo primero que hacemos es revisar la configuración actual que tenemos, para ello vamos a usar el comando como usuario normal, no como root:
$ pactl info
y nos devuelve la siguiente salida. Nos fijamos en: Nombre del servidor, si la salida es: PulseAudio (on PipeWire 0.3.65), entonces significa que estamos usando PipeWire como servidor de sonido por defecto.
o afinamos más usando la tubería grep con el comando pactl info:
$ inxi -A
Si en Server-1, nos aparece: Pipewire en versión v: 0.3.65 en status: active, significa que tenemos, configurado por defecto: PipeWire, y ademas lo tenemos activo.
Si no tienes instalado el comando inxi, te toca instalarlo desde consola, usando: apt install inxi
La salida de cualquiera de los comandos anteriores, nos está indicando que tenemos configurado e instalado por defecto: PipeWire. Entonces...
Si en vez de aparecer PipeWire te aparece PulseAudio, esta claro, que no tienes instalado PipeWire.
¿Que está pasando?
Leo en el manual de Debian, que el administrador de sesiones recomendado para reemplazar PulseAudio, es pipewire-audio y este controla a wireplumber. Por tanto, procedemos a instalar: wireplumber
# apt install wireplumber
y este marca como dependencia: liblua5.3-0 y libwireplumber-0.4-0
Podemos instalar estos paquetes, pero aconsejo no hacerlo, esperar y pasar al siguiente punto de este manual.
Instalar PipeWire y Wireplumber
También se me ha dado el caso, en el que ni siquiera se ha instalado PipeWire, y se a quedado con PulseAudio. Y en otros casos, se ha instalado PipeWire, pero tampoco funciona, normalmente por la falta del paquete: wireplumber y lógicamente sus dependencias.
Entonces vamos a instalar todos los paquetes mínimos necesarios, para asegurarnos del correcto funcionamiento de PipeWire. Algunos pueden ser, que se encuentren instalados, en otros casos, faltarán todos los paqueste.
Los paquetes mínimos, necesarios para una instalación funcional de PipeWire son los siguientes:
pipewire
pipewire-bin
pipewire-pulse
libpipewire-0.3-modules
wireplumber
libwireplumber-0.4-0
liblua5.3-0
# apt install pipewire pipewire-bin pipewire-pulse wireplumber libwireplumber-0.4-0 liblua5.3-0 libpipewire-0.3-modules
Después de instalar, tenemos que iniciar el servidor pipewire (como usuario normal, no como root). O puedes reiniciar el ordenador (ya que es lo mismo)
Recordar que este proceso se hace como usuario normal, no como root.
Primero, vamos a parar el servicio de PulseAudio, usando el siguiente comando:
systemctl --user stop pulseaudio
Luego arrancamos pipewire, usando el siguiente comando:
systemctl --user start pipewire
y para aquellos que ya tenían instalado y corriendo pipewire, pero no les funcionaban, reinicia el servidor pipewire, usando el siguiente comando:
systemctl --user restart pipewire
Una vez realizado todo este proceso, ya tenemos funcionando pipewire.
Alsamixer
Recordar controlar el nivel de los canales en alsamixer, yo aconsejo ponerlos al máximo, (porque luego lo vas a controlar desde pipewire) porque si en alsamixer tenemos un nivel bajo o nivel cero, lógicamente, no va a sonar, aunque tengamos el nivel máximo en pipewire.
========================================================
Información - Lectura recomendada
Recomiendo la siguiente lectura, sobre: PipeWire, PulseAudio, ALSA, JACK, Bluetooth. El cual nos resolverá muchas dudas.
PipeWire
A diferencia de PulseAudio en el audio de consumo y de JACK en el audio profesional, PipeWire pretende trabajar para todos los usuarios en todos los niveles. Entre otras técnicas, PipeWire consigue esto gracias a la capacidad de cambiar dinámicamente entre diferentes tamaños de búfer, para adaptarse a los diferentes requisitos de latencia de diferentes aplicaciones de audio.
En Debian 11, está disponible PipeWire 0.3.19 y se puede usar de forma experimental como sustituto de la biblioteca de espacio de usuario de ALSA, PulseAudio, y JACK.
En Debian 12, PipeWire 0.3.65, es el servidor de sonido predeterminado.
PipeWire puede instalarse simplemente instalando el paquete: pipewire.
En Debian 10, algunos complementos se dividen en paquetes separados. Estos se pueden encontrar en: libspa-bluetooth y libspa-ffmpeg.
En Debian 11, ya no hay un paquete de complementos FFmpeg, y el paquete Bluetooth se ha movido a: libspa-0.2-bluetooth. También hay un complemento JACK en el paquete libspa-0.2-jack, necesario para usar PipeWire como servidor JACK.
Para Debian 11, PipeWire se puede usar para reemplazar PulseAudio. Además, está disponible el paquete: pipewire-audio-client-libraries. Las bibliotecas de este paquete permiten que las aplicaciones accedan directamente a JACK y ALSA a la salida a través del servidor PipeWire, lo que permite interactuar entre los diferentes servidores de sonido y APIs.
Para Debian 12 y posteriores, pipewire-audio-client-libraries se reemplaza por pipewire-alsa y pipewire-jack. Se recomienda instalar el metapaquete pipewire-audio que depende de wireplumber (el administrador de sesiones recomendado), pipewire-pulse (para reemplazar PulseAudio ), pipewire-alsa (ALSA) y libspa-0.2-bluetooth (para compatibilidad con Bluetooth). Además, la instalación de este metapaquete eliminará PulseAudio para evitar conflictos entre ambos servidores de sonido.
PipeWire la capacidad de ser el sustituto directo para las soluciones de audio de existentes en Linux, incluidos PulseAudio y JACK. Tiene una gran ventaja, incluyen un menor uso de la CPU, mejor soporte para dispositivos Bluetooth y mejor integración entre aplicaciones usando JACK y PulseAudio.
PipeWire arranca el servicio de audio a nivel de usuario normal (no como root), reemplazando completamente a PulseAudio.
Ejecute estos comandos como usuario normal (no como root):
Asegúrese de que esto continúe funcionando después de un reinicio. De lo contrario, es posible que deba "enmascarar" el servicio PulseAudio, ejecutando:
ALSA
ALSA es una parte esencial de la pila de audio en Linux y no puede ser reemplazado por PipeWire, proporciona la interfaz de los controladores de audio del kernel. PipeWire utiliza ALSA para acceder al hardware. El resto de las características son controladas por PipeWire.
JACK
Los clientes de JACK se pueden configurar para emitir a través de PipeWire en lugar de JACK.
Instale los paquetes pipewire-audio-client-libraries y libspa-0.2-jack , si aún no están instalados.
Crea este archivo vacío:
Ejecute clientes JACK usando el envoltorio pw-jack , o copie:
Y correr:
Luego tenemos que habilitar WirePlumber en systemd (ejecutándose como usuario normal, no como root):
El paquete WirePlumber recomienda instalar pipewire-pulse, por lo que normalmente, se instala automáticamente como dependencia. Solo tendrás que habilitar manualmente las capas ALSA y JACK, que ya no es necesario crear un archivo vacío en el directorio de configuración de su sesión de medios (ya que ese directorio ni siquiera existirá cuando use WirePlumber),
Si está interesado en el cambio automático de perfil de Bluetooth (por ejemplo, cambiar de A2DP a HSP/HFP cuando una aplicación necesita acceso al micrófono) WirePlumber obtuvo soporte en la versión 0.4.8.
Un cambio importante en comparación con Debian 11, es que el archivo de configuración se ha movido de directorio: /etc/pipewire/ a /usr/share/pipewire/
PulseAudio
Instale el paquete pipewire-pulse y reinicie. Esto configurará PipeWire para activar su daemon de reemplazo de PulseAudio. Verifique que esté habilitado ejecutando:
Ejecute estos comandos como usuario normal (no como root):
- Habilite e inicie el nuevo servicio pipewire-pulse con:
systemctl --user --now enable pipewire pipewire-pulse
- Buscar nuevos archivos de servicio con:
systemctl --user daemon-reload
- Deshabilite y detenga el servicio PulseAudio con:
systemctl --user --now disable pulseaudio.service pulseaudio.socket
Puede verificar qué servidor está en uso, como su usuario normal (no como root), ejecutando:
pactl info | grep 'Nombre del servidor'
Si usa PipeWire, el nombre del servidor será:
PulseAudio (On PipeWire 0.3.65)
pactl info
Asegúrese de que esto continúe funcionando después de un reinicio. De lo contrario, es posible que deba "enmascarar" el servicio PulseAudio, ejecutando:
systemctl --user mask pulseaudio
Esto puede requerir otro reinicio, después de lo cual PipeWire debe usarse exclusivamente, incluso después de más reinicios. Esto impedirá que el servicio PulseAudio se active por completo. Si desea restaurar la funcionalidad anterior, deberá ejecutar el mismo comando de nuevo con la acción "desenmascarar".
Esto puede requerir otro reinicio, después de lo cual PipeWire debe usarse exclusivamente, incluso después de más reinicios. Esto impedirá que el servicio PulseAudio se active por completo. Si desea restaurar la funcionalidad anterior, deberá ejecutar el mismo comando de nuevo con la acción "desenmascarar".
ALSA
ALSA es una parte esencial de la pila de audio en Linux y no puede ser reemplazado por PipeWire, proporciona la interfaz de los controladores de audio del kernel. PipeWire utiliza ALSA para acceder al hardware. El resto de las características son controladas por PipeWire.
JACK
Los clientes de JACK se pueden configurar para emitir a través de PipeWire en lugar de JACK.
Instale los paquetes pipewire-audio-client-libraries y libspa-0.2-jack , si aún no están instalados.
Crea este archivo vacío:
# touch /etc/pipewire/media-session.d/with-jack
# cp /usr/share/doc/pipewire/examples/ld.so.conf.d/pipewire-jack-*.conf /etc/ld.so.conf.d/
# ldconfig
Esto reemplazará las bibliotecas del servidor JACK con los reemplazos de PipeWire en el tiempo de ejecución de la aplicación, apuntando el enlazador dinámico a la carpeta:
Esto reemplazará las bibliotecas del servidor JACK con los reemplazos de PipeWire en el tiempo de ejecución de la aplicación, apuntando el enlazador dinámico a la carpeta:
/usr/lib/x86_64-linux-gnu/pipewire-0.3/jack/
Bluetooth
PipeWire generalmente funcionará bien junto con Bluez para proporcionar audio de alta calidad a dispositivos de audio habilitados para Bluetooth cuando se use como reemplazo de PulseAudio, con algunas advertencias.
Como mínimo, deberá instalar el paquete libspa-0.2-bluetooth, eliminar el paquete pulseaudio-module-bluetooth y luego reiniciar su computadora o reiniciar los servicios de PipeWire, en caso contrario, las conexiones del dispositivo fallarán con "Protocolo no disponible".
PipeWire intentará elegir el mejor códec posible de forma predeterminada. Puede anular esto y modificar muchas otras configuraciones relacionadas en el archivo /etc/pipewire/media-session.d/bluez-monitor.conf. Puede editar este archivo como usuario normal (no como root) copiando el archivo archivo anterior y editandolo en su carpeta personal:
Bluetooth
PipeWire generalmente funcionará bien junto con Bluez para proporcionar audio de alta calidad a dispositivos de audio habilitados para Bluetooth cuando se use como reemplazo de PulseAudio, con algunas advertencias.
Como mínimo, deberá instalar el paquete libspa-0.2-bluetooth, eliminar el paquete pulseaudio-module-bluetooth y luego reiniciar su computadora o reiniciar los servicios de PipeWire, en caso contrario, las conexiones del dispositivo fallarán con "Protocolo no disponible".
PipeWire intentará elegir el mejor códec posible de forma predeterminada. Puede anular esto y modificar muchas otras configuraciones relacionadas en el archivo /etc/pipewire/media-session.d/bluez-monitor.conf. Puede editar este archivo como usuario normal (no como root) copiando el archivo archivo anterior y editandolo en su carpeta personal:
~/.config/pipewire/media-session.d/bluez-monitor.conf
PipeWire en Debian 12 Bookworm
La versión de PipeWire de Debian 12, es mucho más fácil de configurar como un reemplazo.
Ahora hay dos administradores de sesión disponibles:
PipeWire en Debian 12 Bookworm
La versión de PipeWire de Debian 12, es mucho más fácil de configurar como un reemplazo.
Ahora hay dos administradores de sesión disponibles:
- pipewire-media-session se usa solo por su funcionalidad básica para compartir pantalla.
- WirePlumber como servidor de sonido del sistema operativo, (el mantenedor de Debian) recomienda instalar este paquete. Este comando instalará WirePlumber mientras elimina el antiguo administrador de sesión:
# apt install wireplumber
Luego tenemos que habilitar WirePlumber en systemd (ejecutándose como usuario normal, no como root):
$ systemctl --user --now enable wireplumber.service
Si está interesado en el cambio automático de perfil de Bluetooth (por ejemplo, cambiar de A2DP a HSP/HFP cuando una aplicación necesita acceso al micrófono) WirePlumber obtuvo soporte en la versión 0.4.8.
Un cambio importante en comparación con Debian 11, es que el archivo de configuración se ha movido de directorio: /etc/pipewire/ a /usr/share/pipewire/
PulseAudio
Instale el paquete pipewire-pulse y reinicie. Esto configurará PipeWire para activar su daemon de reemplazo de PulseAudio. Verifique que esté habilitado ejecutando:
pactl | grep 'Nombre del servidor'
Si PipeWire está configurado correctamente, esto imprimirá:
"Nombre del servidor: PulseAudio (en PipeWire 0.3.XX)"
Si no funciona correctamente, consulte las instrucciones mas arriba de Debian para enmascarar PulseAudio.
ALSA y JACK
Las instrucciones de Debian 11 todavía se aplican, en el momento de escribir este artículo.
Tenga en cuenta que los comandos "touch" son innecesarios si está utilizando WirePlumber en lugar de pipewire-media-session. Consulte la parte superior de este sección para obtener más detalles sobre qué administrador de sesión debe usar.
Si está utilizando pipewire-media-session, tenga en cuenta que la configuración, se ha cambiado de directorio, de: /etc/pipewire/media-session.d/ a /usr/share/pipewire/media-session.d y ajuste las rutas según sea necesario al hacer uso de las instrucciones anteriores.
ALSA y JACK
Las instrucciones de Debian 11 todavía se aplican, en el momento de escribir este artículo.
Tenga en cuenta que los comandos "touch" son innecesarios si está utilizando WirePlumber en lugar de pipewire-media-session. Consulte la parte superior de este sección para obtener más detalles sobre qué administrador de sesión debe usar.
Si está utilizando pipewire-media-session, tenga en cuenta que la configuración, se ha cambiado de directorio, de: /etc/pipewire/media-session.d/ a /usr/share/pipewire/media-session.d y ajuste las rutas según sea necesario al hacer uso de las instrucciones anteriores.
Bluetooth
PipeWire generalmente funcionará bien junto con Bluez para proporcionar audio de alta calidad a dispositivos de audio habilitados para Bluetooth cuando se use como reemplazo de PulseAudio, con algunas advertencias.
Como mínimo, deberá instalar el paquete libspa-0.2-bluetooth, eliminar el paquete pulseaudio-module-bluetooth y luego reiniciar su computadora o reiniciar los servicios de PipeWire, en caso contrario, las conexiones del dispositivo fallarán con "Protocolo no disponible".
PipeWire intentará elegir el mejor códec posible de forma predeterminada. Puede anular esto y modificar muchas otras configuraciones relacionadas en el archivo /etc/pipewire/media-session.d/bluez-monitor.conf. Puede editar este archivo como usuario normal (no como root) copiando el archivo archivo anterior y editandolo en su carpeta personal:
PipeWire generalmente funcionará bien junto con Bluez para proporcionar audio de alta calidad a dispositivos de audio habilitados para Bluetooth cuando se use como reemplazo de PulseAudio, con algunas advertencias.
Como mínimo, deberá instalar el paquete libspa-0.2-bluetooth, eliminar el paquete pulseaudio-module-bluetooth y luego reiniciar su computadora o reiniciar los servicios de PipeWire, en caso contrario, las conexiones del dispositivo fallarán con "Protocolo no disponible".
PipeWire intentará elegir el mejor códec posible de forma predeterminada. Puede anular esto y modificar muchas otras configuraciones relacionadas en el archivo /etc/pipewire/media-session.d/bluez-monitor.conf. Puede editar este archivo como usuario normal (no como root) copiando el archivo archivo anterior y editandolo en su carpeta personal:
~/.config/pipewire/media-session.d/bluez-monitor.conf