搜索
bottom↓
回复: 12

USB HID设备在Mac和iOS上枚举失败的问题

[复制链接]

出0入0汤圆

发表于 2021-12-28 16:05:42 | 显示全部楼层 |阅读模式
用沁恒的 CH547 做一款 USB HID 键鼠设备,在 Win10 和 Android 上枚举成功,键盘、鼠标功能均正常。但是在 Mac 和 iOS 上却枚举失败。
用沁恒的 USB 分析仪抓取数据后发现在 Mac 平台枚举时一直在不断的分配 USB 设备地址,部分过程如下图:

在 iOS 上枚举过程部分截图如下:

在 Mac 和 iOS 上都可以完成设备描述符、配置描述符和部分字符串描述符的枚举,但是都无法完成报告描述符的枚举。
对比了在 Win 和 Mac/iOS 上枚举过程的差异,发现请求描述符的顺序不一样:在 Win 上,是先请求设备描述符,再请求配置描述符,再请求字符串描述符,最后请求报告描述符,并且枚举过程执行过多次。在 Mac 和 iOS 上,先请求设备描述符,再请求字符串描述符,再请求配置描述符。
不过请求顺序不同应该不是导致枚举失败的原因。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出590入1001汤圆

发表于 2021-12-28 16:42:14 | 显示全部楼层
不懂帮顶,楼主用的沁恒的:usb1.1/2.0硬件分析仪吗?效果怎么样,和bushound比怎么样?

出0入0汤圆

 楼主| 发表于 2021-12-28 17:12:42 | 显示全部楼层
SUPER_CRJ 发表于 2021-12-28 16:42
不懂帮顶,楼主用的沁恒的:usb1.1/2.0硬件分析仪吗?效果怎么样,和bushound比怎么样? ...

bushound 只能抓正常工作的USB设备的数据,也就是设备枚举成功后的数据。沁恒的分析工具可以把 host 和 device 之间通信的每个细节都抓到。

出0入0汤圆

 楼主| 发表于 2021-12-28 17:37:05 | 显示全部楼层
针对抓到的数据,发现了一个问题:在 Mac 和 iOS 上都有从 host 发出的 Set_Feature 请求,而 device 没有对此请求做响应。另外都是在收到发出 Set_Feature 请求后,总线复位(Mac 下)或 device 停止响应 (iOS下)。应该是 device 固件没有对 Set_Feature 请求做出响应。

出590入1001汤圆

发表于 2021-12-28 19:09:47 | 显示全部楼层
yangwc 发表于 2021-12-28 17:37
针对抓到的数据,发现了一个问题:在 Mac 和 iOS 上都有从 host 发出的 Set_Feature 请求,而 device 没有 ...

你应用的专用的hid芯片,其核心通信应该不需要太多关注吧,芯片内部应该处理了?是不是这个芯片本身就对mac支持的不好?

出0入18汤圆

发表于 2021-12-29 08:11:43 来自手机 | 显示全部楼层
你是复合设备,应该要实现setfeature的吧

出20入25汤圆

发表于 2021-12-29 08:30:49 来自手机 | 显示全部楼层
yangwc 发表于 2021-12-28 17:12
bushound 只能抓正常工作的USB设备的数据,也就是设备枚举成功后的数据。沁恒的分析工具可以把 host 和 d ...

分析仪是硬件还是软件

出0入0汤圆

发表于 2021-12-29 08:45:01 | 显示全部楼层
chenchaoting 发表于 2021-12-29 08:30
分析仪是硬件还是软件

硬件的,我今年初也买了一个,用着还行。

出0入0汤圆

 楼主| 发表于 2021-12-29 09:23:41 | 显示全部楼层
SUPER_CRJ 发表于 2021-12-28 19:09
你应用的专用的hid芯片,其核心通信应该不需要太多关注吧,芯片内部应该处理了?是不是这个芯片本身就对m ...

不是专用的HID芯片。是带 USB device 功能的MCU。

出0入0汤圆

 楼主| 发表于 2021-12-29 09:28:24 | 显示全部楼层
找到原因了。设备收到主机主机发送的 SET FEATURE 请求后,开启了唤醒主机功能。HID设备唤醒主机导致在 Mac 平台 USB 总线复位。去掉唤醒主机功能后,在 Mac 和 iOS 平台都可以枚举成功。

出0入0汤圆

 楼主| 发表于 2021-12-29 09:34:58 | 显示全部楼层
chenchaoting 发表于 2021-12-29 08:30
分析仪是硬件还是软件

分析仪是一个硬件设备,有支持USB1.0和USB2.0两个机型。要配合沁恒自己的上位机 USB Monitor使用,USB Monitor只有 Win 平台的。分析仪有三个 USB A口,一个连接 USB Monitor,另外两个分别连接 Host 和 Device。抓取到的数据可以保存为特定格式,也可以保存为 txt 格式。可以针对不同的令牌包设置字体颜色和背景色。

出590入1001汤圆

发表于 2022-1-24 12:56:00 | 显示全部楼层
刚下单买了一个USB2.0。希望自己的USB能够再进一步!

出0入0汤圆

发表于 2022-1-24 19:19:51 | 显示全部楼层
解析功能似乎很简陋
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-16 06:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表