Audio, ALSA & PipeWire

WirePlumber 0.5 rejects an old 0.4 configuration

Migrate old WirePlumber Lua configuration to scoped SPA-JSON fragments after an upgrade, preserving device rules and avoiding outdated full-file overrides.

On this page
  1. Symptoms & scope
  2. Possible causes
  3. Diagnose safely
  4. Evidence-guided next steps
  5. References & review
  6. Related problems

Symptoms & scope

  • An upgrade leaves WirePlumber failed with an old-config message.
  • Rules in main.lua.d or bluetooth.lua.d no longer affect devices.

Relevant environment

WirePlumber 0.5 and later using configuration fragments; Lua scripting support is distinct from obsolete Lua configuration files.

Recognizable messages (synthetic examples)
wireplumber[2190]: Failed to load configuration: The configuration file at /home/user/.config/wireplumber/wireplumber.conf is likely an old WirePlumber 0.4 config and is not supported anymore.

Preserve and migrate the named override; this is not evidence of faulty ALSA hardware.

Possible causes

These are possible explanations, not a confirmed diagnosis. Several independent faults can coexist.

  • A copied 0.4 wireplumber.conf can still reference config/lua components that 0.5 no longer accepts.
  • Lua configuration directories need explicit migration; merely renaming .lua to .conf does not translate syntax or semantics.

Diagnose safely

Run one command at a time in the relevant session. Read the explanation first. Uppercase placeholders need your own values; tools and privileges vary by distribution. These commands are displayed here and never executed by the website.

Check 1

Read the installed daemon version without starting another instance.

wireplumber --version

Interpret the result: A 0.5-or-later version justifies the migration guide; retain the installed version because available options evolve.

Check 2

Read WirePlumber’s first configuration error and the exact named path.

journalctl --user -b -u wireplumber.service --no-pager -n 150

Interpret the result: An old 0.4 config refusal identifies the override to isolate. A different parse failure needs review of the actual fragment rather than deleting all policy.

Evidence-guided next steps

Isolate the obsolete full configuration

If the daemon identifies an old local wireplumber.conf, save it outside the active search path and let the distribution’s current default load. Restart only WirePlumber after ending recordings, then verify devices return before restoring custom behavior.

Precautions: Do not alter /usr/share defaults or discard the old file; it documents custom routing, profiles and Bluetooth behavior to port.

Recovery / rollback: Restore the saved override if testing an older compatible environment, or return to shipped defaults if the migrated version fails.

Did this solution help you?

Share this solution#

Port one device rule at a time

Translate needed rules into .conf fragments under ~/.config/wireplumber/wireplumber.conf.d using the migration guide’s matches/actions/update-props structure. Match the actual device.name or node.name and validate one rule before adding another.

Precautions: Rules and settings are different mechanisms; option names may differ between versions. Do not convert every Lua script by file extension alone.

Recovery / rollback: Remove the newly introduced fragment and restart WirePlumber if a rule hides devices or changes routes unexpectedly; keep the preserved original for reference.

Did this solution help you?

Share this solution#

References & review

This guide was prepared from primary project or distribution sources and reviewed on the date shown. This is an editorial source check, not evidence that a fix was reproduced on your hardware. Diagnostic log examples are synthetic fixtures. Version-dependent details must be checked against your installed release.