626|0

6

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【CH554(新版)DIY】作为host主机与Android设备建立ADB连接 [复制链接]

10芯积分

CH554(新版)开发板的例程中有host例程,和Android设备之间是启动AOA模式进行通信。为了和Android设备之间建立ADB连接,想着改一下例程,不启动AOA模式,直接用USB通信,根据ADB协议发送数据包,期望与设备建立ADB连接。但过程中遇到了一些问题,希望得到各位的帮助。

 

首先说一下,我对ADB连接的理解如下(不对的地方还请各位指正):

1.    连接USB,主机发送CNXN连接请求到手机,即host->Android(ADB_CNXN);

2.    手机发送AUTH认证消息(20字节随机数字)给主机,即 Android -> host (ADB_AUTH_TOKEN);

3.    PC使用私钥对这个消息(20字节随机数字)签名然后发送给手机,即host -> Android (ADB_AUTH_SIGNATURE );

4.    手机使用公钥验证签名,如果成功,开始下一步通讯,否则再发送AUTH认证(20字节随机数字)给主机,即 Android -> host (ADB_AUTH_TOKEN);

5.    PC将公钥发送给手机,即host -> Android (ADB_AUTH_RSAPUBLICKEY );

6.    手机弹出认证框,用户选择是否加入信任列表

实际烧录程序进开发板后,与手机的通信过程如下:

1.CH554发送CNXN连接请求

可以看到,CH554发送CNXN连接请求,手机端正常回复了ADB_AUTH_TOKEN。

 

2.发送公钥ADB_AUTH_RSAPUBLICKEY

由于手机上不可能存在公钥,所以即使CH554将随机TOKEN的内容签名,手机也无法利用对应的公钥验证,所以我跳过了ADB_AUTH_SIGNATURE,即私钥签名这一步骤,直接发送了公钥给手机,期望在手机上出现弹窗(公钥的数据内容很长,我直接放最后一部分):

公钥内容全部发送完毕后,手机上期待的弹窗并未出现,且通过USB分析仪可以看到,在多次IN包请求无响应后,程序重置回了最初获取设备描述符的阶段,然后循环。

另外,我也尝试了直接使用例程中提供的AOA模式启动(因为了解到AOA协议中,也有为ADB通信准备的接口,但是测试下来结果更坏,在发送完公钥之后,板子和手机之间的USB连接也断了)

为什么没有弹出对话框呢?是不是我哪里理解得不对,敬请各位提供一些帮助。

此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表