开发环境:
硬件;三星s5pv210
软件;linux3.0.8内核(用于android)
文件系统;嵌入式qt文件系统
内核配置
--- USB Gadget Support | |
| | [ ] Debugging messages (DEVELOPMENT) | |
| | [ ] Debugging information files (DEVELOPMENT) | |
| | (2) Maximum VBUS Power usage (2-500 mA) | |
| | USB Peripheral Controller (S3C HS USB OTG Device) ---> | |
| | *** NOTE: S3C OTG device role enables the controller driver below *** | |
| | S3C high speed(2.0, dual-speed) USB OTG device | |
| | S3C OTGD transfer mode (enabled DMA MODE) ---> | |
| | USB Gadget Drivers (Android Gadget) ---> | |
| | Android Gadget | |
| | [*] Use double word aligned | |
| |
注意:210平台的这个内核必须勾选Use double word aligned,否则网络通不了.
启动脚本配置
#/bin/sh
echo LGE > /sys/class/android_usb/adroid0/f_rndis/manufacturer
echo 18d1 > /sys/class/android_usb/android0/f_rndis/vendorID
echo 1 > /sys/class/android_usb/android0/f_rndis/wceis
echo 0 > /sys/class/android_usb/android0/enable
echo 18d1 > /sys/class/android_usb/android0/idVendor
echo 4ee4 > /sys/class/android_usb/android0/idProduct
echo 239 > /sys/class/android_usb/android0/bDeviceClass
echo 2 > /sys/class/android_usb/android0/bDeviceSubClass
echo 1 > /sys/class/android_usb/android0/bDeviceProtocol
echo rndis,mass_storage > /sys/class/android_usb/android0/functions
echo /dev/mmcblk1p1 > /sys/class/android_usb/android0/f_mass_storage/lun/file
echo 1 > /sys/class/android_usb/android0/enable
sleep 1
ifconfig rndis0 down
ifconfig rndis0 192.168.8.1 up
执行完毕上述脚本,即实现了rndis,和U盘的2个功能,如果需要实现开启usb的其他功能,参见下面的说明
# Copyright 2013 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. on init write /sys/class/android_usb/android0/f_rndis/manufacturer LGE write /sys/class/android_usb/android0/f_rndis/vendorID 18D1 write /sys/class/android_usb/android0/f_rndis/wceis 1 on boot write /sys/class/android_usb/android0/iSerial ${ro.serialno} write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer} write /sys/class/android_usb/android0/iProduct ${ro.product.model} # MTP on property:sys.usb.config=mtp stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18D1 write /sys/class/android_usb/android0/idProduct 4EE1 write /sys/class/android_usb/android0/bDeviceClass 0 write /sys/class/android_usb/android0/bDeviceSubClass 0 write /sys/class/android_usb/android0/bDeviceProtocol 0 write /sys/class/android_usb/android0/functions mtp write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} 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/bDeviceClass 0 write /sys/class/android_usb/android0/bDeviceSubClass 0 write /sys/class/android_usb/android0/bDeviceProtocol 0 write /sys/class/android_usb/android0/functions mtp,adb write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config} # rndis on property:sys.usb.config=rndis stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18D1 write /sys/class/android_usb/android0/idProduct 4EE3 write /sys/class/android_usb/android0/bDeviceClass 239 write /sys/class/android_usb/android0/bDeviceSubClass 2 write /sys/class/android_usb/android0/bDeviceProtocol 1 write /sys/class/android_usb/android0/functions rndis write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=rndis,adb write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18D1 write /sys/class/android_usb/android0/idProduct 4EE4 write /sys/class/android_usb/android0/bDeviceClass 239 write /sys/class/android_usb/android0/bDeviceSubClass 2 write /sys/class/android_usb/android0/bDeviceProtocol 1 write /sys/class/android_usb/android0/functions rndis,adb write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config} # PTP on property:sys.usb.config=ptp stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18D1 write /sys/class/android_usb/android0/idProduct 4EE5 write /sys/class/android_usb/android0/bDeviceClass 0 write /sys/class/android_usb/android0/bDeviceSubClass 0 write /sys/class/android_usb/android0/bDeviceProtocol 0 write /sys/class/android_usb/android0/functions ptp write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=ptp,adb write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18D1 write /sys/class/android_usb/android0/idProduct 4EE6 write /sys/class/android_usb/android0/bDeviceClass 0 write /sys/class/android_usb/android0/bDeviceSubClass 0 write /sys/class/android_usb/android0/bDeviceProtocol 0 write /sys/class/android_usb/android0/functions ptp,adb write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config} # diag on property:sys.usb.config=diag stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 1004 write /sys/class/android_usb/android0/idProduct 61F1 write /sys/class/android_usb/android0/bDeviceClass 239 write /sys/class/android_usb/android0/bDeviceSubClass 2 write /sys/class/android_usb/android0/bDeviceProtocol 1 write /sys/class/android_usb/android0/f_acm/acm_transports smd write /sys/class/android_usb/android0/f_diag/clients diag write /sys/class/android_usb/android0/functions acm,diag,mtp,adb write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config} # USB midi configuration on property:sys.usb.config=midi write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18d1 write /sys/class/android_usb/android0/idProduct 4ee8 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} # USB midi configuration, with adb on property:sys.usb.config=midi,adb write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18d1 write /sys/class/android_usb/android0/idProduct 4ee9 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} on property:sys.usb.config=diag,adb stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 1004 write /sys/class/android_usb/android0/idProduct 61F1 write /sys/class/android_usb/android0/bDeviceClass 239 write /sys/class/android_usb/android0/bDeviceSubClass 2 write /sys/class/android_usb/android0/bDeviceProtocol 1 write /sys/class/android_usb/android0/f_acm/acm_transports smd write /sys/class/android_usb/android0/f_diag/clients diag write /sys/class/android_usb/android0/functions acm,diag,mtp,adb write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config}