目录
🌼一,前言
WiFi 连接状态👇,Cursor + Mermaid 生成
以下内容均常用 Linux 命令,以及蓝牙协议栈的通用报文格式
数据均为虚构
不涉及生产实践
以下命令,以及日志分析 + 定位 Bug,怎么才能快速掌握呢
① 多用 man 命令,man dmesg,man ifconfig...
② 多用 --help 命令,wpa_cli --help,adb --help
③ 多看日志,多查关键字,不懂的名词,优先 Cursor,其次百度 + 文档
④ 不懂就问
知识概览
- 正常流程:WiFi 四次握手,DHCP,ARP,PING 都完整,说明各层无异常
- 断开 / 认证失败:关注认证过程,加密算法,驱动兼容性
- 异常 / 驱动层:关注驱动错误码,硬件支持,参数配置
- 应用层交互:关注服务状态,数据包序号,连接状态
- 日志分析:关注时间,模块,关键字,状态码,返回值
🎂二,系统调试 + 网络配置
1. Linux 端串口调试
内核日志级别,文件系统挂载,编辑文件,网络接口配置
1.1 内核日志级别
echo 8 >/proc/sys/kernel/printk
- 设置内核日志的打印级别,8 表示允许所有级别的内核消息输出到串口(包括 debug)
- 8 是日志级别,0-8,数字越大日志越多
- 这个命令每次重启都要执行,因为 /proc 是内存文件系统,重启后会恢复默认
1.2 文件系统挂载
mount -o rw,remount /
- 将根文件系统重新挂载为可写,便于修改系统文件
- 挂载概念:
挂载(mount)是将存储设备(硬盘分区,U盘,网络文件系统)关联到 Linux 文件系统目录树的过程,让用户可以通过目录路径访问该设备的文件,给存储设备一个访问入口- 参数解释:
-o 指定挂载选项
rw 读写方式挂载
remount 重新挂载现有文件系统
/ 根目录路径
mount -o rw,remount / # 重新挂载根目录为可写
mount -o remount,ro / # 重新挂载为只读
mount | grep ' / ' # 查看根目录挂载状态
mount -o rw,remount /usr # 重新挂载 /usr 为可写
mount -t tmpfs tmpfs /tmp # 挂载临时文件系统
umount /mnt/usb # 卸载挂载点
1.3 编辑文件
vi 编辑文件,修改启动流程或配置文件
vi /usr/local/share/script/ap_start_fast.sh # 使用vi编辑器
nano /usr/local/share/script/ap_start_fast.sh # 使用nano编辑器
cat /usr/local/share/script/ap_start_fast.sh # 查看脚本内容
chmod +x /usr/local/share/script/ap_start_fast.sh # 给脚本执行权限
ls -l /usr/local/share/script/ # 查看脚本目录
1.4 网络接口配置
ifconfig 查看所有网络接口,确认某个接口是否存在,如 p2p-wlan0-0
ifconfig # 查看所有网络接口
ip addr # 现代Linux推荐的网络查看命令
ifconfig wlan0 # 查看指定接口wlan0
ifconfig wlan0 up # 启用wlan0接口
ifconfig wlan0 down # 禁用wlan0接口
ifconfig wlan0 192.168.1.100 # 设置IP地址
ifconfig wlan0 netmask 255.255.255.0 # 设置子网掩码
2. RTOS 端串口调试
aip config base id autostdn_set 0
- 关闭自动 standby 省电功能,防止 WiFi 长时间误操作被自动关闭
- 参数:
aip
:应用程序接口(Application Interface Program)命令config
:配置子命令base
:基础配置模块id
:标识符参数autostdn_set
:自动待机设置选项0
:关闭(1为开启)
aip config base id autostdn_set 0 # 关闭自动待机
aip config base id autostdn_set 1 # 开启自动待机
aip config base id sleep_set 0 # 关闭睡眠模式
aip config base id sleep_set 1 # 开启睡眠模式
aip config base id power_mode 0 # 设置电源模式为性能模式
aip config base id power_mode 1 # 设置电源模式为节能模式
aip config base id get_autostdn # 查看当前自动待机设置
2.1 WiFi 自动关闭
aip common set_wifi_autoclose_time 99999
- 设置 WiFi 自动关闭时间 99999 秒
- 参数解释
aip
:应用程序接口命令common
:通用配置模块set_wifi_autoclose_time
:设置WiFi自动关闭时间选项99999
:时间值(秒),设置为极大值表示不自动关闭
aip common set_wifi_autoclose_time 99999 # 设置为不自动关闭
aip common set_wifi_autoclose_time 60 # 设置60秒后自动关闭
aip common set_wifi_autoclose_time 0 # 立即关闭WiFi
aip common get_wifi_autoclose_time # 查看当前设置
aip common wifi_status # 查看WiFi状态
aip common wifi_restart # 重启WiFi
aip common wifi_enable 1 # 启用WiFi
aip common wifi_enable 0 # 禁用WiFi
2.2 系统配置
参数解释①
device_name_set:设置设备名称
factory_reset:恢复出厂设置标志
reboot_set:重启设备标志
dhcp_enable:启用DHCP客户端
static_ip_set:设置静态IP地址
gateway_set:设置默认网关
dns_set:设置DNS服务器
代码①
aip config base id device_name_set "MyDevice" # 设置设备名称为MyDevice
aip config base id factory_reset 1 # 恢复出厂设置(1=执行)
aip config base id reboot_set 1 # 重启设备(1=执行)
aip config net id dhcp_enable 1 # 启用DHCP(1=启用,0=禁用)
aip config net id static_ip_set 192.168.1.100 # 设置静态IP地址
aip config net id gateway_set 192.168.1.1 # 设置网关地址
aip config net id dns_set 8.8.8.8 # 设置DNS服务器
aip status get_all # 获取所有状态信息
aip config base id get_device_name # 获取设备名称
aip config net id get_dhcp_status # 获取DHCP状态
参数解释②
log_level_set:设置日志级别(0-7)
debug_enable:启用调试模式
memory_info:查看内存信息
thread_list:列出线程信息
代码②
aip debug log_level_set 7 # 设置最高日志级别
aip debug debug_enable 1 # 启用调试模式
aip system memory_info # 查看内存使用情况
aip system thread_list # 列出所有线程
aip system cpu_usage # 查看CPU使用率
aip system uptime # 查看系统运行时间
aip config base id led_control 1 # 控制LED灯(1=开,0=关)
aip config base id gpio_set 12 1 # 设置GPIO12为高电平
3. WiFi 网络调试
WPA 客户端命令 + WPS 设置
3.1 WPA 客户端命令
wpa_cli status
- 查看 WiFi 连接状态和配置信息,这是 WiFi 无线网络相关的命令,用于管理 WPA / WPA2 无线网络连接
- 以下都是 WiFi 的连接参数,非蓝牙相关的
- 参数解释:
wpa_cli:WPA(WiFi Protected Access)客户端命令行工具
wpa_cli status # 查看WiFi连接状态
wpa_cli scan # 扫描可用WiFi网络
wpa_cli scan_results # 显示扫描结果
wpa_cli list_networks # 列出配置的网络
wpa_cli add_network # 添加新网络配置
wpa_cli remove_network 0 # 删除网络配置(0为网络ID)
wpa_cli enable_network 0 # 启用网络配置
wpa_cli disable_network 0 # 禁用网络配置
3.2 WPS 配置
wpa_cli status wps
- wpa_cli 工具查看 WPS 状态,用于 WiFi 直连(P2P)调试
- AP:
Access Point(接入点),是无线网络核心设备,能发射无线信号,供手机、电脑等设备连接并接入互联网,常见如无线路由器
wpa_cli status wps # 查看WPS状态
wpa_cli wps_pin any # 生成WPS PIN码用于任意AP
wpa_cli wps_pbc # 启动WPS按钮配置
wpa_cli wps_cancel # 取消WPS配置
4. 手机 ADB 调试
4.1 ADB 基础操作
- ADB(Android Debug Bridge)是安卓调试桥,用于与安卓设备通信、抓取日志、安装应用
参数解释:
devices
:列出连接的设备shell
:进入设备shell环境logcat
:查看系统日志install
:安装APK应用uninstall
:卸载应用push
:上传文件到设备pull
:从设备下载文件
adb devices # 列出已连接的安卓设备
adb devices -l # 详细列出设备信息(-l=long format)
adb shell # 进入设备shell命令行
adb shell ls /system/bin # 在设备上执行ls命令
adb install app.apk # 安装APK文件到设备
adb install -r app.apk # 重新安装APK(-r=replace)
adb uninstall com.example.app # 卸载指定包名的应用
adb push local.txt /sdcard/ # 上传文件到设备
adb pull /sdcard/file.txt ./ # 从设备下载文件
adb reboot # 重启设备
adb reboot bootloader # 重启到bootloader模式
adb reboot recovery # 重启到recovery模式
4.2 日志抓取
adb logcat > samsung.log
- 抓取安卓系统日志到本地文件
参数解释
- logcat:查看系统日志命令
- >:重定向输出到文件
- -b:指定日志缓冲区
- -v:指定日志格式
- -s:过滤指定标签
- -c:清空日志缓冲区
adb logcat > samsung.log # 抓取所有日志到文件
adb logcat | grep wifi # 过滤包含wifi的日志
adb logcat -b radio # 查看无线电日志(-b=buffer)
adb logcat -b system # 查看系统日志
adb logcat -b main # 查看主日志
adb logcat -b events # 查看事件日志
adb logcat -v time # 显示时间格式(-v=verbose)
adb logcat -v threadtime # 显示线程时间格式
adb logcat -s WifiManager # 只显示WifiManager标签(-s=silent)
adb logcat -c # 清空日志缓冲区(-c=clear)
adb logcat -d > log.txt # 导出当前日志到文件(-d=dump)
adb logcat ActivityManager:I *:S # 显示ActivityManager Info级别日志
4.3 连接信息
adb shell dumpsys wifi # 查看WiFi系统信息
adb shell dumpsys bluetooth # 查看蓝牙系统信息
adb shell dumpsys connectivity # 查看网络连接信息
adb shell dumpsys telephony.registry # 查看电话服务信息
adb shell netstat -an # 查看网络连接状态
adb shell ping google.com # 在设备上ping测试
adb shell ifconfig # 查看网络接口配置
5. WiFi 四次握手
四次握手 + 抓包命令
5.1 四次握手
- 定义:WPA / WPA2 安全协议的加密连接,包含 4 个 EAPOL(Extensible Authentication Protocol over LAN)数据包交换
- 握手过程:
M1(Message 1):AP发送ANonce(Authenticator Nonce)给客户端
M2(Message 2):客户端发送SNonce(Supplicant Nonce)和MIC给AP
M3(Message 3):AP发送GTK(Group Temporal Key)和MIC给客户端
M4(Message 4):客户端确认收到GTK,发送确认包给AP
参数解释
- ANonce/SNonce:随机数,用于生成PTK(Pairwise Transient Key)
- MIC:消息完整性检查码,验证数据完整性
- GTK:组临时密钥,用于组播/广播数据加密
- PTK:配对临时密钥,用于单播数据加密
5.2 类比 TCP 三次握手
Ⅰ TCP 三次握手(SYN,SYN-ACK,ACK)为了让通信双方都确认彼此的存在和通信能力,建立可靠的连接
Ⅱ WPA / WPA2 的四次握手,则为了让无线客户端和 AP(无线路由器)安全地协商出加密密钥,保证后续数据传输的安全性
专业解释
M1:AP向Supplicant发送ANonce
- AP(Access Point):无线接入点,通常为无线路由器,负责管理无线网络和客户端的接入。
- ANonce(Authenticator Nonce):由AP生成的一次性随机数,用于密钥协商,保证每次握手的唯一性和安全性,防止重放攻击。
- Nonce:Number used once,只用一次的随机数,常用于安全协议中防止重放攻击。
- EAPOL(Extensible Authentication Protocol over LAN):局域网可扩展认证协议,WPA/WPA2四次握手就是通过EAPOL数据包完成的。
M2:Supplicant生成SNonce,基于PMK、ANonce、SNonce和双方MAC地址计算PTK,将SNonce和MIC发送给AP
- SNonce(Supplicant Nonce):由客户端生成的一次性随机数,与ANonce共同参与密钥生成,确保每次握手密钥唯一。
- PMK(Pairwise Master Key):配对主密钥,由预共享密钥(PSK,WiFi密码)或802.1X认证过程生成,是后续密钥派生的基础。
- PTK(Pairwise Transient Key):配对临时密钥,由PMK、ANonce、SNonce、AP和客户端的MAC地址共同计算,用于加密AP与客户端之间的单播数据。
- MIC(Message Integrity Code):消息完整性校验码,基于PTK生成,用于校验EAPOL消息在传输过程中是否被篡改,确保数据完整性。
M3:AP验证MIC,生成GTK,使用PTK加密后连同新MIC一同发送给Supplicant
- GTK(Group Temporal Key):组临时密钥,由AP生成,用于加密AP发给所有客户端的组播和广播数据,保证同一AP下所有设备能安全收发组播/广播数据。
- 组播/广播:组播是AP向一组特定客户端发送数据,广播是AP向所有客户端发送数据,GTK保证这些数据的加密安全。
- PTK、MIC:同上,继续用于加密和校验。
M4:Supplicant验证MIC,确认GTK无误,发送EAPOL-Key确认帧,四次握手完成,PTK/GTK生效
- 确认包:客户端发给AP的EAPOL消息,确认已收到GTK和所有密钥,握手流程正式结束,双方可以进行加密通信。
- 加密通信:后续所有数据传输都将使用协商出的PTK(单播)和GTK(组播/广播)进行加密,确保无线链路的机密性和完整性。
通俗解释
- M1:无线路由器(AP)先给客户端发一个独特的“谜题”(随机数),为后续安全通信做准备。
- M2:客户端收到谜题后,自己也生成一个谜题,并用双方的谜题和密码算出密钥,把自己的谜题和一个校验码发回给AP。
- M3:AP验证客户端的校验码没问题后,生成一个“群密钥”,发给客户端,并带上新的校验码。
- M4:客户端确认收到群密钥和校验码无误,回复AP,双方正式建立安全加密通信。
补充理解
① 本质:四次握手的目的不是 “连接” 本身,而是 “协商密钥”
TCP 三次握手是为了建立可靠连接,WiFi 四次握手是为了让双方都能独立计算出相同的加密密钥(PTK / GTK),保证数据安全
② 四次握手一步都不能丢:任何一步丢包或校验失败,都会导致连接失败
比如,WiFi 密码对了,但是连不上,可能是握手包丢失,被干扰,或密钥计算不一致
③ 密钥和随机数:
Ⅰ 每次握手都会用新的随机数,即使同一设备反复连接,密钥也会变,防止被重放攻击
Ⅱ 密码泄露风险:如果 PSK(WiFi 密码)被破解,四次握手协商出的密钥也会被推算出
④ 常见问题:
Ⅰ 抓包分析
抓取 EPOAL 包,看到四次握手全过程,是定位 WiFi 连接的关键
Ⅱ 驱动 / 固件兼容性
可能导致无法连接或频繁掉线
Ⅲ AP 配置问题
配置了不兼容的加密方式(如 WPA / WPA2 混用),也会握手失败
Ⅳ 信号干扰
无线信号弱,或干扰大,或距离较远,可能连不上,或连上无网络
⑤ 蓝牙 / WiFi 区别
蓝牙配对 --> 身份认证和密钥交换
WiFi 四次握手 --> 基于已有的身份(密码+证书),协商会话密钥
⑥ 排查建议
Ⅰ优先抓包看 EPOAL 流程,四次握手是否完整,每一步是否有响应
Ⅱ 握手包中的 随机数 和 MIC,如果校验失败,排查密码,WiFi 驱动,AP 配置
5.3 抓包命令
tcpdump:Linux 命令行抓包工具
参数解释
-i
:指定网络接口(interface)-w
:写入文件(write to file)wlan0
:无线网络接口名称wifi.pcap
:保存的抓包文件名wlan0mon
:监控模式的无线接口
代码
tcpdump -i wlan0 -w wifi.pcap # 在wlan0接口抓包保存到wifi.pcap
tcpdump -i wlan0 -w wifi.pcap host 192.168.1.1 # 只抓指定主机的包
tcpdump -i any -w all.pcap # 在所有接口抓包
6. WiFi 连接信息
案例解析,创建连接状态,工作模式
6.1 案例解析
bssid=xx:xx:xx:xx:xx:xx # 连接 AP(Access Point) 的 MAC 地址
freq=5180 # 5G WiFi 工作频率
ssid=XXXXXXX # WiFi 网络名称(Service Set Identifier)
id=0 # wpa_supplicant 中网络配置ID
passphrase=xxxxxxx # WiFi 密码
mode=P2P GO # 工作模式:P2P Group Owner(WiFi 直连群主)
pairwise_cipher=CCMP # 单播加密算法(AES-CCMP)
group_cipher=CCMP # 组播加密算法(AES-CCMP)
key_mgmt=WPA2-PSK # 密钥管理方式(WPA2预共享密钥)
wpa_state=COMPLETED # WPA连接状态,COMPLETED表示已成功连接
ip_address=192.168.xx.xx # 本机分配的IP地址
p2p_device_address=xx:xx:xx:xx:xx:xx # P2P设备地址(用于WiFi直连)
address=xx:xx:xx:xx:xx:xx # 本机WiFi接口MAC地址
uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 设备唯一标识符
6.2 常见状态
- wpa_state常见状态:
DISCONNECTED
:未连接到任何网络INTERFACE_DISABLED
:网络接口已禁用INACTIVE
:接口激活但未连接SCANNING
:正在扫描可用网络AUTHENTICATING
:正在进行身份认证ASSOCIATING
:正在关联到APASSOCIATED
:已关联但未完成认证4WAY_HANDSHAKE
:正在进行4次握手认证GROUP_HANDSHAKE
:正在进行组密钥协商COMPLETED
:连接完成,可以进行数据传输
6.3 工作模式
mode 字段含义:
- station:客户端模式,连接到 AP
- AP:接入点模式,作为热点
- P2P GO:P2P群主模式,WiFi直连中的主设备
- P2P Client:P2P客户端模式,WiFi直连中的从设备
7. OTA 命令
OTA 定义:OTA(Over-The-Air)通过无线网络(WiFi / 4G)进行设备固件升级的技术,不需要物理连接(串口烧录),即可远程更新设备版本
7.1 OTA 升级版本
aip config ota_version_check_skip_set 1
- 跳过 OTA 版本检查,用于开发 / 调试阶段,允许安装任意版本固件
- 应用场景:用于嵌入式设备,loT设备的固件升级,通过 WiFi 下载并安装新版本
aip config ota_version_check_skip_set 1 # 跳过版本检查
aip config ota_version_check_skip_set 0 # 启用版本检查
aip config ota_auto_update_enable 1 # 启用自动OTA更新
aip config ota_auto_update_enable 0 # 禁用自动OTA更新
aip config ota_server_url_set "http://update.example.com" # 设置OTA服务器URL
aip config ota_check_interval_set 3600 # 设置检查间隔(秒)
aip ota check_update # 手动检查更新
aip ota start_update # 开始OTA更新
aip ota get_progress # 获取更新进度
aip ota cancel_update # 取消更新
🌹三,Linux 串口日志分析
日志格式,专业名词,日志分析技巧,常用命令
1. 日志格式
2077/07/07-17:77:77 <14>Jan 1 00:00:11 zhazhahuiAIP[103]: msghandler msg_code 23333 finish, rval is 0
# 时间戳
# 日志级别 14(syslog优先级, 14=info)
# 日期
# 进程名和 PID:zhazhahuiAIP[103]
# 内容:msghandler msg_code 23333 finish, rval is 0
# syslog 级别
# <0>:emerg
# <1>:alert
# <2>:crit
# <3>:err
# <4>:warning
# <5>:notice
# <6>:info
# <7>:debug
# <14>:info
2. 专业名词
| 关键字/组合 | 代表层/模块 | 说明/常见问题 |
|-----------------------------|----------------|---------------------------------------
| msghandler | 应用/中间件 | 消息处理,通常是应用层或中间件的消息分发 |
| send Ctrl event | 应用/控制 | 控制事件发送,可能是状态切换、命令下发 |
| OPEN_AP | 网络/驱动 | 打开AP热点,WiFi相关 |
| thread create | 系统/多线程 | 线程创建,涉及RTOS或Linux线程 |
| ALL Init DONE | 系统/应用 | 初始化完成 |
| Ins_Wifi_Event_Init | 网络/驱动 | WiFi事件初始化 |
| smf create thread | 应用/状态机 | 状态机线程创建 |
| ins_smf_wifi start | 应用/网络 | WiFi状态机服务启动 |
| gpio | 硬件/驱动 | GPIO操作,物理层 |
| FrameShare | 应用/多媒体 | 帧共享,通常是视频/图像流处理 |
| Net Fifo start stream | 网络/应用 | 网络流启动,数据传输 |
| get wifi mac | 网络/驱动 | 获取WiFi MAC地址 |
| popen cmd | 系统/应用 | 执行shell命令 |
| msg_code | 应用/协议 | 消息码,通常用于区分不同的消息类型 |
| rval is 0 | 应用/协议 | 返回值,0为成功,非0为失败 |
| COMPLETED | 网络/协议 | WiFi连接完成 |
| ASSOCIATING | 网络/协议 | WiFi正在关联 |
| DISCONNECTED | 网络/协议 | WiFi断开 |
| pairwise_cipher | 网络/安全 | 加密方式 |
| key_mgmt | 网络/安全 | 密钥管理方式 |
| ota_version_check_skip | 应用/OTA | OTA升级相关 |
| autostdn_set | 系统/省电 | 自动待机设置 |
| set_wifi_autoclose_time | 网络/省电 | WiFi自动关闭时间 |
| wpa_state | 网络/协议 | WPA状态 |
| p2p_device_address | 网络/协议 | P2P设备地址 |
| bssid | 网络/协议 | 连接的AP的MAC |
| ssid | 网络/协议 | WiFi名称 |
| ip_address | 网络/协议 | 本机IP |
| uuid | 应用/唯一标识 | 设备唯一标识 |
| InsMw_FrameShare_All_Mmap | 应用/多媒体 | 多媒体帧共享内存映射 |
| SMF Create ret | 应用/状态机 | 状态机创建返回值 |
| Ins_Wifi_Dev_Event_Init | 网络/驱动 | WiFi设备事件初始化 |
| send size | 应用/协议 | 发送消息大小 |
| Ctrl event | 应用/控制 | 控制事件 |
| device status get | 应用/设备管理 | 获取设备状态 |
| Init RPC | 应用/远程过程调用| 初始化远程过程调用 |
| Stream Init | 应用/多媒体 | 流初始化 |
| start stream | 应用/多媒体 | 启动流 |
| Ins_smf | 应用/状态机 | 状态机相关 |
| Server_Smf_Wifi | 应用/网络 | WiFi服务状态机 |
| thread_smf create done | 应用/状态机 | 状态机线程创建完成 |
| popen | 系统/应用 | 执行外部命令 |
| wl country | 网络/驱动 | 设置/获取WiFi国家码 |
| gpio xx sw out1 | 硬件/驱动 | 设置GPIO为输出 |
| rval | 应用/协议 | 返回值 |
| msg send | 应用/协议 | 消息发送 |
| recv msg_code | 应用/协议 | 接收消息 |
| finish | 应用/协议 | 完成某个操作 |
| status get | 应用/协议 | 获取状态 |
| Init DONE | 系统/应用 | 初始化完成 |
| create success | 系统/应用 | 创建成功 |
| start | 系统/应用 | 启动 |
| done | 系统/应用 | 完成
3. 日志分析技巧
- 看时间戳:定位问题发生的时间段。
- 看进程名:区分是应用、驱动还是系统日志。
- 看关键字:如
error
、fail
、timeout
、disconnect
、init
、start
、done
。- 看返回值:
rval is 0
表示成功,非0通常是错误码。- 看状态码:如
wpa_state=COMPLETED
表示WiFi已连接。- 看消息流转:如
recv msg_code
->msg_code finish
,表示消息处理流程。
4. 常用命令
dmesg | grep error # 查看内核日志中error,排查驱动或硬件故障
journalctl -xe # 查看详细系统日志,定位服务和系统异常
cat /var/log/messages # 查看系统消息日志,追踪系统和服务状态
cat /var/log/syslog # 查看系统日志,含内核和服务详细记录
iwconfig # 显示或配置无线网卡参数,如信号强度
iw dev # 列出所有无线设备及其当前状态
iwlist wlan0 scan # 扫描wlan0接口周围的WiFi热点
ps aux | grep wpa_supplicant # 查找wpa_supplicant进程,判断WiFi认证
systemctl status network # 查看网络服务状态,判断网络配置情况
systemctl restart network # 重启网络服务,使配置变更生效
ping 192.168.1.1 # 向指定IP发送ICMP包,测试网络连通性
route -n # 显示路由表,分析数据包转发路径
arp -a # 查看ARP缓存,显示IP与MAC映射
netstat -an # 显示所有网络连接和监听端口
ss -tuln # 显示所有TCP/UDP监听端口,效率高
lsmod # 列出已加载的内核模块,排查驱动
modprobe wl # 加载wl模块(如无线驱动),自动依赖
rmmod wl # 卸载wl模块,释放内核资源
insmod wl.ko # 手动插入wl.ko模块文件到内核
cat /proc/net/dev # 查看各网络接口的数据流量统计
cat /proc/cpuinfo # 显示CPU详细信息,包括型号和核心数
cat /proc/meminfo # 显示内存使用详情,包括总量和可用
top # 实时显示进程和系统资源占用情况
htop # 交互式进程监控工具,比top更直观
free -h # 以人类可读方式显示内存使用情况
df -h # 以人类可读方式显示磁盘分区用量
du -sh * # 显示当前目录下每个文件夹的总大小
lsusb # 列出所有USB设备,排查外设连接
lspci # 列出所有PCI设备,查看硬件信息
uname -a # 显示内核版本、主机名、系统架构等
uptime # 显示系统运行时长和负载信息
date # 显示或设置系统日期和时间
hwclock # 查看或设置硬件时钟(BIOS时钟)
crontab -l # 列出当前用户的定时任务
tail -f /var/log/messages # 实时跟踪系统消息日志的新增内容
grep -i fail /var/log/messages # 查找日志中包含fail的行,定位失败
cat /etc/network/interfaces # 查看网络接口配置文件(Debian系)
nmcli device status # 查看NetworkManager管理的设备状态
nmcli connection show # 查看所有已配置的网络连接
ifup wlan0 # 启动wlan0无线接口
ifdown wlan0 # 关闭wlan0无线接口
systemctl status wpa_supplicant # 查看wpa_supplicant服务状态
killall wpa_supplicant # 杀死所有wpa_supplicant进程
reboot # 立即重启系统
shutdown -h now # 立即关机,安全关闭系统
ls -l /dev/tty* # 列出所有串口设备,便于串口调试
minicom -D /dev/ttyUSB0 # 用minicom连接串口,嵌入式调试
screen /dev/ttyUSB0 115200 # 用screen连接串口,波特率115200
cat /proc/interrupts # 查看系统中断分配和使用情况
cat /proc/partitions # 查看磁盘分区信息
lsblk # 列出所有块设备及其挂载关系
blkid # 显示分区UUID等信息,便于磁盘识别
fdisk -l # 显示所有磁盘及分区详细信息
mount # 显示当前挂载点或挂载新设备
umount /dev/sda1 # 卸载/dev/sda1分区,安全移除设备
cat /etc/fstab # 查看系统自动挂载配置文件
ls /sys/class/net/ # 列出所有网络接口名称
ethtool eth0 # 查看或设置eth0网卡参数
iw phy # 查看无线物理层信息,如频段信道
iw reg get # 查看当前无线国家码设置
find / -name "supplicant_*.txt" 2>/dev/null # 全盘查找supplicant_*.txt文件,忽略无权限
adb devices # 列出已连接的安卓设备
adb logcat > samsung.log # 抓取安卓系统日志到samsung.log
tcpdump -i wlan0 -w wifi.pcap # 在wlan0接口抓包并保存为wifi.pcap
aip config base id autostdn_set 0 # 关闭自动待机,防止WiFi断开
aip common set_wifi_autoclose_time 99999 # 设置WiFi不自动关闭
aip config ota_version_check_skip_set 1 # 跳过OTA版本检查,允许任意固件升级
常用参数补充
netstat 常用参数
-a # 显示所有连接和监听端口(包括TCP和UDP)
-n # 以数字形式显示地址和端口号,不进行DNS解析
-t # 仅显示TCP协议的连接
-u # 仅显示UDP协议的连接
-l # 仅显示处于监听状态的服务端口
-p # 显示进程标识符和程序名称(需root权限)
-r # 显示路由表
-s # 显示网络统计信息
-e # 显示扩展信息(如UID、inode等)
top 常用参数
-d <秒> # 指定刷新间隔时间(秒)
-p <PID> # 仅监控指定进程ID
-n <次数> # 刷新指定次数后退出
-u <用户名> # 仅显示指定用户的进程
-c # 显示进程完整命令行
-H # 显示线程级别信息
交互命令(运行时):
M # 以内存使用排序
P # 以CPU使用排序
k # 杀死进程
q # 退出top
tail 常用参数
-n <行数> # 显示最后N行内容(如-n 100)
-f # 持续输出文件新增内容(常用于日志监控)
-F # 类似-f,但文件被重命名或替换后自动跟踪
-c <字节数> # 显示最后N个字节
--pid=<PID> # 与-f配合,进程结束时自动退出
cat 常用参数
-n # 显示所有行号
-b # 显示非空行行号
-s # 压缩连续的空白行为一行
-A # 显示所有不可见字符(等价于-vET)
-E # 在每行结尾显示$
-T # 将Tab字符显示为^I
-v # 显示不可打印字符(不包括Tab和换行)
ls 常用参数
-l # 以长格式显示,包含权限、所有者、大小、时间等
-a # 显示所有文件,包括以.开头的隐藏文件
-h # 以人类可读方式显示文件大小(配合-l)
-R # 递归显示子目录内容
-S # 按文件大小排序
-t # 按修改时间排序
-r # 反向排序
-d # 仅显示目录本身,而非其内容
-i # 显示文件的inode号
-F # 在文件名后追加类型标识符(如/表示目录)
grep 常用参数
-i # 忽略大小写匹配
-v # 反向匹配,显示不包含模式的行
-r 或 -R # 递归搜索子目录
-n # 显示匹配行的行号
-A <N> # 匹配行后显示N行内容
-B <N> # 匹配行前显示N行内容
-C <N> # 匹配行前后各显示N行内容
-E # 使用扩展正则表达式
-w # 匹配整个单词
-l # 只显示匹配的文件名
-c # 只输出匹配行的计数
🌙四,WiFi 日志典型场景
正常连接,认证失败断开,异常连接,应用层交互
1. 正常连接
[dhd] [p2p-wlan0-0] wl_ext_iapsta_link: connected device 12:34:56:78:9a:bc
[dhd] [p2p-wlan0-0] wl_notify_connect_status_ap : new sta event for 12:34:56:78:9a:bc
802_1X EAPOL Packet, 4-way handshake, M1 (TX) : (aa:bb:cc:dd:ee:ff)
(12:34:56:78:9a:bc) TX_PKTHASH:0x0 TX_PKT_FATE:N/A
4-way handshake, M2 [RX] :
4-way handshake, M3 [TX]
4-way handshake, M4 [RX] :
wl_add_keyext : key index (0) for 12:34:56:78:9a:bc
DHCP DISCOVER (REQUEST]
OFFER[
[TX]: 192.168.1.1(aa:bb:cc:dd:ee:ff) -> 192.168.1.2(12:34:56:78:9a:bc)
ACK[
[TX]:192.168.1.1(aa:bb:cc:dd:ee:ff) ->192.168.1.2(12:34:56:78:9a:bc)
ARP REQUEST
ARP RESPONSE
PING REQUEST
结果
- 设备
12:34:56:78:9a:bc
连接成功,完成四次握手(M1~M4),加密密钥下发正常。- DHCP流程完整,分配到IP,ARP和PING均正常,说明链路、网络、传输、应用层都通畅。
流程
- dhd 驱动检测到 p2p-wlan-0 接口有新设备(12:34:56:78:9a:bc)连接,说明物理链路和驱动层正常
- 通过 EAPOL 协议完成 WPA2 四次握手(M1 ~ M4),双方协商出加密密钥,保证后续数据安全
- 驱动下发密钥(wl_add_keyext),为数据加密准备
- 客户端发起 DHCP 请求,服务器分配 IP,并通过 OFFER 和 ACK 确认
- 通过 ARP 协议解析 IP 和 MAC 关系,PING 测试网络连通性,确保链路,网络,传输,应用层都正常
解释
- [dhd]:表示日志来自“Dongle Host Driver”,这是博通(Broadcom)等WiFi芯片常见的无线网卡驱动模块,负责主机与WiFi芯片之间的数据通信。
- [p2p-wlan0-0]:网络接口名。
wlan0
是无线网卡的标准接口名,p2p-wlan0-0
表示WiFi直连(P2P, Peer-to-Peer)模式下的虚拟接口,常用于WiFi直连或热点功能。- wl_ext_iapsta_link:驱动或中间件中的函数/模块名,
wl
代表wireless,iapsta
可能指“infrastructure AP/STA”,即基础设施模式下的AP/STA,link
表示连接相关处理。- connected device 12:34:56:78:9a:bc:有设备(MAC地址为12:34:56:78:9a:bc)成功连接到本机AP或P2P群主。
- wl_notify_connect_status_ap:驱动/中间件函数,通知AP(接入点)有新的连接事件。
- sta event:sta是station的缩写,指WiFi客户端设备。
- 802_1X EAPOL Packet, 4-way handshake, M1 (TX):正在发送WPA/WPA2四次握手的第1步(M1),EAPOL是认证协议数据包,M1~M4是握手的四个阶段。
- TX/RX:TX为发送(Transmit),RX为接收(Receive)。
- TX_PKTHASH/TX_PKT_FATE:数据包的哈希和命运(如是否成功发送),一般用于调试。
- wl_add_keyext:驱动层函数,添加加密密钥(key),用于后续数据加密。
- key index (0):密钥索引号,0通常为主密钥。
- DHCP DISCOVER (REQUEST]:DHCP(动态主机配置协议)发现请求,客户端向网络请求分配IP地址。
- OFFER/ACK:DHCP服务器响应,OFFER为提供IP,ACK为确认分配。
- [TX]: 192.168.1.1(aa:bb:cc:dd:ee:ff) -> 192.168.1.2(12:34:56:78:9a:bc):表示IP为192.168.1.1、MAC为aa:bb:cc:dd:ee:ff的设备向192.168.1.2、MAC为12:34:56:78:9a:bc的设备发送数据。
- ARP REQUEST/RESPONSE:ARP(地址解析协议)请求/响应,用于解析IP和MAC的对应关系。
- PING REQUEST:网络连通性测试,发送ICMP包检测目标是否可达。
2. 断开 / 认证失败
wl_ext_iapsta_link: disconnected device ab:cd:ef:12:34:56, WLC_E_DEAUTH_IND(6), reason=3
wl_notify_connect_status_ap : event WLC_E_DEAUTH_IND(6) status 0 reason
wl_notify_connect_status_ap : del sta event for ab:cd:ef:12:34:56
wl_cfg80211_del_station : Disconnect STA : ab:cd:ef:12:34:56 scb_val.val 3
CFG80211-ERROR) wl_cfg80211_change_station : WLC_SCB_AUTHORIZE sta_flags_mask not set
CFG80211-ERROR) wl_cfg80211_get_key : Invalid algo (0x44)
流程
- 设备 ab:cd:ef:12:34:56 断开,原因码 3(认证失败 或 被踢下线)
- 日志显示认证 / 加密过程有问题,可能是密码错误,加密算法不匹配,或驱动异常
解释
- WLC_E_DEAUTH_IND(6):WiFi驱动/协议栈中的“Deauthentication Indication”,即“去认证”事件,6为事件码,表示设备被断开连接。
- reason=3:断开原因码,3通常表示认证失败(AUTH_FAIL)或被AP主动踢下线(DEAUTH)。
- wl_cfg80211_del_station:驱动层函数,删除已断开的客户端(STA)。
- CFG80211-ERROR:cfg80211是Linux内核中WiFi配置和管理的子系统,出现ERROR表示驱动或协议栈出错。
- WLC_SCB_AUTHORIZE sta_flags_mask not set:认证标志未设置,说明认证流程未完成。
- Invalid algo (0x44):加密算法不支持或配置错误。
3. 异常 / 驱动问题
CFG80211-ERROR) wl_cfg80211_set_suspend_bcn_li_dtim : set bcnto_dly failed -7
wl_cfg80211_set_suspend_ben_li_dtim : bcn_li_dtim:0 lpas:0 bcn_to_dly:0
CFG80211-ERROR) wl_cfg80211_get_key : Invalid algo (0x44)
流程
- 驱动设置 beacon 参数失败,或加密算法不支持,需检查硬件兼容性和加密配置
解释
- set bcnto_dly failed -7:设置beacon参数失败,-7为错误码,可能是硬件不支持或参数非法。
- beacon:WiFi信标帧,AP定期发送,用于网络同步和发现。
- Invalid algo:加密算法不支持,需检查AP和STA加密配置。
4. 应用层交互
[wsisrv 0 adopted] (1)
on = 0
[Rx]
SEQNUM=1
lws_gate_accepts: on
流程
- 应用层服务(WebSocket / HTTP)已启动并正常收发数据,数据包序号递增,说明应用层通信正常
解释
- wsisrv:WebSocket / HTTP 服务进程或线程名,负责应用层通信
- SEQNUM=1:应用层数据包序号,正常递增说明数据畅通
- lws_gate_accepts: on:WebSocket 服务已接受连接
5. 认证和四次握手
[p2p-wlan0-0] 802_1X EAPOL Packet, 4-way handshake, M1 [TX] : (aa:bb:cc:dd:ee:ff)
(ab:cd:ef:12:34:56) TX_PKTHASH:0x0 TX_PKT_FATE:N/A
4-way handshake, M2 (RX) :
4-way handshake, M3 [TX] :
4-way handshake, M4 [RX] :
流程
- WPA2 四次握手完整,认证和密钥协商正常。若中间断开或无 M4,说明认证未完成,需查密码,加密方式,驱动兼容性
解释
- 802_1X EAPOL Packet:基于IEEE 802.1X标准的认证协议数据包,EAPOL用于WiFi安全认证。
- 4-way handshake, M1~M4:WPA/WPA2安全协议的四次握手过程,M1~M4为四个阶段,确保密钥协商和数据加密安全。
- TX/RX:发送/接收。
6. DHCP / ARP / 网络层
DHCP DISCOVER (REQUEST]
OFFER
REPLY
[TX]:192.168.1.1(aa:bb:cc:dd:ee:ff) ->192.168.1.3(ab:cd:ef:12:34:56)
ARP REQUEST
ARP RESPONSE
PING REQUEST
流程
- DHCP 流程完整,设备获得 IP 地址,ARP 和 PING 都有响应,说明链路层,网络层,传输层都畅通
解释
- DHCP DISCOVER/OFFER/REPLY:DHCP协议的发现、提供、应答过程,客户端通过DHCP获得IP地址。
- ARP REQUEST/RESPONSE:地址解析协议,用于解析IP和MAC的对应关系。
- PING REQUEST:ICMP协议测试网络连通性。
7. 网络层断开
ARP REQUEST
[TX] 192.168.1.1(aa:bb:cc:dd:ee:ff) -> 192.168.1.3(00:00:00:00:00:00)
流程
- 目标设备已断开或未分配 IP,导致 ARP 无法解析 MAC 地址
解释
- 目标MAC为全0:ARP未能解析,通常是对端已断开或未分配IP