Search code examples
iosiphonein-app-purchasemfi

apple mfi iap2 identification rejected


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)


Solution

  • 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)