Fixing Sound Problems With Behringer UMC204HD On Linux

Background

Linux Distro: Kubuntu
Distributor ID: Ubuntu
Description:    Ubuntu 24.10
Release:        24.10
Codename:       oracular
PlasmaShell Version: plasmashell 6.1.5

This is a bit of an edge-case, I imagine, but I can’t be the only one so here’s how to handle this.

The Problem

When using a Behringer UMC204HD USB interface with Kubuntu (specifics above), the USB interface works until the screen locks and the system suspends. When it wakes up and you log back in, the sound won’t work anymore. Rebooting always brings it back to life but that’s not a solution.

Instant Fix (not a long term solution, but this will get you up and running)

To get it back pronto, rebooting works, or you can unplug the USB interface and plug it back in. This should trigger the system to start recognizing the device again.

If you are currently having a sound emergency then do this and you’ll get your sound back.

For a real fix, keep reading.

Long Term Solution

To verify that you’re making the right fix, your current situation should look like this:

  1. Sound works after a fresh reboot but stops working after the computer locks and suspends
  2. Unplugging and plugging in the USB device revives it

If that isn’t your scenario then you probably have some other issue. Assuming that matches your situation, here’s how you can fix it.

 

(1 of 6) Get Your Device ID

First, you’ll need your USB device ID. You can get this by opening a terminal window and running:

lsusb

You’ll see output for each device plugged into a USB port. The one you’re interested in will look similar to this:

Bus 001 Device 002: ID 1397:0508 BEHRINGER International GmbH UMC204HD 192k

In the above example, “1397” is the vendor ID and “0508” is the product ID. That is important for the scripts we are creating, so make sure you get that first.

 

(2 of 6) Create Directory For Shell Script

You should make a directory that will hold the .sh file. This directory begins with a . so it will be hidden in the file explorer unless you choose to show hidden files and folders.

mkdir ~/.tweaks-kubuntu

CD to that directory

cd ~/.tweaks-kubuntu

 

(3 of 6) Create The Shell Script

From your newly created .tweaks-kubuntu folder, create an sh file using vi or nano or whatever text editor you prefer. We’ll call it reset-umc204hd.sh.

vi reset-umc204hd.sh

In that file, add this code:

#!/bin/bash
/usr/bin/usbreset 1397:0508

 

BE SURE THAT THE ID’S MATCH YOUR DEVICE ID’S.

 

(4 of 6) Create a Rules File

vi /etc/udev/rules.d/99-behringer-umc204hd.rules

Set the content to:

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1397", ATTR{idProduct}=="0508", ATTR{power/autosuspend}="-1"

Again, update the vendor ID and the product ID to match your setup.

 

(5 of 6) Create A Sleep Reset File

This is the script that will fire when your system wakes up. It will run the .sh script made in the previous step.

vi /lib/systemd/system-sleep/reset-umc204hd

Set the content to:

#!/bin/bash
if [ "$1" = "post" ]; then
sleep 5 # Waits 5 seconds, otherwise it fires too soon
~/.tweaks-kubuntu/reset-umc204hd.sh
fi

(6 of 6) Tell GRUB Not To Suspend USB Devices

This step may not be necessary, but I did it as part of my troubleshooting process and it may help. If you’re on a laptop you might be concerned with battery life and not want to do this unless you have to.

Edit the grub file:

vi /etc/default/grub

Find the line with GRUB_CMDLINE_LINUX_DEFAULT

The original text looks like this but your UUID will differ:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=fc33025d-bb3f-4d5c-bb41-27c4d36830ca"

 

Add usbcore.autosuspend=-1 to the end of the value so it looks similar to this:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=fc33025d-bb3f-4d5c-bb41-27c4d36830ca usbcore.autosuspend=-1"

 

Make sure it’s within the quotes, not after.

 

Done!

That’s all there is to it! So, now you have a script that resets your USB device when your computer wakes up from being suspended.

You can test-suspend your system by running this in a terminal:

systemctl suspend

That will immediately suspend and lock your system so you log back in and confirm that it’s all working.

Credits

This was the result of hours of troubleshooting with X’s Grok. Grok was indispensable in this process. I hope this helps someone else.

 

 

  • 2025-03-22