• 0 Posts
  • 1 Comment
Joined 9 months ago
cake
Cake day: October 22nd, 2023

help-circle
  • Cheers for this guide!

    i have been having difficulty trying to understand the naming conventions for the sofa files as posted in the ari databases, such that i could somehow choose one that i think would best suit. The documentation doesn’t really help, and i haven’t found a write up on it that addresses this in a mere human readable way, i am anything but a coder and don’t use matlab for anything. Any suggestions?

    The following should work to automate turning on 7.1 when headphones plugged in. I would def suggest using at least two terminal instances to help with the copy/pasta goodness.

    Use systemd to automate:

    sudo nano /etc/systemd/system/pipewire-headphones.service

    in said file use the following:

    ######################################

    [Unit] Description=Run Pipewire with filter-chain when headphones are plugged in Wants=sys-devices-pci0000:40-0000:40:01.1-0000:41:00.0-0000:42:08.0-0000:45:00.3-usb9-9\x2d2-9\x2d2:1.0-sound-card1-controlC1.device BindsTo=sys-devices-pci0000:40-0000:40:01.1-0000:41:00.0-0000:42:08.0-0000:45:00.3-usb9-9\x2d2-9\x2d2:1.0-sound-card1-controlC1.device

    [Service] ExecStart=/bin/pipewire -c /home/USER/.config/pipewire/filter-chain.conf.d/filter-chain.conf User=your_username Group=your_groupname [Install] WantedBy=default.target

    ######################################

    Replace /path/to/pipewire with the actual path to the pipewire binary and /path/to/filter-chain.conf with the path to your filter-chain.conf configuration file. Also, replace your_username and your_groupname with your actual username and group name.

    To obtain Wants, and BindsTo= path

    Plug in desired device

    ls /dev/input/by-id/

    copy name of your device

    eg: usb-Logitech_PRO_X_000000000000-event-if03

    then:

    sudo udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/input/by-id/usb-Logitech_PRO_X_000000000000-event-if03)

    locate “looking at parent device” that matches to your device, add to service file.

    save file.

    the udevadm command will also allow you to obtain info needed for the udev rule.

    Now Create udev rule.

    sudo nano /etc/udev/rules.d/99-headphones.rules

    enter text:

    ################################################

    ACTION==“add”, SUBSYSTEM==“input”, ENV{ID_INPUT}==“1”, ENV{ID_VENDOR_ID}==“046d”, ENV{ID_PRODUCT}==“0aaa”, ENV{PHYS}==“usb-0000:45:00.3-2/input3”, ENV{SYSTEMD_WANTS}=“pipewire-headphones.service”

    ################################################

    ID_VENDOR_ID =ATTRS{id/vendor}==“046d” etc

    save file.

    sudo udevadm control --reload sudo systemctl daemon-reload

    for manual start/stop:

    sudo systemctl start pipewire-headphones.service sudo systemctl stop pipewire-headphones.service

    To have service started and enabled at boot:

    sudo systemctl enable - -now pipewire-headphones.service

    why sudo systemctl daemon-reload

    Have tested with logi headphones using the usb dac, and then the standard jack seems to work ok, in ubuntu appears as virtual-surround-sink,though I did have to choose this as my device manually. this should also stop the service if the device is unplugged.

    To automate that you could edit the service Execstart entry :

    ExecStart=/bin/sh -c ‘pipewire -c /path/to/filter-chain.conf && pactl set-default-sink your_virtual_surround_sink_name’

    Hope this is useful :)