硬件說明:shell
操做系統:OpenWRT網絡
網卡:AR9220R52Hnless
網卡驅動:ath9k測試
OpenWRT在刷機完成以後,並不會自動開啓無線功能,須要手動修改配置文件,而後重啓網絡服務。管理無線功能的配置文件是:加密
/etc/config/wirelessspa
內容有兩部分組成:config wifi-device和config wifi-iface。前者配置無線網卡的工做模式、信道、MAC地址、使用哪些天線(通常有一、二、3三個天線,視網卡上有幾個饋線接口而定)、是DSSS仍是OFDM等信息。後者配置網卡接口信息,如接口的名稱、ESSID、密碼和加密方式,網絡鏈接(network配置項)等。網絡鏈接network這一項必須和/etc/config/network中的某個interface一致,表示無線網卡對應哪個interface(接口)。操作系統
例以下面這個配置,包含兩個config wifi-device+config wifi-iface的配置塊,這須要有兩個網卡。(因爲筆者寫博客的電腦和管理OpenWRT的電腦不是同一個,爲了方便,如下內容是從別處複製而來的,並不影響敘述的正確性。)code
下面主要說下個別幾個配置項,其餘配置項要麼不經常使用,要麼一目瞭然。orm
1 channel:信道htm
Channel的值必須是正確的,想知道網卡支持那些信道,能夠用iwlist命令查看:
iwlist c (或寫全稱:iwlist channel)
這裏要注意的是,若是網卡工做在5G下,雖然根據802.11a的標準,5G下的信道從60到165之間有許多許多,而使用iwlist查詢到的網卡信息也說明網卡支持這些信道,但也許channel配置項只能寫149以上的值。由於我國的5G信道只容許使用149以上的信道。
2 hwmode:工做在什麼標準下
hwmode和channel是對應的,例如,若是channel是149,意味着網卡工做在5G下,那麼hwmode不能寫11g,由於11g標準定義的通訊頻率是不包含5G的,只有11a才能夠。
hwmode的值不能亂寫(這也是我今天才知道的)。合法的值有:11a 11b 11g 11na 11ng等。使用其餘奇怪的值,也許在網卡服務啓動的時候內核不會complain,也許網絡服務開啓後,並不是不能正常地部署好AP,但配置也許是錯誤的:在個人實驗中,我須要將AP配置到11n下,但因爲把hwmode的值寫成了11an,結果並未如我所願,網卡其實工做在了11a標準下,此時雖然能夠創建AP,能夠ping通,可是11n並未啓用,不符合個人需求。
緣由能夠用下面這段shell來講明。在解析配置文件的時候,是下面代碼中第8行開始的這段case代碼來解析的,從前日後依次嘗試匹配11bg、11a、11b、11g,而後是11n*(也就是11na、11ng),而後是其餘(用$default做爲hwmode的值)。
1 wifi_fixup_hwmode() { 2 local device="$1" 3 local default="$2" 4 local hwmode hwmode_11n 5 config_get channel "$device" channel 6 7 config_get hwmode "$device" hwmode 8 case "$hwmode" in 9 11bg) hwmode=bg;; 10 11a) hwmode=a;; 11 11b) hwmode=b;; 12 11g) hwmode=g;; 13 11n*) 14 hwmode_11n="${hwmode##11n}" 15 case "$hwmode_11n" in 16 a|g) ;; 17 default) hwmode_11n="$default" 18 esac 19 config_set "$device" hwmode_11n "$hwmode_11n" 20 ;; 21 *) 22 hwmode= 23 if [ "${channel:-0}" -gt 0 ]; then 24 if [ "${channel:-0}" -gt 14 ]; then 25 hwmode=a 26 else 27 hwmode=g 28 fi 29 else 30 hwmode="$default" 31 fi 32 ;; 33 esac 34 config_set "$device" hwmode "$hwmode" 35 }
3 config wifi-iface中的mode
mode是網卡的工做模式,這個和hwmode(硬件模式)不一樣,值的是網卡做爲何角色在通訊。通常會有如下幾種角色,但網卡並不必定都支持這些角色:
sta:用戶端,WiFi的使用者
master:接入點(AP)
ad-hoc:只有在這一模式下,設備能夠和其餘ad-hoc模式下的設備組成多跳網絡(MESH網絡),這須要一些無線ad-hoc路由協議,例如著名的batmand協議。
monitor:只有在這一模式下,網卡能夠監聽同信道上的其餘設備的幀。能夠獲取這些幀的地址、內容、RSSI(甚至信道狀態信息CSI,理論上能夠,實際上根據咱們的測試,基於Intel 5300網卡的CSI Tools並不能穩定工做在monitor模式下,這一點CSI Tools的做者Daniel也認可了)。
網卡支持的工做模式,能夠用iw list命令查詢。