reversed(top()) code tags rss about

Front panel headphone jack and PipeWire

June 2, 2022
[hardware] [issue] [howto]

After upgrading to Slackware 15.0 I kept using Bluetooth for headphones and only later found out that sound through wires didn’t work if plugged into front panel. While advices on the Web immediately jump to module settings I realized that on 14.2 everything worked with Alsa and PulseAudio, so usage of PipeWire might have contributed to the issue.

Alsa devices

Since dmesg included this line:

[    4.033864] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input7

I looked at the output of aplay -L and found:

front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
    Front output / input

This is where I went looking in PipeWire configuration files for ways to enable this somehow, because pavucontrol didn’t present a corresponding entry.

PipeWire configuration for front panel

pipewire.conf copied from /usr/share/pipewire/ contains this commented-out section:

# This creates a single PCM source device for the given
# alsa device path hw:0. You can change source to sink
# to make a sink in the same way.
#{ factory = adapter
#    args = {
#        factory.name           = api.alsa.pcm.source
#        node.name              = "alsa-source"
#        node.description       = "PCM Source"
#        media.class            = "Audio/Source"
#        api.alsa.path          = "hw:0"
#        api.alsa.period-size   = 1024
#        api.alsa.headroom      = 0
#        api.alsa.disable-mmap  = false
#        api.alsa.disable-batch = false
#        audio.format           = "S16LE"
#        audio.rate             = 48000
#        audio.channels         = 2
#        audio.position         = "FL,FR"
#    }
#}

I just edited it as the comment suggests:

{ factory = adapter
    args = {
        factory.name           = api.alsa.pcm.sink
        node.name              = "alsa-sink"
        node.description       = "Front Panel"
        media.class            = "Audio/Sink"
        api.alsa.path          = "front:CARD=PCH,DEV=0"
        api.alsa.period-size   = 1024
        api.alsa.headroom      = 0
        api.alsa.disable-mmap  = false
        api.alsa.disable-batch = false
        audio.format           = "S16LE"
        audio.rate             = 48000
        audio.channels         = 2
        audio.position         = "FL,FR"
    }
}

Then restarted pipewire* and was able to use front panel jacks again. It would be nice if it just listed the device from the start, but it’s not that hard to do manually either.