[pulseaudio-discuss] udev detection for 1 card with multiple devices

Colin Guthrie gmane at colin.guthr.ie
Mon Sep 27 10:46:12 PDT 2010


'Twas brillig, and abraham duenas at 27/09/10 18:12 did gyre and gimble:
> Hi all,
> 
> I have this sound card with several hw devices attached, this is, it's
> only one card but I can configure/route all its numerous pcm/hw devices
> to have different sink/sources. For saying something I have hw:0,0 for
> playback/capture, on hw:0,1 only capture, hw:0,2 again for
> playback/capture, on hw:0,3 hdmi and so on. I've configured this card in
> the past using module-alsa-sink/source for each hw device and it works
> pretty fine. 
> Recently I tried to use the udev module instead of
> module-alsa-sink/source but only the first hw device is recognized
> (hw:0,0) correctly for playback/capture... I'm wondering if this is the
> intended way (only first available device will be used) or it should
> also be capable of detecting the other devices or I need to do something
> else (like writing udev-rule?) but i'm no expert on udev stuff...
> FWIW I can see that all hw devices are correctly listed in /dev/snd
> directory... (I have /dev/snd/controlC0 and all of the /dev/snd/pcmC0D*
> entries) 
> 
> Any ideas or help will be appreciated!

Yes this is possible and as you suspected it will involve writing a udev
rule, but also writing a specific "mixer profile" too.

If you look in your /usr/share/pulseaudio/alsa-mixer/ folder you'll see
two folders. One is called "paths" and contains fairly generic config
files to probe the various mixer elements in ALSA. What is likely more
interesting is the "profile-sets" folder. It can contain custom
configurations for more featureful and specialist cards such as yours.

The task you have to complete is two fold: First of all you need to
write your profile set itself. Take a look in the folder for examples.
The files are quite liberally commented and I think this represents the
only documentation (other than the source that parses them!).

Once you have written your profile set for your hardware you have to
tell PA to actually use it. This is where the udev rule comes in.

Look at the file /lib/udev/rules.d/90-pulseaudio.rules. It contains a
few lines to register the relevant profile set against your specific h/w
via PCI or USB ids.

Simply copy one of the three of four rules in there already and modify
to suit.

Once this is all working to your satisfaction, it would be great if you
could submit your profile set and udev rule to us so we can include it
in the standard install!

If you have any questions just ask here and myself and the other folks
here will do our best to help (tho' I personally do not have all that
much experience with the mixer profiles specifically, I can generally
poke about and find out more :))

Cheers

Col


-- 

Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/

Day Job:
  Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
  Mageia Contributor [http://www.mageia.org/]
  PulseAudio Hacker [http://www.pulseaudio.org/]
  Trac Hacker [http://trac.edgewall.org/]




More information about the pulseaudio-discuss mailing list