Disable Pulse Audio. Please.

 

Pulse Audio.  Ugh.

Pulse Audio.  It works okay for desktop systems, but it's truly terrible for real-time, full-duplex, low-latency audio systems.  Since our main business is full-duplex speakerphone systems with acoustic echo cancelers (AECs), we need full-duplex, low-latency audio, and therefore Pulse Audio is the bane of our existence.  We have seen our customers loose many man-months or even years trying to get it to run reliably, and the result is always the same:  bad or no performance.

 Truthfully, we're not experts in Pulse Audio here, so I'd be happy for somebody to show us the magic bullet that makes it work, but so far our experience, and all of our customer's experience is the same:  It's a huge nightmare.

 So... what can you do?  We always recommend disabling pulse entirely if that can work in your system. If you have a single application talking to the soundcard, then you should definitely disable Pulse Audio -- there's no need for it at all. 

Single application that you have control of

Just disable Pulse Audio with the instructions here.  Basically it amounts to setting autospawn = no in /etc/pulse/client.conf.  Easy.

Application you don't have control of, or multiple applications need to access the sound card

You might need to disable Pulse Audio for only the low latency sound card.  If this is the case, you can write a udev rule that prevents pulse from touching a particular sound card.

This amounts to creating a file something like this: /etc/udev/rules.d/99-why-is-pulse-so-painful.rules with the code:

ATTRS{idVendor}=="1852",

ATTRS{idProduct}=="5110",

ENV{PULSE_IGNORE}="1"

Where idVendor and idProduct are the VID and PID of your audio card (assuming it's a USB card). That's the magic bullet -- the PULSE_IGNORE option.

Enjoy!

 
Previous
Previous

STM 32H743 FIR Filter performance

Next
Next

Comb Filtering