I want to discuss an issue with Pulseaudio that is causing a delay in
the final release of the Beagleboard C5 demo image. I will be as
descriptive as possible and discuss what I have tried and what I see.
So I'm using a 2.6.32 kernel with PulseAudio 0.9.15 (Angstrom distribution)
The problems appear to be two-fold.
- Firstly, the utilities: pactl, pacmd etc are unable to connect to
the pulse server most of the times (so its kind of intermittent)
- Second, aplay cannot use pulseaudio as it throws errors as mentioned
below, and, cannot not-use pulseaudio as it keeps the sound devices
busy So we're stuck!
I have tried running pulseaudio in both system and default modes.
* In system mode (passing --system)
Authentication failed so I set the anonymous-auth option in the conf
file for now.
So now, the clients such as pactl are able to connect and list modules
etc but audio players fail to play anything.
Again there are 2 case for audio players:
- When not going through pulse, audio players report the device as busy
- When going through pulse (by settings in /etc/asound.conf), they
report an error such as "Unable to create stream: No such entity,
Unable to set hw params".
So either way, system mode does not work (though I can confirm that
in system mode, pulse _does not_ keep sound devices open.
* In default mode (which is the default when just the image is freshly built)
The pulseaudio server daemonizes but not always. Sometimes I have to
delete the .pulse-cookie file and .pulse/ directory to have it
daemonize. Only once it does daemonize, pactl is able to connect to it
and list modules but again audio players can't have it play anything.
Further, -vv -log-level pulseaudio options don't seem to generate very
interesting information that might help.
strace shows that it opens the sound device and then calls pause()
waiting for events to occur.
* Koen's suggestion about loading suspend-on-idle module:
I can confirm that the shared library is _not_ being loaded by looking
at its process memory map (/proc/../maps) though the /etc/default.pa
file does have the option enabled! I cannot easily use pactl to check
if the module is loaded because it doesn't connect to the pulse server
most of the time, but atleast the memory map tells me it isn't.
So now I can say "houston, we have multiple problems!" to cheer myself up.