共计 1723 个字符,预计需要花费 5 分钟才能阅读完成。
硬件分析:MT7981B 芯片组的秘密武器
MT7981B 作为联发科专为运营商定制的双核 ARM Cortex-A53 芯片,最特别的是其硬件 NAT 加速引擎。实测发现:

- 原厂固件在开启 HWNAT 时,NAT 转发性能可达 940Mbps(接近千兆线速)
- 默认 OpenWRT 因未启用硬件加速,仅能跑到 520Mbps 左右
- 芯片内置的 2.4GHz 和 5GHz 射频模块共享 128MB 内存,需特别注意内存分配
生死攸关的刷机准备
工欲善其事必先利其器,这些装备缺一不可:
- CH340G USB 转 TTL 模块(注意要带 3.3V 电平)
- 镀金杜邦线三根(TX/RX/GND)
- 夹子式测试钩(避免焊坏路由器 PCB)
关键 U -Boot 命令序列如下:
# 进入 U -Boot 后先备份原厂分区表
tftpboot 0x46000000 backup.bin
nand erase 0x0 0x100000
nand write 0x46000000 0x0 0x100000
# 刷写前务必校验 mtd 分区
mtd list
mtd read factory 0x46000000
md5sum 0x46000000 0x10000
固件编译:魔鬼在细节里
编译 OpenWRT 时最容易翻车的是无线驱动配置:
-
修改
target/linux/mediatek/mt7981b/config-5.15文件:CONFIG_PACKAGE_kmod-mt7981-firmware=y CONFIG_MTK_ETH_MDIO=y # 必须关闭这个选项否则 WIFI 不稳定 # CONFIG_MTK_HSDMA_DEBUG is not set -
无线校准数据补丁示例(保存到 patches 目录):
--- a/drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c @@ -123,6 +123,7 @@ static int mt7915_eeprom_load_precal(struct mt7915_dev *dev) { /* 强制使用设备特定校准数据 */ if (dev->flash_mode) { + return -EINVAL; dev->cal = devm_kzalloc(dev->mt76.dev, sizeof(*dev->cal), GFP_KERNEL);
性能调优:榨干最后一滴性能
无线参数配置范例(/etc/config/wireless):
config wifi-device 'radio1'
option mu_beamformer '1' # 开启 MU-MIMO 发射
option ldpc '1' # 强制 LDPC 编码
option rx_stbc '3' # 3 空间流接收
option max_amsdu '7935' # 聚合帧大小优化
关于网络加速的取舍建议:
- 小包转发:启用
hw_nat模块(适合游戏场景) - 大流量下载:用 SFE 快速路径(更适合 NAS 应用)
- 两者同时启用会导致内核崩溃
血泪教训:避坑指南
- 无线驱动版本陷阱:
- mt76 版本低于 2022-11-15 会导致 5GHz 射频消失
-
解决方案:
opkg install kmod-mt7915e --force-downgrade -
PPPoE 软中断优化:
# 增加 NAPI 处理权重 echo 64 > /sys/class/net/pppoe-wan/queues/rx-0/rps_cpus # 调整中断亲和性 irqbalance --powerthresh=5
实测数据说话
优化前后 iperf3 对比(单位 Mbps):
| 测试项 | 原厂固件 | 默认 OpenWRT | 优化后 OpenWRT |
|————–|———|————|————–|
| NAT 转发 | 940 | 520 | 890 |
| 5GHz 吞吐量 | 680 | 310 | 620 |
| 延迟(avg) | 2.8ms | 5.1ms | 3.2ms |
思考题:漫游优化进阶
如何在该硬件上实现 802.11k/v/ r 协议?需要考虑:
1. 驱动层是否支持 Neighbor Report
2. 如何配置 wpad 的完整功能包
3. 信号强度阈值切换策略
(答案线索:需要编译时开启 CONFIG_WIFI_80211R_KMOD)
正文完
