Android USB 属性设置:ADB、RNDIS、MTP等
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}
?
?
總結
以上是生活随笔為你收集整理的Android USB 属性设置:ADB、RNDIS、MTP等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 丹东站几乎每人都拎着泡沫箱子:原来这里是
- 下一篇: 华硕新款 ROG 幻 16 星空版图赏: