Martin Langer wrote: > Thanks for all patches, but I don't found an error in the log-files. The last > line is/was always the detection, which seems to work fine (see above). I'm > still missing a client in /proc/asound/seq/clients, so the driver never > reaches the port creation and I have no additional output from your patch. > Something else must be between usb-detection and creation of the port!
It seems that snd_usbmidi_seq_device_new is never called (???), or fails. Please try the following patch (in addition to my other one), which will output a lot of debug messages: --- usb/usbmidi.c.org Wed Jul 31 10:57:09 2002 +++ usb/usbmidi.c Wed Jul 31 12:13:03 2002 @@ -874,20 +874,24 @@ for (i = 0; i < MAX_ENDPOINTS; ++i) { usbmidi_endpoint_info_t* ep_info = &umidi->device_info.endpoints[i]; + printk(KERN_INFO "endpoint %d ...\n", i); if (!ep_info->epnum) continue; if (ep_info->out_cables) { + printk(KERN_INFO "... output\n"); err = snd_usbmidi_out_endpoint_create(umidi, ep_info, &umidi->endpoints[i]); if (err < 0) return err; } if (ep_info->in_cables) { + printk(KERN_INFO "... input\n"); err = snd_usbmidi_in_endpoint_create(umidi, ep_info, &umidi->endpoints[i]); if (err < 0) return err; } + printk(KERN_INFO "... ports\n"); err = snd_usbmidi_create_endpoint_ports(umidi, i, &port_idx); if (err < 0) return err; @@ -909,8 +913,10 @@ snd_seq_client_info_t client_info; int i, err; + printk(KERN_INFO "snd_usbmidi_seq_device_new() called\n"); umidi = (usbmidi_t*)SNDRV_SEQ_DEVICE_ARGPTR(seq_device); + printk(KERN_INFO "creating client\n"); memset(&client_callback, 0, sizeof(client_callback)); client_callback.allow_output = 1; client_callback.allow_input = 1; @@ -919,6 +925,7 @@ if (umidi->seq_client < 0) return umidi->seq_client; + printk(KERN_INFO "setting client name\n"); memset(&client_info, 0, sizeof(client_info)); client_info.client = umidi->seq_client; client_info.type = KERNEL_CLIENT; @@ -928,12 +935,15 @@ SNDRV_SEQ_IOCTL_SET_CLIENT_INFO, &client_info); + printk(KERN_INFO "creating endpoints\n"); err = snd_usbmidi_create_endpoints(umidi); if (err < 0) { + printk(KERN_INFO "... failed\n"); snd_usbmidi_seq_device_delete(seq_device); return err; } + printk(KERN_INFO "submitting URBs\n"); for (i = 0; i < MAX_ENDPOINTS; ++i) if (umidi->endpoints[i].in) snd_usbmidi_submit_urb(umidi->endpoints[i].in->urb, > tuba:~# cat /proc/asound/cards > 0 [card0 ]: USB MIDI - Evolution Electronics L MK-249C Evolution > Electronics L MK-249C Evolution Elect (a4d:8e if 1 at 001/002) > Evolution Electronics L MK-249C Evolution Elect (a4d:8e > if 1 at 001/002) > > The only strange thing I found are the unknown parts of the lsusb output > (broken descriptor?) and the impossible module reload = segfault. IMHO the garbled device name is strange, too. ;-) This is a (rather harmless) buffer overflow which has been fixed by the latest version of my other patch. HTH Clemens ------------------------------------------------------- This sf.net email is sponsored by: Dice - The leading online job board for high-tech professionals. Search and apply for tech jobs today! http://seeker.dice.com/seeker.epl?rel_code=31 _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel