[linux-audio-user] Midi data arrives, but gets stuck in ALSA's buffer

Pedro Lopez-Cabanillas pedro.lopez.cabanillas at gmail.com
Sun Oct 8 16:47:57 EDT 2006


On Sunday, 8 October 2006 12:02, Lee Revell wrote:
> On Sun, 2006-10-08 at 12:34 +0200, Pedro Lopez-Cabanillas wrote:
> > The main difference, though, between the proprietary and the GPL
> > firmware is
> > the standards compliance, that you can see using the command "lsusb
> > -v" with
> > the device when using each one.  
>
> How exactly is the M-Audio firmware not standards compliant?  

The USB MIDI Devices specification can be found in this document:
http://www.usb.org/developers/devclass_docs/midi10.pdf

It defines what a compliant device should provide: a MIDIStreaming interface, 
using USB bulk transfers for input and output endpoints; the interfaces and  
endpoints should be exposed using standard descriptors, which are defined in 
the document. The GPL firmware fulfills all these requirements.

The MAudio firmware uses interrupt transfers for input endpoints, and a set of 
non standard descriptors, among other differences. You can list the 
descriptors for a device using the command "lsusb -v".

> I thought that the snd-usb-audio driver only supported standards compliant
> devices?

The ALSA USB audio driver uses quirks for a large set of non standard devices, 
based on several identifiers, as the vendor and product ids. This is how it 
can handle the MAudio firmware. See: alsa-kernel/usb/usbquirks.h ("in a 
perfect world, this file would be empty") !!!

Regards,
Pedro




More information about the Linux-audio-user mailing list