[pulseaudio-discuss] module-hal-detect not loading HDMI devices...

Colin Guthrie gmane at colin.guthr.ie
Sun Feb 8 10:38:56 PST 2009


Someone was asking on IRC as to why module-hal-detect didn't find his 
HDMI output...

A little investigation later and I see:
D: module-hal-detect.c: Not loaded device 

 From lspci:

snd_hda_intel   : ATI Technologies Inc|RS780 Azalia controller 
(vendor:1002 device:960f subv:147b subd:a705)
Card:ATI Radeon X1300 and later: ATI Technologies Inc|Radeon HD 3200 
Graphics [DISPLAY_VGA] (vendor:1002 device:9610 subv:147b subd:a705)

In lshal we see:
udi = '/org/freedesktop/Hal/devices/pci_1002_960f_alsa_playback_3'
   access_control.file = '/dev/snd/pcmC1D3p'  (string)
   access_control.type = 'sound'  (string)
   alsa.card = 1  (0x1)  (int)
   alsa.card_id = 'HDA ATI HDMI'  (string)
   alsa.device = 3  (0x3)  (int)
   alsa.device_file = '/dev/snd/pcmC1D3p'  (string)
   alsa.device_id = 'ATI HDMI'  (string)
   alsa.originating_device = 
'/org/freedesktop/Hal/devices/pci_1002_960f'  (string)
   alsa.pcm_class = 'generic'  (string)
   alsa.type = 'playback'  (string)
   info.callouts.add = {'hal-acl-tool --add-device'} (string list)
   info.callouts.remove = {'hal-acl-tool --remove-device'} (string list)
   info.capabilities = {'alsa', 'access_control'} (string list)
   info.category = 'alsa'  (string)
   info.parent = '/org/freedesktop/Hal/devices/pci_1002_960f'  (string)
   info.product = 'ATI HDMI ALSA Playback Device'  (string)
   info.subsystem = 'sound'  (string)
   info.udi = 
'/org/freedesktop/Hal/devices/pci_1002_960f_alsa_playback_3'  (string)
   linux.device_file = '/dev/snd/pcmC1D3p'  (string)
   linux.hotplug_type = 2  (0x2)  (int)
   linux.subsystem = 'sound'  (string)
   linux.sysfs_path = '/sys/class/sound/pcmC1D3p'  (string)

As you can see it says alsa.device=3

In module-hal-detect it says:
     /* We only care for the main device */
     device = libhal_device_get_property_int(u->context, udi, 
"alsa.device", &error);
     if (dbus_error_is_set(&error) || device != 0)
         goto fail;

So this means that the HTMI device is being ignored because it's not the 
first device.

How do we make this work?

In the case of the hdmi output, this is the lowest device number that 
has the other capabilities we want... should we therefore actually track 
all devices and only add the one with the lowest number? This would work 
out as device 0 for most cases but it would also load the HDMI device in 
this case?




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