1、前言

  本文主要以MTK无线芯片MT7603为例,记录MTK无线驱动开发过程中常用命令以及常规无线问题的排查手段。

MTK 无线驱动开发:常用命令与故障排查
图片素材来自免费商用图库(pixabay),非本站项目实拍。

2、MTK Wifi芯片简介

2.1 单频WIFI芯片信息

对象

描述

MT7603E 高效能 802.11n,专为小型的 Wi-Fi 设备而设联发科技 MT7603E 是一款高度整合式 Wi-Fi 单芯片,支持 300 Mbps PHY 速率。它完全符合 IEEE 802.11n 及 IEEE 802.11 b/g 标准,提供高标准而功能丰富的无线连接,并可从更远的距离提供可靠稳定、具成本效益的处理能力。优化的射频架构及基频算法带来卓越的效能表现,以及可靠而低功耗的处理能力。它的智能型媒介访问控制 (MAC) 设计采用效率极高的直接内存访问 (DMA) 引擎,亦配备可减轻主处理器负荷的硬件信息处理加速器。MT7603E 的设计旨在提供符合安全性、服务品质及国际规范标准的功能,让终端用户在任何情况下也能随时享有较佳的效能表
WiFi IEEE 802.11:b/g/n Wi-Fi Frequency:2.4GHz Antenna:2T2R Data Throughput:300Mbit/s
Functions And Features MAC:Yes RF:Yes ePA/eLNA:Yes BPP:Yes AP/Repeater:Linux AP/Repeater STA:Android,Linux Interface:PCI-Express 1.1

2.2 WiFi驱动版本

值:iwpriv ra0 show driverinfo && dmesg -c

对象

描述

无线芯片 MT7603E
driver version 4.0.1.0rev2.P1+ (Tue Apr 9 03:35:59 CST 2019 Tue Apr 9 03:35:59 CST 2019)
fw version 0.0.00 build:4a
build time FjXc

3、MTK 无线驱动开发调试

3.1 常用命令行

值:iwpriv ra0/rai0 set [parameters]=[Value]
下文中以2.4G无线主接口ra0为例子。

3.1.1 设置WLAN驱动打印级别

值:iwpriv ra0 set Debug=3
日志级别:0~5

0:Debug Off1:Debug Error2:Debug Warning3:Debug Trace4:Debug Info5:Debug Loud

3.1.2 查看驱动版本

值:iwpriv ra0 show driverinfo && dmesg -c

3.1.3 设置国家区域

设置2.4G国家区域

值:iwpriv ra0 set CountryRegion=5

设置5G国家区域

值:iwpriv ra0 set CountryRegionABand=7

3.1.4 设置国家码

值:iwpriv ra0 set CountryCode=CN

2个字符,比如CN就表示中国,US表示美国。可忽略。

3.1.5 设置ACL表的访问策略

值:iwpriv ra0 set AccessPolicy=0

0: Disable this function
1: Allow all entries of ACL table to associate AP
2: Reject all entries of ACL table to associate AP

3.1.6 重置所有统计计数器

值:iwpriv ra0 set ResetCounter=1

3.1.7 触发邻区扫描

值:iwpriv ra0 set SiteSurvey=1
主动扫描:“iwpriv ra0 set SiteSurvey=”
被动扫描:“iwpriv ra0 set SiteSurvey=11ac-AP”

3.1.8 设置国家字符串

值:iwpriv ra0 set CountryString=CHINA

3.1.9 设置AP SSID

值:iwpriv ra0 set SSID=11n-AP

0~Z,1~32 ASCII字符串

3.1.10 设置WLAN模式

值:iwpriv ra0 set WirelessMode=5

0: legacy 11b/g mixed
1: legacy 11B only
2: legacy 11A only
3: legac 11a/b/g mixed
4: legacy 11G only
5: 11ABGN mixed
6: 11N only
7: 11GN mixed
8: 11AN mixed
9: 11BGN mixed
10: 11AGN mixed
11: 11N only in 5G band only
14: 11A/AN/AC mixed 5G band only(Only 11AC chipset support)
15: 11 AN/AC mixed 5G band only(Only 11AC chipset support)

