4G网卡驱动调试分三步走:
一、基本概念

USB 部分的功能接口
APN

二、驱动移植

USB Driver
GobiNet Driver 或者 QMI WWAN
PPP 拨号配置

三、RIL 移植

RIL Driver Integration
抓取 Android Log
RIL 移植

吃颗定心丸:

4G 模块都是 MiniPCIE 接口的,包括很多 4G 模块都是 MiniPCIE 接口的。但是研究一下就会发现,这些 4G 模块虽然用了MiniPCIE 接口,但是实际上的通信接口都是 USB,所以 4G 模块的驱动就转换为了 USB 驱动。而这些 4G模块厂商都提供了详细的文档讲解如何在 Linux 下使用 4G 模块,以及如何修改 Linux 内核加入 4G 模块驱动。

一、基本概念

  1. USB 部分的功能接口
    Quectel 3G/4G模块(UMTS/HSPA/LTE)的 USB 部分包括了几个不同的功能接口。

USB Serial

ttyUSB0 代表 DM
ttyUSB1 代表 GPS NMEA (GPS导航设备统一的RTCM标准协议)信息输出
ttyUSB2 代表 AT commands
ttyUSB3 代表 PPP 连接

GobiNet

在移植了 GobiNet 驱动后,会产生一个网络设备和一个 QMI channel。
网络设备叫做 ethX(在内核版本2.6.39前叫做 usbX)QMI channel 叫做 /dev/qcqmiX 的节点。
网络设备用来进行数据传输,QMI 通道用来进行 QMI 信息交互。
Qualcomm Gobi is a family of embedded mobile broadband modem products by Qualcomm.
Gobi technology was designed to allow for any product with the embedded solution toconnect to the internet anywhere a wireless carrier provides data coverage. One of the more notable products that contain a Gobi modem is the iPhone 4 for Verizon, which contains a MDM6600™, however it does not take advantage of the support for HSPA+

QMI WWAN

当移植了 QMI WWAN 驱动后,驱动将会创建网络设备和 QMI channel,网络设备被称作 wwanX,QMI
通道被命名为 /dev/cdc-wdmX。 网络设备用来进行数据传输,QMI 通道用来进行 QMI 数据交互。

CDC ACM
在移植完了 CDC ACM 驱动后,将会在 /dev 下创建如下节点

ttyACM0 用于 PPP连接器 或者 AT命令
ttyACM1 用于 Trace1
ttyACM2 用于 Trace2
ttyACM3 用于 AT commands
ttyACM4 用于 AT commands

USB 的 CDC 类是 USB 通信设备类 (Communication Device Class)的简称。 CDC 类 是 USB
组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的 USB 子类。

  1. APN
    APN 指一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络。

二、驱动移植
1、[KERNEL]目录下进行配置
make menuconfig

1.1 USB Driver Configure

Device Drivers  --->[*] USB support  ---><*> USB Serial Converter support[*] USB Generic Serail Driver[*] USB Driver for GSM and CMDA modems

1.2 USB Driver Configure

Device Drivers  --->[*] USB support  ---><*> USB Modem (CDC ACM) suppor

1.3 PPP Configure(我是全部选)

Device Drivers  --->[*] Network device support  ---><*> PPP (point-to-point protocol) support<*> PPP support for async serial ports<*> PPP support for sync tty ports<*> PPP Deflate compression

1.4 查看是否配置hi3751v810_arm64_android_defconfig:

CONFIG_usb_usbnet=y

CONFIG_USB_SERAIL=y
CONFIG_USB_SERAIL_OPTION=y

2、添加 USB 设备信息
在 Linux 内核中添加 ec20的 USB 设备信息,因为我们前面说了,ec20-4G 模块用的 USB 接口。打开 Linux 源码的 drivers/usb/serial/option.c 文件,找到 options_ids 数组,然后在里面添加 ec20的 PID 和 VID, 要添加的内容如下,该内容由产商提供。

ec20支持 ECM 接口,可以通过 ECM 接口轻松联网,如果要使用 ECM 接口的话需要修改 drivers/usb/serial/option.c 文件里面的 option_probe 函数。找到此函数,然后在里面输入如下内容:

继续在 drivers/usb/serial/option.c 文件里面找到 option_1port_device 结构体变量,在里面加入休眠后唤醒接口,如图所示:

