【Linux】OpenWRT的无线设置注意事项——从2.4G到5G,hwmode不简单
2015-05-09 21:11
555 查看
硬件说明:
操作系统:OpenWRT
网卡:AR9220R52Hn
网卡驱动:ath9k
OpenWRT在刷机完成之后,并不会自动开启无线功能,需要手动修改配置文件,然后重启网络服务。管理无线功能的配置文件是:
/etc/config/wireless
内容有两部分组成:config wifi-device和config wifi-iface。前者配置无线网卡的工作模式、信道、MAC地址、使用哪些天线(一般有1、2、3三个天线,视网卡上有几个馈线接口而定)、是DSSS还是OFDM等信息。后者配置网卡接口信息,如接口的名称、ESSID、密码和加密方式,网络连接(network配置项)等。网络连接network这一项必须和/etc/config/network中的某个interface一致,表示无线网卡对应哪一个interface(接口)。
例如下面这个配置,包含两个config wifi-device+config wifi-iface的配置块,这需要有两个网卡。(由于笔者写博客的电脑和管理OpenWRT的电脑不是同一个,为了方便,以下内容是从别处复制而来的,并不影响叙述的正确性。)
# 1
config wifi-device 'radio0'
option type 'mac80211'
option hwmode '11ng'
option path 'platform/ar934x_wmac'
option htmode 'HT40+'
list ht_capab 'LDPC'
list ht_capab 'SHORT-GI-20'
list ht_capab 'SHORT-GI-40'
list ht_capab 'TX-STBC'
list ht_capab 'RX-STBC1'
list ht_capab 'DSSS_CCK-40'
option noscan '1'
option channel '7'
option txpower '27'
option country 'CN'
config wifi-iface
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'openwrt_25g'
option encryption 'psk-mixed'
option key '11111111'
#2
config wifi-device 'radio1'
option type 'mac80211'
option hwmode '11na'
option path 'pci0000:00/0000:00:00.0'
list ht_capab 'LDPC'
list ht_capab 'SHORT-GI-20'
list ht_capab 'SHORT-GI-40'
list ht_capab 'TX-STBC'
list ht_capab 'RX-STBC1'
list ht_capab 'DSSS_CCK-40'
option htmode 'HT40+'
option country 'CN'
option noscan '1'
option txpower '17'
option channel '149'
config wifi-iface
option device 'radio1'
option network 'lan'
option mode 'ap'
option ssid 'openwrt_5g'
option encryption 'psk-mixed'
option key '11111111'
下面主要说下个别几个配置项,其他配置项要么不常用,要么一目了然。
1 channel:信道
Channel的值必须是正确的,想知道网卡支持那些信道,可以用iwlist命令查看:
这里要注意的是,如果网卡工作在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的值)。
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命令查询。
操作系统:OpenWRT
网卡:AR9220R52Hn
网卡驱动:ath9k
OpenWRT在刷机完成之后,并不会自动开启无线功能,需要手动修改配置文件,然后重启网络服务。管理无线功能的配置文件是:
/etc/config/wireless
内容有两部分组成:config wifi-device和config wifi-iface。前者配置无线网卡的工作模式、信道、MAC地址、使用哪些天线(一般有1、2、3三个天线,视网卡上有几个馈线接口而定)、是DSSS还是OFDM等信息。后者配置网卡接口信息,如接口的名称、ESSID、密码和加密方式,网络连接(network配置项)等。网络连接network这一项必须和/etc/config/network中的某个interface一致,表示无线网卡对应哪一个interface(接口)。
例如下面这个配置,包含两个config wifi-device+config wifi-iface的配置块,这需要有两个网卡。(由于笔者写博客的电脑和管理OpenWRT的电脑不是同一个,为了方便,以下内容是从别处复制而来的,并不影响叙述的正确性。)
# 1
config wifi-device 'radio0'
option type 'mac80211'
option hwmode '11ng'
option path 'platform/ar934x_wmac'
option htmode 'HT40+'
list ht_capab 'LDPC'
list ht_capab 'SHORT-GI-20'
list ht_capab 'SHORT-GI-40'
list ht_capab 'TX-STBC'
list ht_capab 'RX-STBC1'
list ht_capab 'DSSS_CCK-40'
option noscan '1'
option channel '7'
option txpower '27'
option country 'CN'
config wifi-iface
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'openwrt_25g'
option encryption 'psk-mixed'
option key '11111111'
#2
config wifi-device 'radio1'
option type 'mac80211'
option hwmode '11na'
option path 'pci0000:00/0000:00:00.0'
list ht_capab 'LDPC'
list ht_capab 'SHORT-GI-20'
list ht_capab 'SHORT-GI-40'
list ht_capab 'TX-STBC'
list ht_capab 'RX-STBC1'
list ht_capab 'DSSS_CCK-40'
option htmode 'HT40+'
option country 'CN'
option noscan '1'
option txpower '17'
option channel '149'
config wifi-iface
option device 'radio1'
option network 'lan'
option mode 'ap'
option ssid 'openwrt_5g'
option encryption 'psk-mixed'
option key '11111111'
下面主要说下个别几个配置项,其他配置项要么不常用,要么一目了然。
1 channel:信道
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的值)。
wifi_fixup_hwmode() { local device="$1" local default="$2" local hwmode hwmode_11n config_get channel "$device" channel config_get hwmode "$device" hwmode case "$hwmode" in 11bg) hwmode=bg;; 11a) hwmode=a;; 11b) hwmode=b;; 11g) hwmode=g;; 11n*) hwmode_11n="${hwmode##11n}" case "$hwmode_11n" in a|g) ;; default) hwmode_11n="$default" esac config_set "$device" hwmode_11n "$hwmode_11n" ;; *) hwmode= if [ "${channel:-0}" -gt 0 ]; then if [ "${channel:-0}" -gt 14 ]; then hwmode=a else hwmode=g fi else hwmode="$default" fi ;; esac config_set "$device" hwmode "$hwmode" }
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命令查询。
相关文章推荐
- Linux下Makefile的编写以及OpenWrt的Makefile编写注意事项
- Linux(Centos)之安装Nginx及注意事项 阅读目录 1.Nginx的简单说明 2.准备工作 3.安装SSL功能需要openssl库以及gzip模块需要的zlib库 4.安装 rewri
- OPENWRT设置之命令行下简单配置有线和无线
- Linux(Ubuntu)环境MYSQL->master/slave主从同步设置以及注意事项
- 【人在运维囧途_11】GNU/Linux NFS 服务器部署时权限设置的注意事项
- linux 中 export 设置环境变量的注意事项
- OPENWRT设置之命令行下简单配置有线和无线
- Linux(Ubuntu)环境MYSQL->master/slave主从同步设置以及注意事项
- LINUX下PHP使用PDO访问MYSQL的连接设置注意事项
- linux安装时的注意事项
- VC程序移植到Linux下注意事项
- Linux学习注意事项
- 在linux下运行java application的注意事项
- 简单的家庭无线路由设置
- Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题)
- 将windows下到web项目发布到linux中注意事项
- Linux下PATH 设置一定要注意
- 分析在Linux下安装无线网卡设置全部方法详细
- Samba简单共享注意事项
- iOS --- 使用NSTimer设置定时任务的注意事项