I was developing an usb audio device for ios. And i use the "usb devcie mode"(my deivce is the USB host,apple is USB device), compliance with apple offical doc:mfi accessory interface specification for apple device release R5.
I have pass the authentication,and get apple "StartIdentification" request. When sent "IdentificationInformation" command with my identification. I get "IdentificationReject" for ID 15.(USBDeviceTransportComponent)
I have try just remove ID15's "USBDeviceSupportedAudioSamplerate" parmeter:6,7,8(enum value correspond to samplerate),and the "USB Device Mode Audio" command in ID6,ID7. And i get "IdentificationAccept".But i can't use usb audio whithout audio command now...
The rejected IdentificationInformation ID15 hex dump: 00 1C 00 0F //group header 00 06 00 00 // parmeter 0 header 0A 01 //component id 00 07 00 01 // parmeter 1 header 73 61 00 //name string 00 04 00 02 //parmeter 2 header(only header,means transport support iap2) 00 07 00 03 //parmeter 3 header 06 07 08 //samplerate enum val(32k,44.1k,48k)
After figuring out you hex dump data, I found the problem is in sample rate parameter. You need id3 parameter for each sample rate.
Correct hex dump :
00 24 00 0F //group header
00 06 00 00 // parmeter 0 header
0A 01 //component id
00 07 00 01 // parmeter 1 header
73 61 00 //name string
00 04 00 02 //parmeter 2 header(only header,means transport support iap2)
00 05 00 03 //parmeter 3 header
06 //samplerate enum val(32k)
00 05 00 03 //parmeter 3 header
07 //samplerate enum val(44.1k)
00 05 00 03 //parmeter 3 header
08 //samplerate enum val(48k)