3.1.11 设置固定TX模式为CCK或者OFDM

值:iwpriv ra0 set FixedTxMode=CCK
CCK
OFDM
HT

3.1.12 设置OFDM基本速率

值:iwpriv ra0 set BasicRate=
0~4095

3.1.13 设置WIFI信道

值:iwpriv ra0 set Channel=6
802.11b/g: 1 ~ 14 (it must agree with the CountryRegion setting)
802.11a: 36~165 (it must agree with the CountryRegionABand setting)

3.1.14 设置自动信道选择算法

值:iwpriv ra0 set AutoChannelSel=2
0: Disable
1: Old Channel Selection Algorithm(AP Count)
2: New Channel Selection Algorithm(CCA)
3:Busytime
5: AP count and not switch the best channel
6:CCA and not switch the best channel
7:Busytime and not switch the best channel
alg1-3: 评估除较优信道,并切换到较优信道; alg5-7:只扫描出评分结果,不进行信道切换

3.1.15 设置自动信道选择定时检查时间

值:iwpriv ra0 set ACSCheckTime=3
单位:小时
0: Disable

3.1.16 设置自动信道忽略信道列表标志

值:iwpriv ra0 set AutoChannelSkipListFlag=1
单位:小时
0: Disable
1: Enable

3.1.17 设置自动信道忽略信道列

值:iwpriv ra0 set AutoChannelSkipList=<channel_list>
example:
=2;3;4;5;7;8;9;10;11;

3.1.18 设置Beacon周期

值:iwpriv ra0 set BeaconPeriod=100
20 ~ 1024 (unit is in milli-seconds)

3.1.19 设置Dtim周期

值:iwpriv ra0 set DtimPeriod=1
1~5

3.1.20 设置发射功率百分比

值:iwpriv ra0 set TxPower=100
0~100
Note:
91 ~ 100% & AUTO, treat as 100% in terms of mW
61 ~ 90%, treat as 75% in terms of mW -1dBm
31 ~ 60%, treat as 50% in terms of mW -3dBm
16 ~ 30%, treat as 25% in terms of mW -6dBm
10 ~ 15%, treat as 12.5% in terms of mW -9dBm
0 ~ 9 %, treat as MIN(~3%) in terms of mW -12dBm

3.1.21 设置11b 、11g保护

值:iwpriv ra0 set BGProtection=0
0: disable
1: Always on
2:Always off

3.1.22 设置启用或禁用OLBC

值:iwpriv ra0 set DisableOLBC=0
0: disable
1: enable

3.1.23 设置启用或禁用TxPreamble

值:iwpriv ra0 set TxPreamble=1
0: disable
1: enable

3.1.24 设置启用或禁用Tx Burst模式

值:iwpriv ra0 set TxBurst=0
0: disable
1: enable
Question 1: TX和RX性能始终不平衡
A: Wi-Fi性能测试中当遇到TX和RX性能不平衡问题时,请检查TxBurst选项处于关闭或打开状态。当TxBurst开启时,TX数据包的优先级将高于RX数据包。结果,WLAN-TX的性能将高于RX。这个问题经常出现在快速以太网+WLAN解决方案中。千兆位以太网+WLAN解决方案没有这样的问题。
Question 2: How to turn off TxBurst?
A:
By profile:
TxBurst=0
By iwpriv command:
iwpriv ra0 set TxBurst=0
Note: 当设置WMM时,关闭TxBurst

3.1.25 设置启用或禁用包聚合

值:iwpriv ra0 set PktAggregate=1
0: disable
1: enable

3.1.26 设置启用或禁用在相同BSSID内STA之间的包不转发

值:iwpriv ra0 set NoForwarding=0
0: disable
1: enable
该命令可以做到一般的无线隔离,对于需要隔离特殊包的需要在增加指定滤包条件。

