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

my info was different #14

Open LemuelDayrit opened 2 months ago

LemuelDayrit commented 2 months ago

I try to run the two commands at the beginning and i noticed that its different from what you show

This is for the pactl list cards

Card #46
    Name: alsa_card.pci-0000_07_00.6
    Driver: alsa
    Owner Module: n/a
    Properties:
        api.acp.auto-port = "false"
        api.acp.auto-profile = "false"
        api.alsa.card = "2"
        api.alsa.card.longname = "HD-Audio Generic at 0xfc5c0000 irq 102"
        api.alsa.card.name = "HD-Audio Generic"
        api.alsa.path = "hw:2"
        api.alsa.use-acp = "true"
        api.dbus.ReserveDevice1 = "Audio2"
        device.api = "alsa"
        device.bus = "pci"
        device.bus_path = "pci-0000:07:00.6"
        device.description = "Family 17h/19h HD Audio Controller"
        device.enum.api = "udev"
        device.icon_name = "audio-card-analog-pci"
        device.name = "alsa_card.pci-0000_07_00.6"
        device.nick = "HD-Audio Generic"
        device.plugged.usec = "7832778"
        device.product.id = "0x15e3"
        device.product.name = "Family 17h/19h HD Audio Controller"
        device.subsystem = "sound"
        sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:07:00.6/sound/card2"
        device.vendor.id = "0x1022"
        device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
        media.class = "Audio/Device"
        factory.id = "14"
        client.id = "33"
        object.id = "46"
        object.serial = "46"
        object.path = "alsa:pcm:2"
        alsa.card = "2"
        alsa.card_name = "HD-Audio Generic"
        alsa.long_card_name = "HD-Audio Generic at 0xfc5c0000 irq 102"
        alsa.driver_name = "snd_hda_intel"
        device.string = "2"
    Profiles:
        off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
        HiFi: Play HiFi quality Music (sinks: 1, sources: 2, priority: 8000, available: yes)
        pro-audio: Pro Audio (sinks: 2, sources: 1, priority: 1, available: yes)
    Active Profile: HiFi
    Ports:
        [Out] Speaker: Speaker (type: Speaker, priority: 100, latency offset: 0 usec, availability unknown)
            Properties:
                port.type = "speaker"
                device.icon_name = "audio-speakers"
                card.profile.port = "0"
            Part of profile(s): HiFi
        [Out] Headphones: Headphones (type: Headphones, priority: 200, latency offset: 0 usec, availability group: Headphone, not available)
            Properties:
                port.type = "headphones"
                port.availability-group = "Headphone"
                device.icon_name = "audio-headphones"
                card.profile.port = "1"
            Part of profile(s): HiFi
        [In] Mic2: Headphones Stereo Microphone (type: Mic, priority: 200, latency offset: 0 usec, availability group: Mic, not available)
            Properties:
                port.type = "mic"
                port.availability-group = "Mic"
                device.icon_name = "audio-input-microphone"
                card.profile.port = "2"
            Part of profile(s): HiFi
        [In] Mic1: Digital Microphone (type: Mic, priority: 100, latency offset: 0 usec, availability unknown)
            Properties:
                port.type = "mic"
                device.icon_name = "audio-input-microphone"
                card.profile.port = "3"
            Part of profile(s): HiFi

And this is for the pactl list sinks

