移远官网

关于EC20R2.1在ubuntu18.04上使用的问题

我最近想找一个可以给linux用的4g模块,我从网上买了EC20R2.1的模块,想把它在ubuntu上使用时遇到了问题。
我的ubuntu内核版本是5.4.85,卖家给我提供了Quectel_WCDMA&LTE_Linux_USB_Driver_User_Guide_V1.8资料,但是我发现这上面的内核是比较旧的,应该是小于5的,因为这个文件里有些内核内容和我用的内核文件内容不一样(比如V1.8版本的指南说要添加PID、VID, 但5.4.85似乎不用添加,空包似乎也不用加),我不知道怎么按这个驱动来改内核,请问有新版本的驱动修改指南吗?
在我什么内核文件都没有改的情况下,ubuntu18.04-5.4-85就能识别出 ttyUSB0~3,和qmi_wwan(在make menuconfig里启用了相关项),似乎也能正确使用at指令,也能用ppp拨号(似乎是3g网络),但我运行quectel-CM脚本想连4g,却不能拨号成功

需要移植USB驱动和网卡驱动。
确定

root@m:/home/m/quectel-CM# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/11p, 480M
    |__ Port 4: Dev 12, If 3, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 4: Dev 12, If 1, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 4: Dev 12, If 4, Class=Vendor Specific Class, Driver=qmi_wwan, 480M  /
    |__ Port 4: Dev 12, If 2, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 4: Dev 12, If 0, Class=Vendor Specific Class, Driver=option, 480M

执行lsusb -t 能看到这样的结果吗

1 个赞

我猜是您的结果是
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/11p, 480M
|__ Port 4: Dev 12, If 3, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 4: Dev 12, If 1, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 4: Dev 12, If 4, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 4: Dev 12, If 2, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 4: Dev 12, If 0, Class=Vendor Specific Class, Driver=option, 480M

最简单的方法是
modprobe -r option
modprobe -r qmi_wwan
modprobe qmi_wwan
modprobe option

然后您再看看 lsusb -t 的结果

1 个赞

非常感谢你能这么快回复,我截一图

@BiaoWang-Q 您好,这是我的现象


第二张图就是运行quectel-CM时的现象,总在 lease time 7200那里卡主,然后失败

最简单的方法 quectel-CM源码,udhcpc.c里打开 USE_DHCLIENT。

之前报错的原因。
default.script 是udhcpc 调用到的重要脚本。
default脚本中不能存在不可见字符,譬如在DOS系统(Win10)打开过,每行结尾会是\r\n,会导致Unix系统中无法正常执行
在目标平台上执行dos2unix default.script
其中dos2unix 是一个将DOS系统字符转换称Unix系统字符的小工具。
也可以用vim打开default.script, 手动将default.script每行结尾的^M删除。
default.script 有执行权限。chmod +x default.script.
default.script 的默认位置,一般是/etc/udhcpc/或者/usr/share/udhcpc/
CM拨号默认使用的是busybox udhcpc

您好,这是我把USE_DHCLIENT打开后的现象


好像还是不行,default.script 是我在ubuntu上在busybox官网下的。
我没有修改ubuntu的内核驱动,但是qmi_wwan和ttyUSB都有的,是需要什么初始化吗?ttyusb2发AT指令是可以的,可以ping114.114.114.114, 是不是说内核自带的usb驱动是可以的,但是qmi驱动还不行,(只能识别设备但是不能初始化和发数据?)要改。这是我发at指令的结果

我又把USE_DHCLIENT关闭了,下图是识别的网卡和运行quectelCM的结果


运行拨号程序quectelCM时,网卡是有收发数据的,但似乎没有分配到ip,
我再改内核的qmi试试(我之前用过Gobinet驱动,直接把源码放到/drivers/net/usb下编译内核,但是也没有成功)
或者,有什么4g模块推荐吗?可以在ubuntu18.04内核版本大于等于5上使用的,我想找个能直接用的4g模块,如果有的话就不需要改来改去了。

最后,请问一下,修改内核时,系统中原有的关于EC20的内容是要删除,再替换成移远官方提供的内容吗,系统自带的内容如下


图中白色部分有EC20R2.0的PID,VID,我要把这行删了换成如下内容吗:

Ubuntu停掉ModemManager.
systemctl stop ModemManager
这个服务和quectel-CM不能一起运行。
模组可以用AT指令QPING说明SIM卡和模组网络是OK的。如果用udhcpc,用移远源码里的default.script,执行dos2unix 以及chmod 777 default.script 再把这个文件拷贝到/etc/udhcpc目录中,udhcpc目录不存在需要自己创建

一般来说,Ubuntu18.04上用EC20用Ubuntu自带的option和qmi_wwan是可以的。
如果依然不行,针对您这个发送邮件到
bean.wang@quectel.com ,我可以远程支持。

@BiaoWang-Q 感谢您的回复,我把ModemManager停掉,把quectel-CM自带的default.script复制到/etc/udhcpc之后(之前是busybox的/example/udhcp/simple.script放在/usr/share/udhcpc下), 现在结果如下,是成功了吗?


我用的quectel-CM版本是1.1.34,请问需要下载新版的吗?在哪下载呢?
还有我看到

似乎用ECM接口更方便,请问用ECM速度会不会比qmi慢?用ECM的话要禁用qmi吗?
我想找的4g模块要在arm和x86架构的ubuntu18.04上都能用,EC20R2.1的ECM或qmi可以吗?
请问还有4g模块推荐吗(性能更好的)?

不知道为什么,当我关闭wifi试着打开网页,网页无法打开,然后运行着的quectel-CM失败退出,再次运行quectel-CM结果如图,之后就一直运行失败


我发现重启电脑又能连上了,好像是一次失败的网页打开之后,运行quectel-CM就一直失败,需要重启电脑

您的这种情况不推荐使用ECM,ECM操作主要是简便。ECM 方式,性能不如QMI。

您希望的是更高的速率, 还有其他EC20 您去 www.quectel.com 上问下

网页无法打开,ping 地址是否可行?是否 DNS 问题?

那种情况,试下CFUN切换,AT+CFUN=0 然后再 AT+CFUN=1

如果还是不行,重启下模组,用AT+CFUN=1,1

@VincentW 好的,我去找找其他的4g,谢谢。
之前连不上的问题,似乎是我开了vpn?,关掉重启电脑就行了。
如果是插拔4g模块的话,需要重新运行quectel-CM,我在想如果网络信号不好,或者接触不良,导致CM退出,每次都需要重新运行CM,比较麻烦。

接触不良,CM退出 导致的 是必须重启CM的,您可以自己写 脚本判断,如果存在 quectel-CM 进程,则启动一个quectel-CM.
网络信号不好, 应该是没有影响的,网络恢复后,只要CM进程没退出,会重新获取IP。

@BiaoWang-Q 好的,谢谢。

感谢回复,学到了