- 14
- 4月
最近由于项目需要,做了iPhone新的lighting接口的播放器开发,也稍微了解了一下MFI的整个认证流程。
iPhone5采用了最新的lighting接口,说是lighting,其实就是把usb接口的 DP DM 信号顺序重排一下,正反都可以插而已,其实也没什么特别的。
旧的Dock的播放器,一般都采用模拟+UART控制来实现播放。而新的接口,只有DP DM信号,也就是说只能采用USB通信,而且最可误的就是必须要有苹果的认证IC,经过认证后才能进行播放。
在音箱播放过程中,也和传统的USB音箱实现方法不同。传统的USB音箱,音箱是做为USB Speaker从机设备,电脑做为主机设备来进行播放。而苹果的播放,则是iPhone做为USB MIC从机,音箱做为主机来进行播放。这一点,和安卓的AOA协议有些类似。
因此,第一步,主要就是对苹果这个USB MIC设备的枚举,以及相关的采样控制等操作了。
然后再谈谈认证过程。
首先,我们需要一颗苹果的认证IC,一般是IIC的接口。从认证IC中读取版本信息等。
然后,对iPhone发送 StartIDPS 命令,同时获取 设备的 lingo(命令分组) 支持,通过 setfidtoken 告知苹果我们的版本信息等。再发送 EndIDPS。这样,第一步就完成了。
接下来,第二步,苹果发起 GetDevAuthenticationInfo 请求,我们需要从认证IC中读取Cert证书信息,通过命令RetDevAuthenticationInfo回给iPhone。
第三步,苹果确认证书后,发送GetDevAuthenticationSignature命令,同时会发送Challenge数据。我们将接收到的Challenge数据,写入认证IC的Challenge寄存器,等待计算完成后,从认证IC中读出Signature数据,通过RetDevAuthenticationSignature回应给iPhone。等待苹果确认后,就可以播放音乐了。