El Mar 20 Ago 2002 10:10, Clemens Ladisch escribi�:
> Pedro Lopez-Cabanillas wrote:
> > I suggest you to add these modules to the /etc/hotplug/blacklist file:
> > # cat /etc/hotplug/blacklist
> > audio
> > usb-midi
> > snd-usb-audio
> > snd-usb-midi
> >
> > You can see that I include the ALSA modules here. This prevents hotplug
> > from loading them when you plug the keyboard, but this is not a problem
> > if you use the right /etc/modules.conf setup, and the alsasound script.
>
> IMHO there's nothing wrong with loading the driver when the keyboard is
> plugged in. I'd suggest to list only the OSS drivers in the blacklist file.
Hotplug can't load the snd-usb-midi module, except for the vendor/product ids
listed in MODULE_DEVICE_TABLE(usb, snd_usbmidi_usb_id_table). Michael has an
Evolution keyboard, a standard USB class compliant device, AFAIK.
Hotplug only looks for the first interface descriptor found for each device.
And the standard for USB MIDI is an AudioControl interface descriptor
(SubClass=1). This interface don't match with the first entry in your table:
static usb_device_id_t snd_usbmidi_usb_id_table[] = {
{ match_flags: USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS,
bInterfaceClass: USB_CLASS_AUDIO,
bInterfaceSubClass: USB_SUBCLASS_MIDISTREAMING }, ...
But it matches with the corresponding table in usbaudio.c:
static struct usb_device_id usb_audio_ids [] = {
{ .match_flags = (USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS),
.bInterfaceClass = USB_CLASS_AUDIO,
.bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL },
{ } /* Terminating entry */
};
You can read a bit about this in
http://linux-hotplug.sourceforge.net/?selected=usb
variable: INTERFACE
example: 3/1/1
notes: bInterfaceClass/bInterfaceSubClass/bInterfaceProtocol, from _first_
interface descriptor. Available only for device class zero. Numbers are
decimal.
As a result, when you plug a true standard USB MIDI thing, hotplug invokes the
user.agent script with only information about the AudioControl interface, and
user.agent probe() the snd-usb-audio module, that fails for MIDI-only
devices. The snd-usb-midi module is never loaded neither probed.
The only workaround I know for now, is blacklist snd-usb-audio module and
load snd-usb-midi by hand or like any other ALSA module: kmod + modules.conf
A clean solution for future development, IMHO, can be a third snd-usb module,
a kind of ALSA-USB arbitrator, responsible for the descriptor parsing code,
register in USB and ALSA subsystems, and for loading the audio or midi
modules. This can be useful also for integration of some mixed audio/midi
devices, as Mr. Takashi asked for.
Regards,
Pedro
-------------------------------------------------------
This sf.net email is sponsored by: OSDN - Tired of that same old
cell phone? Get a new here for FREE!
https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
_______________________________________________
Alsa-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-user