Sink #91
    State: RUNNING
    Name: alsa_output.pci-0000_07_00.6.HiFi__hw_Generic_1__sink
    Description: Family 17h/19h HD Audio Controller Speaker + Headphones
    Driver: PipeWire
    Sample Specification: s32le 2ch 48000Hz
    Channel Map: front-left,front-right
    Owner Module: 4294967295
    Mute: no
    Volume: front-left: 55706 /  85% / -4.23 dB,   front-right: 55706 /  85% / -4.23 dB
           balance 0.00
    Base Volume: 65536 / 100% / 0.00 dB
    Monitor Source: alsa_output.pci-0000_07_00.6.HiFi__hw_Generic_1__sink.monitor
    Latency: 0 usec, configured 0 usec
    Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
    Properties:
        alsa.card = "2"
        alsa.card_name = "HD-Audio Generic"
        alsa.class = "generic"
        alsa.device = "0"
        alsa.driver_name = "snd_hda_intel"
        alsa.id = "ALC245 Analog"
        alsa.long_card_name = "HD-Audio Generic at 0xfc5c0000 irq 102"
        alsa.mixer_device = "_ucm0004.hw:Generic_1"
        alsa.name = "ALC245 Analog"
        alsa.resolution_bits = "16"
        alsa.subclass = "generic-mix"
        alsa.subdevice = "0"
        alsa.subdevice_name = "subdevice #0"
        api.alsa.card.longname = "HD-Audio Generic at 0xfc5c0000 irq 102"
        api.alsa.card.name = "HD-Audio Generic"
        api.alsa.open.ucm = "true"
        api.alsa.path = "hw:Generic_1"
        api.alsa.pcm.card = "2"
        api.alsa.pcm.stream = "playback"
        audio.channels = "2"
        audio.position = "FL,FR"
        card.profile.device = "0"
        device.api = "alsa"
        device.class = "sound"
        device.id = "46"
        device.profile.description = "Speaker + Headphones"
        device.profile.name = "HiFi: hw:Generic_1: sink"
        device.routes = "2"
        factory.name = "api.alsa.pcm.sink"
        media.class = "Audio/Sink"
        device.description = "Family 17h/19h HD Audio Controller"
        node.name = "alsa_output.pci-0000_07_00.6.HiFi__hw_Generic_1__sink"
        node.nick = "ALC245 Analog"
        node.pause-on-idle = "false"
        object.path = "alsa:pcm:2:hw:Generic_1:playback"
        priority.driver = "1000"
        priority.session = "1000"
        factory.id = "18"
        clock.quantum-limit = "8192"
        client.id = "33"
        node.driver = "true"
        factory.mode = "merge"
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        object.id = "51"
        object.serial = "91"
        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 = "2"
        api.alsa.use-acp = "true"
        api.dbus.ReserveDevice1 = "Audio2"
        device.bus = "pci"
        device.bus_path = "pci-0000:07:00.6"
        device.enum.api = "udev"
        device.icon_name = "audio-card-analog-pci"
        device.name = "alsa_card.pci-0000_07_00.6"
        device.nick = "HD-Audio Generic"
        device.plugged.usec = "7832778"
        device.product.id = "0x15e3"
        device.product.name = "Family 17h/19h HD Audio Controller"
        device.subsystem = "sound"
        sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:07:00.6/sound/card2"
        device.vendor.id = "0x1022"
        device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
        device.string = "2"
    Ports:
        [Out] Speaker: Speaker (type: Speaker, priority: 100, availability unknown)
        [Out] Headphones: Headphones (type: Headphones, priority: 200, availability group: Headphone, not available)
    Active Port: [Out] Speaker
    Formats:
        pcm
Shmerlard commented 2 months ago

what is the content of /usr/share/alsa-card-profile/mixer/paths?

