驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

这篇具有很好参考价值的文章主要介绍了驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

与EC20 4G模组所需的文件,下载链接,请点击即可

一、EC20 4G模块简介

  关于 EC20 4G 模块的详细资料请找卖家索要!
  EC20 有多种不同的配置,比如全网通纯数据版本、语音版、带 GNSS 版等等,建议大家购买的时候至少要选择全网通数据版,因为我们使用 4G 模块主要还是用于数据通信的。移远的EC20 4G 模块采用 LTE 3GPP Rel.11 技术,支持最大下行速率 150Mbps,最大上行速率 50Mbps。
  EC20 4G 模块特性如下:
  ①、一路 USB2.0 高速接口,最高可达 480Mbps。
  ②、一组模拟语音接口(可选)。
  ③、 1.8V/3.0V SIM 接口。
  ④、 1 个 UART 接口。
  ⑤、 W_DISABLE#(飞行模式控制)。
  ⑥、 LED_WWAN#(网络状态指示)。

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  上图这个文档是移远官方的文档,它提供了mini-pcie接口的模组驱动的指导,大家可以参考。

二、根据移远官方文档修改EC20 4G模组驱动

  1、因为EC20 4G模组min-pice接口其实就是usb接口,因此需要修改Linux内核源码drivers/usb/serial/option.c文件,如下图:

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  上图左边的是文档,右边是我修改的驱动源程序,大家会发现怎么我添加的比文档要多,这是左边文档是EC20旁系列的驱动匹配表,我是添加了移远比较全的系列,而我们用的EC20只使用到了上图的红色框框一行。

	{ USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC20 R2.0/EC20 R2.1/EC25/EG25-G/EM05 */
	{ USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21/EG21-G */
	{ USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */
	{ USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
	{ USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
	{ USB_DEVICE(0x2C7C, 0x0512) }, /* Quectel EG12/EM12/EG18 */
	{ USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
	{ USB_DEVICE(0x2C7C, 0x0700) }, /* Quectel BG95/BG77/BG600L-M3/BC69 */
	{ USB_DEVICE(0x2C7C, 0x0435) }, /* Quectel AG35 */
	{ USB_DEVICE(0x2C7C, 0x0415) }, /* Quectel AG15 */
	{ USB_DEVICE(0x2C7C, 0x0452) }, /* Quectel AG520R */
	{ USB_DEVICE(0x2C7C, 0x0455) }, /* Quectel AG550R */
	{ USB_DEVICE(0x2C7C, 0x0620) }, /* Quectel EG20 */
	{ USB_DEVICE(0x2C7C, 0x0800) }, /* Quectel RG500Q/RM500Q/RG510Q/RM510Q */

  2、根据USB协议的要求,需要在drivers/usb/serial/usb_wwan.c 文件下添加在批量处理期间处理零数据包的机制输出传输的代码,如下图:

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

	if (dir == USB_DIR_OUT) {
		struct usb_device_descriptor *desc = &serial->dev->descriptor;
	if (desc->idVendor == cpu_to_le16(0x05c6) && desc->iProduct == cpu_to_le16(0x9090))
		urb->transfer_flags |= URB_ZERO_PACKET;

	if (desc->idVendor == cpu_to_le16(0x05c6) && desc->iProduct == cpu_to_le16(0x9003))
		urb->transfer_flags |= URB_ZERO_PACKET;

	if (desc->idVendor == cpu_to_le16(0x05c6) && desc->iProduct == cpu_to_le16(0x9215))
		urb->transfer_flags |= URB_ZERO_PACKET;

	if (desc->idVendor == cpu_to_le16(0x2c7c))
		urb->transfer_flags |= URB_ZERO_PACKET;
	}

  3、当MCU进入暂停/休眠状态时,某些USB主机控制器/USB集线器将断电或重置并且当MCU从暂停/休眠模式退出时,它们不能恢复USB设备;相反,他们将操作复位恢复。在 drivers/usb/serial/option.c 文件下添加以下语句,如下图:

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

	.reset_resume 	   = usb_wwan_resume,

  4、如果您使用的是UC20/EC25/EC21/EC20/EC20R2.0/EG91/EG95/EG06/EP06/EM06/BG96,并且需要GobiNet或QMI WWAN,必须在drivers/usb/serial/option.c文件下添加以下语句以防止这些模块的接口4防止用作USB串行设备,如下图:

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

	if (dev_desc->idVendor == cpu_to_le16(0x05c6) && dev_desc->idProduct == cpu_to_le16(0x9003) && iface_desc->bInterfaceNumber >= 4)
		return -ENODEV;
	if (dev_desc->idVendor == cpu_to_le16(0x05c6) && dev_desc->idProduct == cpu_to_le16(0x9215) && iface_desc->bInterfaceNumber >= 4)
		return -ENODEV;

	if (dev_desc->idVendor == cpu_to_le16(0x2c7c) && iface_desc->bInterfaceNumber >= 4)
		return -ENODEV;

  5、使能 USB 串口 GSM、 CDMA 驱动,配置路径如下:

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

  6、使能 USB 的 CDC ACM 模式,配置路径如下:

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

  7、看看是否使能 USBNET 功能,路径如下:

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

  8、插入EC20 4G模块,查看是否已经启动USB驱动和虚拟出该模组的网卡:

步骤:
  编译Lnix内核“make -j6”,然后将/arch/arm/boot/zImage放到开发板重新加载,如果开发板识别出USB口的EC20,那么就会打印出以下红色框框信息:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

三、使用PPP工具拨号联网

  1、配置 Linux 内核,打开 Linux 内核的 ppp 功能,配置路径如下:

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  然后重新编译Linux内核,得到新的zImage,使用新的zImage启动开发板即可。

  2、移植pppd软件

  将 ppp-2.4.7.tar.gz 拷贝到 Ubuntu 下并解压,解压以后会生成一个名为 ppp-2.4.7 的文件夹。进入到 ppp-2.4.7 目录中,然后编译 pppd 源码,命令如下:

cd ppp-2.4.7/
./configure //配置
make CC=arm-linux-gnueabihf-gcc //编译

  如果编译失败,提示 bison 和 flex 这两个“not found”的话就安装这两个库,命令如下:

sudo apt-get install bison
sudo apt-get install flex

  编译完成以后就会在当前目录 下生成 chat/chat、 pppd/pppd、 pppdump/pppdump 和pppstats/pppstats 这四个文件,将这个四个文件拷贝到开发板根文件系统中的/usr/bin 目录下,令如下:

sudo cp chat/chat /home/djw/linux/nfs/rootfs/usr/bin/ -f
sudo cp pppd/pppd /home/djw/linux/nfs/rootfs/usr/bin/ -f
sudo cp pppdump/pppdump /home/djw/linux/nfs/rootfs/usr/bin/ -f
sudo cp pppstats/pppstats /home/djw/linux/nfs/rootfs/usr/bin/ -f

  完成以后输入“pppd -v”查看一下 pppd 的版本号,如果 pppd 版本号显示正常的话就说明pppd 移植成功,如图下图所示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  然后将/EC20自动拨号文件/gosuncn文件拷贝到/etc目录下,有两个文件需要根据实际情况修改的:
①gosuncn_options文件:
  第 1 行,如果是联通或移动的卡就是用 ttyUSB2,如果是电信的卡就是用 ttyUSB0。
  第 11~12 行,这两行内容和所使用的卡有关,如果是联通或者移动的卡就按照上面的写,如果是电信的卡,要改为如下所示内容:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
②gosuncn_ppp_dialer文件:
第 9 行,后面的 3GNET 是网络的 APN 码,这个要根据自己所使用的手机卡来确定,联通卡的 APN 为 3GNET,移动卡的 APN 为 CMNET。因为我使用的是联通卡进行测试的,所有这里设置 APN 为 3GNET,如果使用的移动卡,那么要将 APN 设置为 CMNET。如果是电
信的卡,那么第 9 行要改为:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
第 10 行,如果是联通或移动的卡,那么第 10 行就不变。如果是电信的卡,那么第 10 行要改为:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  gosuncn文件夹下:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

  3、测试pppd软件的ppp自动拨号上网

①输入如下命令连接 4G 网络:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  在EC20连接 4G 网络的过程中,可能会出现如下图所示的错误提示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  从图上图可以看出,提示不能创建“Can’t create lock file /var/lock/LCK…ttyUSB2”,检查根文件系统是否存在/var/run 和/var/lock 这两个目录,如果没有的话就手动创建这两个文件夹,命令如下:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  然后再输入拨号上网命令:

./ppp-on &,

会输出一下信息:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  ppp 拨号成功以后就会生成一个名为“ppp0”的网卡,如下图所示:驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  但发现,怎么ping百度都不通,如下图所示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  出现以上的问题,这里有两点原因:
①路由上并没有把EC20 4G模组生成的网络地址添加进去,那么Linux系统只会调用添加进默认的路由中:
如下图所示,4G网卡并没有添加到默认的路由中:

命令:ip route show
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

解决办法,将4G网卡生成的网络地址添加进默认路由中,如下图:

命令:route add default gw ip地址
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

②IP地址解析失败原因是并没有解析出其对应的 IP 地址。因此我们需要配置域名解析服务器的 IP 地址一般域名解析地址可以设置为所处网络的网关地址,比如 192.168.1.1。也可以设置为运营商的域名解析服务器地址。
解决办法,在/etc目录下创建resolv.conf_back文件,内容下图所示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
然后在/etc目录下创建ppp0脚本文件,并赋予可执行权限,内容如下图所示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  最后就可以上网ping通百度了,如下图所示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)


4、拓展:

  上面讲的是使用gosuncn文件下的脚本文件启动ppp拨号的方式,现在再讲使用peers文件下的脚本文件启动ppp拨号。
  将peers文件夹拷贝到/etc/ppp/目录下,并在 quectel-ppp 里修改你的串口设备名,pppd 拨号使用的 username,password。
在 quectel-chat-connect 里修改你的 APN。APN/username/password 是从你的网络提供商那里获取的。(上面已经讲过了)
然后使用下面的命令启动 ppp 拨号上网,ping通百度,如下图所示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

四、使用GobiNet工具拨号上网

1、添加移远官方的GobiNet驱动

  ①先将 Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.0.zip压缩包解压,然后将Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.0/src 下的所有.c 和.h 文件都拷贝到 Linux 内核中的/driver/net/usb 目录下,如下图所示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
②打开 Linux 内核的 drivers/net/usb/Makefile 文件,添加如下图内容,让Linux系统启动是自动连接.ko文件,并自动加载。
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
③打开Linux内核的drivers/net/usb/Kconfig 文件,添加如下图内容,目的是在make menuconfig图形化界面添加GobiNet驱动使能项。
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

config USB_GOBI_NET
    tristate"Gobi USB Net driver for Quectel module"
    help
    	Support Quectelmodule.

    	A modemmanager with support for GobiNet is recommended.
    	Tocompile this driver as a module, choose M here: the module will be calledGobiNet.

④打开 Linux 内核配置界面,使能前面添加的 Gobi 驱动,配置路径如下:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  配置完成以后就重新编译一下 Linux 内核,然后使用新的 zImage 启动开发板。启动以后检查一下“/dev/qcqmi2”这个文件是否存在,如果存在的话就说明 Gobi 驱动工作成功。
如下图所示:
Ⅰ:启动时打印信息
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
Ⅱ:查看/dev目录下是否生成了qcqmi2设备节点,如下图所示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

2、quectel-CM拨号工具移植:

  将WCDMA&LTE_QConnectManager_Linux&Android_V1.1.34.zip 这个压缩包进行解压,得到quectel-CM 这个文件夹,然后将 quectel-CM 文件夹拷贝到 Ubuntu 中。拷贝完成以后进入到Ubuntu 中的 quectel-CM 文件夹,使用如下命令进行交叉编译:

make CROSS_COMPILE=arm-linux-gnueabihf-

  编译完成以后得到一个名为“quectel-CM”软件,如下图所示:
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
  将 quectel-CM 软件拷贝到开发板根文件系统的/usr/bin 目录下,命令如下:

sudo cp quectel-CM /home/zuozhongkai/linux/nfs/rootfs/usr/bin/ -f

  3、使用quectel-CM软件来调用Gobi驱动自动拨号上网,ping通百度

①输入如下命令完成 EC20 的 4G 网络连接:

quectel-CM -s cenet &

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

4、拓展:

  我们也可以将Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.0整个文件夹拷贝到Linux内核下的/drivers/net/usb目录下,修改makefile文件,手动生成GobiNet.ko文件,然后自己手动加载GobiNet.ko驱动程序也是可以的。
驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)文章来源地址https://www.toymoban.com/news/detail-425405.html

到了这里,关于驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP8266 模块简易驱动程序 -- 基于 STM32F103 及原子云固件实现云功能

    本简易驱动程序是基于 正点原子 的ESP8266模块,主要用于实现连接 原子云 的功能。MCU选用的是 STM32F103ZET6 注:原子云固件添加了 AT+ATKCLDSTA 和 AT+ATKCLDCLS 两条指令 用于连接正点原子自家的原子云平台,原厂的AT指令不受任何影响 本程序主要实现了如下功能: 设定工作模式 连

    2023年04月23日
    浏览(40)
  • STM32+EC20实现4G无线通信

    EC20是一款集成度非常高的4G无线通信模块,支持多种常见通信频段,能满足几乎所有的M2M(MachinetoMachine)应用需求。模块支持TCP/UDP/FTP等一众网络协议,内置多星座高精度定位GNSS接收机,快速提供准确的经纬度信息,UART接口提供AT命令控制和数据传输。 物联网很多的网关设备因

    2024年02月03日
    浏览(39)
  • 基于HDMI接口和DDR存储器的VmodCAM双目摄像头驱动verilog程序开发

    目录 一、理论基础 二、核心程序 三、仿真结论         VmodCAM板提供数字成像适用于任何Digilent FPGA系统的功能带有VHDCI连接器的板。它有两个特点Aptina MT9D112 200万像素CMOS数字图像传感器。传感器可以提供框架速率从15 FPS以上,具体取决于决议。其片上系统设计集成了图像流

    2024年02月11日
    浏览(34)
  • 移远4G模块 EC200x EC600 系列AT命令手册

    本文是译至移远官方文档 xxx_AT_Commands_Manual 这款芯片的AT命令集是遵循国际标准3GPPTS27.007、3GPPTS27.005以及Quectel开发的专用AT命令的组合。 AT命令要以前缀的“AT”或“at”为每个命令行的开头,以回车符号为每行结尾。命令后面通常会有一个响应,其中包括“”。在本文档中,

    2024年02月09日
    浏览(41)
  • 51单片机4G模块通信(EC03-DNC4G)

    4G模块要用到公网,自己去搞一个内网穿透的软件来用用吧,我用的是花生壳 #include “reg52.h” #include “intrins.h” #include “String.h” #define SIZE 12 sfr AUXR = 0x8E; sbit D5 = P3^7; char cmd[SIZE]; void UartInit(void) //9600bps@11.0592MHz { AUXR = 0x01;//降低电磁干扰 SCON = 0x50; //配置串口工作方式1,RE

    2024年02月06日
    浏览(54)
  • OpenHarmony3.1适配移远EC20模组4G上网功能

    通过阅读本篇文档,您将学习到如何适配移远EC20模组到OpenHarmony3.1(以下简称OHOS),并添加4G上网功能。 本篇文档,使用硬件为大禹RK3568开发板。 开发板资料:https://gitee.com/openharmony/device_board_hihope/blob/master/rk3568/README_zh.md 软件方案分为PPP和QMI两种,请读者自行选择。 2.1.内

    2024年02月06日
    浏览(37)
  • 4G模组EC20 网卡udhcpc获取IP但是没有设置IP

    ifconfig usb0 up 获取ip命令:udhcpc -i usb0   (1)rootfs 创建文件夹以及文件 mkdir /usr/share/udhcpc/ (2)拷贝文件到该文件夹 /usr/share/udhcpc/default.script busyboxexamplesudhcpsimple.script   拷贝并重命名到 /usr/share/udhcpc/default.script (3)提升权限 chmod 755 /usr/share/udhcpc/default.script  

    2024年02月11日
    浏览(33)
  • 【linux驱动】用户空间程序与内核模块交互-- IOCTL和Netlink

    创建自定义的IOCTL(输入/输出控制)或Netlink命令以便用户空间程序与内核模块交互涉及几个步骤。这里将分别介绍这两种方法。 1. 定义IOCTL命令 在内核模块中,需要使用宏定义你的IOCTL命令。通常情况下,IOCTL命令包括了一个命令编号、请求类型的方向(读/写/两者)以及数

    2024年01月20日
    浏览(31)
  • windows驱动开发7:应用程序和驱动程序的通信

    一、基础介绍 1.1 设备与驱动的关系 设备由驱动去创建,访问一个设备,是首先得访问驱动。如果驱动在卸载的时候没有删除符号,r3下也是不能去访问设备的。 驱动程序和系统其他组件之间的交互是通过给设备发送或者接受发给设备的请求来交互的。换句话说,一个没有任

    2023年04月08日
    浏览(42)
  • Linux驱动开发—最详细应用程序调用驱动程序解析

    Linux下进行驱动开发,完全将驱动程序与应用程序隔开,中间通过 C标准库函数 以及 系统调用 完成驱动层和应用层的数据交换。 驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过 对“/dev/xxx” (xxx 是具体的驱动文件名字) 的文件进行相应的操作 即可实

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包