lpcware

USB Audio composite device

Discussion created by lpcware Employee on Jun 15, 2016
Content originally posted in LPCWare by davyarm on Mon Oct 27 15:45:53 MST 2014
Hi,
I am trying to create USB Audio composite device with two interfaces (in and out) for streaming. Like sound card.
I am using NXP LPC4357 EVM and LPCOpen library.
I have working examples of audio in and audio out streaming. Device is recognized on windows or mac and streaming works great.

The problem is I am not able to combine two interfaces together and have them properly recognized.

I know I need to have USB descriptors right.

I know that there is limitation of LPCOpen which supports only one streaming interface in USB_Audio_Descriptor_Interface_AC_t.

uint8_t                 InCollection; /**< Total number of Audio Streaming interfaces linked to this Audio Control interface (must be 1). */

Is there any workaround for this?

I've checked some commercial headsets and they all use Audio_ControlInterface_SPC with
InCollection=2;
InterfaceNumber[0]=0;
InterfaceNumber[1]=1;

I have tried to use my own USB Audi Descriptor Interface template with 2 interfaces but it doesn't work.
Windows detects the device as "USB composite device" and doesn't load USB audio generic driver.
It looks it requires some inf file which I want to avoid.
I believe there must be a solution because audio headsets don't require any inf or driver.

Does USB ROM stack have this limitation as well?
Is there any example for audio using USB ROM stack?

Would using USB_Descriptor_Interface_Association_t to bound two audio interfaces help?

Any idea how to solve it?

Last question...
Is it possible to combine USB Audio streaming and USB DFU on one USB controller?
I guess if yes, this would require inf file for sure.

Any source with inf creation help?

Thank you!

Outcomes