LemuelDayrit commented 2 months ago
[nobara@nobara ~]$ tree /usr/share/alsa-card-profile
/usr/share/alsa-card-profile
└── mixer
    ├── paths
    │   ├── analog-input-aux.conf
    │   ├── analog-input.conf
    │   ├── analog-input.conf.common
    │   ├── analog-input-dock-mic.conf
    │   ├── analog-input-fm.conf
    │   ├── analog-input-front-mic.conf
    │   ├── analog-input-headphone-mic.conf
    │   ├── analog-input-headset-mic.conf
    │   ├── analog-input-internal-mic-always.conf
    │   ├── analog-input-internal-mic.conf
    │   ├── analog-input-linein.conf
    │   ├── analog-input-mic.conf
    │   ├── analog-input-mic.conf.common
    │   ├── analog-input-mic-line.conf
    │   ├── analog-input-rear-mic.conf
    │   ├── analog-input-tvtuner.conf
    │   ├── analog-input-video.conf
    │   ├── analog-output-chat.conf
    │   ├── analog-output.conf
    │   ├── analog-output.conf.common
    │   ├── analog-output-headphones-2.conf
    │   ├── analog-output-headphones.conf
    │   ├── analog-output-lineout.conf
    │   ├── analog-output-mono.conf
    │   ├── analog-output-speaker-always.conf
    │   ├── analog-output-speaker.conf
    │   ├── audigy-analog-output.conf
    │   ├── audigy-analog-output-mirror.conf
    │   ├── hdmi-output-0.conf
    │   ├── hdmi-output-10.conf
    │   ├── hdmi-output-1.conf
    │   ├── hdmi-output-2.conf
    │   ├── hdmi-output-3.conf
    │   ├── hdmi-output-4.conf
    │   ├── hdmi-output-5.conf
    │   ├── hdmi-output-6.conf
    │   ├── hdmi-output-7.conf
    │   ├── hdmi-output-8.conf
    │   ├── hdmi-output-9.conf
    │   ├── iec958-stereo-input.conf
    │   ├── iec958-stereo-output.conf
    │   ├── steelseries-arctis-output-chat-common.conf
    │   ├── steelseries-arctis-output-game-common.conf
    │   ├── usb-gaming-headset-input.conf
    │   ├── usb-gaming-headset-output-mono.conf
    │   ├── usb-gaming-headset-output-stereo.conf
    │   └── virtual-surround-7.1.conf
    └── profile-sets
        ├── 9999-custom.conf
        ├── analog-only.conf
        ├── asus-xonar-se.conf
        ├── audigy.conf
        ├── cmedia-high-speed-true-hdaudio.conf
        ├── default.conf
        ├── dell-dock-tb16-usb-audio.conf
        ├── force-speaker-and-int-mic.conf
        ├── force-speaker.conf
        ├── hp-tbt-dock-120w-g2.conf
        ├── hp-tbt-dock-audio-module.conf
        ├── kinect-audio.conf
        ├── maudio-fasttrack-pro.conf
        ├── native-instruments-audio4dj.conf
        ├── native-instruments-audio8dj.conf
        ├── native-instruments-komplete-audio6.conf
        ├── native-instruments-korecontroller.conf
        ├── native-instruments-traktor-audio10.conf
        ├── native-instruments-traktor-audio2.conf
        ├── native-instruments-traktor-audio6.conf
        ├── native-instruments-traktorkontrol-s4.conf
        ├── sb-omni-surround-5.1.conf
        ├── sennheiser-gsx.conf
        ├── simple-headphones-mic.conf
        ├── steelseries-arctis-common-usb-audio.conf
        ├── texas-instruments-pcm2902.conf
        └── usb-gaming-headset.conf

4 directories, 74 files
luisbocanegra commented 2 months ago

Paste https://raw.githubusercontent.com/luisbocanegra/linux-guide-split-audio-ports/main/reference-config/analog-output-speaker-split.conf into /etc/alsa-card-profile/mixer/paths/analog-output-speaker.conf

and the common file: sudo cp /usr/share/alsa-card-profile/mixer/paths/analog-output.conf.common /etc/alsa-card-profile/mixer/paths/analog-output.conf.common

Restart pipewire systemctl restart --user pipewire pipewire-pulse pipewire.socket wireplumber

Check if both ports are available, like this:

image

If that didn't work try adding this file ~/.config/wireplumber/wireplumber.conf.d/test.conf:

with these contents

monitor.alsa.rules = [
    {
        matches = [
            {
                # HD-Audio Generic
                device.product.id = "0x15e3"
                device.vendor.id = "0x1022"
            }
        ]
        actions = {
            update-props = {
                api.alsa.use-acp = true
                device.profile-set = "/usr/share/alsa-card-profile/mixer/profile-sets/default.conf"
            }
        }
    }
]

And restart pipewire again