背景说明:

一位台湾客户需要采购一批SIMCOM SIM6600CE模组用于Tinker board2s,需要适配Debain系统和Android系统。

主要修改点:

1、defconfig 增加RNDIS HOST驱动

2、在option.c中屏蔽interface 0、1两个cdc接口

3、修改usbnet.c,使rndis网卡的名称从usb0变成eth0。因为Android默认只挂载eth网卡,所以为了提高Android系统兼容性并减少修改难度,直接在驱动层入手。

diff --git a/arch/arm64/configs/tinker_board_2_defconfig b/arch/arm64/configs/tinker_board_2_defconfig
index 5e0f2a8..ddd4a07 100755
--- a/arch/arm64/configs/tinker_board_2_defconfig
+++ b/arch/arm64/configs/tinker_board_2_defconfig
@@ -794,7 +794,7 @@ CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_UEVENT=y
CONFIG_USB_CONFIGFS_ACM=y
-CONFIG_USB_CONFIGFS_RNDIS=y
+# CONFIG_USB_CONFIGFS_RNDIS=y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_F_ACC=y
@@ -949,6 +949,7 @@ CONFIG_CRYPTO_DEV_ROCKCHIP=y
CONFIG_PRINTK_TIME=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_FS=y
+CONFIG_DYNAMIC_DEBUG=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_SOFTLOCKUP_DETECTOR=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index d3f79a4..3edb1fe 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -15,6 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
+#define DEBUG // error path messages, extra info
+#define VERBOSE // more; success messages
+
#include <linux/module.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index adab6e2..8bf5de2 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1771,6 +1771,10 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
if ((dev->driver_info->flags & FLAG_NOARP) != 0)
net->flags |= IFF_NOARP; + if (strncmp("RNDIS device", dev->driver_info->description,
+ sizeof("RNDIS device") - 1) == 0)
+ strcpy(net->name, "eth%d");
+
/* maybe the remote can't receive an Ethernet MTU */
if (net->mtu > (dev->hard_mtu - net->hard_header_len))
net->mtu = dev->hard_mtu - net->hard_header_len;
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 3a66f1e..25175c0 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -526,6 +526,7 @@ static void option_instat_callback(struct urb *urb);
#define MEDIATEK_PRODUCT_FP_2COM 0x0023
#define MEDIATEK_PRODUCT_FPDC_1COM 0x0043
#define MEDIATEK_PRODUCT_FPDC_2COM 0x0033
+#define MEDIATEK_PRODUCT_SIM6600 0x2010 /* Cellient products */
#define CELLIENT_VENDOR_ID 0x2692
@@ -2001,6 +2002,8 @@ static const struct usb_device_id option_ids[] = {
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7106_2COM, 0x02, 0x02, 0x01) },
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) },
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) },
+ { USB_DEVICE(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_SIM6600),
+ .driver_info = RSVD(0) | RSVD(1) },
{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MPL200),
.driver_info = RSVD(1) | RSVD(4) },

USB连接SIM6600CE后,使用ifconfig命令出现了eth1,此时可以发现Android系统已经自动给eth1分配了ip,系统状态栏出现以太网图标。注意,如果在framework层修改默认挂载网卡位usb0也可以解决上网问题,但是eth网卡就不能上网了,这会对开发板自带的以太网网卡以及后续可能会挂载的usb网卡造成影响。

