惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Check Point Blog
Hacker News: Ask HN
Hacker News: Ask HN
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学
P
Proofpoint News Feed
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
N
Netflix TechBlog - Medium
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
S
Schneier on Security
T
Threat Research - Cisco Blogs
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Hacker News
The Hacker News
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
GbyAI
GbyAI
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Palo Alto Networks Blog
T
Tenable Blog
S
Secure Thoughts
T
Threatpost
V2EX - 技术
V2EX - 技术
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
罗磊的独立博客
P
Privacy & Cybersecurity Law Blog
Engineering at Meta
Engineering at Meta
小众软件
小众软件
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
Y
Y Combinator Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
P
Privacy International News Feed
H
Heimdal Security Blog
量子位
B
Blog

轶哥博客

blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog
blog
2021-01-24 · via 轶哥博客

识别模块

5G模块

将4G/5G开发板插入设备,终端输入lsusblspci,看设备是否识别到4G/5G模块。

root@raspberrypi:~ $ lsusb
Bus 001 Device 001: ID 05c6:1000 Qualcomm, Inc. Mass Storage Device

IMG6477.JPG

以树莓派(Raspberry)为例,上述命令显示设备识别到高通芯片的4G模块。了解更多详情请阅读《Linux安装无线网卡驱动通用方法》

需要特别注意的是,部分4G模块(特别是性能较好的高通芯片)是内核免驱,载入成功后直接体现为网卡。使用ifconfig即可直接看到网卡并能上网。这种情况下,USB接口实现的是一个USB网卡端,类似于Raspberry OTG USB上网。参考:《树莓派4使用OTG功能变身有线网卡》

查看驱动加载情况

查看dmesg信息,确认模块驱动加载情况。不同的4G/5G网卡,加载的驱动模式可能有差异。通常情况下,4G无线网卡包含两个模式,一个CD存储模式,另一个是Modem模式(调制解调器模式)。5G模块的无线网卡通常走USB Type-C,具有专门的驱动,但是拨号过程大同小异。

$ dmesg

如果usb模式切换正常,通常可以看到类似如下输出:

 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1

否则,可能只识别到USB Storage device或者CD-ROM。这种情况下,需要安装usb-modeswitch usb-modeswitch-data等库,并设置切换为modem模式。

配置wvdial拨号

sudo apt install wvdial ppp

修改wvdial配置文件/etc/wvdial.conf。我使用的电信手机卡进行测试:

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0
Init3 = AT+CGDCONT=1,"IP","ctnet"
Modem Type = Analog Modem
Baud = 9600
New PPPD = yes
Modem = /dev/ttyUSB1
ISDN = 0
Phone = *99#
Password = card
Username = card
Auto DNS = on

相应的,你需要将APN设置的一行Init3内容进行修改,4G模块中移动cmnet、联通3gnet、电信ctnet,相应的物联网卡APN和5G使用的配置数据,根据供应商给到的参数进行设置。Modem一栏即4G模块的USB虚拟串口设备路径或5G模块的TTY接口。

运行:

$ wvdial

直接执行wvdial命令,即可看到拨号上网的过程。如果成功,将会看到:

--> WvDial: Internet dialer version xxx
--> Initializing modem.
--> Sending: ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT 150000000
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Sun Jan 24 14:45:37 2021
--> Pid of pppd: 1330
--> Using interface ppp0
--> pppd: X/?[01]X/?[01]
--> local  IP address xxx.xxx.xxx.xxx
--> pppd: X/?[01]X/?[01]
--> remote IP address xxx.xxx.xxx.xxx
--> pppd: X/?[01]X/?[01]
--> primary   DNS address xxx.xxx.xxx.xxx
--> pppd: X/?[01]X/?[01]
--> secondary DNS address xxx.xxx.xxx.xxx
--> pppd: X/?[01]X/?[01]

可以成功获取local IP地址,基本上就快成功了。其中,remote IP address 10.64.64.64是正常的。

部分5G模块拨号成功后,数据是不走ppp网卡的。需要根据具体模块文档进行调试。

检查是否可以上网

运行:

$ ifconfig

如果调制解调器正常运行,则可以看到ppp0输入类似内容:

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet xxx.xxx.xxx.xxx  netmask 255.255.255.255  destination 10.64.64.64
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 11065  bytes 1348146 (1.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12168  bytes 1585065 (1.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

每次成功启动后都会分配到一个随机IP地址(也有可能固定,取决于运营商),这就说明4G/5G模块初始化成功。使用IPv6场景的5G模块,还需要针对IPv6进行网卡配置。

检查路由表:

$ route -n

得到类似信息:

root@NanoPi-NEO2:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
0.0.0.0         10.10.10.252    0.0.0.0         UG    100    0        0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

在双网卡情况下,如果要使用ppp0上网,可以这么做:

# 删除第一条路由信息:
$ sudo route del –net 0.0.0.0 eth0
# 新增一条ppp0的路由信息:
$ sudo route add –net 0.0.0.0 ppp0

可以参考文章《MacOS 同时使用内网和外网(双网卡同时联网)》,进行多网卡同时联网的设置。

确认路由正常后,就可以开始常规的确认网络操作了。例如ping网关ping 114.114.114.114ping www.baidu.com

查询当前IP地址:

$ curl cip.cc

创建wvdial服务

需要在加载完USB调制解调器后自动拨号,可以创建wvdial.service文件。

$ vim /etc/systemd/system/wvdial.service

[Unit]
Description=wvdial

[Service]
ExecStart=/usr/bin/wvdial
Restart=on-failure
RestartSec=5

将下述内容添加到99-com.rules文件中。wvdial.service加载USB调制解调器后,它将被自动调用。

$ vim /etc/udev/rules.d99-com.rules

SUBSYSTEM=="tty", KERNEL=="ttyUSB1", TAG+="systemd", ENV{SYSTEMD_WANTS}+="wvdial.service"

其它Linux常规操作

# 启动wvdial服务
systemctl start wvdial

# 关闭wvdial服务
systemctl stop wvdial

# 查询是否存在wvdial进程
ps aux|grep wvdial

# 关闭wvdial进程
killall wvdial

# 查看wvdial服务日志
journalctl -u wvdial