android usb rndis驱动,基于安卓的rndis驱动的usb网络共享的实现

开发环境:

硬件;三星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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值