Android手机:三星s4 Android5.0 内核:3.4.5
手机需root,且需要安装busybox和terminal
Ubuntu版本:14.04
------------------------------------------------------------
1. 命令
设置属性:setprop persist.sys.usb.config
查看属性:getprop persist.sys.usb.config,可查看当前手机USB功能角色(adb,mtp,rndis等)
persist.sys.usb.config 在 /data/property目录下
2. 具体设置
1)打开adb功能:setprop persist.sys.usb.config adb
2)打开mtp功能:setprop persist.sys.usb.config mtp
3)同时打开adb和mtp:setprop persist.sys.usb.config adb,mtp
注:在设置某个功能的同时会将其它功能都关闭,
setprop persist.sys.usb.config adb 在打开adb功能的同时会将USB其它功能都关闭。
3. 打开rndis操作(USB网络共享)
3.1 方法1,步骤:
1)手机使用USB线接入Ubuntu,打开手机 terminal,执行su
2)手机执行:setprop persist.sys.usb.config rndis 启动rndis
3)手机执行:echo 0 > /sys/class/android_usb/android0/enable
echo 1 > /sys/class/android_usb/android0/enable
先关闭USB服务,再开启,即重启usb功能。
4)手机执行:busybox ifconfig -a 可发现新增rndis0网络接口
5)Ubuntu执行:ifconfig 可发现新增usb0接口
6)手机执行:busybox ifconfig rndis0 111.111.111.111 up 启用接口
7)Ubuntu执行:sudo ifconfig usb0 111.111.111.112 up
8)Ubuntu执行:ping 111.111.111.111 -c 3 ping成功
ok
3.2 方法2,步骤如下
手机端执行:
su
echo 0 > /sys/class/android_usb/android0/enable
echo rndis > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
busybox ifconfig rndis0 111.111.111.111 up
Ubuntu端执行:
同3.1步骤一致。
ping 测试,ok。
3.3 注:
1)配置成功后,插拔usb不需重新配置,Ubuntu能直接识别usb0接口,但需要重新up,手机端无需重新up。
2)打开其它USB功能步骤一致,如mtp,adb。
3)配置adb功能时,手机端需要再执行以下命令,重启adb服务。
stop adbd
start adbd
4. 注:
1)USB功能配置的开机启动脚本:/init.usb.rc
2)更改USB的某些功能后可能需要重启才能生效,如将USB改为mtp功能
3)setprop persist.sys.usb.config rndis 操作最终会写入 到/sys/class/android_usb/android0/functions,可以cat functions查看配置。
4)mtp功能:类似于u盘,一般Android手机都带这个功能。
5)除了可以配置USB device的功能,还可以配置USB相关属性,如VID,PID等,
往/sys/class/android_usb/android0/下的各个属性写入参数即可,然后重启USB功能或重启手机。配置的属性手机重启后会还原。
如修改PID:
echo 1111 > /sys/class/android_usb/android0/idProduct
echo 0 > /sys/class/android_usb/android0/enable
echo 1 > /sys/class/android_usb/android0/enable
6)华为Mate9配置rndis
由于未在 /sys/class/android_usb/android0/目录下找到functions,所以mate9只能使用方法1进行配置。
adb shell下执行:setprop persist.sys.usb.config rndis,adb 启动rndis和adb
手机shell(或adb shell)执行:ifconfig -a 可发现新增rndis0网络接口
Ubuntu执行:ifconfig 可发现新增usb0接口
手机执行:ifconfig rndis0 111.111.111.111 up 启用接口
Ubuntu执行:sudo ifconfig usb0 111.111.111.112 up
Ubuntu执行:ping 111.111.111.111 -c 3 ping成功
实测无需重启usb功能即可正常被Ubuntu识别。
另外在CMD下也可以直接进入adb shell,无需再rndis和adb功能间切换,但一次只能使用一种功能。
7)Android下初始化脚本有类似的语句:
on property:sys.usb.config=mtp,adb
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor 18d1
write /sys/class/android_usb/android0/idProduct 4ee2
write /sys/class/android_usb/android0/functions ${sys.usb.config}
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state ${sys.usb.config}