[pulseaudio-discuss] Accessing audio as root

Colin Guthrie gmane at colin.guthr.ie
Thu Nov 26 15:02:42 PST 2009

'Twas brillig, and Markus Rechberger at 26/11/09 18:13 did gyre and gimble:
>>> we could move it to kernelspace too it's a driver.
>> Do you read lkml? Not going to happen.
> no, I meant our work not pulseaudio. 

Ahh right, sorry :)

> We moved the entire video4linux and DVB framework to userspace.
> audio is directly handled by the driver in our case. And the driver
> usually runs as root.

Not sure I really follow here... As a general rule I doubt the kernel 
folks would want to move stuff that can be done in userspace into the 
kernel tho'.

> Right now we reconfigure pulseaudio with our installer to run as
> systemwide process in order to support
> root audio playback.

I'm not really sure that is a good idea. Unless this is done on some 
kind of specialist distro, I'd certainly be pretty pissed of as a user 
if this was done behind my back. Like I say using system-wide has lots 
of disadvantages and is generally not supported by us upstream in any 
official capacity. The lack of SHM means there is a lot of data copied 
around (instead of being predominantly zero-copy) and the onus is moved 
ot the user with regards to who is allowed access (although I don't see 
any reason why we cannot use console-kit's active state (plus special 
exemption for root) under system-wide mode, thus doing away with the 
need for checking that users are in pulse-access group. We would also 
need to check the streams belonging to the users and cork them etc if 
that user becomes inactive. Likewise we should only let the API report 
back on the users own streams and not show those of other users - all in 
all this a quite a lot of work but it would make system-wide a whole lot 
less ugly IMO - although I could easily be missing some major points 
(although the SHM thing is very much a major point anyway AFAIK).

> I do know that pulseaudio usually is not stable on almost all systems out there,
> there are cases which seem to cause problems with PA, eg starving
> audio.. this finally
> triggers a mechanism in our driver which tries to kill PA and bypass
> it afterwards..

I've been using PA exclusively for about 2 years. I have to say that it 
really doesn't give me any problems in this regard. Some programs 
interact in a bad way, but most of those problems have been ironed out now.

I really don't think that drivers should try and kill PA and by pass it 
etc. This is just ugly. If PA causes a major problem for your driver, 
just refuse to work when PA is running or use pasuspender or similar 

Either that or find out why PA is failing and help fix the problem in 
the right place.

Adding workarounds such as this will only ever lead to problems and 
confusion. Problems should be fixed in the right place.

> we currently only use the pulseaudio simple
> API but the PA system
> reconfiguration is not what we want.

Indeed, I really think that is a bad idea. I certainly wouldn't want 
this happening behind my back when I install a package.

> How about changing the group to the PA group temporary when trying to
> use it as root for setting up the mapping?
> Question here what's the best way to determine the group of the
> running PA daemon?
> Is there something comfortable available for this or do we have to
> parse the proc/pid structure, using /etc/passwd,
> a PA API call?

Nah this is doomed to fail as /etc/passwd is just one user 
authentication mechanism of many. My users are stored in LDAP for example.

This approach still requires system-wide mode and I think you should 
look for a solution at the user level.

What is it ultimately that a user does with your software? How do they 
interact with it? When does it work? (e.g. when user is logged in or not).

Perhaps with a bit of background here myself (and other users on the 
list) can come up with some ideas?



Colin Guthrie

Day Job:
   Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
   Mandriva Linux Contributor [http://www.mandriva.com/]
   PulseAudio Hacker [http://www.pulseaudio.org/]
   Trac Hacker [http://trac.edgewall.org/]

More information about the pulseaudio-discuss mailing list