3.1.27 设置启用或禁用在每个BSSID接口间不转发

值:iwpriv ra0 set NoForwardingBTNBSSID=1
0: disable
1: enable

3.1.28 设置启用或禁用在每个BSSID接口间不转发组播/广播包

值:iwpriv ra0 set NoForwardingMBCast=1
0: disable
1: enable

3.1.29 设置启用或禁用SSID隐藏

值:iwpriv ra0 set HideSSID=1
0: disable
1: enable

3.1.30 设置启用或禁用short slot time

值:iwpriv ra0 set ShortSlot=0
0: disable
1: enable

3.1.31 设置手动断开指定连接的STA

值:iwpriv ra0 set DisConnectSta=00:11:22:33:44:55
[MAC address]

3.1.32 设置手动断开所有连接的STA

值:iwpriv ra0 set DisConnectAllSta=1
1: disconnect all STAs

3.1.33 设置组播物理模式

值:iwpriv ra0 set McastPhyMode=0
0: Disable
1: CCK
2: OFDM
3: HTMIX

3.1.34 设置组播包的MCS

值:iwpriv ra0 set McastMcs=0
0~15

3.1.35 设置限制每个BSS关联客户端的最大数量

值:iwpriv ra0 set MaxStaNum=0
0: disable this function
1~32 (default:32)

3.1.36 设置启用或禁用自动回落速率控制功能

值:iwpriv ra0 set AutoFallBack=1
0: disable
1: enable

3.1.37 设置启用或禁用启用或禁用绿色AP功能

值:iwpriv ra0 set GreenAP=0
0: disable
1: enable

3.1.38 设置MBSS无线phy模式

值:iwpriv ra0 set MBSSWirelessMode=9
0: 802.11 B/G mixed
1: 802.11 B only
2: 802.11 A only
4: 802.11 G only
6: 802.11 N only
7: 802.11 G/N mixed
8: 802.11 A/N mixed
9: 802.11 B/G/N mixed
10: 802.11 A/G/N mixed
11: 802.11 N in 5G band only

3.1.39 设置启用或禁用启用或禁用硬件天线分集

值:iwpriv ra0 set HwAntDiv=0
0: disable
1: enable
Note: Only support in RT5350.

3.1.40 设置HT WLAN带宽

值:iwpriv ra0 set HtBw=1
0: 20 MHz
1: 20/40 MHz

3.1.41 设置启用或禁用11AC 80MHz带宽支持

值:iwpriv ra0 set VhtBw=1
0: disable
1: enable
Note: 11AC chipset only

3.1.42 设置启用或禁用11AC STBC支持

值:iwpriv ra0 set VhtStbc=1
0: disable
1: enable
Note: 11AC chipset only

3.1.43 设置启用或禁用11 AC 带宽信令

值:iwpriv ra0 set VhtBwSignal=1
0: disable
1: enable
Note: 11AC chipset only

3.1.44 设置启用或禁用拒绝非VHT STA连接

值:iwpriv ra0 set VhtDisallowNonVHT=1
0: disable
1: enable to reject non-VHT STA
Note: 11AC chipset only

3.1.45 设置HT调制编码方式MCS

值:iwpriv ra0 set HtMcs=33
0 ~15, 32: Fix MCS rate for HT rate.
33: Auto Rate Adaption, recommended

3.1.46 设置保护间隔Guard interval

值:iwpriv ra0 set HtGi=1
0: long guard interval
1: short guard interval

3.1.47 设置HT操作模式

值:iwpriv ra0 set HtOpMode=0
0: HT mixed mode
1: HT Greenfield mode

3.1.48 设置启用或禁用HT STBC支持

值:iwpriv ra0 set HtStbc=1
0: disable
1: enable

3.1.49 设置HtExtcha

值:iwpriv ra0 set HtExtcha=0
0: below 下面
1: Above 上面

3.1.50 设置1个A-MPDU中MPDU的最小分离

