Hartmut Geissbauer wrote: > I own a piece of hardware called Noah EX. It's a "tactive > instrument modeller". > My goal is to get this device working with the alsa usb driver, > because the output of lsusb -v leads me to the hope, that it has a > standard usb audio interface. > ... > Interface Descriptor: > bInterfaceClass 1 Audio > bInterfaceSubClass 1 Control Device > ... > bInterfaceSubClass 2 Streaming (= PCM) > ... > bInterfaceSubClass 3 Non Streaming (= MIDI)
Well, this device indeed has standard descriptors. > What I discoverd yet, is that the device is offering two > configurations. And the second is the audio and midi related one. > The first seems to be the configuration "channel". > Feb 5 00:28:33 chief kernel: usb 1-2.4: configuration #1 chosen from 2 choices The problem is that the kernel automatically selects the first configuration. Please try the patch below. HTH Clemens -- Index: alsa-kernel/usb/usbquirks.h =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/usb/usbquirks.h,v retrieving revision 1.27 diff -u -r1.27 usbquirks.h --- alsa-kernel/usb/usbquirks.h 11 Feb 2004 12:15:55 -0000 1.27 +++ alsa-kernel/usb/usbquirks.h 12 Feb 2004 10:56:21 -0000 @@ -698,4 +698,13 @@ } }, +{ + USB_DEVICE_VENDOR_SPEC(0x1107, 0x0102), + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { + .vendor_name = "CreamWare", + .product_name = "Noah", + .ifnum = QUIRK_NO_INTERFACE + } +}, + #undef USB_DEVICE_VENDOR_SPEC Index: alsa-kernel/usb/usbaudio.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.c,v retrieving revision 1.79 diff -u -r1.79 usbaudio.c --- alsa-kernel/usb/usbaudio.c 9 Feb 2004 16:25:38 -0000 1.79 +++ alsa-kernel/usb/usbaudio.c 12 Feb 2004 10:56:21 -0000 @@ -2820,6 +2820,14 @@ goto __err_val; config = dev->actconfig; } + /* Creamware Noah needs to be set to the second configuration */ + if (dev->descriptor.idVendor == 0x1107 && dev->descriptor.idProduct == 0x0102 && + ifnum == 0) { + if (get_cfg_desc(dev->actconfig)->bConfigurationValue == 1) + usb_set_configuration(dev, 2); + /* but don't actually claim interface 0 */ + goto __err_val; + } /* * found a config. now register to ALSA ------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel