You are not logged in.
Hi everyone,
I'm running Arch Linux and trying to split my audio outputs so I can use my rear jack (speakers) and front jack (headphones) independently for simultaneous playback of different audio streams. My sound card is a Realtek ALC897 on a desktop.
I'm using my speakers connected to the line-in port, which I've overridden to as a Front Speaker (out) using hdajackretask. This works flawlessly. audio plays through the speakers without issues.
I followed this detailed guide on GitHub: https://github.com/luisbocanegra/linux- … udio-ports I went through all the steps, including disabling headphone jack detection, applying the ALSA firmware patch with indep_hp=yes and vmaster=no, creating a custom ALSA profile set, and setting up the udev rule to link it to my card.
Card details from pactl list cards:
alsa_card.pci-0000_2f_00.4, Vendor ID: 0x1022, Product ID: 0x1487
Subdevices from aplay -l:
Device 0 (speakers) and device 2 (headphones)
The splitting itself works as intended! I can play different audio streams simultaneously on speakers and headphones. Per-sink volume control is there, and switching in pavucontrol or KDE's audio widget is fine. but PCM volume in alsamixer doesn't seem to affect anything this started right after following guide step 4.2
The Problem: On every boot, the headphones are muted by default. I have to manually open alsamixer -c1, unmute the Headphone control, and adjust the volume. Once I do that, everything is perfect until the next reboot. auto mute is disabled in alsamixer and I've tried saving the state with
sudo alsactl store
after unmuting and setting volumes, but it doesn't persist – headphones are still muted on boot. also the pcm volume not working upon increasing and decreasing. can anyone help?
Goal : I want to be able to make PCM volume work in alsamixer after splitting rear and front jacks to fix distortion (over-amplification, red bars in pcm) on my speakers and ensure my headphones stay unmuted on boot
Last edited by skull974 (2025-08-28 09:46:29)
Offline
alsactl store "should™" normally take effect... what do you get from
systemctl status alsa-restore
sudo alsactl dump-stateit's possible there's an attempt and a fail by wireplumber/pipewire to restore volumes, possibly from an older cache state. Without completely disabling HW volume control by wireplumber (... which could be an option in which case it should leave at least the pcm levels alone: https://pipewire.pages.freedesktop.org/ … properties - note the api.alsa.soft-mixer config option) try removing ~./local/state/wireplumber (...or at least the default-routes in that directory) and restarting it.
Other than that for more targeted help, can you post the files you created and adjusted as they exist on your system as well as
amixer -c1
pactl list cards
pactl list sinksso we all have the same picture of what we're dealing with (and use [code][/code] tags instead of quote for providing outputs)
Another simpler solution would be to just create a oneshot user service that get's invoked after pipewire has started that runs a script with the relevant amixer commands.
Last edited by V1del (2025-08-28 18:11:16)
Offline
systemctl status alsa-restore output
● alsa-restore.service - Save/Restore Sound Card State
Loaded: loaded (/usr/lib/systemd/system/alsa-restore.service; static)
Active: active (exited) since Fri 2025-08-29 00:23:43 IST; 1min 43s ago
Invocation: d50f53b7ed6b4b87822f52b269b1d875
Process: 630 ExecStart=/usr/bin/alsactl restore (code=exited, status=99)
Main PID: 630 (code=exited, status=99)
Mem peak: 2.2M
CPU: 8ms
Aug 29 00:23:43 archlinux systemd[1]: Starting Save/Restore Sound Card State...
Aug 29 00:23:43 archlinux alsactl[630]: Found hardware: "HDA-Intel" "Realtek ALC897" "HDA:10ec0897,14629c95,00100500" "0x1462" "0x9c95"
Aug 29 00:23:43 archlinux alsactl[630]: Hardware is initialized using a generic method
Aug 29 00:23:43 archlinux alsactl[630]: /usr/bin/alsactl: set_control:1346: failed to obtain info for control #18 (No such file or directory)
Aug 29 00:23:43 archlinux alsactl[630]: /usr/bin/alsactl: set_control:1346: failed to obtain info for control #19 (No such file or directory)
Aug 29 00:23:43 archlinux systemd[1]: Finished Save/Restore Sound Card State.sudo alsactl dump-state output
state.HDMI {
control.1 {
iface CARD
name 'HDMI/DP,pcm=3 Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.2 {
iface MIXER
name 'IEC958 Playback Con Mask'
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.3 {
iface MIXER
name 'IEC958 Playback Pro Mask'
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.4 {
iface MIXER
name 'IEC958 Playback Default'
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.5 {
iface MIXER
name 'IEC958 Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.6 {
iface PCM
device 3
name ELD
value ''
comment {
access 'read volatile'
type BYTES
count 0
}
}
control.7 {
iface CARD
name 'HDMI/DP,pcm=7 Jack'
value true
comment {
access read
type BOOLEAN
count 1
}
}
control.8 {
iface MIXER
name 'IEC958 Playback Con Mask'
index 1
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.9 {
iface MIXER
name 'IEC958 Playback Pro Mask'
index 1
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.10 {
iface MIXER
name 'IEC958 Playback Default'
index 1
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.11 {
iface MIXER
name 'IEC958 Playback Switch'
index 1
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.12 {
iface PCM
device 7
name ELD
value '100007006914000100000000000000000472e10d564732343059204d33090707'
comment {
access 'read volatile'
type BYTES
count 32
}
}
control.13 {
iface CARD
name 'HDMI/DP,pcm=8 Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.14 {
iface MIXER
name 'IEC958 Playback Con Mask'
index 2
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.15 {
iface MIXER
name 'IEC958 Playback Pro Mask'
index 2
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.16 {
iface MIXER
name 'IEC958 Playback Default'
index 2
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.17 {
iface MIXER
name 'IEC958 Playback Switch'
index 2
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.18 {
iface PCM
device 8
name ELD
value ''
comment {
access 'read volatile'
type BYTES
count 0
}
}
control.19 {
iface CARD
name 'HDMI/DP,pcm=9 Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.20 {
iface MIXER
name 'IEC958 Playback Con Mask'
index 3
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.21 {
iface MIXER
name 'IEC958 Playback Pro Mask'
index 3
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.22 {
iface MIXER
name 'IEC958 Playback Default'
index 3
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.23 {
iface MIXER
name 'IEC958 Playback Switch'
index 3
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.24 {
iface PCM
device 9
name ELD
value ''
comment {
access 'read volatile'
type BYTES
count 0
}
}
control.25 {
iface CARD
name 'HDMI/DP,pcm=10 Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.26 {
iface MIXER
name 'IEC958 Playback Con Mask'
index 4
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.27 {
iface MIXER
name 'IEC958 Playback Pro Mask'
index 4
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.28 {
iface MIXER
name 'IEC958 Playback Default'
index 4
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.29 {
iface MIXER
name 'IEC958 Playback Switch'
index 4
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.30 {
iface PCM
device 10
name ELD
value ''
comment {
access 'read volatile'
type BYTES
count 0
}
}
control.31 {
iface PCM
device 3
name 'Playback Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
comment {
access 'read write volatile'
type INTEGER
count 8
range '0 - 36'
}
}
control.32 {
iface PCM
device 7
name 'Playback Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
comment {
access 'read write volatile'
type INTEGER
count 8
range '0 - 36'
}
}
control.33 {
iface PCM
device 8
name 'Playback Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
comment {
access 'read write volatile'
type INTEGER
count 8
range '0 - 36'
}
}
control.34 {
iface PCM
device 9
name 'Playback Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
comment {
access 'read write volatile'
type INTEGER
count 8
range '0 - 36'
}
}
control.35 {
iface PCM
device 10
name 'Playback Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
comment {
access 'read write volatile'
type INTEGER
count 8
range '0 - 36'
}
}
}
state.Generic {
control.1 {
iface MIXER
name 'Line Out Playback Volume'
value.0 87
value.1 87
comment {
access 'read write'
type INTEGER
count 2
range '0 - 87'
dbmin -6525
dbmax 0
dbvalue.0 0
dbvalue.1 0
}
}
control.2 {
iface MIXER
name 'Line Out Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.3 {
iface MIXER
name 'Headphone Playback Volume'
value.0 87
value.1 87
comment {
access 'read write'
type INTEGER
count 2
range '0 - 87'
dbmin -6525
dbmax 0
dbvalue.0 0
dbvalue.1 0
}
}
control.4 {
iface MIXER
name 'Headphone Playback Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.5 {
iface MIXER
name 'Speaker Playback Volume'
value.0 87
value.1 87
comment {
access 'read write'
type INTEGER
count 2
range '0 - 87'
dbmin -6525
dbmax 0
dbvalue.0 0
dbvalue.1 0
}
}
control.6 {
iface MIXER
name 'Speaker Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.7 {
iface MIXER
name 'Independent HP'
value Enabled
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disabled
item.1 Enabled
}
}
control.8 {
iface MIXER
name 'Loopback Mixing'
value Disabled
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disabled
item.1 Enabled
}
}
control.9 {
iface MIXER
name 'Rear Mic Playback Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 31'
dbmin -3450
dbmax 1200
dbvalue.0 -3450
dbvalue.1 -3450
}
}
control.10 {
iface MIXER
name 'Rear Mic Playback Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.11 {
iface MIXER
name 'Front Mic Playback Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 31'
dbmin -3450
dbmax 1200
dbvalue.0 -3450
dbvalue.1 -3450
}
}
control.12 {
iface MIXER
name 'Front Mic Playback Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.13 {
iface MIXER
name 'Auto-Mute Mode'
value Disabled
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disabled
item.1 Enabled
}
}
control.14 {
iface MIXER
name 'Capture Volume'
value.0 63
value.1 63
comment {
access 'read write'
type INTEGER
count 2
range '0 - 63'
dbmin -1725
dbmax 3000
dbvalue.0 3000
dbvalue.1 3000
}
}
control.15 {
iface MIXER
name 'Capture Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.16 {
iface MIXER
name 'Rear Mic Boost Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 3'
dbmin 0
dbmax 3000
dbvalue.0 0
dbvalue.1 0
}
}
control.17 {
iface MIXER
name 'Front Mic Boost Volume'
value.0 3
value.1 3
comment {
access 'read write'
type INTEGER
count 2
range '0 - 3'
dbmin 0
dbmax 3000
dbvalue.0 3000
dbvalue.1 3000
}
}
control.18 {
iface MIXER
name 'Master Playback Volume'
value 87
comment {
access 'read write'
type INTEGER
count 1
range '0 - 87'
dbmin -6525
dbmax 0
dbvalue.0 0
}
}
control.19 {
iface MIXER
name 'Master Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.20 {
iface CARD
name 'Rear Mic Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.21 {
iface CARD
name 'Front Mic Jack'
value true
comment {
access read
type BOOLEAN
count 1
}
}
control.22 {
iface CARD
name 'Line Out Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.23 {
iface CARD
name 'Headphone Phantom Jack'
value true
comment {
access read
type BOOLEAN
count 1
}
}
control.24 {
iface CARD
name 'Front Speaker Phantom Jack'
value true
comment {
access read
type BOOLEAN
count 1
}
}
control.25 {
iface PCM
name 'Playback Channel Map'
value.0 3
value.1 4
comment {
access 'read volatile'
type INTEGER
count 2
range '0 - 36'
}
}
control.26 {
iface PCM
name 'Capture Channel Map'
value.0 0
value.1 0
comment {
access 'read volatile'
type INTEGER
count 2
range '0 - 36'
}
}
control.27 {
iface PCM
device 2
name 'Playback Channel Map'
value.0 0
value.1 0
comment {
access 'read volatile'
type INTEGER
count 2
range '0 - 36'
}
}
control.28 {
iface MIXER
name 'PCM Playback Volume'
value.0 255
value.1 255
comment {
access 'read write user'
type INTEGER
count 2
range '0 - 255'
tlv '0000000100000008ffffec1400000014'
dbmin -5100
dbmax 0
dbvalue.0 0
dbvalue.1 0
}
}
}amixer -c1 output
Simple mixer control 'Headphone',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 87
Mono:
Front Left: Playback 56 [64%] [-23.25dB] [on]
Front Right: Playback 56 [64%] [-23.25dB] [on]
Simple mixer control 'Speaker',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 87
Mono:
Front Left: Playback 87 [100%] [0.00dB] [on]
Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'PCM',0
Capabilities: pvolume
Playback channels: Front Left - Front Right
Limits: Playback 0 - 255
Mono:
Front Left: Playback 252 [99%] [-0.60dB]
Front Right: Playback 252 [99%] [-0.60dB]
Simple mixer control 'Front Mic',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-34.50dB] [off]
Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'Front 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]
Simple mixer control 'Line Out',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 87
Mono:
Front Left: Playback 87 [100%] [0.00dB] [on]
Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch
Capture channels: Front Left - Front Right
Limits: Capture 0 - 63
Front Left: Capture 63 [100%] [30.00dB] [on]
Front Right: Capture 63 [100%] [30.00dB] [on]
Simple mixer control 'Auto-Mute Mode',0
Capabilities: enum
Items: 'Disabled' 'Enabled'
Item0: 'Disabled'
Simple mixer control 'Independent HP',0
Capabilities: enum
Items: 'Disabled' 'Enabled'
Item0: 'Enabled'
Simple mixer control 'Loopback Mixing',0
Capabilities: enum
Items: 'Disabled' 'Enabled'
Item0: 'Disabled'
Simple mixer control 'Rear Mic',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-34.50dB] [off]
Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'Rear 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]
[skull@archlinux ~]$ amixer -c1
Simple mixer control 'Headphone',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 87
Mono:
Front Left: Playback 56 [64%] [-23.25dB] [on]
Front Right: Playback 56 [64%] [-23.25dB] [on]
Simple mixer control 'Speaker',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 87
Mono:
Front Left: Playback 87 [100%] [0.00dB] [on]
Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'PCM',0
Capabilities: pvolume
Playback channels: Front Left - Front Right
Limits: Playback 0 - 255
Mono:
Front Left: Playback 252 [99%] [-0.60dB]
Front Right: Playback 252 [99%] [-0.60dB]
Simple mixer control 'Front Mic',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-34.50dB] [off]
Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'Front 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]
Simple mixer control 'Line Out',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 87
Mono:
Front Left: Playback 87 [100%] [0.00dB] [on]
Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch
Capture channels: Front Left - Front Right
Limits: Capture 0 - 63
Front Left: Capture 63 [100%] [30.00dB] [on]
Front Right: Capture 63 [100%] [30.00dB] [on]
Simple mixer control 'Auto-Mute Mode',0
Capabilities: enum
Items: 'Disabled' 'Enabled'
Item0: 'Disabled'
Simple mixer control 'Independent HP',0
Capabilities: enum
Items: 'Disabled' 'Enabled'
Item0: 'Enabled'
Simple mixer control 'Loopback Mixing',0
Capabilities: enum
Items: 'Disabled' 'Enabled'
Item0: 'Disabled'
Simple mixer control 'Rear Mic',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-34.50dB] [off]
Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'Rear 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]pactl list cards output
Card #50
Name: alsa_card.pci-0000_2f_00.4
Driver: alsa
Owner Module: n/a
Properties:
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "1"
api.alsa.card.longname = "HD-Audio Generic at 0xfcb00000 irq 91"
api.alsa.card.name = "HD-Audio Generic"
api.alsa.path = "hw:1"
api.alsa.split-enable = "true"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio1"
api.dbus.ReserveDevice1.Priority = "-20"
device.api = "alsa"
device.bus = "pci"
device.bus_path = "pci-0000:2f:00.4"
device.description = "Starship/Matisse HD Audio Controller"
device.enum.api = "udev"
device.icon_name = "audio-card-analog-pci"
device.name = "alsa_card.pci-0000_2f_00.4"
device.nick = "HD-Audio Generic"
device.plugged.usec = "8739582"
device.product.id = "0x1487"
device.product.name = "Starship/Matisse HD Audio Controller"
device.profile-set = "/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf"
device.subsystem = "sound"
sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:2f:00.4/sound/card1"
device.vendor.id = "0x1022"
device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
media.class = "Audio/Device"
spa.object.id = "4"
factory.id = "15"
client.id = "46"
object.id = "50"
object.serial = "50"
object.path = "alsa:acp:Generic"
alsa.card = "1"
alsa.card_name = "HD-Audio Generic"
alsa.long_card_name = "HD-Audio Generic at 0xfcb00000 irq 91"
alsa.driver_name = "snd_hda_intel"
alsa.mixer_name = "Realtek ALC897"
alsa.components = "HDA:10ec0897,14629c95,00100500"
alsa.id = "Generic"
device.string = "1"
Profiles:
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
output:analog-stereo-speaker+input:analog-stereo-input: Speakers Output + Microphone Input (sinks: 1, sources: 1, priority: 5050, available: yes)
output:analog-stereo-headphones+input:analog-stereo-input: Headphones Output + Microphone Input (sinks: 1, sources: 1, priority: 5050, available: yes)
output:analog-stereo-speaker: Speakers Output (sinks: 1, sources: 0, priority: 5000, available: yes)
output:analog-stereo-headphones: Headphones Output (sinks: 1, sources: 0, priority: 5000, available: yes)
output:analog-stereo-headphones+output:analog-stereo-speaker+input:analog-stereo-input: Analog Stereo Duplex (sinks: 2, sources: 1, priority: 80, available: yes)
output:analog-stereo-headphones+output:analog-stereo-speaker: Analog Stereo Outputs Only (sinks: 2, sources: 0, priority: 70, available: yes)
input:analog-stereo-input: Microphone Input (sinks: 0, sources: 1, priority: 50, available: yes)
pro-audio: Pro Audio (sinks: 2, sources: 1, priority: 1, available: yes)
Active Profile: output:analog-stereo-headphones+output:analog-stereo-speaker+input:analog-stereo-input
Ports:
analog-output-headphones: Headphones (type: Headphones, priority: 9900, latency offset: 0 usec, availability group: Legacy 3, availability unknown)
Properties:
port.type = "headphones"
port.availability-group = "Legacy 3"
device.icon_name = "audio-headphones"
card.profile.port = "0"
Part of profile(s): output:analog-stereo-headphones+output:analog-stereo-speaker+input:analog-stereo-input, output:analog-stereo-headphones+output:analog-stereo-speaker, output:analog-stereo-headphones, output:analog-stereo-headphones+input:analog-stereo-input
analog-output-speaker-split: Speakers (type: Speaker, priority: 10000, latency offset: 0 usec, availability unknown)
Properties:
port.type = "speaker"
device.icon_name = "audio-speakers"
card.profile.port = "1"
Part of profile(s): output:analog-stereo-headphones+output:analog-stereo-speaker+input:analog-stereo-input, output:analog-stereo-headphones+output:analog-stereo-speaker, output:analog-stereo-speaker, output:analog-stereo-speaker+input:analog-stereo-input
analog-input-front-mic: Front Microphone (type: Mic, priority: 8500, latency offset: 0 usec, availability group: Legacy 1, available)
Properties:
port.type = "mic"
port.availability-group = "Legacy 1"
device.icon_name = "audio-input-microphone"
card.profile.port = "2"
Part of profile(s): output:analog-stereo-headphones+output:analog-stereo-speaker+input:analog-stereo-input, input:analog-stereo-input, output:analog-stereo-speaker+input:analog-stereo-input, output:analog-stereo-headphones+input:analog-stereo-input
analog-input-rear-mic: Rear Microphone (type: Mic, priority: 8200, latency offset: 0 usec, availability group: Legacy 2, not available)
Properties:
port.type = "mic"
port.availability-group = "Legacy 2"
device.icon_name = "audio-input-microphone"
card.profile.port = "3"
Part of profile(s): output:analog-stereo-headphones+output:analog-stereo-speaker+input:analog-stereo-input, input:analog-stereo-input, output:analog-stereo-speaker+input:analog-stereo-input, output:analog-stereo-headphones+input:analog-stereo-input
Card #51
Name: alsa_card.pci-0000_2d_00.1
Driver: alsa
Owner Module: n/a
Properties:
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "0"
api.alsa.card.longname = "HDA ATI HDMI at 0xfcd20000 irq 90"
api.alsa.card.name = "HDA ATI HDMI"
api.alsa.path = "hw:0"
api.alsa.split-enable = "true"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio0"
api.dbus.ReserveDevice1.Priority = "-20"
device.api = "alsa"
device.bus = "pci"
device.bus_path = "pci-0000:2d:00.1"
device.description = "Navi 21/23 HDMI/DP Audio Controller"
device.enum.api = "udev"
device.icon_name = "audio-card-analog-pci"
device.name = "alsa_card.pci-0000_2d_00.1"
device.nick = "HDA ATI HDMI"
device.plugged.usec = "8717255"
device.product.id = "0xab28"
device.product.name = "Navi 21/23 HDMI/DP Audio Controller"
device.subsystem = "sound"
sysfs.path = "/devices/pci0000:00/0000:00:03.1/0000:2b:00.0/0000:2c:00.0/0000:2d:00.1/sound/card0"
device.vendor.id = "0x1002"
device.vendor.name = "Advanced Micro Devices, Inc. [AMD/ATI]"
media.class = "Audio/Device"
spa.object.id = "2"
factory.id = "15"
client.id = "46"
object.id = "51"
object.serial = "51"
object.path = "alsa:acp:HDMI"
alsa.card = "0"
alsa.card_name = "HDA ATI HDMI"
alsa.long_card_name = "HDA ATI HDMI at 0xfcd20000 irq 90"
alsa.driver_name = "snd_hda_intel"
alsa.mixer_name = "ATI R6xx HDMI"
alsa.components = "HDA:1002aa01,00aa0100,00100800"
alsa.id = "HDMI"
device.string = "0"
Profiles:
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
output:hdmi-stereo: Digital Stereo (HDMI) Output (sinks: 1, sources: 0, priority: 5900, available: no)
output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (sinks: 1, sources: 0, priority: 5700, available: yes)
output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (sinks: 1, sources: 0, priority: 5700, available: no)
output:hdmi-stereo-extra3: Digital Stereo (HDMI 4) Output (sinks: 1, sources: 0, priority: 5700, available: no)
output:hdmi-stereo-extra4: Digital Stereo (HDMI 5) Output (sinks: 1, sources: 0, priority: 5700, available: no)
output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (sinks: 1, sources: 0, priority: 800, available: no)
output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (sinks: 1, sources: 0, priority: 800, available: no)
output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (sinks: 1, sources: 0, priority: 600, available: no)
output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (sinks: 1, sources: 0, priority: 600, available: no)
output:hdmi-surround-extra3: Digital Surround 5.1 (HDMI 4) Output (sinks: 1, sources: 0, priority: 600, available: no)
output:hdmi-surround71-extra3: Digital Surround 7.1 (HDMI 4) Output (sinks: 1, sources: 0, priority: 600, available: no)
output:hdmi-surround-extra4: Digital Surround 5.1 (HDMI 5) Output (sinks: 1, sources: 0, priority: 600, available: no)
output:hdmi-surround71-extra4: Digital Surround 7.1 (HDMI 5) Output (sinks: 1, sources: 0, priority: 600, available: no)
pro-audio: Pro Audio (sinks: 5, sources: 0, priority: 1, available: yes)
Active Profile: output:hdmi-stereo-extra1
Ports:
hdmi-output-0: HDMI / DisplayPort (type: HDMI, priority: 5900, latency offset: 0 usec, availability group: Legacy 1, not available)
Properties:
port.type = "hdmi"
port.availability-group = "Legacy 1"
device.icon_name = "video-display"
card.profile.port = "0"
Part of profile(s): output:hdmi-stereo, output:hdmi-surround, output:hdmi-surround71
hdmi-output-1: HDMI / DisplayPort 2 (type: HDMI, priority: 5800, latency offset: 0 usec, availability group: Legacy 2, available)
Properties:
port.type = "hdmi"
port.availability-group = "Legacy 2"
device.icon_name = "video-display"
card.profile.port = "1"
device.product.name = "VG240Y M3"
iec958.codecs.detected = "[\"PCM\"]"
Part of profile(s): output:hdmi-stereo-extra1
hdmi-output-2: HDMI / DisplayPort 3 (type: HDMI, priority: 5700, latency offset: 0 usec, availability group: Legacy 3, not available)
Properties:
port.type = "hdmi"
port.availability-group = "Legacy 3"
device.icon_name = "video-display"
card.profile.port = "2"
Part of profile(s): output:hdmi-stereo-extra2, output:hdmi-surround-extra2, output:hdmi-surround71-extra2
hdmi-output-3: HDMI / DisplayPort 4 (type: HDMI, priority: 5600, latency offset: 0 usec, availability group: Legacy 4, not available)
Properties:
port.type = "hdmi"
port.availability-group = "Legacy 4"
device.icon_name = "video-display"
card.profile.port = "3"
Part of profile(s): output:hdmi-stereo-extra3, output:hdmi-surround-extra3, output:hdmi-surround71-extra3
hdmi-output-4: HDMI / DisplayPort 5 (type: HDMI, priority: 5500, latency offset: 0 usec, availability group: Legacy 5, not available)
Properties:
port.type = "hdmi"
port.availability-group = "Legacy 5"
device.icon_name = "video-display"
card.profile.port = "4"
Part of profile(s): output:hdmi-stereo-extra4, output:hdmi-surround-extra4, output:hdmi-surround71-extra4pactl list sinks output
Sink #55
State: RUNNING
Name: alsa_output.pci-0000_2f_00.4.analog-stereo-headphones
Description: Starship/Matisse HD Audio Controller Headphones
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 26214 / 40% / -23.88 dB, front-right: 26214 / 40% / -23.88 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor Source: alsa_output.pci-0000_2f_00.4.analog-stereo-headphones.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
Properties:
alsa.card = "1"
alsa.card_name = "HD-Audio Generic"
alsa.class = "generic"
alsa.components = "HDA:10ec0897,14629c95,00100500"
alsa.device = "2"
alsa.driver_name = "snd_hda_intel"
alsa.id = "ALC897 Alt Analog"
alsa.long_card_name = "HD-Audio Generic at 0xfcb00000 irq 91"
alsa.mixer_name = "Realtek ALC897"
alsa.name = "ALC897 Alt Analog"
alsa.resolution_bits = "16"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
api.alsa.card.longname = "HD-Audio Generic at 0xfcb00000 irq 91"
api.alsa.card.name = "HD-Audio Generic"
api.alsa.path = "hw:1,2"
api.alsa.pcm.card = "1"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
card.profile.device = "0"
device.api = "alsa"
device.class = "sound"
device.icon_name = "audio-card-analog"
device.id = "50"
device.profile.description = "Headphones"
device.profile.name = "analog-stereo-headphones"
device.routes = "1"
factory.name = "api.alsa.pcm.sink"
media.class = "Audio/Sink"
device.description = "Starship/Matisse HD Audio Controller"
node.name = "alsa_output.pci-0000_2f_00.4.analog-stereo-headphones"
node.nick = "ALC897 Alt Analog"
node.pause-on-idle = "false"
object.path = "alsa:acp:Generic:0:playback"
port.group = "playback"
priority.driver = "721"
priority.session = "721"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "46"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "55"
object.serial = "55"
node.max-latency = "16384/48000"
api.alsa.period-size = "1024"
api.alsa.period-num = "32"
api.alsa.headroom = "0"
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "1"
api.alsa.split-enable = "true"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio1"
api.dbus.ReserveDevice1.Priority = "-20"
device.bus = "pci"
device.bus_path = "pci-0000:2f:00.4"
device.enum.api = "udev"
device.name = "alsa_card.pci-0000_2f_00.4"
device.nick = "HD-Audio Generic"
device.plugged.usec = "8739582"
device.product.id = "0x1487"
device.product.name = "Starship/Matisse HD Audio Controller"
device.profile-set = "/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf"
device.subsystem = "sound"
sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:2f:00.4/sound/card1"
device.vendor.id = "0x1022"
device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
spa.object.id = "4"
device.string = "1"
Ports:
analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 3, availability unknown)
Active Port: analog-output-headphones
Formats:
pcm
Sink #56
State: SUSPENDED
Name: alsa_output.pci-0000_2f_00.4.analog-stereo-speaker
Description: Starship/Matisse HD Audio Controller Speakers
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor Source: alsa_output.pci-0000_2f_00.4.analog-stereo-speaker.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
Properties:
alsa.card = "1"
alsa.card_name = "HD-Audio Generic"
alsa.class = "generic"
alsa.components = "HDA:10ec0897,14629c95,00100500"
alsa.device = "0"
alsa.driver_name = "snd_hda_intel"
alsa.id = "ALC897 Analog"
alsa.long_card_name = "HD-Audio Generic at 0xfcb00000 irq 91"
alsa.mixer_name = "Realtek ALC897"
alsa.name = "ALC897 Analog"
alsa.resolution_bits = "16"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
api.alsa.card.longname = "HD-Audio Generic at 0xfcb00000 irq 91"
api.alsa.card.name = "HD-Audio Generic"
api.alsa.path = "hw:1,0"
api.alsa.pcm.card = "1"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
card.profile.device = "1"
device.api = "alsa"
device.class = "sound"
device.icon_name = "audio-card-analog"
device.id = "50"
device.profile.description = "Speakers"
device.profile.name = "analog-stereo-speaker"
device.routes = "1"
factory.name = "api.alsa.pcm.sink"
media.class = "Audio/Sink"
device.description = "Starship/Matisse HD Audio Controller"
node.name = "alsa_output.pci-0000_2f_00.4.analog-stereo-speaker"
node.nick = "ALC897 Analog"
node.pause-on-idle = "false"
object.path = "alsa:acp:Generic:1:playback"
port.group = "playback"
priority.driver = "1009"
priority.session = "1009"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "46"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "56"
object.serial = "56"
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "1"
api.alsa.split-enable = "true"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio1"
api.dbus.ReserveDevice1.Priority = "-20"
device.bus = "pci"
device.bus_path = "pci-0000:2f:00.4"
device.enum.api = "udev"
device.name = "alsa_card.pci-0000_2f_00.4"
device.nick = "HD-Audio Generic"
device.plugged.usec = "8739582"
device.product.id = "0x1487"
device.product.name = "Starship/Matisse HD Audio Controller"
device.profile-set = "/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf"
device.subsystem = "sound"
sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:2f:00.4/sound/card1"
device.vendor.id = "0x1022"
device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
spa.object.id = "4"
device.string = "1"
Ports:
analog-output-speaker-split: Speakers (type: Speaker, priority: 10000, availability unknown)
Active Port: analog-output-speaker-split
Formats:
pcm
Sink #58
State: SUSPENDED
Name: alsa_output.pci-0000_2d_00.1.hdmi-stereo-extra1
Description: Navi 21/23 HDMI/DP Audio Controller Digital Stereo (HDMI 2)
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor Source: alsa_output.pci-0000_2d_00.1.hdmi-stereo-extra1.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS
Properties:
alsa.card = "0"
alsa.card_name = "HDA ATI HDMI"
alsa.class = "generic"
alsa.components = "HDA:1002aa01,00aa0100,00100800"
alsa.device = "7"
alsa.driver_name = "snd_hda_intel"
alsa.id = "HDMI 1"
alsa.long_card_name = "HDA ATI HDMI at 0xfcd20000 irq 90"
alsa.mixer_name = "ATI R6xx HDMI"
alsa.name = "VG240Y M3"
alsa.resolution_bits = "16"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
api.alsa.card.longname = "HDA ATI HDMI at 0xfcd20000 irq 90"
api.alsa.card.name = "HDA ATI HDMI"
api.alsa.path = "hdmi:0,1"
api.alsa.pcm.card = "0"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
card.profile.device = "8"
device.api = "alsa"
device.class = "sound"
device.icon_name = "audio-card-analog"
device.id = "51"
device.profile.description = "Digital Stereo (HDMI 2)"
device.profile.name = "hdmi-stereo-extra1"
device.routes = "1"
factory.name = "api.alsa.pcm.sink"
iec958.codecs = "[\"PCM\"]"
media.class = "Audio/Sink"
device.description = "Navi 21/23 HDMI/DP Audio Controller"
node.name = "alsa_output.pci-0000_2d_00.1.hdmi-stereo-extra1"
node.nick = "VG240Y M3"
node.pause-on-idle = "false"
object.path = "alsa:acp:HDMI:8:playback"
port.group = "playback"
priority.driver = "632"
priority.session = "632"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "46"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "34"
object.serial = "58"
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "0"
api.alsa.split-enable = "true"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio0"
api.dbus.ReserveDevice1.Priority = "-20"
device.bus = "pci"
device.bus_path = "pci-0000:2d:00.1"
device.enum.api = "udev"
device.name = "alsa_card.pci-0000_2d_00.1"
device.nick = "HDA ATI HDMI"
device.plugged.usec = "8717255"
device.product.id = "0xab28"
device.product.name = "Navi 21/23 HDMI/DP Audio Controller"
device.subsystem = "sound"
sysfs.path = "/devices/pci0000:00/0000:00:03.1/0000:2b:00.0/0000:2c:00.0/0000:2d:00.1/sound/card0"
device.vendor.id = "0x1002"
device.vendor.name = "Advanced Micro Devices, Inc. [AMD/ATI]"
spa.object.id = "2"
device.string = "0"
Ports:
hdmi-output-1: HDMI / DisplayPort 2 (type: HDMI, priority: 5800, availability group: Legacy 2, available)
Active Port: hdmi-output-1
Formats:
pcmNow I'll share the files I created and adjusted to split rear and front jacks, starting with /etc/alsa-card-profile/mixer/analog-output-speaker.conf where I changed
[Jack Headphone]
state.plugged = no
state.unplugged = unknownto
[Jack Headphone]
state.plugged = unknown
state.unplugged = unknownfull output of the file /etc/alsa-card-profile/mixer/analog-output-speaker.conf
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2.1 of the
# License, or (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
; Path for mixers that have a 'Speaker' control
;
; See analog-output.conf.common for an explanation on the directives
[General]
priority = 100
description-key = analog-output-speaker
[Properties]
device.icon_name = audio-speakers
[Jack Headphone]
state.plugged = unknown
state.unplugged = unknown
[Jack Dock Headphone]
state.plugged = no
state.unplugged = unknown
[Jack Front Headphone]
state.plugged = no
state.unplugged = unknown
[Jack Line Out]
state.plugged = no
state.unplugged = unknown
[Jack Line Out Front]
state.plugged = no
state.unplugged = unknown
[Jack Front Line Out]
state.plugged = no
state.unplugged = unknown
[Jack Rear Line Out]
state.plugged = no
state.unplugged = unknown
[Jack Dock Line Out]
state.plugged = no
state.unplugged = unknown
[Jack Speaker]
required-any = any
[Jack Speaker Phantom]
required-any = any
state.plugged = unknown
state.unplugged = unknown
[Jack Speaker Front Phantom]
required-any = any
state.plugged = unknown
state.unplugged = unknown
[Jack Speaker - Output]
required-any = any
[Element Hardware Master]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Master]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Master Mono]
switch = off
volume = off
; Make sure the internal speakers are not auto-muted once the system has speakers
[Element Auto-Mute Mode]
enumeration = select
[Option Auto-Mute Mode:Disabled]
name = analog-output-speaker
; This profile path is intended to control the speaker, let's mute headphones
; else there will be a spike when plugging in headphones
[Element Headphone]
switch = off
volume = off
[Element Headphone,1]
switch = off
volume = off
[Element Headphone2]
switch = off
volume = off
[Element Headphone+LO]
switch = off
volume = off
[Element Speaker+LO]
required-any = any
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Speaker]
required-any = any
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Desktop Speaker]
required-any = any
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Front]
switch = mute
volume = merge
override-map.1 = all-front
override-map.2 = front-left,front-right
[Element Front Speaker]
switch = mute
volume = merge
override-map.1 = all-front
override-map.2 = front-left,front-right
required-any = any
[Element Speaker Front]
switch = mute
volume = merge
override-map.1 = all-front
override-map.2 = front-left,front-right
required-any = any
[Element Rear]
switch = mute
volume = merge
override-map.1 = all-rear
override-map.2 = rear-left,rear-right
[Element Surround]
switch = mute
volume = merge
override-map.1 = all-rear
override-map.2 = rear-left,rear-right
[Element Surround Speaker]
switch = mute
volume = merge
override-map.1 = all-rear
override-map.2 = rear-left,rear-right
required-any = any
[Element Speaker Surround]
switch = mute
volume = merge
override-map.1 = all-rear
override-map.2 = rear-left,rear-right
required-any = any
[Element Side]
switch = mute
volume = merge
override-map.1 = all-side
override-map.2 = side-left,side-right
[Element Speaker Side]
switch = mute
volume = merge
override-map.1 = all-side
override-map.2 = side-left,side-right
[Element Center]
switch = mute
volume = merge
override-map.1 = all-center
override-map.2 = all-center,all-center
[Element Center Speaker]
switch = mute
volume = merge
override-map.1 = all-center
override-map.2 = all-center,all-center
required-any = any
[Element LFE]
switch = mute
volume = merge
override-map.1 = lfe
override-map.2 = lfe,lfe
[Element LFE Speaker]
switch = mute
volume = merge
override-map.1 = lfe
override-map.2 = lfe,lfe
required-any = any
[Element Bass Speaker]
switch = mute
volume = merge
override-map.1 = lfe
override-map.2 = lfe,lfe
required-any = any
[Element CLFE]
switch = mute
volume = merge
override-map.1 = all-center
override-map.2 = all-center,lfe
[Element Center/LFE]
switch = mute
volume = merge
override-map.1 = all-center
override-map.2 = all-center,lfe
[Element Speaker CLFE]
switch = mute
volume = merge
override-map.1 = all-center
override-map.2 = all-center,lfe
.include analog-output.conf.commonnext file which I adjusted was /lib/firmware/hda-jack-retask.fw
[codec]
0x10ec0897 0x14629c95 0
[pincfg]
0x11 0x4037c040
0x12 0x411111f0
0x14 0x01014010
0x15 0x411111f0
0x16 0x411111f0
0x17 0x411111f0
0x18 0x01a19030
0x19 0x02a19040
0x1a 0x0211313f
0x1b 0x0321413f
0x1c 0x411111f0
0x1d 0x4028c66b
0x1e 0x411111f0
0x1f 0x411111f0
[hints]
indep_hp=yes
vmaster=nonext, I enabled Independent HP in alsamixer, can be seen in output of amixer -c1 ( full output is attached above)
Simple mixer control 'Independent HP',0
Capabilities: enum
Items: 'Disabled' 'Enabled'
Item0: 'Enabled'next, /etc/alsa-card-profile/mixer/paths/analog-output-speaker-split.conf (which is basically /etc/alsa-card-profile/mixer/analog-output-speaker.conf but renamed from analog-output-speaker.conf to analog-output-speaker-split.conf as mentioned in the Github guide) so output is same as /etc/alsa-card-profile/mixer/paths/analog-output-speaker-split.conf (attached above)
next, I created /etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf whose output:
; This will let alsa generate automatic profiles (e.g internal speaker + microphone)
[General]
auto-profiles = yes
; device-strings describes the ALSA device string(s) that PulseAudio uses to open the device, where "%f" specifies the card number (should always be present in the string).
; This is the mapping for the internal speaker
; If needed, change the 0 in "hw:%f,0" to your sub device location
; You can change the description for this and other mappings if you want
; in paths output put the name of the previously created custom mixer path
[Mapping analog-stereo-speaker]
description = Speakers
device-strings = hw:%f,0
paths-output = analog-output-speaker-split
channel-map = left,right
direction = output
; This is the mapping for the jack output (headphones)
; If needed, change the 2 in "hw:%f,2" to your sub device location
; in paths output put the name of the from card details
[Mapping analog-stereo-headphones]
description = Headphones
device-strings = hw:%f,2
paths-output = analog-output-headphones
channel-map = left,right
direction = output
; This is the mapping that will handle internal and external microphones, as you could see in `cat /proc/asound/pcm`, the card also had a capture port
; in the 0,0 sub device location so let's add it here too (change the 0 in "hw:%f,0" to your sub device location that has the capture port)
; All the paths-input names here came from the default.conf profile set and you may have to adapt it if your input port name is not included
[Mapping analog-stereo-input]
description = Microphone
device-strings = hw:%f,0
channel-map = left,right
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
direction = input
; Broken in parts the profile name means to join
; The name of the Mapping containing the analog-output-headphones (output:analog-stereo-headphones)
; The name of the Mapping containing the analog-output-speaker (output:analog-stereo-speaker)
; The name of the Mapping containing the analog-stereo-input (input:analog-stereo-input)
; in output-mappings put the name of the output mappings
; input-mappings put the name of the input mappings
; NOTE: Not to be confused width the paths-output/paths-input inside the mapping, we're not using those directly
; This is the profile that will have the internal speakers + jack output + all microphones
; in paths output put the name of the from card details
[Profile output:analog-stereo-headphones+output:analog-stereo-speaker+input:analog-stereo-input]
description = Analog Stereo Duplex
output-mappings = analog-stereo-headphones analog-stereo-speaker
input-mappings = analog-stereo-input
priority = 80
; This profile will have the internal speakers + jack output, but not microphones
[Profile output:analog-stereo-headphones+output:analog-stereo-speaker]
description = Analog Stereo Outputs Only
output-mappings = analog-stereo-headphones analog-stereo-speaker
priority = 70created the file /etc/udev/rules.d/91-pipewire-alsa-port-split.rules whose output is:
SUBSYSTEM!="sound", GOTO="pipewire_end"
ACTION!="change", GOTO="pipewire_end"
KERNEL!="card*", GOTO="pipewire_end"
SUBSYSTEMS=="pci", ATTRS{vendor}=="0x1022", ATTRS{device}=="0x1487", \
ENV{ACP_PROFILE_SET}="/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf"
# Use this instead for immutable distributions
# SUBSYSTEMS=="pci", ATTRS{vendor}=="0x8086", ATTRS{device}=="0xa348", \
# ENV{ACP_PROFILE_SET}="/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf" \
# RUN+="/usr/local/bin/alsa-split-ports.sh"
LABEL="pipewire_end"note - I have removed ~./local/state/wireplumber and restarted it still issue persist of pcm volume doing nothing upon decrease and increase
Last edited by skull974 (2025-08-28 19:55:53)
Offline
Aug 29 00:23:43 archlinux alsactl[630]: /usr/bin/alsactl: set_control:1346: failed to obtain info for control #18 (No such file or directory)
Aug 29 00:23:43 archlinux alsactl[630]: /usr/bin/alsactl: set_control:1346: failed to obtain info for control #19 (No such file or directory)No idea how relevant that is, stracing alsactl restore it tries to open every /dev/snd/control* imaginable, but I don't get such errors. I could imagine that the restore runts too early and before your alsa-split-ports.sh runs (where you could simply repeat the restore or move it explicitly, disabling the -restore service)?
Alternatively
Another simpler solution would be to just create a oneshot user service that get's invoked after pipewire has started that runs a script with the relevant amixer commands.
Online