Linux Wireless之iw工具
Linux Wireless之iw工具
概述
iw 是一款基于 nl80211 的无线设备 CLI 配置工具, 用来替代和增强旧版工具 iwconfig 。旧版工具 iwconfig 使用的是无线扩展接口,现已弃用,强烈建议切换至 iw 和 nl80211。它基本上已支持Linux内核的所有新驱动程序。
编译安装
获取源码:
- release版本的压缩包可以从以下地址获取:http://kernel.org/pub/software/network/iw/
- 或者,直接从git仓库下载:http://git.kernel.org/?p=linux/kernel/git/jberg/iw.git
编译依赖:
- libnl >= libnl1
- libnl-dev >= libnl-dev-1
iw是基于 nl80211 开发的,而 nl80211 正是依赖于Netlink,所以需要libnl库
常用的命令
获取设备功能
使用以下命令获取所有设备的功能,例如频段信息(2.4 GHz 和 5 GHz)以及 802.11 相关信息:
$ iw list
扫描
$ sudo iw dev wlp4s0 scan
监听事件
只需使用:
$ iw event
在调试时,查看认证/关联/去关联/取消关联帧可能会很有用,可以使用:
$ iw event -f
添加时间戳:
$ iw event -t
获取链路状态
要确定您是否已连接到 AP,以及您是否是上次使用的传输速率,您可以使用以下命令。
当连接到 AP 时的示例输出:
$ iw dev wlp4s0 link
Connected to c4:xx:xx:xx:xx:bc (on wlp4s0)
SSID: 38F-FWQ-5G
freq: 5785
RX: 153930 bytes (651 packets)
TX: 24515 bytes (166 packets)
signal: -46 dBm
rx bitrate: 780.0 MBit/s VHT-MCS 8 80MHz short GI VHT-NSS 2
tx bitrate: 263.3 MBit/s VHT-MCS 6 80MHz VHT-NSS 1
bss flags: short-slot-time
dtim period: 2
beacon int: 100
未连接到 AP 时的示例输出:
$ iw dev wlp4s0 link
Not connected.
建立基本连接(未验证)
如果想直接连接到 AP,且该 AP 具有以下条件,您可以使用 iw:
- 无加密
- 使用 WEP 进行加密 但是需要注意的是,如果断开了 AP 的连接(比如在繁忙的复杂网络环境中)需要重新发出该命令。如果不想这样做,可以使用
wpa_supplicant,它会在断开连接时自动尝试重新连接。
注:如果您需要连接到具有 WPA 或 WPA2 加密要求的 AP,则必须使用 wpa_supplicant (https://wireless.docs.kernel.org/en/latest/en/users/documentation/wpa_supplicant.html)
如果您选择自己处理断开连接的情况,可以按如下方式使用 iw connect。
要连接到禁用了加密的 AP,其 SSID 为 foo:
$ iw wlan0 connect foo
假设您有两个 SSID 为 foo 的 AP,并且知道想要连接的那个位于2432频率,您可以指定要使用的频率:
$ iw wlan0 connect foo 2432
要连接到使用 WEP 的 AP,您可以使用:
$ iw wlan0 connect foo keys 0:abcde d:1:0011223344
获取站点统计信息
要获取站点统计信息,例如发送/接收字节数、上次发送速率(包括 MCS 速率)等,您可以执行:
$ iw dev wlp4s0 station dump
Station e4:60:4d:d7:b0:97 (on wlp4s0)
inactive time: 1004 ms
rx bytes: 83698
rx packets: 369
tx bytes: 17160
tx packets: 111
tx retries: 0
tx failed: 0
beacon loss: 0
rx drop misc: 1
signal: -29 [-29, -37] dBm
signal avg: -29 [-29, -38] dBm
tx bitrate: 78.0 MBit/s MCS 12
tx duration: 0 us
rx bitrate: 173.3 MBit/s VHT-MCS 8 short GI VHT-NSS 2
rx duration: 0 us
authorized: yes
authenticated: yes
associated: yes
preamble: long
WMM/WME: yes
MFP: yes
TDLS peer: no
DTIM period: 1
beacon interval:100
short slot time:yes
connected time: 17 seconds
associated at [boottime]: 29419.200s
associated at: 1769504688856 ms
current time: 1769504704882 ms
针对对等方获取站点统计信息
如果您想针对站点正在通信的对等方获取特定统计信息,可以使用以下命令:
$ sudo iw dev wlp4s0 station get <peer-MAC-address>
对于 STA,上述
修改传输速率
iw 支持修改 TX 速率,包括传统速率和 HT MCS 速率。它通过屏蔽允许的速率来实现这一点,还允许您清除屏蔽。
修改传统 TX 速率(未验证)
您可以设置仅使用某些传统速率进行传输的偏好。例如:
iw wlan0 set bitrates legacy-2.4 12 18 24
修改 HT MCS 速率
设置使用 MCS 速率进行传输的偏好,可以通过指定频段和 MCS 速率来实现。请注意,设备是否实际听从您的请求将取决于设备驱动程序和固件的合作情况。例如:
$ sudo iw dev wlp4s0 set bitrates ht-mcs-5 4
$ sudo iw dev wlp4s0 set bitrates ht-mcs-2.4 10
要清除所有 TX 速率并恢复默认设置:
$ sudo iw dev wlp4s0 set bitrates ht-mcs-5
$ sudo iw dev wlp4s0 set bitrates ht-mcs-2.4
注: 这里
ht-mcs-2.4|5也支持换成vht-mcs-2.4|5,wifi模组可能自己会动态去调节MCS速率。
设置 TX 功率
您可以使用相应 PHY 的设备接口名称来设置 txpower。
sudo iw dev <devname> set txpower <auto|fixed|limit> [<tx power in mBm>]
sudo iw phy <phyname> set txpower <auto|fixed|limit> [<tx power in mBm>]
注:此命令所采用的值是以毫贝尔-毫瓦特 (mBm) 为单位,而不是常用的分贝-毫瓦特 (dBm)。<功率 in mBm> = 100 * <功率 in dBm>
省电模式
要默认启用省电模式,您可以使用:
$ sudo iw dev wlp4s0 set power_save on
对于 mac80211 驱动程序,这意味着动态省电模式会被启用。
要查询当前省电模式设置,您可以使用:
$ iw dev wlp4s0 get power_save
Power save: on
添加和删除接口
使用 iw 添加接口
支持多种模式。支持的模式包括:
- monitor
- managed [also station]
- wds
- mesh [also mp]
- ibss [also adhoc]
例如,要添加一个监控接口:
$ sudo iw phy phy0 interface add moni0 type monitor
其中可以将 monitor 替换为任何其他支持的模式,将 moni0 替换为接口名称,并需将 phy0 替换为硬件对应的 PHY 名称(通常默认是 phy0)。使用 ip link 列出所有接口。
要创建一个新的管理模式接口,您可以使用:
$ sudo iw phy phy0 interface add wlan10 type managed
请注意,使用 hostapd 时,接口会自动进入 AP 模式。
使用 iw 删除接口
使用:
$ sudo iw dev moni0 del
虚拟 vif 支持
官方文档有专门介绍虚拟 vif 支持,具体请参阅 https://wireless.docs.kernel.org/en/latest/en/users/documentation/iw/vif.html。
更新和获取监管域
$ sudo iw reg set alpha2
其中“alpha2”是 ISO/IEC 3166 alpha2 国家代码。所使用的和设置的信息来自我们的监管基础设施。
也可以使用 wpa_supplicant 来更改监管域,只需在配置中添加“country=US”类似条目即可。
获取当前监管域:
$ iw reg get
更多
更多的比如mesh配置,wds配置可参见官方介绍文档:https://wireless.docs.kernel.org/en/latest/en/users/documentation/iw.html
或使用iw help获取帮助,它会打印出所支持的命令。





