Linux(23) Linux 4G模块不能获取IP排查思路

简介: Linux(23) Linux 4G模块不能获取IP排查思路

这是EC200 4G模块上网的手动确认步骤,适用于Linux环境。

步骤说明

步骤 1:确认上网状态

正常上网后,可以通过下列命令查看路由表和接口状态:

# 正常路由表和接口状态的打印信息
root@ido:/# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.13.113.186   0.0.0.0         UG    0      0        0 usb0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 usb0
 
root@ido:/# ifconfig usb0
usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.13.113.69  netmask 255.0.0.0  broadcast 10.255.255.255
        inet6 fe80::dd52:91ad:24d4:ca45  prefixlen 64  scopeid 0x20<link>
        inet6 240e:47c:3c00:20c7:317d:f653:f76d:3f21  prefixlen 64  scopeid 0x0<global>
        inet6 240e:47c:3c00:20c7:6c8b:b416:99ac:a939  prefixlen 64  scopeid 0x0<global>
        ether ae:0c:29:a3:9b:6d  txqueuelen 1000  (Ethernet)
        RX packets 144  bytes 13303 (13.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 134  bytes 14041 (14.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在这个阶段,我们可以看到路由表和 usb0 接口的IP信息。如果路由表为空或者 usb0 接口没有获取到IP,说明目前无法正常上网。

步骤 2:检查模块状态

/dev/ttyUSB2 设备上执行 AT 命令来检查模块的状态。

cat /dev/ttyUSB2 &
# AT+CPIN?`: 这个命令用于查询SIM卡的状态,例如是否已插入SIM卡,SIM卡是否已解锁等
echo -e "AT+CPIN?\r\n" >/dev/ttyUSB2 
# AT+CSQ`: 这个命令用于查询信号质量,返回的是信号强度和信号质量等级。
echo -e "AT+CSQ\r\n" >/dev/ttyUSB2

这些AT命令会返回模块是否已插入SIM卡、模块是否已启动以及当前的信号质量 我记得好像是0~33吧 , 如果是99,99肯定是不正常的。

步骤 3:查询PDP上下文

使用 at+CGDCONT? 命令查询PDP上下文(Packet Data Protocol Context)的状态。

# at+CGDCONT?`: 此命令用于查询PDP上下文的状态,返回的参数包括PDP类型、APN设置等
root@ido:/# echo -e "at+CGDCONT?\r\n" > /dev/ttyUSB2
root@ido:/#
# 这两条是`at+CGDCONT?`命令的返回值,展示的是PDP上下文的状态。它们显示了每个PDP上下文的参数,如CID,PDP类型,APN等。在这里,"ctlte"和"IMS"分别是两个不同的PDP上下文的APN设置。
+CGDCONT: 1,"IPV4V6","ctlte","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0,0,0
+CGDCONT: 8,"IPV4V6","IMS","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0,1,1

这个步骤返回的信息会显示已配置的PDP上下文的状态,例如是否已经设置,以及网络类型等。

步骤 4:查询网络设备控制状态

# at+QNETDEVCTL?`: 如之前所述,这个命令用于查询网络设备的状态,返回的状态参数包括设备是否启用,以及数据、语音、SMS服务是否可用。
  root@ido:/# echo -e "at+QNETDEVCTL?\r\n" > /dev/ttyUSB2
+QNETDEVCTL: 1,1,1,1
 
# 如果是下面这种情况--压根拿不到IP , dhcp也没用. (后面解决了 再写)
root@ido:/etc/NetworkManager/conf.d#
+QNETDEVCTL: 0,0,0,0
 
OK

QNETDEVCTL 命令返回的信息表示网络设备的状态,例如设备是否启用,数据业务是否可用等。

+QNETDEVCTL: 1,1,1,1 这是at+QNETDEVCTL?命令的返回值,显示的是网络设备的四个状态参数。在这种情况下,所有的参数都是1,代表每个状态都是开启的,具体包括:

  • 第一个1代表网络设备的启用状态(1为启用,0为禁用);
  • 第二个1代表数据业务的可用状态(1为可用,0为不可用);
  • 第三个1代表语音业务的可用状态(1为可用,0为不可用);
  • 第四个1代表SMS服务的可用状态(1为可用,0为不可用)。

步骤 5:请求网络地址

执行 udhcpc 命令向网络请求地址:

root@ido:/# udhcpc -i usb0
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: sending select for 10.13.113.69
udhcpc: lease of 10.13.113.69 obtained, lease time 86400
# 正常情况下6次左右 , 如果超过10次基本拨不通

这个步骤会向DHCP服务器请求一个IP地址,并配置到 usb0 接口上。

其他 :检查和控制网络

使用下面的命令来检查和控制网络状态。

# AT+QENG="servingcell"`: 此命令用于查询当前服务的小区信息,包括小区ID,信号质量等信息
echo -e "AT+QENG=\"servingcell\"\r\n" > /dev/ttyUSB2
# AT+CFUN=0?` 和 `AT+CFUN=1?`: 这两个命令是用来查询和设置无线模块功能状态的。CFUN=0表示关闭无线模块功能,CFUN=1表示开启无线模块功能。`AT+CFUN=0?` 和 `AT+CFUN=1?`这两条命令是用来查询模块是否处于关闭或开启状态。
echo -e "AT+CFUN=0?\r\n" > /dev/ttyUSB2 
echo -e "AT+CFUN=1?\r\n" > /dev/ttyUSB2

这些AT命令可以用来查看服务小区信息,以及关闭和打开无线模块功能。


通过以上步骤,可以手动验证和排查EC200 4G模块的上网问题。



20230904补充
花了几个小时调的自动化脚本,各种乱七八糟的问题

#!/usr/bin/expect
 
# 1. 检查ttyUSB0、ttyUSB1、ttyUSB2这3个路径是否存在
set timeout 30
foreach port {ttyUSB2 ttyUSB1 ttyUSB0} {
    if {[file exists "/dev/$port"]} {
        set active_port $port
        break
    }
}
 
if {![info exists active_port]} {
    puts "没有找到ttyUSB0、ttyUSB1、ttyUSB2中的任何一个"
    exit 1
}
 
# 启动cat命令并获取其PID
exec cat /dev/ttyUSB2 &
# 等待一会儿确保cat进程已启动
sleep 1  
set cat_pid [exec pgrep -n cat]
puts "使用端口: $active_port,cat进程PID: $cat_pid"
 
# 2. 执行ifconfig usb0 up
exec ifconfig usb0 up
puts "已执行: ifconfig usb0 up"
 
# 3. 发送AT+CPIN?命令
exec echo -e "AT+CPIN?\r\n" > /dev/$active_port
sleep 1 
 
# 4. 发送AT+CSQ命令
exec echo -e "AT+CSQ\r\n" > /dev/$active_port
sleep 1
 
# 5. 发送at+QNETDEVCTL=1,1,1命令
exec echo -e "at+QNETDEVCTL?\r\n" > /dev/$active_port
sleep 1 
exec echo -e "at+QNETDEVCTL=1,1,1,\r\n" > /dev/$active_port
sleep 1
exec echo -e "at+QNETDEVCTL?\r\n" > /dev/$active_port
 
# 6. 拨号udhcpc -i usb0
spawn udhcpc -i usb0
expect {
    "obtained" {
        puts "已拨号: udhcpc -i usb0"
    }
    "udhcpc: read error: Network is down, reopening socket" {
        puts "检测到网络错误,正在尝试重新启动usb0接口..."
        exec ifconfig usb0 down
        sleep 1
        exec ifconfig usb0 up
        sleep 1
        puts "已重新启动usb0接口,正在重新拨号..."
        send "udhcpc -i usb0\r"
    }
    timeout {
        puts "udhcpc命令超时"
    }
}
 
# 7. 检查默认路由
set route_check [exec route -n]
if {![regexp "default" $route_check]} {
    puts "默认路由不存在,正在添加..."
    exec route add default gw 10.0.0.1
    puts "已添加默认路由"
} else {
    puts "默认路由已存在"
}
 
# 杀死cat进程
exec kill $cat_pid
puts "已杀死cat进程,PID: $cat_pid"
 
 


相关文章
|
11天前
|
Ubuntu Linux
linux怎么查看自己的ip地址
在Linux系统中,有多种方法可以查看自己的IP地址。
105 2
|
11天前
|
监控 安全 Linux
【专栏】Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip
【4月更文挑战第28天】本文介绍了Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip,以及它们在测试网络连通性、追踪路由、查看网络状态、安全扫描和接口配置等场景的应用。通过学习和运用这些命令,系统管理员和网络爱好者能更有效地诊断和管理网络问题,确保网络稳定运行。
|
3天前
|
存储 网络协议 Linux
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
|
3天前
|
存储 网络协议 安全
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
|
11天前
|
Java Linux Arthas
linux上如何排查JVM内存过高?
linux上如何排查JVM内存过高?
830 0
|
11天前
|
监控 安全 Linux
Linux系统入侵排查(三)
本文介绍了Linux系统入侵排查的相关知识。首先解释了进行系统入侵排查的原因,即当企业遭受黑客攻击、系统崩溃或其他安全事件时,需要迅速恢复系统并找出入侵来源。接着,重点讲述了日志入侵排查的重要性,因为日志文件记录了系统的重要活动,可以提供入侵行为的线索。
|
11天前
|
安全 Linux Shell
Linux系统入侵排查(二)
本文介绍了Linux系统入侵排查的步骤,包括检查历史命令记录、可疑端口和进程、开机启动项以及定时任务。作者强调了了解这些技能对于攻防两端的重要性,并提供了相关命令示例,如查看`/root/.bash_history`记录、使用`netstat`分析网络连接、检查`/etc/rc.local`和`/etc/cron.*`目录下的可疑脚本等。此外,还提到了如何查看和管理服务的自启动设置,以判断是否被恶意篡改。文章旨在帮助读者掌握Linux服务器安全维护的基本技巧。
|
11天前
|
缓存 安全 Linux
Linux系统入侵排查(一)
本文探讨了在遭遇黑客入侵或系统异常时进行应急响应和排查的必要性,重点介绍了基于Kali Linux的入侵排查步骤。排查的目标是找出潜在的恶意活动,恢复系统的安全性,并防止未来攻击。总结来说,进行Linux系统入侵排查需要密切关注账号安全,跟踪历史命令,及时识别并消除安全隐患。同时,保持对最新攻击手段和技术的了解,以便更好地防御和应对潜在的网络安全威胁。
|
11天前
|
Ubuntu 网络协议 Linux
|
11天前
|
JSON 网络协议 Linux
Linux ip命令:网络的瑞士军刀
【4月更文挑战第25天】
23 1