WiFi的標(biāo)簽
都知道的导狡,要看Android log如果不加過濾器甘苍,那么對應(yīng)的信息量極其的龐大,要在這些大信息量找到我們關(guān)心的可能需要耗費(fèi)比較長的時間烘豌,所以對于在調(diào)試WiFi過程载庭,那些標(biāo)簽是需要關(guān)注的呢?
整理需要關(guān)注的標(biāo)簽有以下
WifiService
WiFi的核心服務(wù),是啟動整個WiFi服務(wù)的囚聚,它在我們的logcat關(guān)注范圍內(nèi)
WifiScanningService
WiFi的掃描服務(wù)靖榕,一般我點(diǎn)開或者進(jìn)入到WiFi列表頁面里,這個服務(wù)在后臺幫我們刷新熱點(diǎn)顽铸,同樣在logcat關(guān)注的范圍內(nèi)
ConnectivityService
關(guān)于有線與WiFi的切換茁计,以及系統(tǒng)關(guān)于網(wǎng)絡(luò)的鏈接,它幫忙在管著事呢谓松,所以也在logcat關(guān)注的范圍內(nèi)
CommandListener
系統(tǒng)網(wǎng)絡(luò)相關(guān)的命令執(zhí)行需要涉及到它星压,比如像Setting iface up 或者bring up eth0 這些事兒,它幫忙在處理鬼譬,同樣也在WiFi調(diào)試時logcat關(guān)注范圍內(nèi)
WifiHW
這個標(biāo)簽也是比較常用到娜膘,在hardware/libhardware_legacy/wifi/wifi.c里面,主要幫忙實(shí)現(xiàn)drv的加載/卸載优质,以及處理與wpa_supplicant之間相關(guān)事件的通信竣贪,常用于前期的WiFi Drv導(dǎo)入調(diào)試比較多,所以也在logcat關(guān)注范圍內(nèi)
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
這是一個類似鏈接的服務(wù)巩螃,一般用于 Tethering wlan0 或者 sendTetherStateChangedBroadcast 等等演怎,可以幫忙輔助調(diào)試WiFi流程,也在logcat關(guān)注范圍內(nèi)
hostapd
對于可以支持軟件AP的WiFi Dongle設(shè)備來說避乏,這是一個很關(guān)鍵的服務(wù)(工具)爷耀,一般用來初始化設(shè)置軟AP的參數(shù)(ssid、channel拍皮、psk畏纲、wpa、帶寬等參數(shù))詳細(xì)具體可參考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狀態(tài)處理都離不開它盗胀,所以也是在logcat需要關(guān)注的范圍
TetherController
它在系統(tǒng)網(wǎng)絡(luò)有著重要的地位,因?yàn)槠涮幚淼臉I(yè)務(wù)包含了dns锄贼,路由控制表票灰, dhcp相關(guān)等等,可以這么說宅荤,系統(tǒng)網(wǎng)絡(luò)涉及到無法ping通一些特定的域名或者網(wǎng)站屑迂,可以來這里找找原因,所以它也在logcat關(guān)注范圍內(nèi)冯键,其中該文件在/system/netd/server/TetherController.cpp惹盼,
dnsmasq
一個神奇且強(qiáng)大的工具,集中了dns惫确,dhcp手报,router等功能蚯舱,它很適合在一些小網(wǎng)絡(luò)(輕量級)架構(gòu)發(fā)揮著強(qiáng)大的作用,詳細(xì)可以參見這里
可以看下它工作時打印
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
以上主要為調(diào)試WiFi 軟AP常用的Tag
對應(yīng)的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狀態(tài)時掩蛤,我們需要重點(diǎn)關(guān)注wpa_supplicant對應(yīng)的log
開啟wpa_supplicant的log枉昏,只需要修改一個地方即可,在找到對應(yīng)init.xx.rc啟動wpa_supplicant進(jìn)程揍鸟,在啟動前添加 -dd的參數(shù)(將wpa_supplicant log 級別設(shè)為debug)即可兄裂,后續(xù)關(guān)于wpa_supplicant調(diào)試會繼續(xù)更新整理