打开 drivers/usb/serial/usb_wwan.c 文件,在usb_wwan_setup_urb函数中添加零包处理代码,完成后的 usb_wwan_setup_urb 函数如下所示,就是要添加到 usb_wwan_setup_urb 函数里面的零包处理代码。
移植的时候最好先控制变量,第一步只移植 USB Serial Driver 部分。完成这部分的移植后 /dev/下就应该生成 ttyUSB0-ttyUSB4 。一次添加的东西多了如果出现问题不好定位问题出现的地方。
三、RIL 移植
1、打包4G的一些so库等信息相关文件到系统中将下面几个文件打包到系统中,确保系统编译完成后,文件出现在对应的目录中。

PRODUCT_COPY_FILES += \
device/hisilicon/bigfish/etc/4G/libreference-ril-ec20.so:/vendor/lib64/libreference-ril-ec20.so \device/hisilicon/bigfish/etc/4G/spn-conf.xml:/system/etc/spn-conf.xml \device/hisilicon/bigfish/etc/4G/apns-conf.xml:/system/etc/apns-conf.xml \device/hisilicon/bigfish/etc/4G/chat:/system/bin/chat \device/hisilicon/bigfish/etc/4G/ip-down:/system/etc/ppp/ip-down \device/hisilicon/bigfish/etc/4G/ip-up:/system/etc/ppp/ip-up \device/hisilicon/bigfish/etc/4G/start_softap.sh:/system/bin/start_softap.sh

注:
(device/hisilicon/bigfish/etc/4G/libreference-ril-ec20.so: 该目录下的4G模块*.so库)
(/vendor/lib64/libreference-ril-ec20.so \ 复制到系统的/vendor/lib64第三方库下面)

2、hisilicon3751\device\hisilicon\Hi3751V811\device_property.mk添加修改

PRODUCT_PROPERTY_OVERRIDES += \rild.libpath=/vendor/lib64/libreference-ril-ec20.so
PRODUCT_PROPERTY_OVERRIDES += \ro.telephony.default_network=9



3、修改:device\hisilicon\Hi3751V811\manifest.xml
4、修改设备文件权限
rk:
文件路径:system/core/rootdir/ueventd.rc,在其中添加如下几行:

/dev/ttyUSB0 0660 radio radio
/dev/ttyUSB1 0660 radio radio
/dev/ttyUSB2 0660 radio radio
/dev/ttyUSB3 0660 radio radio
/dev/ttyUSB4 0660 radio radio

注意:如果在系统中设备的序号是其它值,则应按照上述格式修改其权限。例如,如果模块的某个端口在系统中为/dev/ttyUSB10,则应添加:/dev/ttyUSB10 0660 radio radio

Hisi:
文件路径:hisilicon3751\device\hisilicon\bigfish\etc\ueventd.bigfish.rc

/dev/ttyUSB*               0666   radio      radio
/dev/cdc-wdm0             0660   radio      vpn
/dev/qcqmi0               0660   radio      vpn
/dev/veb_a3               0666   system     system

调试遇到的问题:
a、没有生成ttyusb*这个节点
判断id是否存在,插入ec20模块,使用在打印终端使用命令:lsusb查看,然后拔掉在查看一次。如下

发现有ec20的id信息,说明能识别到模块,再配置有没有问题。添加如下的配置:

编译下载后:节点出来了

Hi3751V811:/dev # ls ttyUSB
ttyUSB0  ttyUSB1  ttyUSB2  ttyUSB3

ping一下百度:测试ok!!!

130|Hi3751V811:/ # ping www.baidu.com
PING www.a.shifen.com (163.177.151.110) 56(84) bytes of data.
64 bytes from 163.177.151.110: icmp_seq=1 ttl=54 time=29.3 ms
64 bytes from 163.177.151.110: icmp_seq=2 ttl=54 time=30.3 ms
64 bytes from 163.177.151.110: icmp_seq=3 ttl=54 time=28.4 ms
64 bytes from 163.177.151.110: icmp_seq=4 ttl=54 time=35.5 ms
64 bytes from 163.177.151.110: icmp_seq=5 ttl=54 time=27.7 ms
--- www.a.shifen.com ping statistics ---
30 packets transmitted, 30 received, 0% packet loss, time 29040ms
rtt min/avg/max/mdev = 26.741/28.988/36.052/2.371 ms

