You are not logged in.

#1 2026-05-29 10:34:21

CuriousOne
Member
Registered: 2025-12-17
Posts: 12

Headphones not showing up in Pipewire/Wireplumber

I use a pair of Sony MDR-7506 headphones. They work completely fine, and until now I've never gone further than enabling the Wireplumber user unit and calling it a day.
However, I'm now trying to make a script to change outputs. However, my headphones aren't showing up as devices (nodes).
This is the output of wpctl status:

PipeWire 'pipewire-0' [1.6.6, user@linux, cookie:665356246]
 └─ Clients:
        32. xdg-desktop-portal                  [1.6.6, user@linux, pid:841]
        41. WirePlumber                         [1.6.6, user@linux, pid:8161]
        51. WirePlumber [export]                [1.6.6, user@linux, pid:8161]
        57. xdg-desktop-portal-wlr              [1.6.6, user@linux, pid:4850]
        58. wpctl                               [1.6.6, user@linux, pid:8366]

Audio
 ├─ Devices:
 │      46. Built-in Audio                      [alsa]
 │  
 ├─ Sinks:
 │  *   33. Built-in Audio Analog Stereo        [vol: 0.40]
 │  
 ├─ Sources:
 │  *   40. Built-in Audio Analog Stereo        [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:

Video
 ├─ Devices:
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:

After plugging the headphones in, nothing changes:

[user@linux ~]$ wpctl status > before
[user@linux ~]$ # plug headphones in
[user@linux ~]$ wpctl status > after
[user@linux ~]$ diff before after
7c7
<         58. wpctl                               [1.6.6, user@linux, pid:8544]
---
>         58. wpctl                               [1.6.6, user@linux, pid:8558]

pw-cli says much the same:

[user@linux ~]$ pw-cli ls Node
	id 29, type PipeWire:Interface:Node/3
 		object.serial = "29"
 		factory.id = "11"
 		priority.driver = "200000"
 		node.name = "Dummy-Driver"
	id 30, type PipeWire:Interface:Node/3
 		object.serial = "30"
 		factory.id = "11"
 		priority.driver = "190000"
 		node.name = "Freewheel-Driver"
	id 33, type PipeWire:Interface:Node/3
 		object.serial = "99"
 		object.path = "alsa:acp:PCH:6:playback"
 		factory.id = "19"
 		client.id = "51"
 		device.id = "46"
 		priority.session = "1009"
 		priority.driver = "1009"
 		node.description = "Built-in Audio Analog Stereo"
 		node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
 		node.nick = "ALC298 Analog"
 		media.class = "Audio/Sink"
	id 40, type PipeWire:Interface:Node/3
 		object.serial = "100"
 		object.path = "alsa:acp:PCH:0:capture"
 		factory.id = "19"
 		client.id = "51"
 		device.id = "46"
 		priority.session = "2009"
 		priority.driver = "2009"
 		node.description = "Built-in Audio Analog Stereo"
 		node.name = "alsa_input.pci-0000_00_1f.3.analog-stereo"
 		node.nick = "ALC298 Analog"
 		media.class = "Audio/Source"
	id 45, type PipeWire:Interface:Node/3
 		object.serial = "96"
 		factory.id = "14"
 		client.id = "51"
 		node.description = "BLE MIDI 1"
 		node.name = "bluez_midi.server"
 		media.class = "Midi/Bridge"
	id 48, type PipeWire:Interface:Node/3
 		object.serial = "93"
 		factory.id = "11"
 		client.id = "51"
 		priority.session = "100"
 		priority.driver = "1"
 		node.name = "Midi-Bridge"
 		media.class = "Midi/Bridge"

When there's audio playing through the headphones, however:

[user@linux ~]$ wpctl status
...

Audio
 ├─ Devices:
 │      46. Built-in Audio                      [alsa]
 │  
 ├─ Sinks:
 │  *   33. Built-in Audio Analog Stereo        [vol: 0.20]
 │  
 ├─ Sources:
 │  *   40. Built-in Audio Analog Stereo        [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:
        59. Music Player Daemon                                         
             61. output_FL       > ALC298 Analog:playback_FL	[active]
             63. output_FR       > ALC298 Analog:playback_FR	[active]

...

I'm not sure where to go from here... I spent half an hour or so searching online but I couldn't find any similar cases.

The wireplumber unit complains about missing deps for bluetooth and camera capture, but I don't think it's relevant.

[user@linux ~]$ systemctl status --user wireplumber
● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Fri 2026-05-29 11:09:37 BST; 17min ago
 Invocation: 2434942d060b4a3182dfb6c414ca4250
   Main PID: 8161 (wireplumber)
      Tasks: 6 (limit: 19024)
     Memory: 5.7M (peak: 6.6M)
        CPU: 516ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─8161 /usr/bin/wireplumber

May 29 11:09:37 linux systemd[682]: Started Multimedia Service Session Manager.
May 29 11:09:37 linux wireplumber[8161]: spa.bluez5: BlueZ system service is not available
May 29 11:09:37 linux wireplumber[8161]: wp-device: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
May 29 11:09:37 linux wireplumber[8161]: s-monitors-libcamera: PipeWire's libcamera SPA plugin is missing or broken. Some camera types may not be sup>

Offline

#2 2026-05-29 15:33:08

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,194

Re: Headphones not showing up in Pipewire/Wireplumber

This is normally hard tied to the codec/the driver and needs to be adjusted on a kernel level if you really want proper separation here (the default behavior is that the hardware internally mutes the speakers once you plug headphones, without the upper layers having a way to notice this). You might have a direct control option (check/post amixer -c0 , or whatever the actual card index is you see in aplay -l) in the likely event that this isn't the case, you need to enable some codec hints.

Assuming this to be the case, use https://bbs.archlinux.org/viewtopic.php … 1#p2008741 and the rest of that thread as a starting point, but if you have any questions to the procedure described there, please ask them here not there, to not dig out a solved thread.

Last edited by V1del (2026-05-29 15:39:42)

Offline

#3 2026-05-29 17:02:16

CuriousOne
Member
Registered: 2025-12-17
Posts: 12

Re: Headphones not showing up in Pipewire/Wireplumber

Here's the output of that command.

[user@linux ~]$ amixer -c0
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 127
  Mono: Playback 44 [35%] [-41.50dB] [on]
Simple mixer control 'Headphone',0
  Capabilities: pvolume pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 127
  Mono:
  Front Left: Playback 127 [100%] [0.00dB] [on]
  Front Right: Playback 127 [100%] [0.00dB] [on]
Simple mixer control 'Headphone',1
  Capabilities: pswitch
  Playback channels: Front Left - Front Right
  Mono:
  Front Left: Playback [on]
  Front Right: Playback [on]
Simple mixer control 'Speaker',0
  Capabilities: pvolume pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 127
  Mono:
  Front Left: Playback 0 [0%] [-63.50dB] [off]
  Front Right: Playback 0 [0%] [-63.50dB] [off]
Simple mixer control 'PCM',0
  Capabilities: pvolume
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Mono:
  Front Left: Playback 255 [100%] [0.00dB]
  Front Right: Playback 255 [100%] [0.00dB]
Simple mixer control 'Mic Boost',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 3
  Front Left: 0 [0%] [0.00dB]
  Front Right: 0 [0%] [0.00dB]
Simple mixer control 'IEC958',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'IEC958',1
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'IEC958',2
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Capture',0
  Capabilities: cvolume cswitch
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 127
  Front Left: Capture 127 [100%] [30.00dB] [on]
  Front Right: Capture 127 [100%] [30.00dB] [on]
Simple mixer control 'Auto-Mute Mode',0
  Capabilities: enum
  Items: 'Disabled' 'Enabled'
  Item0: 'Disabled'
Simple mixer control 'Dock Mic Boost',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 3
  Front Left: 0 [0%] [0.00dB]
  Front Right: 0 [0%] [0.00dB]
Simple mixer control 'Internal Mic Boost',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 3
  Front Left: 3 [100%] [30.00dB]
  Front Right: 3 [100%] [30.00dB]

It seems strange to me that Pipewire doesn't have a builtin way to switch between outputs manually, but what do I know.
I think this will take some time for me to understand, and I probably will have questions soon.

Offline

#4 2026-05-29 18:56:30

progandy
Member
Registered: 2012-05-17
Posts: 5,311

Re: Headphones not showing up in Pipewire/Wireplumber

by default you have one audio output device with multiple different outputs (ports). the sink basically chooses only the audio device. you have to change the port of that sink.

If you just want to globally switch all sound between headphones and speakers, that should be no problem. The easiest way would be to use pactl from libpulse

pactl list sinks

pactl set-sink-port @DEFAULT_SINK@ analog-output-speaker

pactl set-sink-port @DEFAULT_SINK@ analog-output-headphones

If you want to send different audio to both, it may be more difficult.

Last edited by progandy (2026-05-29 18:56:59)


| alias CUTF='LANG=en_XX.UTF-8@POSIX ' | alias ENGLISH='LANG=C.UTF-8 ' |

Offline

#5 2026-05-29 19:28:24

CuriousOne
Member
Registered: 2025-12-17
Posts: 12

Re: Headphones not showing up in Pipewire/Wireplumber

So I've made some progress. I enabled indep_hp, and set the profile to Pro Audio. Now the headphones do show up as a sink in the output of [bold]wpctl status[/bold], however the sink for the builtin speakers is gone, so only the headphones can play audio.

Audio
 ├─ Devices:
 │      42. Built-in Audio                      [alsa]
 │  
 ├─ Sinks:
 │      69. Built-in Audio Pro 3                [vol: 1.00]
 │     122. Built-in Audio Pro 7                [vol: 1.00]
 │  *  126. Built-in Audio Pro                  [vol: 1.35]
 │     154. Built-in Audio Pro 8                [vol: 1.00]
 │  
 ├─ Sources:
 │  *  123. Built-in Audio Pro                  [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:
        58. Music Player Daemon                                         
             60. output_FL       > ALC298 Analog:playback_AUX0	[init]
            176. output_FR       > PulseAudio Volume Control:input_FR	[init]

Offline

#6 2026-05-29 19:54:03

CuriousOne
Member
Registered: 2025-12-17
Posts: 12

Re: Headphones not showing up in Pipewire/Wireplumber

@progandy switching globally is indeed what I'm trying to do.
When using pactl, the sink port analog-output-speaker isn't outputting sound when the headphones are plugged in, regardless of when using indep_hp and Pro Audio profile or not.
This is a lot more involved that I thought it'd be.

Offline

#7 Yesterday 20:17:35

CuriousOne
Member
Registered: 2025-12-17
Posts: 12

Re: Headphones not showing up in Pipewire/Wireplumber

I'm gonna have to give up on this now, it's taking too much time to work out.
I can't get the sinks for both the headphones and the internal speakers to show up at once, for all my trying.
I also tried a different approach I found when searching online, which was following this (https://github.com/luisbocanegra/linux- … udio-ports) guide to step #2, which had both speaker and headphone ports, but would only send audio through the headphones no matter what.

Offline

Board footer

Powered by FluxBB