WiFi的標簽
都知道的,要看Android log如果不加過濾器,那么對應的信息量極其的龐大,要在這些大信息量找到我們關心的可能需要耗費比較長的時間,所以對于在調試WiFi過程,那些標簽是需要關注的呢?
整理需要關注的標簽有以下
WifiService
WiFi的核心服務,是啟動整個WiFi服務的,它在我們的logcat關注范圍內
WifiScanningService
WiFi的掃描服務,一般我點開或者進入到WiFi列表頁面里,這個服務在后臺幫我們刷新熱點,同樣在logcat關注的范圍內
ConnectivityService
關于有線與WiFi的切換,以及系統關于網絡的鏈接,它幫忙在管著事呢,所以也在logcat關注的范圍內
CommandListener
系統網絡相關的命令執行需要涉及到它,比如像Setting iface up 或者bring up eth0 這些事兒,它幫忙在處理,同樣也在WiFi調試時logcat關注范圍內
WifiHW
這個標簽也是比較常用到,在hardware/libhardware_legacy/wifi/wifi.c里面,主要幫忙實現drv的加載/卸載,以及處理與wpa_supplicant之間相關事件的通信,常用于前期的WiFi Drv導入調試比較多,所以也在logcat關注范圍內
E/WifiHW ( 2035): load wifi driver module id:7
W/WifiHW ( 2035): load prealloc module /proc/modules
W/WifiHW ( 2035): check module loaded: cfg80211
W/WifiHW ( 2035): check module loaded: rtl8821au
Tethering
這是一個類似鏈接的服務,一般用于 Tethering wlan0 或者 sendTetherStateChangedBroadcast 等等,可以幫忙輔助調試WiFi流程,也在logcat關注范圍內
hostapd
對于可以支持軟件AP的WiFi Dongle設備來說,這是一個很關鍵的服務(工具),一般用來初始化設置軟AP的參數(ssid、channel、psk、wpa、帶寬等參數)詳細具體可參考hostapd.conf
I/hostapd ( 3420): wlan0: interface state UNINITIALIZED->HT_SCAN
I/hostapd ( 3420): 20/40 MHz operation not permitted on channel pri=6 sec=10 based on overlapping BSSes
E/hostapd ( 3420): Using interface wlan0 with hwaddr 00:6c:fd:d3:72:ec and ssid "AndroidAP12"
....
I/hostapd ( 3420): wlan0: STA 14:ab:c5:74:b3:d2 IEEE 802.11: associated
I/hostapd ( 3420): wlan0: STA 14:ab:c5:74:b3:d2 IEEE 802.11: associated
I/hostapd ( 3420): wlan0: AP-STA-CONNECTED 14:ab:c5:74:b3:d2
I/hostapd ( 3420): wlan0: STA 14:ab:c5:74:b3:d2 WPA: pairwise key handshake completed (RSN)
I/hostapd ( 3420): wlan0: STA 14:ab:c5:74:b3:d2 WPA: pairwise key handshake completed (RSN)
....
WifiStateMachine
WiFi中心處理樞紐,很多的WiFi狀態處理都離不開它,所以也是在logcat需要關注的范圍
TetherController
它在系統網絡有著重要的地位,因為其處理的業務包含了dns,路由控制表, dhcp相關等等,可以這么說,系統網絡涉及到無法ping通一些特定的域名或者網站,可以來這里找找原因,所以它也在logcat關注范圍內,其中該文件在/system/netd/server/TetherController.cpp,
dnsmasq
一個神奇且強大的工具,集中了dns,dhcp,router等功能,它很適合在一些小網絡(輕量級)架構發揮著強大的作用,詳細可以參見這里
可以看下它工作時打印
I/dnsmasq ( 3424): started, version 2.51 cachesize 150
I/dnsmasq ( 3424): compile time options: no-IPv6 GNU-getopt no-DBus no-I18N DHCP no-scripts no-TFTP
W/dnsmasq ( 3424): warning: no upstream servers configured
I/dnsmasq ( 3424): DHCP, IP range 192.168.49.2 -- 192.168.49.254, lease time 1h
I/dnsmasq ( 3424): DHCP, IP range 192.168.48.2 -- 192.168.48.254, lease time 1h
I/dnsmasq ( 3424): DHCP, IP range 192.168.47.2 -- 192.168.47.254, lease time 1h
I/dnsmasq ( 3424): DHCP, IP range 192.168.46.2 -- 192.168.46.254, lease time 1h
I/dnsmasq ( 3424): DHCP, IP range 192.168.45.2 -- 192.168.45.254, lease time 1h
I/dnsmasq ( 3424): DHCP, IP range 192.168.44.2 -- 192.168.44.254, lease time 1h
I/dnsmasq ( 3424): DHCP, IP range 192.168.43.2 -- 192.168.43.254, lease time 1h
I/dnsmasq ( 3424): DHCP, IP range 192.168.42.2 -- 192.168.42.254, lease time 1h
I/dnsmasq ( 3424): read /etc/hosts - 1 addresses
I/dnsmasq ( 3424): using nameserver 172.17.82.12#53
I/dnsmasq ( 3424): using nameserver 172.18.70.5#53
以上主要為調試WiFi 軟AP常用的Tag
對應的logcat 命令如下
logcat -v time Tethering:D hostapd:I CommandListener:D TetherController:D dnsmasq:D \
WifiStateMachine:D WifiHW:D WifiService:D WIFI:D WIFI_UT:D WifiStateReceiver:D \
WifiScanningService:D WifiChangeStFF:D WifiFF:D ConnectivityService:D hostapd:D \
NetdConnector:D SoftapController:D *:S
在切換到Sta狀態時,我們需要重點關注wpa_supplicant對應的log
開啟wpa_supplicant的log,只需要修改一個地方即可,在找到對應init.xx.rc啟動wpa_supplicant進程,在啟動前添加 -dd的參數(將wpa_supplicant log 級別設為debug)即可,后續關于wpa_supplicant調試會繼續更新整理