4G网卡驱动调试-ec20相关推荐

  1. Dm9000aep在u-boot下网卡驱动调试笔记

    作者:杨硕,华清远见嵌入式培训中心讲师. 最近在将u-boot1.3.4移植到三星s5pc100 SOC平台发现u-boot启动之后无法ping通主机,也不能用tftp下载内核.硬件平台用的网卡芯片是 ...

  2. 挂载 4G 网卡上网

    路由板为  MT7620A 4G 模块为  QUECTEL EC20 OpenWrt 源码版本为   Chaos Calmer 1505 目前已测试可以上网的网络为: 移动  3G/4G 联通  4G ...

  3. openwrt ec20 4g网卡使用

    openwrt ec20 4g网卡使用 1. 编译内核 2. 开启4g 3. 开机启动4g 1. 编译内核 使能quectel驱动Utilities ->prince ->quectel, ...

  4. DM9051_SPI网卡驱动于EC200T 4G模块有线网口驱动添加指导

    DM9051_SPI网卡驱动于EC200T 4G模块有线网口驱动添加指导 目录 前言-------------------------------------3 应用简介--------------- ...

  5. 小白求,用RE文件管理器移植移远EC20 4G模块驱动。 有重谢。请加w jiao1998524

    小白求,用RE文件管理器移植移远EC20   4G模块驱动.  有重谢.请加w  jiao1998524

  6. ubuntu加载4G模块驱动的调试过程记录

    一个工业平板电脑,原本安装的是win7系统,希望改用ubuntu系统.其他的驱动都好说,关键是有个4G模块,平板电脑厂家使用的是一个小品牌的,ubuntu内部没有集成驱动,需要自己编译驱动.这个对li ...

  7. Hyper-V下Linux鼠标驱动调试和网卡跃点数问题

    Hyper-V Linux双网卡鼠标调试心得 鼠标在hyper-v里不受支持,现在我们来安装鼠标驱动,让它受支持 一.下载驱动:linux-ic.iso inputvsc.iso两个文件 安装linu ...

  8. Linux移植4G上网卡,Linux下ME3760_v2驱动移植方式,中兴4G网卡移植

    USB串口驱动添加 配置内核将USB driver for GSM and CDMA modems选上 Cd kernel Make menuconfig Devicedrivers->usb ...

  9. 基于4G网卡的Telnet远程登录RT-Thread的Finsh/MSH Shell

    准备工作: 硬件: imx-rt1021野火开发板: 野火EC20模块: 云服务器ECS(具有公网IP,我这里用阿里云服务器). 软件: RT-Thread操作系统在开发板上移植完成: EC20 US ...

最新文章

  1. 深度|​揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活!
  2. 【Python】简约而不简单|值得收藏的Numpy小抄表(含主要语法、代码)
  3. SpringBoot项目的application.properties放在Jar包外加载
  4. flask 实现异步非阻塞----gevent
  5. codeforce Pashmak and Buses(dfs枚举)
  6. android 系统优化(20)---MTK 平台唤醒时间优化1
  7. 数据分析,如何构建指标体系
  8. pythonpandas重复数据统计_python – 连续的pandas数据帧之间的重复计算
  9. Tomcat项目报错:eval: /usr/java/bin/java: not found
  10. notepad出现中文显示方格处理方法
  11. 前端aes专用秘钥加解密_Javascript实现前端AES加密解密功能
  12. 南大lamda实验室失败面经分享
  13. python选择题题库百度文库_Python题库
  14. 二十、数据库的高可用是怎么实现的?
  15. 【狂神Java笔记】Java网络编程实战详细笔记整理(附代码)
  16. html5 history微信浏览器返回不刷新
  17. PMP快速通过经验分享
  18. 微信大转盘 【案例源码】提供
  19. 计算机课师生互动过多,课堂师生互动存在问题及途径分析
  20. 用C#(入门) 双色球摇奖机 随机数实现

热门文章

  1. 瑞星升级提示网络连接失败网络配置后重试(12007) 解决办法
  2. RS485中继器方案(TI出的)
  3. Gartner谈元宇宙
  4. 高二物竞转北大计算机华师,华师一附中最牛班:30多人考上清华、北大,4人获国际奥赛金牌!...
  5. 征程留给骏马,我只不过是头老骥
  6. 不仅仅程序员的格子衬衫!互联网公司时尚穿搭指南
  7. sichost.exe,winxphelp.exe,360up.exe,RavNT.exe,Counter.exe,login.jpg.exe等3
  8. C语言课程设计——N-S图
  9. 深度学习之目标检测(五)-- RetinaNet网络结构详解
  10. #### redis cluster mget 优化方案 ####