Line Out speakers of dock are not becoming the 'default.audio.sink' despite having a higher 'priority.driver' value
If you are filing this issue with a regular release please try master as it might already be fixed.
Version, Distribution, Desktop Environment:
- Fedora 34
- pipewire 0.3.25
Description of Problem:
My Line Out speakers connected to a Dell WD15 dock are not becoming the 'default.audio.sink' despite having a higher 'priority.driver' value when plugging in the USB-C cable of the dock.
I have added the following rules to both the alsa-monitor.conf as well as the bluez-monitor.conf
{
matches = [
{
node.name = "~bluez_output.AC_12_2F_20_5A_61.*"
}
]
actions = {
update-props = {
priority.driver = 10001
}
}
}
{
matches = [
{
node.name = "~alsa_output.usb-Generic_USB_Audio_200901010001-00.*"
}
]
actions = {
update-props = {
priority.driver = 10000
}
}
}
Before connecting the dock
➜ media-session.d pactl list sinks
Sink #57
State: SUSPENDED
Name: alsa_output.pci-0000_00_1f.3.analog-stereo
Description: Built-in Audio Analog Stereo
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 48287 / 74% / -7,96 dB, front-right: 48287 / 74% / -7,96 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
Properties:
object.path = "alsa:pcm:1:front:1:playback"
api.alsa.path = "front:1"
api.alsa.pcm.card = "1"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
device.routes = "2"
alsa.resolution_bits = "16"
device.api = "alsa"
device.class = "sound"
alsa.class = "generic"
alsa.subclass = "generic-mix"
alsa.name = "ALC3271 Analog"
alsa.id = "ALC3271 Analog"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.device = "0"
alsa.card = "1"
alsa.card_name = "HDA Intel PCH"
alsa.long_card_name = "HDA Intel PCH at 0xdc428000 irq 145"
alsa.driver_name = "snd_hda_intel"
device.profile.name = "analog-stereo"
device.profile.description = "Analog Stereo"
card.profile.device = "8"
device.id = "46"
factory.name = "api.alsa.pcm.sink"
priority.driver = "945"
priority.session = "945"
media.class = "Audio/Sink"
node.nick = "HDA Intel PCH"
node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
device.description = "Built-in Audio Analog Stereo"
node.pause-on-idle = "false"
factory.id = "18"
client.id = "31"
node.driver = "true"
factory.mode = "merge"
audio.adapt.follower = ""
library.name = "audioconvert/libspa-audioconvert"
object.id = "57"
node.max-latency = "8192/48000"
Ports:
analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability group: Legacy 3, availability unknown)
analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 2, not available)
Active Port: analog-output-speaker
Formats:
pcm
➜ media-session.d pw-metadata
Found "default" metadata 32
update: id:0 key:'default.audio.sink' value:'{ "name": "alsa_output.pci-0000_00_1f.3.analog-stereo" }' type:'Spa:String:JSON'
update: id:0 key:'default.audio.source' value:'{ "name": "alsa_input.pci-0000_00_1f.3.analog-stereo" }' type:'Spa:String:JSON'
update: id:0 key:'default.video.source' value:'{ "name": "v4l2_input.pci-0000_39_00.0-usb-0_1.7_1.0.2" }' type:'Spa:String:JSON'
After connecting the dock
➜ media-session.d pactl list sinks
Sink #57
State: SUSPENDED
Name: alsa_output.pci-0000_00_1f.3.analog-stereo
Description: Built-in Audio Analog Stereo
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 48287 / 74% / -7,96 dB, front-right: 48287 / 74% / -7,96 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
Properties:
object.path = "alsa:pcm:1:front:1:playback"
api.alsa.path = "front:1"
api.alsa.pcm.card = "1"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
device.routes = "2"
alsa.resolution_bits = "16"
device.api = "alsa"
device.class = "sound"
alsa.class = "generic"
alsa.subclass = "generic-mix"
alsa.name = "ALC3271 Analog"
alsa.id = "ALC3271 Analog"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.device = "0"
alsa.card = "1"
alsa.card_name = "HDA Intel PCH"
alsa.long_card_name = "HDA Intel PCH at 0xdc428000 irq 145"
alsa.driver_name = "snd_hda_intel"
device.profile.name = "analog-stereo"
device.profile.description = "Analog Stereo"
card.profile.device = "8"
device.id = "46"
factory.name = "api.alsa.pcm.sink"
priority.driver = "945"
priority.session = "945"
media.class = "Audio/Sink"
node.nick = "HDA Intel PCH"
node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
device.description = "Built-in Audio Analog Stereo"
node.pause-on-idle = "false"
factory.id = "18"
client.id = "31"
node.driver = "true"
factory.mode = "merge"
audio.adapt.follower = ""
library.name = "audioconvert/libspa-audioconvert"
object.id = "57"
node.max-latency = "8192/48000"
Ports:
analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability group: Legacy 3, availability unknown)
analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 2, not available)
Active Port: analog-output-speaker
Formats:
pcm
Sink #45
State: SUSPENDED
Name: alsa_output.usb-Generic_USB_Audio_200901010001-00.HiFi__hw_Dock_1__sink
Description: USB Audio Line Out
Driver: PipeWire
Sample Specification: s24le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 28627 / 44% / -21,58 dB, front-right: 28627 / 44% / -21,58 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: alsa_output.usb-Generic_USB_Audio_200901010001-00.HiFi__hw_Dock_1__sink.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY
Properties:
object.path = "alsa:pcm:0:hw:Dock,1:playback"
api.alsa.path = "hw:Dock,1"
api.alsa.pcm.card = "0"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
device.routes = "1"
alsa.mixer_device = "hw:Dock"
alsa.resolution_bits = "24"
device.api = "alsa"
device.class = "sound"
alsa.class = "generic"
alsa.subclass = "generic-mix"
alsa.name = "USB Audio #1"
alsa.id = "USB Audio"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.device = "1"
alsa.card = "0"
alsa.card_name = "WD15 Dock"
alsa.long_card_name = "Dell-WD15-Dock"
alsa.driver_name = "snd_usb_audio"
device.profile.name = "HiFi: hw:Dock,1: sink"
device.profile.description = "Line Out"
card.profile.device = "0"
device.id = "68"
factory.name = "api.alsa.pcm.sink"
priority.driver = "10000"
priority.session = "728"
media.class = "Audio/Sink"
node.nick = "WD15 Dock"
node.name = "alsa_output.usb-Generic_USB_Audio_200901010001-00.HiFi__hw_Dock_1__sink"
device.description = "USB Audio Line Out"
node.pause-on-idle = "false"
factory.id = "18"
client.id = "31"
node.driver = "true"
factory.mode = "merge"
audio.adapt.follower = ""
library.name = "audioconvert/libspa-audioconvert"
object.id = "45"
Ports:
[Out] Line: Line Out (type: Line, priority: 200, availability unknown)
Active Port: [Out] Line
Formats:
pcm
Sink #55
State: SUSPENDED
Name: alsa_output.usb-Generic_USB_Audio_200901010001-00.HiFi__hw_Dock__sink
Description: USB Audio Headphones
Driver: PipeWire
Sample Specification: s24le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 48287 / 74% / -7,96 dB, front-right: 48287 / 74% / -7,96 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: alsa_output.usb-Generic_USB_Audio_200901010001-00.HiFi__hw_Dock__sink.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY
Properties:
object.path = "alsa:pcm:0:hw:Dock:playback"
api.alsa.path = "hw:Dock"
api.alsa.pcm.card = "0"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
device.routes = "1"
alsa.mixer_device = "hw:Dock"
alsa.resolution_bits = "24"
device.api = "alsa"
device.class = "sound"
alsa.class = "generic"
alsa.subclass = "generic-mix"
alsa.name = "USB Audio"
alsa.id = "USB Audio"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.device = "0"
alsa.card = "0"
alsa.card_name = "WD15 Dock"
alsa.long_card_name = "Dell-WD15-Dock"
alsa.driver_name = "snd_usb_audio"
device.profile.name = "HiFi: hw:Dock: sink"
device.profile.description = "Headphones"
card.profile.device = "1"
device.id = "68"
factory.name = "api.alsa.pcm.sink"
priority.driver = "10000"
priority.session = "744"
media.class = "Audio/Sink"
node.nick = "WD15 Dock"
node.name = "alsa_output.usb-Generic_USB_Audio_200901010001-00.HiFi__hw_Dock__sink"
device.description = "USB Audio Headphones"
node.pause-on-idle = "false"
factory.id = "18"
client.id = "31"
node.driver = "true"
factory.mode = "merge"
audio.adapt.follower = ""
library.name = "audioconvert/libspa-audioconvert"
object.id = "55"
Ports:
[Out] Headphones: Headphones (type: Headphones, priority: 100, availability unknown)
Active Port: [Out] Headphones
Formats:
pcm
➜ media-session.d pw-metadata
Found "default" metadata 32
update: id:0 key:'default.audio.sink' value:'{ "name": "alsa_output.pci-0000_00_1f.3.analog-stereo" }' type:'Spa:String:JSON'
update: id:0 key:'default.audio.source' value:'{ "name": "alsa_input.pci-0000_00_1f.3.analog-stereo" }' type:'Spa:String:JSON'
update: id:0 key:'default.video.source' value:'{ "name": "v4l2_input.pci-0000_39_00.0-usb-0_1.7_1.0.2" }' type:'Spa:String:JSON'
So while the priority of the device is picked up as expected, the 'default.audio.sink' does not change.
FWIW, the second added rule regarding bluez works as epxected.