multiple audio control interfaces
multiple audio control interfaces
- Subject: multiple audio control interfaces
- From: Jarrell Irvin <email@hidden>
- Date: Wed, 23 Apr 2003 13:26:16 -0700
I am working on Mac drivers for a USB audio and MIDI device that has
multiple audio control interfaces defined for its USB descriptors. While
this is not something I have seen before, the USB audio spec says that a
device may have multiple audio interface collections (an AIC being one
audio control interface and the audio or MIDI streaming interfaces that
belong to it). Anyway, this was apparently done to get around some
Windows issues. The device has 4 audio control interfaces:
0 audio control for 1 and 2
1 audio streaming
2 audio streaming
3 audio control for 4 and 5
4 audio streaming
5 audio streaming
6 audio control for 7
7 MIDI streaming
8 audio control for 9
9 MIDI streaming
I do not see the device showing up as an audio device in Audio MIDI Setup
(10.2.4), although it does show up as a MIDI device (but only one of the
interfaces, either 7 or 9).
Running IOExplorer, I compared my device to another USB audio and MIDI
device (Event Electronics EZbus) that does show up as both an audio and
MIDI device in Audio MIDI Setup (OK, I am not very knowledgeable about
IOExplorer, but by fumbling around, I saw that drilling down from
IOService would get me to my USB device, and seemed to have more
information than IOUSB or IOAudio). So I noticed that the audio
streaming interfaces of my device (1, 2, 4, and 5) did not show a listing
of AppleUSBAudioDevice, just IOUSBUserClientInit. The EZbus on the other
hand would show both AppleUSBAudioDevice and IOUSBUserClientInit when I
looked at its audio streaming interface. I also noted that MIDI
streaming interface 7 only showed IOUSBUserClientInit, whereas MIDI
streaming interface 9 showed both IOUSBInterfaceUserClient and
IOUSBUserClientInit (leading me to believe that interface 9 was
recognized and 7 wasn't).
This seems to tell me that the device just doesn't match with the Apple
USB audio class driver, and only one interface matches for the Apple USB
MIDI class driver. Are there any known issues with devices having
multiple audio control interfaces? In particular, if Apple's audio
control class driver was only expecting to be matched once for each
device, then I can see why the last audio control interface and its
associated stream (audio control interface #8 and MIDI streaming
interface #9 in my device) were the only interfaces drivers apparently
matched and loaded for...
I also noticed that the descriptors have two fields that are not set
correctly. The bLockDelayUnits field of the Class Specific AS
isochronous Audio Data Endpoint Descriptor (USB audio spec, section
4.6.1) is set to zero. This is not a valid value for either a
synchronous or adaptive endpoint, which is what the device input and
output use, respectively. The wLockDelay field is also zero. I don't
know if these would cause any problems.
Also, one thing I noticed is that, although the USB audio spec says an
audio control interface is required for each audio function, the EZbus
doesn't use one for its MIDI streaming interface, and it appears to work
just fine for OS X (and presumably Windows).
My device is recognized as both audio and MIDI device on Windows XP, so I
know the descriptors are basically legit, although I understand there are
differences in interpretation sometimes.
- jarrell
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.