值:iwpriv ra0 set HtMpduDensity=4
0~7
0: no restriction 无限制
1: 1/4 µs
2: 1/2 µs
3: 1 µs
4: 2 µs
5: 4 µs
6: 8 µs
7: 16 µs

3.1.51 设置启用或禁用HT反向授权Reverse Direction Grant

值:iwpriv ra0 set HtRdg=1
0: disable
1: enable

3.1.52 设置启用或禁用AMSDU部分

值:iwpriv ra0 set HtAmsdu=0
0: disable
1: enable

3.1.53 设置HtAutoBa

值:iwpriv ra0 set HtAutoBa=1
0: disable
1: enable

3.1.54 设置BADeline

值:iwpriv ra0 set BADecline=0
0: disable
1: enable

3.1.55 设置Block Ack window size

值:iwpriv ra0 set HtBaWinSize=64
1~64

3.1.56 设置一个传输burst的AMPDU聚合大小的数量

值:iwpriv ra0 set HtTxBASize=64
1~64

3.1.57 设置手动添加一个BA条目到BA 表里

值:iwpriv ra0 set BASetup=00:0c:43:01:02:03-1
16进制MAC地址-10进制tid值

3.1.58 设置手动删除一个Originator BA条目

值:iwpriv ra0 set BAOriTearDown=00:0c:43:01:02:03-1

3.1.59 设置手动删除一个Recipient BA条目

值:iwpriv ra0 set BARecTearDown=00:0c:43:01:02:03-1

3.1.60 设置启用或禁用HT保护

值:iwpriv ra0 set HtProtect=0
0: disable
1: enable

3.1.61 设置启用或禁用HT MIMO Power saving mode

值:iwpriv ra0 set HtMimoPs=0
0: disable
1: enable

3.1.62 设置当密码为TKIP或WEP时,启用或禁用11N Rate

值:iwpriv ra0 set HtDisallowTKIP=0
0: disable
1: enable

3.1.63 设置触发 HT20/40 共存重新扫描

值:iwpriv ra0 set AP2040Rescan=1
1: trigger to rescan

3.1.64 设置启用或禁用HT BSS共存

值:iwpriv ra0 set HtBssCoex=0
0: disable
1: enable

3.1.65 设置传输的空间流的数量

值:iwpriv ra0 set HtTxStream=1 or 2 or 3 or 4
1~4: valid spatial streams

3.1.66 设置接收的空间流的数量

值:iwpriv ra0 set HtRxStream=1 or 2 or 3 or 4
1~4: valid spatial streams

3.1.67 设置启用或禁用11B/G packet aggregation

值:iwpriv ra0 set PktAggregate=1
0: disable
1: enable

3.1.68 设置RTS门限

值:iwpriv ra0 set RTSThreshold=2347
1~2347

3.1.69 设置Fragment门限

值:iwpriv ra0 set FragThreshold=2346
256~2346

3.1.70 设置AP踢出STA的最低限制

值:iwpriv ra0 set KickStaRssiLow=0
0: Disable
0 ~ -100

3.1.71 设置AssocReq RSSI阈值拒绝信号弱的STA

值:iwpriv ra0 set AssocReqRssiThres=0
0: Disable
0~ -100

3.1.72 显示WLAN统计计数器

值:iwpriv ra0 stat
获取每秒wlan统计计数器的结果:
while true;do iwpriv ra0 set ResetCounter=1;sleep 1;iwpriv ra0 stat;done

3.1.73 显示邻区扫描结果

值:iwpriv ra0 get_site_survey
需要先使用”iwpriv ra0 set SiteSurvey=”去进行邻区扫描,收集信息。

3.1.74 显示与AP关联的STA的MAC地址

值:iwpriv ra0 get_mac_table

3.1.75 显示块ACK表的原始数据信息

值:iwpriv ra0 get_ba_table

3.1.76 显示WPS配置文件详细信息

值:wpriv ra0 get_wsc_profile

3.1.77 读写e2p内容

值://Read
iwpriv ra0 e2p offset
//Write EEPROM
iwpriv ra0 e2p offset=value
offset = hex address
value= hex value

