打印
[应用方案]

M484通过脚本测试iOS 11.4+的USB BUG

[复制链接]
871|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vsfopen|  楼主 | 2018-7-20 14:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
iOS 11.4更新中,苹果为USB加上了第5个配置,在第4个的基础上,用ncm网卡换掉了性能不佳的ipheth。不过,貌似在读取字符串描述符的时候,会引起错误,从而引起内核崩溃,手机重启。

VSF最近正好做了脚本系统,可以通过脚本控制USB外设,就用这套脚本系统,测试以下iOS里的这个BUG。


这里,接上iPhone手机后(11.4+),系统检测到之后,会先读取product字符串和vendor字符串,这里没有问题,然后会读取配置5的配置字符串。读取配置5字符串的时候,脚本卡住,因为urb执行没返回,这个时候断开iPhone手机,然后urb出错返回,可以看到描述符数据是正常的,但是,这时手机重启。

贴上M484测试用的脚本代码:
wait_dev(pid, vid)
{
        var dev;
        while (1)
        {
                dev = usbhdev_find(pid, vid);
                if (dev != 0)
                {
                        return dev;
                }
                timer_delayms(100);
        }
}

var usbhdev dev = wait_dev(0x05AC, 0x12A8);
print('iPhone Connected\r\n');

var vendor_str = dev.transfer(0 | USBH_EPIN, USBH_TRANS_CTRL, 0x80, 0x06, 0x0301, 0x0409, 255);
print('vendor string: ', vendor_str, '\r\n');

var dev_str = dev.transfer(0 | USBH_EPIN, USBH_TRANS_CTRL, 0x80, 0x06, 0x0302, 0x0409, 255);
print('device string: ', dev_str, '\r\n');

var config5_str = dev.transfer(0 | USBH_EPIN, USBH_TRANS_CTRL, 0x80, 0x06, 0x030C, 0x0409, 255);
print('config5 string descriptor: ', config5_str, '\r\n');


想试一下的话,可以看这里:
https://bbs.21ic.com/icview-2530324-1-1.html
这个是GD32运行脚本系统的说明,如果是用M484(带USB主机口)的话,工程位于:vsf/example/vsfaio/proj/EWARM_M480/demo.eww
沙发
huangcunxiake| | 2018-7-20 22:33 | 只看该作者
看不懂,看来我太菜了。

使用特权

评论回复
板凳
zhuotuzi| | 2018-7-20 22:53 | 只看该作者
iOS是苹果手机吧

使用特权

评论回复
地板
vsfopen|  楼主 | 2018-7-21 10:06 | 只看该作者
zhuotuzi 发表于 2018-7-20 22:53
iOS是苹果手机吧

是的,还有ipad

使用特权

评论回复
5
vsfopen|  楼主 | 2018-7-21 11:05 | 只看该作者
huangcunxiake 发表于 2018-7-20 22:33
看不懂,看来我太菜了。

https://bbs.21ic.com/icview-2532468-1-1.html
MCU脚本系统的一些简单介绍。

使用特权

评论回复
6
jasontu| | 2018-7-23 08:54 | 只看该作者
建议还是抓usb package,因为看起来像get config report. 而已。
有回应该是封包有发成功,但後面的流程才有问题才对,才会让usb devices产生reset,或halt住。


使用特权

评论回复
7
vsfopen|  楼主 | 2018-7-23 09:44 | 只看该作者
jasontu 发表于 2018-7-23 08:54
建议还是抓usb package,因为看起来像get config report. 而已。
有回应该是封包有发成功,但後面的流程才 ...

在看一下,这个是读取1,2,12号字符串描述符。出问题的原因已经知道,iOS会识别主机系统。不过即使错误的USB请求,引起手机复位的话,也是不应该的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

324

帖子

8

粉丝