硬件说明: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命令查询。