Android 系统使RNDIS网卡上网的更多相关文章

  1. cloudstack 添加新网卡使其能上网

    由于虚拟机使用了默认的网络套餐,是不能上网的.现在的需求是使其能上网. 操作步骤: 1.添加一个在能上网的网络里的网卡,使其成为默认网卡 2.复制网卡配置文件,修改网卡名称等,重启network(可能 ...

  2. 在Android系统中修改Android.mk使其同时编译rgb2565和rgb2888(向out/host/linux-x86/bin/下新增加一个工具命令)【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7514559 在Android系统中修改android.mk使其同时编译rgb2565和rgb ...

  3. VMWARE虚拟机CentOS6.4系统使用主机无线网卡上网的三种方法介绍

    转自:http://www.jb51.net/network/98820.html 如何真正的实现VMWARE虚拟机CentOS6.4系统使用主机无线网卡上网   环境:WIN7旗舰版,台式机,U盘无 ...

  4. [总结]Android系统体系结构

    Android 从图中可以看出Android主要的组成部分,其中底层是Linux的内核,包括的主要就是文件.内存.系统资源等的管理,Google在这部分的工作主要就是电源管理和一部分驱动,并且整合上层 ...

  5. Android系统源代码——所需工具

    一.概述 众所周知,Android移动操作系统是Google花费了很大的财力.物力及人力的前提下,推广到世界各个角落,以开放源代码的方式(当然也不是完全开放所有),使其在世界范围内迅速漫延开来,到目前 ...

  6. 第一章 Android系统移植与驱动开发概述

    本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容. 所谓“移植”是指为特定的自己的设备,如手机定制Android的过程.自己开发一些程序(移植)装载在设备上,使得Andro ...

  7. (转)Android 系统 root 破解原理分析

    现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...

  8. android系统架构解析

    以上是我在这个课题下的一些参考博客或者网页链接.里面有对于android架构的一些较好的分析理解,接下来是楼主在阅读后自己的一些整理. Android采用层次化系统架构,官方公布的标准架构如下图所示. ...

  9. 深入浅出-Android系统移植与平台开发(一)- Android4.0系统的下载与编译

    作者:唐老师,华清远见嵌入式学院讲师. 一.Android4.0系统的下载与编译 Android系统的下载与编译,Google的官方网站上已经给出了详细的说明,请参照Android的官方网址: htt ...

  10. 深入浅出 - Android系统移植与平台开发(七)- 初识HAL

    作者:唐老师,华清远见嵌入式学院讲师. 1. HAL的module与stub HAL(Hardware AbstractLayer)硬件抽象层是Google开发的Android系统里上层应用对底层硬件 ...

随机推荐

  1. 什么是WEB3.0

    WEB1.0 90年代末期创建的搜狐,新浪等门户网站的特点是向用户推送信息,门户网站显示什么我们看什么,这个时代称为web1.0.WEB2.0随着技术的发展,用户可以在网上进行互动,可以在网站上发表个 ...

  2. 一文彻底弄懂Java的IO操作

    Java 的 IO(输入/输出)操作是处理数据流的关键部分,涉及到文件.网络等多种数据源.以下将深入探讨 Java IO 的不同类型.底层实现原理.使用场景以及性能优化策略. 1. Java IO 的 ...

  3. 2.9 使用系统光盘修复Linux系统

    如果系统错误已经导致单用户模式不能进入了,那么是否需要重新安装Linux 系统?不用着急,为了应对单用户模式也无法修复的错误,Linux 系统提供了 rescue 救援(光盘修复)模式. rescue ...

  4. Nuxt.js 应用中的 vite:extend 事件钩子详解

    title: Nuxt.js 应用中的 vite:extend 事件钩子详解 date: 2024/11/11 updated: 2024/11/11 author: cmdragon excerpt ...

  5. 780E开发板之errDump错误日志上报,操作方法解析

    ​ 一.errDump功能 LuatOS-Air错误日志上报功能模块名叫:errDump,errDump对"量产投放市场的设备,远程调试初步定位问题"至关重要,强烈建议客户一定要使 ...

  6. KindleVocab 教程,Kindle导出查词记录成文本文档,Kindle导出查询单词记录导入Anki

    程序功能 因本人使用Kindle Mate导出觉得复杂,特意写了个自用的导出程序(有linux版本和win两个版本). 所以 KindleVocab 只有一个作用:导出Kindle查询过的生词和生词所 ...

  7. 十分钟配置完成Go开发环境

    本文介绍了GO环境搭建以及GOPATH.GOROOT等基本概念,希望让你少走弯路 SDK下载 如果要使用Golang,我们首先要安装Golang的SDK开发包 Golang是网友给Go语言起的另一个称 ...

  8. 微服务探索之路05篇jenkins构建net6和vue docker镜像到Harbor自动更新k8s服务镜像

    从1-4篇已经学习了docker Harbor k8s的基本用法.接下来进阶一下使用jenkins结合起来做到自动部署项目. 1 安装jenkins 1.1前提条件 docker环境,可参考第01篇安 ...

  9. Hook框架之Frida

    Frida是一款轻量级HOOK框架,可用于多平台上,例如android.windows.ios等.    frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行 ...

  10. 性能检测工具之Lighthouse

    转载:https://mp.weixin.qq.com/s?src=11&timestamp=1618929340&ver=3020&signature=oXyx*RDLXjN ...