8. 4G通信¶
8.1. 4g模块支持列表¶
理论上支持所有使用usb接口的带rndis协议的4g模块, 这里列出用在LubanCat-RV06板卡上测试过的模块
8.2. 模块安装¶
8.3. 连接4G网络¶
简单流程:
使能接口
连接模块,插入sim卡
等待模块成功加载
检查sim卡是否正常工作
5. 配置模块网卡模式 6.
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+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
|