3.1.78 设置非关联sta的rssi测量

iwpriv ra0 set mnt_clr=1
iwpriv ra0 set mnt_sta0=00:00:00:00:00:00
iwpriv ra0 set mnt_en=1
iwpriv ra0 set mnt_rule=1:1:1
iwpriv ra0 set mnt_sta0=F8:9A:78:BC:12:98

3.1.79 显示当前信息

值:iwpriv ra0/rai0 show [parameters]
下文中以ra0为例子。

序号 parameters 说明
1 driverinfo 驱动版本信息
2 sta STA TX/RX等统计信息。
3 stainfo STA信息,MAC地址/RSSI/MCS/Rate等。
4 stacountinfo STA TX/RX个数信息。
5 stasecinfo STA认证加密信息。
6 bainfo BlockAck信息。
7 connStatus AP-Clinet连接状态。
8 reptinfo MAC Repeater信息。
9 wdsinfo WDS连接列表。
10 igmpinfo IGMP Snooping列表。
11 mbss MBSS PHY 模式信息。
12 blockch DFS blocked 信道列表。
13 devinfo AP Mode, 信道, 带宽。
14 sysinfo WDEV信息。
15 trinfo TX/RX Ring配置信息.。
16 pwrinfo 功率内部信息。
17 txqinfo TxQ信息。
18 sta_tr AP BSSID/wcid等。
19 stat_reset 统计清零。

3.2 常见问题定位排查方法

3.2.1 无线STA掉线问题

1、确认无线是否有无重启现象
2、确认无线是否做完校准
3、确认rssi大小,最宜:-30 > RSSI > -50
4、扫描周围无线信号,看是否存在名称相同的SSID以及相同MAC地址的无线
5、更换sta测试

一、2.4GHz 与 5GHz/6GHz 频段的工程取舍

无线局域网真正可稳定使用的 2.4GHz 信道只有 1、6、11 三条互不重叠信道——每条 802.11 信道占用约 22MHz 带宽,而 2.4GHz 总可用带宽仅 83.5MHz,相邻信道频域重叠会直接引发邻频干扰。办公、酒店、公寓等 AP 密集场景,手动把相邻 AP 错开到 1/6/11 比”自动信道”更能避免同频踩踏。5GHz 信道多、干扰少、速率高,但穿墙衰减大;6GHz(Wi-Fi 6E/7)进一步打开连续频谱,适合高密场馆。工程上低密度家用优先走 5GHz,高密度公共区域再用 2.4GHz 做覆盖补充。

二、干扰定位的实测方法

  • 同频干扰:多个 AP 用同一信道,CSMA/CA 退避加剧,表现为 ping 抖动、吞吐腰斩。用 WiFi Analyzer、InSSIDer 或 AC 自带频谱图看同信道 AP 数量。
  • 邻频干扰:信道 1 与 2、6 与 7 相邻重叠,必须严格按 1/6/11 规划。
  • 非 Wi-Fi 干扰:蓝牙、Zigbee、无绳电话、微波炉、无线图传都可能污染空口。普通 Wi-Fi 嗅探看不到非 802.11 能量,需频谱仪或支持频谱扫描的 AP。
  • 多径干扰:信号经墙体多次反射叠加引起深衰落,典型症状就是”信号满格却卡顿”,可通过调整 AP 位置、降低发射功率、启用波束成形缓解。

三、商用场景的信道与功率规划

酒店/宿舍按楼层错开信道组;仓库/车间用 5GHz 定向天线做回传;会议室投屏卡顿多为 2.4G 拥堵,建议给投屏终端单独开 5G SSID。AP 发射功率并非越大越好——过大会造成跨区同频、过小留覆盖空洞,需结合场强仿真(Ekahau、AirMagnet)做 AP 点位与功率联合优化。Wi-Fi 6 的 OFDMA、MU-MIMO、TWT 从调度层面提升多用户效率,但前提是物理层干扰已先控制住。

相关阅读