概述
LTE 4G通讯模块(BM806U )在Ubuntu20.04 环境的调测记录
摘要:本文以几款 4G 模块(miniPCIe 接口封装)为例,介绍了其几种打通无线网络连接的方式:1)ppp 方式拨号; 2)wwan 移动宽带 ; 3)NDIS 方式拨号 . 以对阶段性调测结果作个总结和记录。
使用的通讯模块有:
宽翼BM806U ,
Huawei ME909S821,
移远 Quectel E20 ,
LONG SUNG U9300C
SIM7699CE
1. USB端口占用情况查询
将4G模块(miniPCIe 接口)通过USB转接板,插入电脑 USB口,查看能否自动检测出该模块。
lsusb 命令显示
lsusb
宽翼BM806U:
Bus 001 Device 008: ID 2020:2033 Mobile Connect Mobile Connect
SIM7600CE:
Bus 001 Device 009: ID 1e0e:9001 Qualcomm / Option SimTech, Incorporated
Huawei ME909s821:
Bus 001 Device 003: ID 12d1:15c1 Huawei Technologies Co., Ltd. ME906s LTE M.2 Module
移远 Quectel E20 :
Bus 005 Device 002: ID 2c7c:0125
列出tty端口列表
ls -al /dev/ttyU*
crw-rw---- 1 root dialout 188,
0 May 17 17:09 ttyUSB0
crw-rw---- 1 root dialout 188,
1 May 17 17:10 ttyUSB1
crw-rw---- 1 root dialout 188,
2 May 17 17:10 ttyUSB2
crw-rw---- 1 root dialout 188,
3 May 17 17:09 ttyUSB3
dmesg 查看 USB 信息
dmesg | grep USB
[
223.739861] usb 1-2: new full-speed USB device number 3 using ohci-pci
[
224.872732] usb 1-2: New USB device found, idVendor=2020, idProduct=2033, bcdDevice= 2.28
[
224.872735] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[
225.745582] usbserial: USB Serial support registered for generic
[
226.295922] usbserial: USB Serial support registered for GSM modem (1-port)
[
226.327156] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[
226.379089] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[
226.416202] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
[
226.445411] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB3
[
228.587832] qmi_wwan 1-2:1.4: cdc-wdm0: USB WDM device
可以看到有 4 个 ttyUSB 端口和一个 qmi-wwan , 这估计就是对应 BM806U 4G 模块的吧 。
2. Mobile BroadBand 设置(qmi_wwan): OK
要点与结论
1) 已测试:中国移动的SIM卡(4G),和中国电信的SIM卡(4G)都能够设置成功。
2) 中国电信,选择“中国移动”,设置CMNET,也可以设置成功(因为没有中国电信的网络选项)。
3) Wwan0 不太稳定,在用中国电信的SIM卡时,过几分钟会有自动断链情况(IP地址丢失,ifconfig 只能查到 MAC地址)
4) 用新的网络设置“add new connection”,能够立即成功。如果重用之前的配置,很难成功。
Ifconfig 查询结果
(这个是中国移动的SIM卡,没有分配IP地址(也可能是断链了?),不知道为啥?x)
ifconfig
wwan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
mtu 1500
ether 5a:d6:16:88:e1:4f
txqueuelen 1000
(Ethernet)
RX packets 97
bytes 13447 (13.4 KB)
RX errors 0
dropped 0
overruns 0
frame 0
TX packets 152
bytes 17480 (17.4 KB)
TX errors 0
dropped 0 overruns 0
carrier 0
collisions 0
以下是用中国电信的USIM卡,网络选择 CMCC也可以(因为没有中国电信的选项),APN自动设置为 CMNET . 居然也拨号成功了, 浏览器能够正常访问网页。缺点是几分钟后,网络断链。
wwan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
mtu 1430
inet 10.40.192.72
netmask 255.255.255.240
broadcast 10.40.192.79
ether fa:17:09:70:64:d2
txqueuelen 1000
(Ethernet)
RX packets 95
bytes 21885 (21.8 KB)
RX errors 0
dropped 0
overruns 0
frame 0
TX packets 138
bytes 16212 (16.2 KB)
TX errors 0
dropped 0 overruns 0
carrier 0
collisions 0
查询网络接口 (有wwan0端口,转接板亮灯)
root@sheenfar-VirtualBox:/dev# ls /sys/class/net
docker0
enp0s3
lo
wwan0
3. 控制台AT命令测试(CGDCONT成功设置,拨号成功,但未分配IP)
ttyUSB1/ TTYUSB2 都可以响应 AT 命令。 但是无法建立 PDP 连接。
echo -en "at+cregrn">/dev/ttyUSB1
root@sheenfar-VirtualBox:/dev#
OK
root@sheenfar-VirtualBox:/dev# echo -en "atirn">/dev/ttyUSB1
root@sheenfar-VirtualBox:/dev#
Manufacturer: BroadMobi
Model: BM806U
Revision: M1.3.0_E1.0.7_A1.2.2
IMEI: 863424030017527
+GCAP: +CGSM
OK
echo -en "at+cregrn">/dev/ttyUSB1
root@sheenfar-VirtualBox:/dev#
OK
echo -en "at+csqrn">/dev/ttyUSB1
root@sheenfar-VirtualBox:/dev#
+csq: 99,99
OK
echo -en "at+cnumrn">/dev/ttyUSB1
root@sheenfar-VirtualBox:/dev#
+CNUM: ,"+8613818xxxxxx",145
OK
root@sheenfar-VirtualBox:~# echo -en "at+cgdcont?rn">/dev/ttyUSB1
root@sheenfar-VirtualBox:~#
+CGDCONT: 1,"IP","unim2m.njm2mapn","0.0.0.0",0,0
root@sheenfar-VirtualBox:~# echo -en "atdt*99#rn">/dev/ttyUSB1
root@sheenfar-VirtualBox:~#
CONNECT 150000000
上述 APN 是该二手模块买来自带的,搞不懂是什么APN. 拨号,居然也连接上了。
CGDCONT设置失败
root@sheenfar-VirtualBox:~# at+cgdcont=1,ip,cmnet,0,0,
ERROR
CGDCONT设置成功( 这个 PDP设置了好几次才算成功了!)
echo -en "AT+CGDCONT?rn">/dev/ttyUSB1
root@sheenfar-VirtualBox:/etc/ppp# AT+CGDCONT?
+CGDCONT: 1,"IP","CMNET","0.0.0.0",0,0
```handlebars
OK
echo -en "ATD*98#rn">/dev/ttyUSB1
root@sheenfar-VirtualBox:/etc/ppp# ATD*98#
CONNECT 150000000
但是,用 ifconfig 查看 IP ,发现没有分配 IP . 浏览器也无法上网。应该是拨号是不分配 IP 地址的。 需要 PPP 协商才可以分配 IP 地址。 PPP 协商用 AT 命令不知道怎么搞。 就此打住吧。
4.Wvdial 测试(ppp协议)
4.1先需要安装 wvdial (Apt install wvdial)
4.2 运行wvdialconf /etc/wvdial.conf,生产配置文件
wvdial conf /etc/wvdial.conf
Scanning your serial ports for a modem.
Modem Port Scan<*1>: S0
S1
S2
S3
S4
S5
S6
S7
Modem Port Scan<*1>: S8
S9
S10
S11
S12
S13
S14
S15
Modem Port Scan<*1>: S16
S17
S18
S19
S20
S21
S22
S23
Modem Port Scan<*1>: S24
S25
S26
S27
S28
S29
S30
S31
ttyUSB0<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud
ttyUSB0<*1>: ATQ0 V1 E1 -- failed with 9600 baud, next try: 9600 baud
ttyUSB0<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up.
ttyUSB1<*1>: ATQ0 V1 E1 -- OK
ttyUSB1<*1>: ATQ0 V1 E1 Z -- OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyUSB1<*1>: Modem Identifier: ATI -- Manufacturer: BroadMobi
ttyUSB1<*1>: Speed 9600: AT -- OK
ttyUSB1<*1>: Max speed is 9600; that should be safe.
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 Z -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyUSB2<*1>: Modem Identifier: ATI -- Manufacturer: BroadMobi
ttyUSB2<*1>: Speed 9600: AT -- OK
ttyUSB2<*1>: Max speed is 9600; that should be safe.
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyUSB3<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud
ttyUSB3<*1>: ATQ0 V1 E1 -- failed with 9600 baud, next try: 9600 baud
ttyUSB3<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up.
Found a modem on /dev/ttyUSB1.
Modem configuration written to /etc/wvdial.conf.
ttyUSB1<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
ttyUSB2<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
4.3 查看配置文件cat /etc/wvdial.conf
```handlebars
root@sheenfar-VirtualBox:/etc/ppp# cat /etc/wvdial.conf
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
ISDN = 0
New PPPD = yes
Phone = *99#
Modem = /dev/ttyUSB1
Username = guest
Password = guest
Baud = 9600
4.4 第1次 wvdial 拨号失败
root@sheenfar-VirtualBox:/etc/ppp# wvdial
wvdial :Modem not responding
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0
ATQ0
OK
--> Re-Sending: ATZ
ATZ
OK
--> Modem not responding.
ATH
OK
4.5 在手工修改cgcont 为 CMNET 之后,拨号成功,上网成功
root@sheenfar-VirtualBox:~# wvdial &
[1] 4780
root@sheenfar-VirtualBox:~# --> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Modem initialized.
--> Sending: ATDT*98#
--> Waiting for carrier.
ATDT*98#
CONNECT 150000000
--> Carrier detected.
Waiting for prompt.
--> Connected, but carrier signal lost!
Retrying...
--> Sending: ATDT*98#
--> Waiting for carrier.
NO CARRIER
^DATADISCONNECT
CONNECT 150000000
--> Carrier detected.
Waiting for prompt.
--> Don't know what to do!
Starting pppd and hoping for the best.
--> Starting pppd at Mon May 17 21:18:39 2021
--> Pid of pppd: 4787
--> Using interface ppp0
--> local
IP address 10.12.139.47
--> remote IP address 10.64.64.64
--> primary
DNS address 211.136.150.86
--> secondary DNS address 211.136.150.88
并且成功分配了 IP 地址。 可以上网。
Ifconfig 显示:
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>
mtu 1500
inet 10.12.139.47
netmask 255.255.255.255
destination 10.64.64.64
ppp
txqueuelen 3
(Point-to-Point Protocol)
RX packets 345
bytes 232557 (232.5 KB)
RX errors 0
dropped 0
overruns 0
frame 0
TX packets 387
bytes 48626 (48.6 KB)
TX errors 0
dropped 0 overruns 0
carrier 0
collisions 0
5. PPPD测试(拨号与PPP协商拆分为两步,成功)
5.1 直接用pppd 拨号失败
pppd modem -d -detach /dev/ttyUSB1 9600
kdebug 4 file /etc/ppp/options crtscts noipdefault netmask 255.255.255.0
defaultroute connect /etc/ppp/chat-script usepeerdns
AT
OK
Script /etc/ppp/chat-script finished (pid 4522), status = 0x3
Connect script failed
ppp 拨号脚本如下
root@sheenfar-VirtualBox:/etc/ppp#
cat /etc/ppp/chat-script
#!/bin/sh
exec chat -v
TIMEOUT 5
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO CARRIER"
'' rAT
OK 'AT+CGDCONT=1,"IP","CMNET"'
OK 'ATDT*99#'
CONNECT ''
5.2 先拨号, 再PPP协商两步走成功
先拨号
echo -en "atd*98#rn">/dev/ttyUSB1
root@sheenfar-VirtualBox:/etc/ppp#
CONNECT 150000000
然后再PPP协商
pppd modem -d -detach /dev/ttyUSB1 9600
kdebug 4 file /etc/ppp/options crtscts noipdefault netmask 255.255.255.0
defaultroute
usepeerdns
注意: connect /etc/ppp/chat-script(这个参数选项要删除)
查询 ifconfig 看到了 PPP0 IP地址, 成功!
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>
mtu 1500
inet 10.72.137.253
netmask 255.255.255.255
destination 10.64.64.64
ppp
txqueuelen 3
(Point-to-Point Protocol)
RX packets 50
bytes 8564 (8.5 KB)
RX errors 0
dropped 0
overruns 0
frame 0
TX packets 62
bytes 5873 (5.8 KB)
TX errors 0
dropped 0 overruns 0
carrier 0
collisions 0
6. NDIS 拨号+申请IP地址两步走
该种方式仅测试了Huawei ME909S821 模块。
6.1 拨号命令 at^ndisdup=1,1rn
root@sheenfar-VirtualBox:~# cat /dev/ttyUSB0 &
[1] 5224
root@sheenfar-VirtualBox:~# echo -en "at^ndisdup?rn">/dev/ttyUSB0
root@sheenfar-VirtualBox:~#
OK
echo -en "at^ndisdup=1,1rn">/dev/ttyUSB0
root@sheenfar-VirtualBox:~#
ERROR
echo -en "at^ndisdup=1,0rn">/dev/ttyUSB0
root@sheenfar-VirtualBox:~#
OK
^NDISSTAT: 0,0,,"IPV4"
^NDISSTAT: 0,0,,"IPV6"
echo -en "at^ndisdup=1,1rn">/dev/ttyUSB0
root@sheenfar-VirtualBox:~#
OK
^NDISSTAT: 1,,,"IPV4"
备注: at^ndisdup =1,1 为建立连接,
at^ndisdup =1,0 为释放连接。
这个时候用 ifconfig 查询,发现还没有分配IP 地址。 需要用 udhcpc 命令去获取 IP 地址。
6.2 申请IP地址
udhcpc -i wwx021e101f0000
root@sheenfar-VirtualBox:~# udhcpc -i wwx021e101f0000
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: sending select for 10.24.149.79
udhcpc: lease of 10.24.149.79 obtained, lease time 518400
ifconfig 查看结果:
wwx021e101f0000: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
mtu 1500
inet 10.48.3.10
netmask 255.255.255.252
broadcast 10.48.3.11
inet6 fe80::1e:10ff:fe1f:0
prefixlen 64
scopeid 0x20<link>
ether 02:1e:10:1f:00:00
txqueuelen 1000
(Ethernet)
RX packets 158
bytes 23446 (23.4 KB)
RX errors 0
dropped 0
overruns 0
frame 0
TX packets 153
bytes 21200 (21.2 KB)
TX errors 0
dropped 0 overruns 0
carrier 0
collisions 0
观察网络连接物理端口命令:
root@sheenfar-VirtualBox:~# ls /sys/class/net
docker0
enp0s3
lo
wwx021e101f0000
6.3 奇怪的事情,NDIS之后wwan0 端口就不出现了
即使采用本文第2章的方式 GUI设置 Mobile Broadband , 通过 ls /sys/class/net 列出来的网络端口还是 wwx021e101f0000 , 原有的 wwan0 就不再出现了。 此时还可以用 “AT^NDISDUP=1,0rn” 命令来关闭连接。 但是关闭后 IP 地址依然存在, 设置GUI界面的 Mobile Broadband 状态依然是连接。
因时间原因,没有测试重启后的效果,不会再也见不到 wwan0 端口了吧 ?
最后
以上就是腼腆豌豆为你收集整理的宽翼通信4G模块(BM806U )在Ubuntu20.04 环境的调测记录LTE 4G通讯模块(BM806U )在Ubuntu20.04 环境的调测记录3. 控制台AT命令测试(CGDCONT成功设置,拨号成功,但未分配IP)4.Wvdial 测试(ppp协议)5. PPPD测试(拨号与PPP协商拆分为两步,成功)6. NDIS 拨号+申请IP地址两步走的全部内容,希望文章能够帮你解决宽翼通信4G模块(BM806U )在Ubuntu20.04 环境的调测记录LTE 4G通讯模块(BM806U )在Ubuntu20.04 环境的调测记录3. 控制台AT命令测试(CGDCONT成功设置,拨号成功,但未分配IP)4.Wvdial 测试(ppp协议)5. PPPD测试(拨号与PPP协商拆分为两步,成功)6. NDIS 拨号+申请IP地址两步走所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复