Arch USB Audio – A Weird Problem

Published on July 18, 2022 at 6:17 pm by LEW

Introduction

I have been having a strange problem with the audio on my Arch installation where it worked but it did not work. This requires a bit of an explanation.

The audio problem I was having was that some combinations of source and destinations worked, while others did not. For example, playing a YouTube video produced sound from my USB speaker. However playing a song with VLC produced only silence from the same speaker. If I plugged in headphones, instead of the USB speaker, I would get sound. So the sound system was working, but it was not. That does not sound confusing at all!

The Setup

My current main desktop (the one exhibiting the problem) is an eighth generation Intel NUC. My main speaker is a Bose Revolve Sound Link, which is connected via USB. I also have a Jabra USB headset I use occasionally.

I recently dual booted the PC with Windows and Arch Linux. When I was testing audio on the new Arch setup, I played a YouTube music video, which worked fine, I got sound out of the Speaker, and the headset.

However, a few days later I wanted to listen to some Jazz Fusion while typing, so I loaded some Spyro Gyra tracks into the VLC media player. However, to my surprise when I hit play, Nothing! I opened up my mixer app, and could see that I was indeed getting an audio stream, and it was indeed going to an output. Just no sound form the speaker. I switched over to my headset, and there was sound again.

Going back to YouTube, I got sound from both the speaker and the headset again. Some of the audiophile out there probably already know the answer. But for me it was a real head scratchier.

Troubleshooting

I am not the most knowledgeable individual when it comes to sound on a Linux system. I mean you have ALSA, OSS, PHONON, and PULSEAUDIO sound systems/drivers. Sound on a Linux system can be a bit of a mess.

I have a default KDE Install on Arch, and if I understand it correctly, ALSA is my driver and PULSEAUDIO is the sound server? It is something I need to look into some more. The main takeaway was that I needed to use ALSA and PULSEAUDIO tools to trouble shoot the problem.

Since I was able to get sound in certain configurations, I made an educated guess that the sound system was installed and working correctly, as far as playing and directing audio was concerned. Also because I could see the needles/bars moving, indicating audio was actually being played even though there was no sound) I should focus my efforts on the actual output. This turned out to be a good place to start as it quickly led to the cause of the problem.

Boring High Level Technical Stuff

To get to the heart of the problem, we first need to understand some things about USB audio.

Looking in my mixer, I could see all channels were set to analog stereo output. This is interesting because no analog audio goes across a USB connection. It may come out of the mixer as such, but it gets converted to digital before crossing the USB connection, then converted back to analog at the other end to drive the speaker.

Without going in depth into digital audio, it has two parameters most people have heard of, bit size and sample rate. Put simply, these need to be the same across the digital path in order to reconstitute the audio on the other side.

The Problem

Using the following command I sent the data from each stream Source/destination to separate text files as the audio was playing. Since this is a simple setup I had only one output sink at a time.

pacmd list-sinks > <text file name>.txt

I then opened all the text files and compared them line by line for differences. Lets just skip to the results.

For the Bose USB speaker, anything with a sample rate of other than 48 KHz would not play any sound. VLC was using 44.1 kHz which is why it was not making any sound at the speaker.

The JABAL headset seems to be a lot less particular about sample rate an output would play either 44.1 Khz or 48 Khz.

I found it impossible to find specific information on line about various device sample rate restrictions. But apparently there are some. I guess it is just not a parameter that a lot of people are interested in.

Anyway on the the workaround.

The Fix

There is a specific file, /etc/pulse/daemon.conf, that controls PULSEAUDIO parameters. Note you will need root permissions to edit this file.

Buried close to the bottom are two lines that are commented out; default-sample-rate set to 48000 and alternate-sample-rate set to 44100. In this file all the values are commented out, because they are set to the default values for PULSEAUDIO.

I un-commented these lines, and changed both sample rates to 48000, and saved. I could have probably just gotten away with doing the alternate sample rate.

After restarting my speaker was noisy, my headset was noisy, and I was happy.

Conclusion

This was a quick dive into fixing a particularly strange PULSEAUDIO sound problem on Arch Linux. I hope this aids others who encounter similar strange sound problems on there Arch installs.

Add New Comment

Your email address will not be published. Required fields are marked *