PIPEWIRE-T2-161-DSP(5) Linux Audio Configuration Manual Ubuntu 24.04 LTS (amd64)

Configuración DSP de 6 Canales para MacBook Pro 16,1 (2019, A2141) en Ubuntu 24.04 LTS

Parche y guía técnica para habilitar el grafo de filtros LV2, limitador LADSPA y convolución FIR de 6 canales (4 woofers con cancelación de fuerza + 2 tweeters) sobre PipeWire 1.0.7 y WirePlumber 0.4.17.

6-Channel Speaker DSP Configuration for MacBook Pro 16,1 (2019, A2141) on Ubuntu 24.04 LTS

Technical root-cause analysis and patched PipeWire 1.0.7 filter-chain configuration enabling LV2 bass enhancement, multiband compression, LADSPA brickwall limiting, and 4x FIR convolution across all 6 internal speaker channels.

1. SYNOPSIS

bash — ~/t2-macbook-pro-16-1-dsp-ubuntu-24.04
$ git clone https://github.com/mylnzon58/t2-macbook-pro-16-1-dsp-ubuntu-24.04.git
$ cd t2-macbook-pro-16-1-dsp-ubuntu-24.04
$ ./install.sh

2. ROOT CAUSE / DIAGNÓSTICO TÉCNICO

Al instalar el paquete o la rama speakers_161 de t2-apple-audio-dsp en Ubuntu 24.04 LTS (Noble Numbat), el servicio de usuario de PipeWire falla o no aplica la cadena DSP debido a cuatro incompatibilidades concretas entre versiones:

Deploying t2-apple-audio-dsp on Ubuntu 24.04 LTS (Noble Numbat) fails out of the box due to four version mismatches across PipeWire, WirePlumber, and the LV2 plugin descriptors:

Componente / Síntoma Causa técnica en Ubuntu 24.04 LTS Resolución aplicada
can't load plugin type 'lv2' El paquete stock pipewire 1.0.5-1ubuntu3 de Ubuntu 24.04 se compiló con -Dlv2=disabled (LP #2054223). Actualizar a pipewire 1.0.7-3~ubuntu24.04 desde ppa:pipewire-debian/pipewire-upstream.
libspa-filter-graph-plugin-lv2.so no existe Ese nombre pertenece a la arquitectura SPA de PipeWire ≥ 1.2. En PipeWire 1.0.x el módulo tiene otro nombre y ruta. Verificar presencia de /usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-filter-chain-lv2.so.
Rama master de t2-apple-audio-dsp inoperante master usa node.software-dsp de WirePlumber 0.5+ (Ubuntu 25.10/26.04). Ubuntu 24.04 incluye WirePlumber 0.4.17 (Lua). Usar arquitectura libpipewire-module-filter-chain en ~/.config/pipewire/pipewire.conf.d/.
control 'meter_in' / 'bypass' / 'cbe_0' can not be set En calf-plugins 0.90.3, meter_in, meter_out, clip_in, clip_out son lv2:OutputPort (solo lectura).
En lsp-plugins-lv2 1.2.14, bypass fue sustituido por enabled = 1 y la banda 0 no tiene puerto cbe_0.
Parchear 10-t2_161_speakers.conf según los descriptores RDF/Turtle reportados por lv2info.
journalctl --user -u pipewire (errores antes del parche)
mod.filter-chain: can't load plugin type 'lv2': No existe el archivo o el directorio
mod.filter-chain: can't load graph: No existe el archivo o el directorio
pw.conf: could not load mandatory module "libpipewire-module-filter-chain": No existe el archivo o el directorio

# Tras habilitar LV2 en PipeWire 1.0.7 sin corregir los puertos de Calf 0.90.3 y LSP 1.2.14:
mod.filter-chain: control 'meter_in' can not be set: No existe el archivo o el directorio
mod.filter-chain: control 'meter_out' can not be set: No existe el archivo o el directorio
mod.filter-chain: control 'clip_in' can not be set: No existe el archivo o el directorio
mod.filter-chain: control 'clip_out' can not be set: No existe el archivo o el directorio
mod.filter-chain: control 'bypass' can not be set: No existe el archivo o el directorio
mod.filter-chain: control 'cbe_0' can not be set: No existe el archivo o el directorio

3. DSP TOPOLOGY & 6-CHANNEL ROUTING

