[alsa-devel] E-MU 0404/0202 USB implementation

Clemens Ladisch cladisch at fastmail.net
Tue Sep 18 09:40:42 CEST 2007

James Courtier-Dutton wrote:
> I am looking to implement support for the E-Mu USB cards.
> The card is basically following a mix of USB 1.0 and USB 2.0 descriptors.
> The bInterfaceClass field of the standard interface descriptors for the
> Audio Control, Audio Streaming, and MIDI Streaming interfaces are set to
> 0xFF (vendor-specific) instead of 0x01 (USB Audio).
> Can I put in a quirk into the snd-usb-audio driver to handle this?

There are no class-specific descriptors, so you cannot simply use an

It would be possible to hardcode a specfifc sample format with an
AUDIO_FIXED_ENDPOINT quirk, but this doesn't work when there is more
than one alternate setting.

I think you have to manually add several sample formats, like in the
UA-1000 quirk, but calling add_audio_endpoint() several times.

The asynchronous feedback of the output endpoints should work; it does
with the SB Audigy 2 NX in high speed mode.

Please note that the descriptors may be different in full speed mode.

QUIRK_MIDI_FIXED_ENDPOINT should work for interface 3.

> The card also has customised controls. Can one add those to
> snd-usb-audio, or would it be better to add those to a totally new
> driver?

usbmixer.c currently doesn't have a mechanism to add mixer controls that
are not listed in the descriptors, but it should be possible to create
the data structures to describe those.

A totally new driver might be a good idea if the core part of usbaudio.c
were in a library.  I always planned to do that when I'd find some time.


More information about the Alsa-devel mailing list