【CH554】作为host主机与Android设备建立ADB连接

        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连接也断了,如果有懂AOA协议的大佬可以解答一下吗?)

        所以我想问的是:为什么在收到公钥后手机没有弹出对话框?是不是我哪里理解得不对,敬请各位大佬提供一些思路和帮助,万分感谢。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值