El controlador Apple T2 expone 6 canales PCM de salida mediante el perfil ALSA apple-t2x6.conf. El grafo procesa la entrada estéreo a 48 kHz y divide la señal hacia los 4 filtros FIR de convolución específicos del modelo MacBookPro16,1:

The Apple T2 audio controller exposes a 6-channel PCM playback interface via apple-t2x6.conf. The PipeWire filter graph processes stereo input at 48 kHz and feeds 4 builtin FIR convolvers loaded with the impulse responses extracted from macOS (Mac-E1008331FDC96864):

Signal Flow — effect_input.filter-chain-speakers → alsa_output.pci-0000_04_00.3.Speakers
[ Input Sink: FL / FR (2ch, 48kHz, priority.session = 1500) ]
       │
       ▼
[ LV2: Calf BassEnhancer (http://calf.sourceforge.net/plugins/BassEnhancer) ]
  freq = 120 Hz | drive = 8.5 | blend = -10.0 | floor = 40 Hz | amount = 0.9
       │
       ▼
[ LV2: LSP Multiband Compressor Stereo x8 (http://lsp-plug.in/plugins/lv2/mb_compressor_stereo) ]
  enabled = 1 | mode = 1 | Bands: B0 (<100Hz), B1 (100-500Hz), B2 (500-3000Hz), B7 (>3000Hz)
       │
       ▼
[ LADSPA: fastLookaheadLimiter (fast_lookahead_limiter_1913) ]
  Input gain = 0 dB | Limit = -1.0 dB | Release = 0.8 s
       │
       ├──────────────────────────────┐
       ▼ (Output 1: Left)             ▼ (Output 2: Right)
  ┌────┴────┐                    ┌────┴────┐
  ▼         ▼                    ▼         ▼
[convLW]  [convLT]             [convRW]  [convRT]    <-- 4x Builtin FIR Convolvers (44.1/48/96kHz)
  │         │                    │         │
  ├─► LW    │                    ├─► RW    │
  └─► LW2   │                    └─► RW2   │
  │   │     │                    │   │     │
  ▼   ▼     ▼                    ▼   ▼     ▼
AUX0 AUX1  AUX2                 AUX3 AUX4  AUX5
(FL) (SL)  (RL)                 (FR) (SR)  (RR)
LW1  LW2   Left Tweeter         RW1  RW2   Right Tweeter

4. CONFIGURATION PATCH (DIFF)

diff -u 10-t2_161_speakers.conf.orig config/pipewire/10-t2_161_speakers.conf
--- a/10-t2_161_speakers.conf
+++ b/10-t2_161_speakers.conf
@@ -21,10 +21,10 @@
                         level_in = 1.0
                         level_out = 1.0
                         amount = 0.9
-                        meter_in = 0
-                        meter_out = 0
-                        clip_in = 0
-                        clip_out = 0
+                        #meter_in = 0
+                        #meter_out = 0
+                        #clip_in = 0
+                        #clip_out = 0
                         drive = 8.5
                         blend = -10.0
                         freq = 120
@@ -40,7 +40,7 @@
                         control = {
                             # Enable
                             mode = 1
-                            bypass = 0
+                            enabled = 1
 
                             # Preamp volumes
                             g_in = 1.0
@@ -56,7 +56,7 @@
                             ofe_r = 0
 
                             # Band 0
-                            cbe_0 = 1
+                            #cbe_0 = 1
                             ce_0 = 1
                             al_0 = 0.501187 #-5 db
                             at_0 = 0.0
@@ -231,6 +231,7 @@
                 media.class = Audio/Sink
                 audio.channels = 2
                 audio.position = [ FL FR ]
+                priority.session = 1500
             }

5. INSTALLATION / INSTALACIÓN MANUAL O AUTOMÁTICA

El script ./install.sh automatiza todos los pasos. Si prefieres ejecutar el proceso manualmente paso a paso en terminal:

Running ./install.sh performs all steps automatically. For manual step-by-step installation:

bash — Manual Installation Steps
# 1. Instalar PipeWire 1.0.7 con soporte LV2 y plugins requeridos (Calf, LSP, SWH LADSPA)
$ sudo add-apt-repository -y ppa:pipewire-debian/pipewire-upstream
$ sudo apt-get update
$ sudo apt-get install -y pipewire libpipewire-0.3-modules pipewire-pulse pipewire-alsa \
    libspa-0.2-modules wireplumber calf-plugins lsp-plugins-lv2 swh-plugins

# 2. Instalar respuestas FIR (16,1), perfil ALSA de 6 canales, mixer paths y regla udev
$ sudo mkdir -p /usr/share/pipewire/devices/apple /usr/share/alsa-card-profile/mixer/profile-sets /usr/share/alsa-card-profile/mixer/paths
$ sudo cp fir/macbook_pro_t2_16_1_*.wav /usr/share/pipewire/devices/apple/
$ sudo cp config/alsa-card-profile/apple-t2x6.conf /usr/share/alsa-card-profile/mixer/profile-sets/
$ sudo cp config/alsa-card-profile/paths/t2-*.conf /usr/share/alsa-card-profile/mixer/paths/
$ sudo cp config/udev/91-audio-custom.rules /lib/udev/rules.d/
$ sudo udevadm control --reload-rules && sudo udevadm trigger

# 3. Desactivar config antigua en /etc (si existe) e instalar el grafo corregido
$ sudo mv /etc/pipewire/pipewire.conf.d/10-t2_161_speakers.conf /etc/pipewire/pipewire.conf.d/10-t2_161_speakers.conf.disabled 2>/dev/null || true
$ mkdir -p ~/.config/pipewire/pipewire.conf.d
$ cp config/pipewire/10-t2_161_speakers.conf ~/.config/pipewire/pipewire.conf.d/
$ systemctl --user restart pipewire wireplumber pipewire-pulse
Nota sobre el volumen de hardware: Hardware volume calibration note: El sink físico crudo (Apple Audio Device Speakers) debe permanecer al 100 % (1.00 / 0 dB) para que el compresor multibanda y el limitador LADSPA trabajen con su umbral real calibrado. El control de volumen diario se realiza sobre MacBook Pro T2 DSP Speakers. Keep the underlying hardware sink (Apple Audio Device Speakers) at 100% (1.00 / 0 dB) so the multiband compressor and LADSPA limiter operate at their calibrated thresholds. Control your listening volume via MacBook Pro T2 DSP Speakers.

6. VERIFICATION (WPCTL STATUS)

wpctl status
Audio
 ├─ Devices:
 │      50. Apple Audio Device                  [alsa]
 │  
 ├─ Sinks:
 │  *   39. MacBook Pro T2 DSP Speakers         [vol: 0.70]
 │      64. Apple Audio Device Speakers         [vol: 1.00]
 │      65. Apple Audio Device Headphones       [vol: 1.00]
 │  
 └─ Streams:
        40. effect_output.filter-chain-speakers                         
             53. output_AUX0     > Speaker:playback_FL	[active]
             54. output_AUX1     > Speaker:playback_SL	[active]
             55. output_AUX2     > Speaker:playback_RL	[active]
             56. output_AUX3     > Speaker:playback_FR	[active]
             57. output_AUX4     > Speaker:playback_SR	[active]
             58. output_AUX5     > Speaker:playback_RR	[active]

7. AUTHOR, MAINTAINER & SUPPORT (DONAR UN TECITO)

☕ ¿Te sirvió esta solución? Invitame un Tecito

Si este diagnóstico y parche de PipeWire + LV2 te ahorró horas de trabajo y devolvió a la vida los 6 parlantes de tu MacBook Pro 16" en Ubuntu 24.04, puedes apoyar estas soluciones open-source invitándome un Tecito o conectando conmigo en mis redes:

☕ Did this solution help you? Buy me a Tecito

If this PipeWire + LV2 root-cause analysis and patch saved you hours of debugging and brought your 16" MacBook Pro's 6 speakers back to life on Ubuntu 24.04, consider supporting my open-source solutions by donating a Tecito or connecting with me:

Author & Maintainer Juan Monzón (@mylnzon58)
AI Product | Full Stack Developer | Digital Products & Growth
📍 Argentina
Support / Donaciones https://tecito.app/juanjoclassic (☕ Invitame un Tecito por las soluciones)
LinkedIn https://www.linkedin.com/in/juan-m-97b85681/
Instagram @juanjoclassic (https://www.instagram.com/juanjoclassic/)
GitHub Profile https://github.com/mylnzon58 — mylnzon58@gmail.com
Source Repository https://github.com/mylnzon58/t2-macbook-pro-16-1-dsp-ubuntu-24.04
Upstream Credits FIR impulse response WAVs (macbook_pro_t2_16_1_*.wav) and base T2 topology by the T2 Linux Team (MIT License).