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
$ 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. |
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):
[ 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)
--- 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:
# 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
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)
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) |
| https://www.linkedin.com/in/juan-m-97b85681/ | |
| @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). |