【Linux】OpenWRT的无线设置注意事项——从2.4G到5G,hwmode不简单
硬件说明:
操作系统: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 ]; then
if [ "${channel:-0}" -gt ]; 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】OpenWRT的无线设置注意事项——从2.4G到5G,hwmode不简单的更多相关文章
- 【openwrt】再设置
https://wiki.openwrt.org/zh-cn/doc/uci/network https://wiki.openwrt.org/zh-cn/doc/uci/wireless https ...
- 在Linux上配置无线网络
导读 iwconfig是Linux Wireless Extensions(LWE)的用户层配置工具之一.LWE是Linux下对无线网络配置的工具,包括内核的支持.用户层配置工具和驱动接口的支持三部分 ...
- 01_Linux系统系统语言查询,设置Xshell工具,中文显示,测试Xshell中文字符显示,Linux中文显示乱码设置
Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNETNetSarang Xshell 4 Build 0 ...
- linux下高并发网络应用注意事项
本文转自:http://www.blogjava.net/bacoo/archive/2012/06/11/380500.html linux下高并发网络应用注意事项 vi /etc/sysctl.c ...
- 开发环境中biztalk项目设置注意事项(转)
适用版本:biztalk 2006 适用环境:开发测试环境 在开发过程中,在开发环境中,一定会是一个对项目不断的修改.编译.部署.测试,查看测试结果,发现有问题,然后回到开发环境再修改.编译.部署 ...
- linux上java路径设置
linux上java路径设置 标签: javalinuxpath 2012-04-30 22:14 1843人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 往/e ...
- I.MX6 Android Linux shell MMPF0100 i2c 设置数据
#!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 设置数据 # 说明: # 本文主要记录通过shell脚本来设置 ...
- Linux初始root密码设置
刚安装好的Linux系统是没有设置root用户密码的,下边介绍如何设置root用户的密码 第一步:sudo passwd 第二步:输入密码 第三步:确认密码 这样三个步骤过后root用户的密码就设置好 ...
- Linux自动登陆的设置方法
前些天为了实现Linux自动登陆的方法,在网上查了很多资料,发现有不少方法,但网上有些方法的讲解不是特别清楚,或者已经过时.因此,特意整理了一下Linux自动登陆的设置方法.本文的测试环境为Cento ...
随机推荐
- Sql Server 2005 中的row_number() 分页技术
原文发布时间为:2009-05-08 -- 来源于本人的百度文章 [由搬家工具导入] 在Sql Server 2005中,我们可以利用新增函数row_number()来更高效的实现分页存储 CRE ...
- c++学习重点分析
C++是一种语言,仅仅是它的语法.特性.标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必须先要打好基础.要知道当我们在学习它的时候重点应该注意什么. 一.#include “filena ...
- 各种版本QT下载地址与VS2013+QT5.3.1环境搭建过程(转)
原文转自 http://blog.csdn.net/baidu_34678439/article/details/54586058 1. 所有Qt版本下载地址: http://download.qt. ...
- SQL存储过程基础
什么是存储过程呢?存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令. 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句. 那为什么要用存储过程呢?1.存储过程只在创造时进行编译, ...
- python-rtslib 模块
Python library for configuring the Linux kernel-based multiprotocol SCSI target (LIO) A Python objec ...
- 【原创】设置EXCEL2010打开多个独立窗口
最近发现一个奇怪的问题,发现office中的word和ppt在我使用笔记本分屏幕(双屏)的时候都可以将2份文档分别在2个窗口打开,但是在使用excel的时候却发现不行,最后研究发现原因 ...
- ansible 2.7.1 快速开始
refer to 官方手册 https://docs.ansible.com/ansible/latest/modules/modules_by_category.html refer to 中文手册 ...
- 透过ReentrantLock窥探AQS
背景 JDK1.5引入的并发包提供了一系列支持中等并发的类,这些组件是一系列的同步器,几乎任一同步器都可以实现其他形式的同步器,例如,可以用可重入锁实现信号量或者用信号量实现可重入锁.但是,这样做带来 ...
- Network| ICMP
Internet Control Message Protocol,ICMP是网路协议族的核心协议之一.它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,令管 ...
- [HAOI2011]Problem b&&[POI2007]Zap
题目大意: $q(q\leq50000)$组询问,对于给定的$a,b,c,d(a,b,c,d\leq50000)$,求$\displaystyle\sum_{i=a}^b\sum_{j=c}^d[\g ...