安卓USB属性测试
一、安卓USB属性
安卓启动的时候,会针对USB产生对应的action,具体键名,和允许设置的属性,可以查看init.usb.rc文件(有的芯片公司会有自己特有的文件来描述USB属性,如全智sun8i的芯片就在其device目录下有个该芯片特有的属性文件init.sun8i.usb.rc),文件里面有设置USB属性所对应的值,一般usb属性的键名为sys.usb.config,允许设置的属性值有none、accessory、adb、rndis、mass_storage、mtp、ptp等。下面介绍一下几个常用的属性。
二、安卓USB属性设置
1、属性设置命令: setprop sys.usb.config key_value //key_value就是上面提到的属性值 ;
2、属性查看命令: getprop sys.usb.config
3、在使用这些属性的时候,安卓设备一定处于从设备的模式,否则PC无法检测到安卓设备,无法完成属性的测试;
三、常用USB属性的测试
1、adb属性
1)将USB属性设置成adb模式,设置的命令是 setprop sys.usb.config adb ;
2)用USB线将安卓设备连入PC,在PC端下载本博客文件里面的adb.zip压缩包解压,解压后进入目录,到含有*.exe的目录下的空白地方按住“shift”单击鼠标右键,在弹出的对话框里选择“在此处打开窗口命令”,打开adb server服务;

3)打开成功后输入 adb shell 启动服务,如果连接成功就可以在弹出的命令行输入shell命令来操作安卓设备了,是不是很神奇,这样是不是在不知道别人手机密码的情况下,只要能获取控制台的权限就可以在后台悄悄的把手机密码更换或取消了。
4)到此adb属性测试OK;
5)可能存在的问题:连接后电脑不能识别,有可能是你的安卓平台做了主机,要完成设置你的安卓设备应该作为从机,其它的问题暂时想不到。
2、rndis属性测试
1)设置USB属性为rndis模式,设置命令为 setprop sys.usb.config rndis ;
2)查看安卓设备的rndis服务是否启动,查看命令 ifconfig -a (如果不行使用busybox ifconfig -a) ,如果启动成功结果为:

3)设置rndis的IP地址,设置命令为 ifconfig rndis0 xx.xx.xx.xx //或加busybox来使用该命令 ,设置好后在使用 ifconfig -a //或加busybox使用 查看设置效果,设置成功如上图所示;
4)连入PC机,一般情况下PC机会去自动识别设备,然后安装相应的驱动,如果不安装可以查看博客文件里面“win7_rndis测试.pdf”文件来安装驱动,驱动安装完成后在网络适配器中会出现一个新的设备,设备名可能不一样,但一定有“NDIS”这个关键字;
5)在上述驱动装好后,网络适配器会增加一个本地连接,设置这个新增的本地连接的IP地址,该IP地址一定要与安卓设备设置的IP这一个网段,为啥要在一个网段这里不用解释了吧;
6)在DOS命令行使用ping命令来查看网络连接情况,命令为 ping xx.xx.xx.xx //ping的地址为前面设置的安卓设备的IP地址 ,如果网络畅通,说明rndis属性设置成功;
7)测试rndis的网络性能,在博客文件里面下载“iperf.rar”文档到本地解压,解压后进入到有*.exe的目录下,在当前目录空白的地方“shift + 单击右键”,选择“在此处打开窗口命令”,开启iperf服务;
8)在运行起来的服务里面输入 iperf -u -s //UDP通信、作为服务端使用 命令,在安卓控制台输入 iperf -u -c 172.16.1.88 -b 100M -t 60 //在udp模式下,以100Mbps为数据发送速率,客户端到服务器IP上传带宽测试,测试时间为60秒 命令,开始测试带宽;
9)可能存在的问题:
a、PC端驱动能够正常安装,但在网络适配器里显示“电缆线被拔出”,可能的原因是安卓端没有设置rndis服务的IP地址,查看有没设置IP的方法上面已经介绍过了;
b、PC端显示正在识别网络,但连接不上,可能原因是没有给新增的本地连接设置IP。
这个功能是不是也很神奇,以后只要电脑能上网,手机就可以使用网络了,不需要什么wifi的功能。
3、mass_storage属性测试
1)设置USB属性为mass_storage模式,设置的命令是 setprop sys.usb.config mass_storage ;
2)连接到PC,一般会自动安装驱动,如果不能自动安装驱动可以自己手动去安装;
3)驱动安装完成后在“通用串口总线控制器”里面,里面看见一个“USB大存储设备”的设备,“磁盘驱动器”里面也会有相应的驱动,在“磁盘管理”里面可以看见添加进来的存储设备;
4)为什么要介绍第3步,原因是在开发阶段,我们并没有对EMMC进行分盘和格式化,所以就算电脑能够识别,但却没有盘符显示,无法对安卓的存储设备进行读写;
5)若想能看见盘符请查看 http://blog.csdn.net/cqupt_chen/article/details/8717496 这篇博客,里面有讲解如何分盘挂载、以及格式化的方法,会涉及到代码的修改和系统的重新编译,目前没有去做验证,前面博客里的方法是否可行还需要去验证。
四、自己测试总结
以上三项测试第一次测试却用了一整天,adb是轻松game over,但后面两个却花了许多时间,在测试rndis的时候没有设置安卓端rndis服务的IP,导致一直无法连接同,开始一直认为是USB设置有问题,后面才发现原因,在测试mass_storage的时候因为没有看见盘符也是认为自己么有设置好,后面才知道是因为emmc没有分盘和格式化。最狗血的是刚开始因为硬件的原因,无法将安卓设备设置成从机的模式,搞跟硬件相关的工作因为硬件浪费很多时间。

浙公网安备 33010602011771号