Index: src/modules/module-hal-detect.c
===================================================================
--- src/modules/module-hal-detect.c	(revision 1939)
+++ src/modules/module-hal-detect.c	(working copy)
@@ -176,7 +176,7 @@
         goto fail;
 
     device = libhal_device_get_property_int(u->context, udi, "alsa.device", &error);
-    if (dbus_error_is_set(&error) || device != 0)
+    if (dbus_error_is_set(&error))
         goto fail;
 
     card = libhal_device_get_property_int(u->context, udi, "alsa.card", &error);
@@ -190,12 +190,12 @@
         *sink_name = pa_sprintf_malloc("alsa_output.%s", strip_udi(udi));
         
         module_name = "module-alsa-sink";
-        args = pa_sprintf_malloc("device=hw:%u sink_name=%s", card, *sink_name);
+        args = pa_sprintf_malloc("device=hw:%u,%u sink_name=%s", card, device, *sink_name);
     } else {
         *source_name = pa_sprintf_malloc("alsa_input.%s", strip_udi(udi));
         
         module_name = "module-alsa-source";
-        args = pa_sprintf_malloc("device=hw:%u source_name=%s", card, *source_name);
+        args = pa_sprintf_malloc("device=hw:%u,%u source_name=%s", card, device, *source_name);
     }
 
     pa_log_debug("Loading %s with arguments '%s'", module_name, args);

