luisbocanegra / linux-guide-split-audio-ports

Split jack(headphones)/speakers outputs into individual sinks on Linux to allow simultaneous playback (listen to different audio streams on each port)
30 stars 3 forks source link

suggestion: Full file path in udev configuration #10

Closed mh0rst closed 2 months ago

mh0rst commented 3 months ago

Hi, first of all thank you for compiling the invaluable guide. I replicated it on a Ubuntu 23.10 system with a Realtek S1220A sound chip (from ASUS ProArt X670E Creator motherboard).

One deviation I had to make from your guide was to specify the full path to the split-ports-profile.conf in the udev configuration, just specifying the file name didn't work - it seems like at least my version of wireplumber (0.4.14-4ubuntu1) does not search in /etc/alsa-card-profile/mixer/profile-sets by default:

wireplumber[2946]: profile-set '/usr/share/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf' can't be accessed: Datei oder Verzeichnis nicht gefunden

With this udev config, everything is recognized and the split ports are working:

SUBSYSTEM!="sound", GOTO="pipewire_end"
ACTION!="change", GOTO="pipewire_end"
KERNEL!="card*", GOTO="pipewire_end"

SUBSYSTEMS=="pci", ATTRS{vendor}=="0x1022", ATTRS{device}=="0x15e3", \
ENV{ACP_PROFILE_SET}="/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf"

LABEL="pipewire_end"
luisbocanegra commented 3 months ago

Hi, sorry for the long wait. Can you try setting it back to just the file name and after rebooting/restarting pipewire (systemctl restart --user pipewire pipewire-pulse pipewire.socket wireplumber) run

pactl list sinks | grep -E 'Name|Desc|State|Port|device.profile-set'

I want to add a note to the guide but need a way to check if the profile is being used or not.

In my case without absolute path the profile is applied properly and I see this:

State: IDLE
Name: alsa_output.pci-0000_00_1f.3.analog-stereo-headphones
Description: Built-in Audio Headphones
        device.profile-set = "split-ports-profile.conf"
Ports:
Active Port: analog-output-headphones
State: SUSPENDED
Name: alsa_output.pci-0000_00_1f.3.analog-stereo-speaker.2
Description: Built-in Audio Speakers
        device.profile-set = "split-ports-profile.conf"
Ports:
Active Port: analog-output-speaker-split

Edit: updated the output to reflect non absolute path working on my machine

mh0rst commented 2 months ago

I tried your suggestion and configured just the file name, this would not work, the separate headphone port would not appear:

$ pactl list sinks | grep -E 'Name|Desc|State|Port|device.profile-set'
    Name: alsa_output.pci-0000_6d_00.6.analog-stereo
        device.profile-set = "split-ports-profile.conf"
    Ports:
    Aktiver Port: analog-output-headphones
    Name: alsa_output.usb-Generic_Blue_Microphones_2052BAB0D0E8-00.analog-stereo
    Ports:
    Aktiver Port: analog-output-speaker
    Name: alsa_output.pci-0000_03_00.1.hdmi-stereo-extra4
    Ports:
        hdmi-output-4: HDMI / DisplayPort 5 (Typ: HDMI, Priorität: 5500, Verfügbarkeitsgruppe: Legacy 5, verfügbar)
    Aktiver Port: hdmi-output-4

With full absolute path, the splitted headphone port is back:

$ pactl list sinks | grep -E 'Name|Desc|State|Port|device.profile-set'
    Name: alsa_output.usb-Generic_Blue_Microphones_2052BAB0D0E8-00.analog-stereo
    Ports:
    Aktiver Port: analog-output-speaker
    Name: alsa_output.pci-0000_03_00.1.hdmi-stereo-extra4
    Ports:
        hdmi-output-4: HDMI / DisplayPort 5 (Typ: HDMI, Priorität: 5500, Verfügbarkeitsgruppe: Legacy 5, verfügbar)
    Aktiver Port: hdmi-output-4
    Name: alsa_output.pci-0000_6d_00.6.analog-stereo-headphones
        device.profile-set = "/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf"
    Ports:
    Aktiver Port: analog-output-headphones
    Name: alsa_output.pci-0000_6d_00.6.analog-stereo-speaker
        device.profile-set = "/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf"
    Ports:
    Aktiver Port: analog-output-speaker

I don't know if it is related to this issue: I also need to unmute my headphone in alsamixer on each boot, I know I could automate this unmuting but I'd rather configure alsa correctly. Saving the unmuted state with alsactl did not work.

luisbocanegra commented 2 months ago

I tried your suggestion and configured just the file name, this would not work, the separate headphone port would not appear:

$ pactl list sinks | grep -E 'Name|Desc|State|Port|device.profile-set'
  Name: alsa_output.pci-0000_6d_00.6.analog-stereo
      device.profile-set = "split-ports-profile.conf"
  Ports:
  Aktiver Port: analog-output-headphones
  Name: alsa_output.usb-Generic_Blue_Microphones_2052BAB0D0E8-00.analog-stereo
  Ports:
  Aktiver Port: analog-output-speaker
  Name: alsa_output.pci-0000_03_00.1.hdmi-stereo-extra4
  Ports:
      hdmi-output-4: HDMI / DisplayPort 5 (Typ: HDMI, Priorität: 5500, Verfügbarkeitsgruppe: Legacy 5, verfügbar)
  Aktiver Port: hdmi-output-4

With full absolute path, the splitted headphone port is back:

$ pactl list sinks | grep -E 'Name|Desc|State|Port|device.profile-set'
  Name: alsa_output.usb-Generic_Blue_Microphones_2052BAB0D0E8-00.analog-stereo
  Ports:
  Aktiver Port: analog-output-speaker
  Name: alsa_output.pci-0000_03_00.1.hdmi-stereo-extra4
  Ports:
      hdmi-output-4: HDMI / DisplayPort 5 (Typ: HDMI, Priorität: 5500, Verfügbarkeitsgruppe: Legacy 5, verfügbar)
  Aktiver Port: hdmi-output-4
  Name: alsa_output.pci-0000_6d_00.6.analog-stereo-headphones
      device.profile-set = "/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf"
  Ports:
  Aktiver Port: analog-output-headphones
  Name: alsa_output.pci-0000_6d_00.6.analog-stereo-speaker
      device.profile-set = "/etc/alsa-card-profile/mixer/profile-sets/split-ports-profile.conf"
  Ports:
  Aktiver Port: analog-output-speaker

Thanks for verifying, will add the note to the readme about this

I don't know if it is related to this issue: I also need to unmute my headphone in alsamixer on each boot, I know I could automate this unmuting but I'd rather configure alsa correctly. Saving the unmuted state with alsactl did not work.

I have this too but haven't had the time to investigate it.

luisbocanegra commented 2 months ago

Updated the guide to use full path and created a new issue for the muting problem. Thanks again for your feedback.

luisbocanegra commented 2 months ago

Hi again, about the muting problem can you try https://github.com/luisbocanegra/linux-guide-split-audio-ports/issues/13#issuecomment-2053710320

mh0rst commented 2 months ago

Hi, sorry for the delay, your follow-up got lost in between lots of work. I just finished the upgrade from Ubuntu 23.10 to 24.04 LTS and wanted to try your suggestion, but the upgrade somehow fixed the muting issue. Your solution without editing analog-output-headphones.conf works perfectly for me now :)