诊断工具介绍
Linux 命令行工具
iw / iwconfig
# 扫描 WiFi 网络
sudo iw dev wlan0 scan | grep -E "bssid|SSID|signal|freq"
# 查看接口信息
iw dev wlan0 info
# 查看监管域
iw reg get
# 设置监管域
sudo iw reg set CN
# 查看 PHY 能力
iw phy phy0 info
ip link / ethtool
# 查看网卡状态
ip link show wlan0
# 查看无线统计信息(需要 mac80211)
cat /sys/class/net/wlan0/phy80211/statistics/dropped
cat /sys/class/net/wlan0/phy80211/statistics/retired
# 关键计数器:
# retired: MAC 层重传丢弃的帧数(高 = 干扰严重)
# dropped: 接收端丢弃的帧数(高 = 信号差或缓冲区溢出)
airmon-ng / airodump-ng
# 进入监控模式
sudo airmon-ng start wlan0
# 扫描所有信道
sudo airodump-ng wlan0mon
# 监听特定网络
sudo airodump-ng --bssid AA:BB:CC:DD:EE:FF --write capture wlan0mon
# 分析捕获文件
airodump-ng capture-01.cap
tcpdump / Wireshark
# 抓包(监控模式)
sudo tcpdump -i wlan0mon -w capture.pcap type mgmt
# 抓包(管理帧 + 数据帧)
sudo tcpdump -i wlan0mon -w capture.pcap 'wlan addr AA:BB:CC:DD:EE:FF'
# Wireshark 解密 WPA2:
# Edit → Preferences → Protocols → IEEE 802.11
# 添加 PMKID 或 PSK + Key Type (WPA-PBKDF2 / WPA2-SHA256)
专业 WiFi 分析工具
Ekahau Pro
功能:
├── 预测性勘测(基于楼层平面图)
├── 实时热成像(信号强度/信噪比/信道利用率)
├── AP 放置推荐
├── 容量规划模拟
└── 报告生成
硬件要求: Ekahau Sidekick 2/3(校准过的 WiFi+蓝牙适配器)
MetaGeek Chanalyzer / Stumbler
Chanalyzer (实时频谱分析):
├── 显示所有频段的实时信号强度
├── 识别非 WiFi 干扰源
├── 信道利用率热力图
└── 历史数据记录
Stumbler (网络发现):
├── 扫描并列出所有可见网络
├── 跟踪客户端关联/漫游事件
├── 信号强度趋势图
└── 导出 CSV/KML 报告
inSSIDer / WiFi Analyzer
inSSIDer (商业版):
├── 可视化信道占用图
├── 客户端发现和分析
├── 历史比较
└── 推荐最佳信道配置
WiFi Analyzer (免费, Android/Windows):
├── 基础信道扫描
├── 信号强度显示
└── 快速干扰检查
嵌入式 WiFi 调试工具
MediaTek MTK 专用工具
# connMan / wpa_supplicant 日志
journalctl -u wpa_supplicant -f
journalctl -u connman -f
# iwpriv (MTK 私有扩展)
iwpriv wlan0 get_driver_version
iwpriv wlan0 get_mac_addr
iwpriv wlan0 set_txpower 20 # 设置发射功率 (dBm)
iwpriv wlan0 get_rssi # 获取当前 RSSI
# MTK debugfs 接口
cat /sys/kernel/debug/ieee80211/phy0/statistics/pep_info
cat /sys/kernel/debug/ieee80211/phy0/mac80211/tx_dropped
wpa_supplicant 调试
# 启动 wpa_supplicant(详细日志)
sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -d -dd
# 关键日志信息:
# CTRL-EVENT-CONNECTED → 成功关联
# WPA: 4-Way Handshake completed → 密钥协商完成
# CTRL-EVENT-DISCONNECTED → 断开连接(查看 reason code)
# Reason Code 参考:
# 3 = 解除认证(正常断开)
# 4 = 关联失效(AP 主动断开)
# 6 = 离开 BSS(客户端漫游)
# 7 = 不关联(AP 拒绝)
# 8 = 站未确认 → 信号差或干扰
自动化诊断脚本示例
#!/bin/bash
# wifi-diag.sh - WiFi 快速诊断脚本
IFACE="wlan0"
echo "=== WiFi Quick Diagnostic ==="
echo ""
echo "--- Interface Status ---"
ip link show $IFACE | head -2
iw dev $IFACE info | grep -E "ssid|freq|rssi|signal"
echo ""
echo "--- Connected AP Info ---"
iw dev $IFACE station dump | head -20
echo ""
echo "--- Regulatory Domain ---"
iw reg get | head -5
echo ""
echo "--- MAC Statistics ---"
for stat in retired dropped missed beacon_miss; do
val=$(cat /sys/class/net/$IFACE/phy80211/statistics/$stat 2>/dev/null || echo "N/A")
printf "%-15s: %s\n" "$stat" "$val"
done
echo ""
echo "--- Neighbor APs (top 10) ---"
sudo iw dev $IFACE scan 2>/dev/null | grep -E "bssid|SSID|signal" | paste - - - | column -t | head -10