8. 4G通信

8.1. 4g模块支持列表

理论上支持所有使用usb接口的带rndis协议的4g模块, 这里列出用在LubanCat-RV06板卡上测试过的模块

8.1.1. ec20

4G模块支持野火提供的4G无线网卡

quectel-CM_8.png

可以支持两种接插模式

  • MINI PCI-E接口

  • 搭配转接板使用USB接口

购买链接: 《野火官方旗舰店》

8.2. 模块安装

8.2.1. MINI PCI-E接口

首先按图示的样式安装好4G模块

quectel-CM_8.png

连接完成后,在转接板的背面会有sim卡卡槽,sim卡使用的是最小号的sim卡

8.2.2. 搭配转接板使用USB接口

首先按图示的样式安装好4G模块

quectel-CM_8.png

连接完成后,在转接板的背面会有sim卡卡槽,sim卡使用的是最大号的sim卡

然后就可以插到板卡的usb-hub上了

8.3. 连接4G网络

简单流程:

  1. 使能接口

  2. 连接模块,插入sim卡

  3. 等待模块成功加载

  4. 检查sim卡是否正常工作

5. 配置模块网卡模式 6.

8.3.1. 使能usb接口

连接4G模块前首先需要把拨码开关拨到 on 的位置,使能pcie和usb-hub

quectel-CM_8.png

8.3.2. 启动板卡

启动后会看到终端会打印下面的内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[   14.427761] usb 1-1.1: new high-speed USB device number 4 using xhci-hcd
[   14.545579] usb 1-1.1: New USB device found, idVendor=2c7c, idProduct=0125, bcdDevice= 3.18
[   14.545624] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   14.545643] usb 1-1.1: Product: Android
[   14.545660] usb 1-1.1: Manufacturer: Android
[   14.576175] rndis_host 1-1.1:1.0 usb0: register 'rndis_host' at usb-xhci-hcd.1.auto-1.1, RNDIS device, 4e:19:2e:e8:f1:14
[   14.583542] option 1-1.1:1.2: GSM modem (1-port) converter detected
[   14.584197] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
[   14.586463] option 1-1.1:1.3: GSM modem (1-port) converter detected
[   14.588231] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
[   14.589712] option 1-1.1:1.4: GSM modem (1-port) converter detected
[   14.591508] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
[   14.594738] option 1-1.1:1.5: GSM modem (1-port) converter detected
[   14.595880] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB3

使用下面命令可以看4G模块有没有连接

1
ls /dev/ttyUSB*

如果有输出说明4G模块已经连接成功,如下所示

1
2
3
# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3
#

8.3.3. 检查sim卡是否正常工作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#在后台显示/dev/ttyUSB2返回的信息(如果想退出后台显示,使用后面的命令:pkill cat)
cat /dev/ttyUSB2 &

#检查sim卡的状态
echo -e "AT+CPIN?\r\n" >  /dev/ttyUSB2

#如果返回值为如下即为获取sim卡成功
+CPIN: READY

OK

#如果返回值为如下即为获取sim卡失败

+CME ERROR: 10

+CME ERROR: 13

注解

如果遇到无法读卡的问题,可能是卡的触电没有紧密与模块的卡座亲密接触,也可能是模块不支持该品类的卡,最佳的解决方法是联系模块的提供商,让他们给你的问题解决

8.3.4. 配置模块网卡模式

注解

如果之前成功配置过网卡的模式,网卡是会把成功配置的网卡模式保存,就不需要额外再配置网卡模式了(使用网络可以跳过此步)

移远模块共有4种模式,但不是每种模块都支持4种模式,需根据实际模块确定。

  • 0:rmnet模式:通过QMI工具发的QMI命令,获取公网IP。这种模式可以配合usb_ecm驱动或高通GobiNet驱动使用。

  • 1:ecm模式:通过标准的CDC-ECM发起data call,是发送标准的ECM命令,获取局域网ip。这种模式配合cdc_ether驱动使用

  • 2:mbim模式:Mobile Broadband Interface Model,正宗的移动宽带接口模型,专门用于3G/4G/5G模块的,只在win8以上的windows上使用。一般只在WINDOWS下使用。

  • 3:rndis模式:基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡获取局域网ip。这种方式最简单,模块插上手机卡之后,模块会自动拨号上网。

AT命令列表

命令

功能

AT+QCFG=”usbnet”

查询网卡模式

AT+QCFG="usbnet",1

设置网卡为ECM模式

AT+QCFG="usbnet",3

设置网卡为RNDIS模式

8.3.5. 获取当前网卡模式

由于模块是使用AT指令操作的。所以可以使用minicom来进行操作,这里为了简化操作,没使用minicom,而是直接在命令行上操作

端口位置:/dev/ttyUSB2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#查询当前模式

#在后台显示/dev/ttyUSB2返回的信息(如果想退出后台显示,使用后面的命令:pkill cat)
cat /dev/ttyUSB2 &

#查询当前网卡的模式
echo -e "AT+QCFG=\"usbnet\"\r\n" >  /dev/ttyUSB2

#例子:
# cat /dev/ttyUSB2 &
[1] 777
# echo -e "AT+QCFG=\"usbnet\"\r\n" >  /dev/ttyUSB2
# AT+QCFG="usbnet"

+QCFG: "usbnet",0

OK

可以看到返回了0,这个是网卡在rmnet模式

  • +QCFG: "usbnet",3 : RNDIS模式

  • +QCFG: "usbnet",2 : MBIM模式

  • +QCFG: "usbnet",1 : ECM模式

  • +QCFG: "usbnet",0 : rmnet模式

8.3.5.1. 配置模块网卡模式为ECM

1
2
3
4
5
#在后台显示/dev/ttyUSB2返回的信息(如果想退出后台显示,使用后面的命令:pkill cat)
cat /dev/ttyUSB2 &

#配置为ECM模式(返回:OK 代表配置成功)
echo -e "AT+QCFG=\"usbnet\",1\r\n" >  /dev/ttyUSB2
  • 返回OK代表配置成功

  • 如果返回ERROR,可能是模块不支持ECM模式,可以尝试RNDIS模式

  • 如果4G模块没有重新启动,可以执行下面命令重启模块

1
2
#重启模块(重启模块才能生效)
echo -e "AT+CFUN=1,1\r\n" >  /dev/ttyUSB2

8.3.5.2. 配置模块网卡模式为RNDIS

1
2
3
4
5
#在后台显示/dev/ttyUSB2返回的信息(如果想退出后台显示,使用后面的命令:pkill cat)
cat /dev/ttyUSB2 &

#配置为RNDIS模式(返回:OK 代表配置成功)
echo -e "AT+QCFG=\"usbnet\",3\r\n" >  /dev/ttyUSB2
  • 返回OK代表配置成功

  • 如果返回ERROR,可以重新上电或者拔掉usb重新插入

  • 如果4G模块没有重新启动,可以执行下面命令重启模块

1
2
#重启模块(重启模块才能生效)
echo -e "AT+CFUN=1,1\r\n" >  /dev/ttyUSB2

8.3.6. 连接网络

ec20 会自动拨号

完成上面步骤后,LubanCat-RV06板卡会生成一个4G网卡的节点,可以使用ifconfig查看

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# ifconfig
eth0      Link encap:Ethernet  HWaddr 2E:CA:C3:12:43:6A
        UP BROADCAST MULTICAST  MTU:1500  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
        Interrupt:56

lo        Link encap:Local Loopback
        inet addr:127.0.0.1  Mask:255.0.0.0
        inet6 addr: ::1/128 Scope:Host
        UP LOOPBACK RUNNING  MTU:65536  Metric:1
        RX packets:48 errors:0 dropped:0 overruns:0 frame:0
        TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:3552 (3.4 KiB)  TX bytes:3552 (3.4 KiB)

usb0      Link encap:Ethernet  HWaddr B6:87:81:B0:0A:C0
        inet addr:192.168.137.100  Bcast:192.168.137.255  Mask:255.255.255.0
        inet6 addr: 2409:8954:d913:46d7:1d5a:a647:ffb0:d8c7/64 Scope:Global
        inet6 addr: fe80::c553:dcb7:15bc:b437/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:31 errors:0 dropped:0 overruns:0 frame:0
        TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:2745 (2.6 KiB)  TX bytes:6180 (6.0 KiB)

wlan0     Link encap:Ethernet  HWaddr 38:7A:CC:65:78:20
        UP BROADCAST MULTICAST  MTU:1500  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

#
  • 可以看到usb0是4G模块的网卡节点,他的ip是192.168.137.100,

这个是系统设置usb-gadget的rndis功能的静态ip, 此时是不能正常上网的,需要按照下面操作设置成动态ip

8.3.6.1. 设置usb0为动态ip

1
2
#修改文件
vi /etc/dhcpcd.conf

注释文件末尾对usb0的配置

1
2
3
4
interface usb0
static ip_address=192.168.137.100/24
static routers=192.168.137.1
static domain_name_servers=8.8.8.8 8.8.4.4

改成

1
2
3
4
# interface usb0
# static ip_address=192.168.137.100/24
# static routers=192.168.137.1
# static domain_name_servers=8.8.8.8 8.8.4.4
  • 然后保存文件

使用下面命令应用网络配置,对usb0进行动态ip配置

1
dhcpcd -n usb0

执行成功后,查看usb0的ip地址

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# ifconfig usb0
usb0      Link encap:Ethernet  HWaddr B6:87:81:B0:0A:C0
        inet addr:192.168.225.59  Bcast:192.168.225.255  Mask:255.255.255.0
        inet6 addr: 2409:8954:d913:46d7:1d5a:a647:ffb0:d8c7/64 Scope:Global
        inet6 addr: fe80::c553:dcb7:15bc:b437/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:152 errors:0 dropped:0 overruns:0 frame:0
        TX packets:179 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:11702 (11.4 KiB)  TX bytes:23290 (22.7 KiB)
  • 然后可以ping mi.com试试,有些物联卡会限制网站的访问,所以可能ping不通,可以ping其他网站试试

1
ping mi.com

成功如下所示

1
2
3
4
5
6
7
# ping mi.com
PING mi.com (111.13.141.215): 56 data bytes
64 bytes from 111.13.141.215: seq=0 ttl=48 time=79.015 ms
64 bytes from 111.13.141.215: seq=1 ttl=48 time=66.884 ms
64 bytes from 111.13.141.215: seq=2 ttl=48 time=78.165 ms
64 bytes from 111.13.141.215: seq=3 ttl=48 time=77.889 ms
64 bytes from 111.13.141.215: seq=4 ttl=48 time=63.532 ms

如果你无法ping通网络,出现以下情况

1
2
root@lubancat:~# ping mi.com
ping: unknown host

可能你是接了网线的(假设使用了eth0接口),而默认路由表却不是4G模块, 如果想使用网卡上网, 则需要更新路由表,解决办法如下:

1
2
route del -net 0.0.0.0 eth0
route add -net 0.0.0.0 usb0