hitomo 2025-09-27 14:55 采纳率: 98.7%
浏览 57
已采纳

OpenWrt下MT7922无线功率为何仅3dBm?

在OpenWrt系统中,搭载MT7922无线网卡的设备常出现无线发射功率被限制在3dBm的异常现象,导致信号覆盖极弱。该问题多见于使用Mediatek MT7922 802.11ax Wi-Fi 6网卡的主板或M.2模块。尽管硬件支持更高功率(理论可达20dBm以上),但实际运行中受固件、驱动或regulatory domain配置影响,系统错误地将发射功率锁定在最低档。尤其在更换地区代码或升级内核后,mt792x系列驱动未能正确加载功率表(power backoff table),或NVM中的射频校准数据读取失败,均可能导致此问题。如何排查并恢复MT7922在OpenWrt下的正常发射功率?
  • 写回答

1条回答 默认 最新

  • fafa阿花 2025-09-27 14:55
    关注

    一、现象确认与基础排查

    当搭载MT7922无线网卡的OpenWrt设备出现信号覆盖极弱的问题时,首要任务是确认是否为发射功率异常所致。使用以下命令可快速查看当前无线接口的发射功率:

    wifi status | grep -A 10 "radio"

    或进入具体radio节点检查:

    iw dev wlan0 info

    若输出中显示txpower=3.00 dBm,则基本可判定存在功率限制问题。该值远低于MT7922硬件支持的20dBm上限,属于典型异常。

    接下来应确认无线频段(2.4GHz/5GHz)及信道是否合法,某些regulatory domain会因信道受限自动降功率。可通过如下命令查看当前regdom设置:

    iw reg get

    输出示例:

    字段
    country00
    DFS Regionunset
    2.4 GHz bandmax-power: 3 dBm
    5.8 GHz bandmax-power: 3 dBm

    若country为“00”或最大功率被设为3dBm,则说明regulatory domain未正确加载,这是导致MT7922功率受限的常见原因。

    二、驱动与固件层分析

    MT7922在OpenWrt中依赖于mt792x内核模块驱动,其行为受多个因素影响:

    • 内核版本兼容性(特别是5.15+后对Mediatek驱动支持变化)
    • 固件文件(firmware-mt7922-1.bin等)是否存在且版本匹配
    • NVM(非易失性存储)校准数据读取是否成功

    可通过dmesg日志追踪驱动初始化过程:

    dmesg | grep mt792x

    重点关注是否有如下错误信息:

    [   12.345] mt792x_pci_probe: failed to load NVM
    [   12.346] mt792x_init_eeprom: reading eeprom failed
    [   12.347] mt792x_set_tx_power_default: applying minimum power table
    

    上述日志表明NVM读取失败,驱动被迫启用默认最低功率表(power backoff table),从而将所有信道txpower锁定在3dBm。

    此时需验证固件与NVM文件是否存在:

    ls /lib/firmware/ | grep mt7922

    理想输出应包含:

    1. mt7922_firmware.bin
    2. mt7922_rom_patch.bin
    3. mt7922_nvm.bin(关键!)

    三、regulatory domain配置修复

    OpenWrt中regdom由/etc/config/wireless中的country字段控制。编辑该文件:

    vi /etc/config/wireless

    确保radio0或radio1节中包含正确的国家代码:

    config wifi-device 'radio0'
        option type 'mac80211'
        option path 'pci0000:00/0000:00:00.0'
        option channel 'auto'
        option country 'CN'
        option txpower '20'
        option disabled '0'
    

    保存后重启wifi服务:

    wifi down && sleep 5 && wifi up

    再次执行iw reg get,确认输出country已变为CN且各band max-power提升至合理值(如20–30dBm)。

    若仍无效,可手动强制设置regdom(临时生效):

    iw reg set CN

    四、高级调试:NVM与Power Table加载流程

    MT7922的射频性能依赖于NVM中存储的校准参数,包括每信道的功率补偿值。以下是驱动加载功率表的关键流程:

    graph TD A[PCI设备探测] --> B{NVM是否存在?} B -- 是 --> C[读取EEPROM/NVM数据] B -- 否 --> D[使用默认最小功率表] C --> E{解析Power Backoff Table} E -- 成功 --> F[应用动态功率映射] E -- 失败 --> G[降级至3dBm全局限幅] F --> H[正常发射功率输出]

    若NVM缺失或损坏,必须从原厂设备提取nvm.bin并手动部署。部分厂商(如ASUS、HP)会在BIOS中嵌入NVM数据,可通过Linux下dd从PCI配置空间提取:

    setpci -s 0000:01:00.0 0x50.b=0x41
    cat /sys/bus/pci/devices/0000:01:00.0/rom > mt7922_nvm.bin

    随后复制至/lib/firmware/mt7922_nvm.bin并重新加载驱动:

    rmmod mt792x_pci && insmod mt792x_pci

    五、系统级解决方案汇总

    综合以上分析,恢复MT7922正常发射功率需满足以下条件:

    检查项期望状态修复方法
    Firmware文件mt7922_firmware.bin存在opkg install firmware-mt7922
    NVM文件mt7922_nvm.bin存在且有效从原厂提取或社区获取
    Regulatory Domain非00,如CN/US配置/etc/config/wireless
    内核驱动mt792x正常加载无报错检查dmesg输出
    txpower设置radio配置中指定合理值option txpower '20'
    PCI枚举lspci可见MT7922设备检查硬件连接与ACPI
    温度保护无过热触发降功率改善散热
    MAC80211调度未被cfg80211强制限幅iw phy set antenna_gain XX
    Secure Boot未阻止未签名固件加载关闭或签名驱动
    内核版本推荐5.15或6.1 LTS避免使用实验性分支
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 9月27日