Fixing Audio on a MacBook Pro (T2) with Linux and PipeWire

Fixing Audio on a MacBook Pro (T2) with Linux and PipeWire

Getting audio working on a MacBook Pro with Apple’s T2 chip can be tricky on modern Linux distributions. This post documents the exact steps I used to get full audio working on a MacBook Pro 16,1 (A2141) running Ubuntu Plucky with the T2Linux kernel, including an optional DSP speaker configuration.

The Problem

After following the T2Linux audio guide and installing PipeWire, I still had no sound. Tools that rely on PulseAudio compatibility failed:

pactl info
Connection failure: Connection refused
pa_context_connect() failed: Connection refused

Native PipeWire clients also failed to connect:

pw-cli info 0
Error: "failed to connect: Host is down"

Although pipewire.service appeared to be running, clients could not talk to the PipeWire core.

The Root Cause

PipeWire clients connect through the libpipewire-module-protocol-native module. If that module is not loaded, clients cannot connect, even if the PipeWire process is running. Some third-party scripts (including certain DSP installers) place a full /etc/pipewire/pipewire.conf that overrides the distribution’s default configuration in /usr/share/pipewire/pipewire.conf. Those overrides can omit the native protocol module, resulting in “Host is down”.

The Fix

  1. Reset PipeWire to defaults (removes overrides and stale user configs):

    sudo mv /etc/pipewire /etc/pipewire.disabled.$(date +%s)
    rm -rf ~/.config/pipewire ~/.local/state/pipewire
    systemctl --user daemon-reexec
    systemctl --user restart pipewire
    

    Verify the core is reachable:

    ls -l /run/user/1000/pipewire-0
    pw-cli info 0
    

    You should see a socket at /run/user/1000/pipewire-0 and JSON info from pw-cli.

  2. Restart the audio stack and confirm PulseAudio compatibility is active:

    systemctl --user restart wireplumber pipewire-pulse
    pactl info
    

    pactl info should print Server Name: PulseAudio (on PipeWire 1.x).

Optional: T2 DSP Configuration for MacBook Pro 16,1

The 16-inch MacBook Pro (16,1) has a multi-speaker layout. A community DSP configuration improves routing and EQ:

git clone -b speakers_161 https://github.com/lemmyg/t2-apple-audio-dsp.git
cd t2-apple-audio-dsp
bash install.sh

However, this installer may install a complete /etc/pipewire tree that replaces defaults and breaks connectivity again. The safe approach is:

  1. Disable the installer’s global config but keep its DSP files:

    sudo mv /etc/pipewire /etc/pipewire.dsp.disabled.$(date +%s)
    
  2. Copy only the DSP drop-in into the distribution’s drop-in directory:

    sudo mkdir -p /usr/share/pipewire/pipewire.conf.d
    sudo cp /etc/pipewire.dsp.disabled.*/pipewire.conf.d/10-t2_161_speakers.conf \
            /usr/share/pipewire/pipewire.conf.d/
    
  3. Ensure the drop-in extends, rather than replaces, the default modules. Open the copied file and change the first line:

    context.modules = [

    to:

    context.modules += [

    This keeps all default modules (including libpipewire-module-protocol-native) and adds the DSP filter-chain.

  4. Restart services and verify:

    systemctl --user restart pipewire wireplumber pipewire-pulse
    pactl info
    pactl list short sinks
    

    You should see the DSP sink (for example, a node created by the filter-chain). For a quick check:

    speaker-test -t wav -l 1
    

Results

After restoring the default PipeWire configuration and loading the DSP graph as a proper drop-in, audio works reliably. Clients connect to the PipeWire core, PulseAudio compatibility is available, and the multi-speaker DSP routing provides correct channel mapping and improved sound.

Tips

  • Do not replace /usr/share/pipewire/pipewire.conf. Use /usr/share/pipewire/pipewire.conf.d/ for additions.
  • If you see “Host is down” or “Connection refused,” check for overrides under /etc/pipewire and remove or rename them.
  • When merging custom configs, prefer context.modules += [ ... ] rather than redefining context.modules = [ ... ].

References

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.