[LAU] preventing pulseaudio from capturing a certain audio device

Len Ovens len at ovenwerks.net
Thu Jan 19 23:49:04 UTC 2017


On Fri, 20 Jan 2017, Michael Jarosch wrote:

> I've searched for this topic and the only thing I got were some obscure
> methods to keep some usb-devices from being occupied by pulseaudio...

The "certain" and "some" are harder :) I use PA as my desktop audio server 
and jackdbus as my backend. I use:
pactl unload-module module-udev-detect
To keep pulse from grabbing any new devices that get plugged in... Well 
actually, I also do:
pactl unload-module module-alsa-card
So that pulse sees no devices except jack... becasue I have found that if 
pulse has access to any audio device while it is bridged to jack, jack is 
prevented from entering freerun... or at least things that try to use 
freerun (like Ardour) tend to crash. The pulse to Jack bridge is a quick 
example module that really needs fixing, but none the less works very well 
if it's limitations are taken into account. basically, jack should be the 
only "device" pulse sees (less xruns this way too).

To disable only one device, use pavucontrol the configuration tab and turn 
the profile for that device to off.... only one problem. With a hot plug 
device (USB or FireWire) unplugging and then replugging the device in... 
gives pulse a "new" device from udev-detect (see above) and pulse connects 
to it. So in your case, assuming you always start your system with the FW 
device plugged in, turn the profile off and it should be rememebred from 
boot to boot... or assuming you always boot and login first and that the 
FW device is the only you ever hot plug, run:
pactl unload-module module-udev-detect
after login, then plugin your FW device and Pulse will not pick it up.

The other possibility is to play with the system pulse startup files 
(messes with upgrades maybe) or create your own in ~/.config/pulse/ that 
tells pulse to grab specific alsa devices only and make sure to never load 
udev-detect. This may mean loading the alsa module manually (in the pulse 
startup script) for each device you do want.

So it seems the solution is kind of the opposite to what you want. tell 
pulse to autoload nothing, manually load the ones you do want. Personally, 
I use the jacksink module and have no devices connected to jack at all. If 
I want to be able to access other audio IF on the system I use 
zita-ajbridge. It just works...


--
Len Ovens
www.ovenwerks.net



More information about the Linux-audio-user mailing list