遇到Wi-Fi无法连接路由器的情况时,系统日志往往藏着问题的答案。作为运维工程师,我处理过数百起类似故障,发现90%的问题都能通过分析日志定位。下面分享我的实战排查方法论。
日志分析的核心在于:知道看哪里、如何解读关键信息。Android/Linux系统的Wi-Fi日志通常包含wpa_supplicant、NetworkManager等组件的详细记录,我们需要重点关注连接生命周期中的关键事件节点。
在提供的日志样例中,我们能看到一个典型的连接失败记录:
code复制[CONNECT_FAILURE] Time=2026-03-05T09:46:02, SSID="guest", BSSID=94:00:b0:b8:2b:30, Reason=ASSOCIATION_REJECTION (Code=2)
这条日志包含几个关键要素:
| 错误代码 | 含义 | 典型解决方案 |
|---|---|---|
| Code=1 | 未指定错误 | 检查信号强度、重启路由 |
| Code=2 | 关联拒绝 | 检查MAC过滤、加密协议 |
| Code=3 | 认证失败 | 核对密码、检查RADIUS服务器 |
| Code=4 | 四次握手超时 | 更新驱动、检查加密设置 |
| Code=15 | 关联超时 | 调整信道、降低频宽 |
在Android设备上获取Wi-Fi日志:
bash复制adb logcat -b main -b system -d > wifi_logs.txt
Linux系统查看wpa_supplicant日志:
bash复制journalctl -u wpa_supplicant --since "1 hour ago"
使用grep进行多条件过滤:
bash复制grep -E "WifiNetworkSuggestionsManager|wpa_supplicant|CONNECT_FAILURE" wifi_logs.txt
时间范围过滤(分析特定时段的故障):
bash复制sed -n '/03-05 09:45:00/,/03-05 09:47:00/p' wifi_logs.txt
当出现Code=2错误时,通常意味着:
排查步骤:
bash复制wpa_cli status # 查看当前连接参数
Code=3错误的常见原因:
调试方法:
bash复制wpa_cli
> list_networks
> select_network <id>
> reassociate
当日志信息不足时,需要抓取802.11帧:
bash复制# 监控模式抓包
sudo airmon-ng start wlan0
sudo wireshark
关键过滤表达式:
code复制wlan.fc.type_subtype == 0x00 || # 关联请求
wlan.fc.type_subtype == 0x01 || # 关联响应
wlan.fc.type_subtype == 0x0b # 认证
使用Wi-Fi分析仪检查信道干扰:
bash复制sudo apt install linssid
linssid
最近处理的一个典型案例:某企业网络频繁出现Code=15错误(关联超时)。通过日志分析发现:
最终解决方案:
建议保存以下常用命令:
bash复制# 实时监控Wi-Fi事件
adb logcat -s WifiStateMachine
# 查看wpa_supplicant调试信息
sudo wpa_cli -i wlan0 log_level DEBUG
# 获取详细的握手过程
sudo iw wlan0 link
遇到连接问题时,建议按以下顺序排查: