Felix Hanley

Linux audio setup

2026-03-12 hardware voidlinux

To avoid the fustration of trying to work this out again!

Voidlinux audio setup

Install the following packages:

$ sudo xbps-install -Su sof-firmware-XXX libspa-bluetooth bluez blueman pipewire

Blacklist the Intel HDA modules:

$ cat /etc/modprobe.d/blacklist.conf 
blacklist snd_hda_intel
blacklist snd_soc_skl

Ensure we are in the right groups:

$ groups felix
felix : felix wheel audio video plugdev _seatd bluetooth socklog

Pipewire

Setup pipewire:

$ ls -l .config/pipewire/pipewire.conf.d/ 
total 1
lrwxrwxrwx 1 felix felix 51 Nov 30  2023 10-wireplumber.conf -> /usr/share/examples/wireplumber/10-wireplumber.conf
lrwxrwxrwx 1 felix felix 51 Sep 30  2023 20-pipewire-pulse.conf -> /usr/share/examples/pipewire/20-pipewire-pulse.conf

Disable docking outputs:

$ cat .config/wireplumber/wireplumber.conf.d/51-dock-disable.conf 
monitor.alsa.rules = [{
    matches = [{
        device.name = "alsa_card.usb-Lenovo_ThinkPad_Thunderbolt_3_Dock_USB_Audio_000000000000-00"
    }]
    actions = {
        update-props = {
            device.disabled = true
        }
    }
}, {
    matches = [{
            node.name = "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI3__sink"
    }, {
            node.name = "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI2__sink"
    # }, {
    #         node.name = "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI1__sink"
    }]
    actions = {
        update-props = {
            node.disabled = true
        }
    }
}, {
    matches = [{
        device.name = "alsa_card.usb-Focusrite_Scarlett_2i2_USB-00"
    }]
    actions = {
        update-props = {
            device.description = "Scarlett 2i2"
        }
    }
}, {
    matches = [{
        device.name = "alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic"
    }]
    actions = {
        update-props = {
            device.description = "Thinkpad X1"
        }
    }
}]

Can’t remember what this was for:

$ cat .config/wireplumber/wireplumber.conf.d/51-settings.conf 
wireplumber.settings = {
    node.features.audio.monitor-ports = false
}

XDG portal

Install the XDG portal thingies for screenshots etc:

$ sudo xbps-install -Su xdg-desktop-portal-gtk xdg-desktop-portal-wlr

Configure the XDG portal thingies:

$ cat .config/xdg-desktop-portal/sway-portals.conf 
[preferred]
default=gtk
org.freedesktop.impl.portal.Screenshot=wlr
org.freedesktop.impl.portal.ScreenCast=wlr