# 诊断工具介绍 ## Linux 命令行工具 ### iw / iwconfig ```bash # 扫描 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 ```bash # 查看网卡状态 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 ```bash # 进入监控模式 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 ```bash # 抓包(监控模式) 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 专用工具 ```bash # 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 调试 ```bash # 启动 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 = 站未确认 → 信号差或干扰 ``` ## 自动化诊断脚本示例 ```bash #!/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 ```