前言

本文章介绍了在linux系统下,如何修改usb驱动支持移远模块,移远模块正常启动后,通过USB连接到linux设备上,驱动正常加载后会在/dev/下产ttyUSB*设备。

一、USB串口驱动

1.1 添加VID和PID

linux下通过lsusb就可以查看USB的VID和PID

#lsusb

Bus 001 Device 011: ID 2C7C:0125

说明这个USB设备的VID为2C7C,PID为0125;

File: [KERNEL]/drivers/usb/serial/option.c

static const struct usb_device_id option_ids[] = {
//Added by Quectel
{ USB_DEVICE(0x2C7C, 0x0125) },
//End by Quectel
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_QUAD) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_QUAD_LIGHT) },

1.2 屏蔽冲突

File: [KERNEL]/drivers/usb/serial/qcserial.c

{USB_DEVICE(0x2C7C, 0x0125)}, /* Acer Gobi 2000 Modem device (VP413) */

File: [KERNEL]/drivers/net/usb/qmi_wwan.c

{QMI_GOBI_DEVICE(0x2C7C, 0x0125)}, /* Acer Gobi 2000 Modem device (VP413) */

1.3 添加零包机制

File: [KERNEL]/drivers/usb/serial/usb_wwan.c

static struct urb *usb_wwan_setup_urb(struct usb_serial *serial, int endpoint,
int dir, void *ctx, char *buf, int len,void (*callback) (struct urb *))
{
……usb_fill_bulk_urb(urb, serial->dev,usb_sndbulkpipe(serial->dev, endpoint) | dir,buf, len, callback, ctx);//Added by Quectel for zero packetif (dir == USB_DIR_OUT) {struct usb_device_descriptor *desc = &serial->dev->descriptor;if (desc->idVendor == cpu_to_le16(0x2C7C) && desc->idProduct == cpu_to_le16(0x0125))urb->transfer_flags |= URB_ZERO_PACKET;}//End by Quectel for zero packetreturn urb;
}

1.4 添加重置

File: [KERNEL]/drivers/usb/serial/option.c

static struct usb_serial_driver option_1port_device = {
……
#ifdef CONFIG_PM
.suspend = usb_wwan_suspend,
.resume = usb_wwan_resume,
//Added by Quectel.reset_resume = usb_wwan_resume,
//End by Quectel
#endif
};

1.5 使用添加GobiNet

File: [KERNEL]/drivers/usb/serial/option.c

static int option_probe(struct usb_serial *serial, const struct usb_device_id *id) {
struct usb_wwan_intf_private *data;
……
//Added by Quectel
if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)
&& serial->dev->descriptor.idProduct == cpu_to_le16(0x0125)
&& serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)return -ENODEV;
//End by Quectel
/* Store device id so we can use it during attach. */
usb_set_serial_data(serial, (void *)id);
return 0;
}

1.6 模块内核配置

二、  GobiNet驱动

2.1 模块添加

2.2 添加程序

把Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.0.zip/src/目录下的文件拷贝到 [KERNEL]/drivers/net/usb/ 下,makefile 和Readme.txt不拷贝,源码下载:移远模块Linux下GobinNet驱动_quectel-CM-C代码类资源-CSDN下载

修改[KERNEL]/drivers/net/usb/下的makefile,在文件最后添加

obj-y += GobiNet.o
GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o

2.3 编译内核

make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage

三、  环境变量配置

3.1、udhcpc配置:

把文件default.script拷贝到/usr/share/udhcpc/下:

把文件resolv.conf拷贝到/var/dvr/下,然后

ln  -s  /var/dvr/resolv.conf    /etc/resolv.conf

3.2、拨号:

编译quectel-CM程序源码,编译出quectel-CM工具进行拨号;

quectel-CM源码下载:Linux下移远4G模块quectel-CM拨号工具_quectelag35开发板-C代码类资源-CSDN下载

嵌入式设备路由网络共享开发(2):移远Quectel系列4G模块驱动移值相关推荐

  1. 4g模块注册上网 移远_Openwrt实现4G模块上网功能

    Openwrt 实现 4G 模块上网功能 上海润欣科技股份有限公司创研社 大家都知道传统的路由器无非基于以下几种方式上网: 首先运营商会将网线拉入居室,该网络可以是传统的电话线 / 双绞线 / 光纤. ...

  2. 4g模块注册上网 移远_移远EC20(4G模块)通过openwrt路由器拨号上网

    移远EC20是一个兼容性比较强的4G模块.我入手的这个是EC20 R2.1版本,pcie接口的,这个版本是增强版,支持最高150Mbps的下载速率,而普通的EC20只有100Mbps下载速率.这个是全 ...

  3. 嵌入式设备进行http socket开发流程

    嵌入式设备进行http socket开发流程 最近接触了一个http开发的项目,在这里记录一下主要流程. 下位机:arm linux 上位机:pc web服务器 这里在与web服务器通信时,没有使用第 ...

  4. Hi3798移植4G模块(移远EC20)

    Hi3798移植4G模块(移远EC20) 一.前言 二.USB驱动修改 2.1 添加VID和PID信息 2.2 添加空包处理机制 2.3 添加复位重连机制 2.4 修改内核配置 三.GoBiNet测试 ...

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

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

  6. 嵌入式设备的网络性能该如何分析

    最近对公司的嵌入式设备做了一个网络性能测试,如何确定网络性能的瓶颈在哪里,以及网络性能影响因素有哪些,有些心得记录在此. 一般评判网络性能都是看数据下载上传的速度.现在主流的带宽有2种,100Mbps ...

  7. 【嵌入式】嵌入式设备实现网络功能——综述

    目录 前言 实现方式 一.无线网络的实现 二.有线网络的实现 1 通过外接物理层(PHY)芯片的方式接入有线网络 2 通过外接以太网芯片 前言 随着物联网的推进,以及一些特殊应用场合下对网络功能的要求 ...

  8. NB-IoT低功耗芯片:国产新秀移芯EC616,能挑战联发科MT2625吗?来看看使用低功耗分析仪做的对比功耗评测,评测对象:采用移远BC26和BC260Y模块开发板。

    国产NB-IoT芯片EC616,官宣NB超低功耗,能挑战联发科老牌MT2625这款NB芯片吗?本文使用功耗分析仪作为测试仪器,来看看在DRX模式下的功耗评测对比情况. 测试条件: 1.使用中国电信NB ...

  9. 4g模块注册上网 移远_通信模组企业 移远通信amp;广和通

    无线通信模组通常长这个样,它是物联网设备中的关键部件. 1. 通信模组介绍无线模组为物联网开发者提供了便利,使开发者可以专注于特定应用领域业务的开发而不用关注通信协议的技术细节.无线通信模组厂商通常会 ...

最新文章

  1. Nginx + PHP CGI的fix_pathinfo安全漏洞
  2. 利用javascript实现简体与繁体的转换
  3. 【Java文件操作】txt文件的创建
  4. Shell 脚本编程之基础
  5. scala.list
  6. linux HA工作模型详解
  7. 假期周进度总结(三)
  8. 活灵活现用 Git --技巧篇
  9. 国产数据库 OceanBase 二次刷榜 TPC-C,7 亿 tpmC
  10. 前端工作七个月经验总结以及技术分享
  11. 杭州车牌摇号规则详细内容
  12. Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization
  13. android项目学习心得(全源导航)
  14. 手机图片、铃声免费下载终极大法
  15. 12306 抢票 python + selenium + chrome (二) 基础准备的软件和材料
  16. CCF 201604-2 俄罗斯方块
  17. Apache Kylin Buid Cube详细流程
  18. idea中java文件都不能运行变成橙色文件
  19. 计算机专业的自考财务管理有用吗,自考财务管理学难吗
  20. MEEGO系统七大优势

热门文章

  1. 大头儿子小头爸爸计算机音乐,幼儿园大班音乐教案:《大头儿子小头爸爸》插曲...
  2. 常见RISC-V介绍
  3. 微信公众号消息增加跳转链接
  4. Python+Vue计算机毕业设计安达驾校管理系统62e2u(源码+程序+LW+部署)
  5. android百度地图小人头像怎么做,出包女王村雨静-小静-Murasame Oshizu-头像图片-资料介绍-acg人物点评...
  6. 电视剧《猎毒人》观后感
  7. 【el-dialog + video】控制视频弹框的显示与隐藏
  8. Python 1-02 基础语法
  9. dell主板40针开机针脚_戴尔主板的前置面板接口针脚
  10. 瑞芯微鸿蒙移植,鸿蒙内核liteos_a移植补丁-支持rk3126c rk3288 rv1126