[alsa-devel] Device creation order

Jaroslav Kysela perex at perex.cz
Fri Apr 3 09:12:34 CEST 2009

On Fri, 3 Apr 2009, Lennart Poettering wrote:

> Heya!
> PulseAudio listens for hotplugged audio devices via hal/udev. For each
> card ALSA creates a bunch of device nodes in /dev. Before PA can open
> the card it needs to make sure that all devices nodes of the card got
> properly created. I.e. to make sure that surround sound and SPDIF
> works it is not sufficient to wait until one PCM device is available,
> but instead that *all* devices that belong to the card are available,
> i.e. device nodes created with permissions and ACLs set up
> correctly. Unfortunately there is no signal from udev/hal/kernel that
> would tell me explicitly that all subdevices of a specific devices are
> completely enumerated and device files created for. I have been
> discussing this a bit with Kay Sievers and we came to the conclusion
> that a simple fix would be if we could rely that the control
> (i.e. /dev/snd/controlCxx) device is always the last device to be
> created for a card.
> Looking at the drivers this seems to be generally the case, so I was
> wondering if I can rely on this? Do all drivers behave like this? Do
> all drivers expose a control device? Can we officially declare it part
> of the userspace API that the control device is the last one to be
> created?

Unfortunately, driver may use more complex scenarios like:

- some hardware requires additional firmware - in this case devices
   might be created, but they are not useable until firmware is loaded
- dynamic device creation at runtime - for example we have an
   experimental HDA driver configuration code which might change
   the arrangement of PCM devices on request from the user space

I would suggest to wait awhile with some small timeout (0.5 sec?) for all 
devices to get the usual static arrangement working and handle extra
dynamic cases, too.


Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.

More information about the Alsa-devel mailing list