NXP 88W9098 Wi-Fi 模组在 i.MX8MP-EVK 开发板上,可通过 iptables 转发规则实现以太网到双频 Wi-Fi(2.4G+5G)的透明桥接,支持两条独立上网路径:以太网→5G Wi-Fi(mlan0 接口)→外部 AP→互联网,或以太网→2.4G Wi-Fi(mmlan0 接口)→手机热点→互联网。核心思路是加载双 Wi-Fi 接口驱动、配置 AP 连接、启用 IP 转发与 iptables 规则、部署以太网 DHCP 服务,最终实现有线设备通过无线方式上网。本文详解从驱动配置到功能验证的完整流程,适用于工业网关、家庭网络扩展等场景。
资料获取:NXP Wi-Fi & Bluetooth Products-88W9098-以太网-to-双频Wi-Fi桥-中文
1. 核心目标与环境准备
1.1 技术目标
- 加载 88W9098 驱动,启用 mlan0(5G)和 mmlan0(2.4G)双 STA 接口;
- 配置双 Wi-Fi 接口分别连接外部 5G AP 和手机 2.4G 热点;
- 通过 iptables 实现以太网与双 Wi-Fi 接口的流量转发;
- 部署以太网 DHCP 服务,为有线连接设备分配 IP;
- 验证两条上网路径的连通性,支持通过路由优先级切换默认路径。
1.2 软硬件环境
- 硬件:i.MX8MP-EVK 开发板、NXP 88W9098 Wi-Fi 模组、外部 5G 路由器、智能手机(开启 2.4G 热点)、PC(有线连接测试)、网线;
- 软件:Linux BSP L6.12.3_1.0.0、88W9098 驱动(MM6X17505.p14-GPL)、固件(17.92.1.p149.60)、iptables、udhcpc/udhcpd;
- 工具:终端工具(执行命令)、串口工具(查看日志)。
2. 驱动配置:启用双 Wi-Fi STA 接口
2.1 驱动参数配置(wifi_mod_para.conf)
驱动配置文件路径:
/lib/firmware/nxp/wifi_mod_para.conf,核心参数如下(直接复用):PCIE9098_0 = {
cfg80211_wext=0xf
max_vir_bss=1
cal_data_cfg=none
drv_mode=3 # 支持STA+uAP接口,仅用STA可设为1
ps_mode=2 # 禁用省电模式,确保连接稳定
auto_ds=2 # 禁用自动深度睡眠
host_mlme=1 # 支持WPA3加密(可选)
fw_name=nxp/pcieuart9098_combo_v1.bin # 固件路径
}
PCIE9098_1 = {
cfg80211_wext=0xf
max_vir_bss=1
cal_data_cfg=none
drv_mode=3
ps_mode=2
auto_ds=2
host_mlme=1
fw_name=nxp/pcieuart9098_combo_v1.bin
}
- 关键说明:
drv_mode=3会生成 mlan0/uap0(第一组)和 mmlan0/muap0(第二组)四个接口,仅需使用 mlan0(5G)和 mmlan0(2.4G)作为 STA 接口。
2.2 加载驱动并验证接口
# 加载驱动
modprobe moal mod_para=nxp/wifi_mod_para.conf
# 验证驱动加载成功
dmesg | grep -e mlan -e wlan -e FW
- 成功标志:日志显示 “Register NXP 802.11 Adapter mlan0”“Register NXP 802.11 Adapter mmlan0”“wlan: Driver loaded successfully”;
- 查看接口:
ifconfig -a可看到 mlan0、mmlan0 接口,状态为 BROADCAST、MULTICAST。
3. 双 Wi-Fi 接口连接配置(连接 AP / 热点)
3.1 5G Wi-Fi(mlan0)连接外部 AP
(1)创建 wpa_supplicant 配置文件
nano /etc/wpa_supplicant-5g-wpa2.conf
配置内容(替换 SSID 和密码为实际 5G AP 信息):
ctrl_interface=/var/run/wpa_supplicant
update_config=1
p2p_no_group_iface=1
network={
ssid="WEIDONG-5G" # 5G AP的SSID
psk="Apple_20220801" # 5G AP的密码
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
}
(2)启动 wpa_supplicant 并获取 IP
# 禁用connman服务,避免接口冲突
systemctl disable connman
# 后台启动wpa_supplicant
wpa_supplicant -d -B -i mlan0 -c /etc/wpa_supplicant-5g-wpa2.conf -Dnl80211 &
# 获取IP地址
udhcpc -i mlan0
- 验证连接:
ping 8.8.8.8,无丢包则说明 5G 路径连通; - 路由信息:
route -n可看到默认网关为 5G AP 的 IP(如 192.168.1.1),接口为 mlan0。
3.2 2.4G Wi-Fi(mmlan0)连接手机热点
(1)手机设置:开启 2.4G 热点(SSID:SWD-Mate-60,密码:12345678)
(2)创建 wpa_supplicant 配置文件
nano /etc/wpa_supplicant-2g-wpa2.conf
配置内容:
ctrl_interface=/var/run/wpa_supplicant
update_config=1
p2p_no_group_iface=1
network={
ssid="SWD-Mate-60" # 手机2.4G热点SSID
psk="12345678" # 热点密码
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
}
(3)启动 wpa_supplicant 并配置网关
# 后台启动wpa_supplicant
wpa_supplicant -d -B -i mmlan0 -c /etc/wpa_supplicant-2g-wpa2.conf -Dnl80211 &
# 获取IP地址
udhcpc -i mmlan0
# 手动添加默认网关(手机热点网关,如192.168.43.1)
route add default gw 192.168.43.1 dev mmlan0
- 验证连接:
ping -I mmlan0 8.8.8.8,无丢包则说明 2.4G 路径连通; - 路由信息:
route -n可看到两条默认网关,分别对应 mlan0 和 mmlan0。
4. iptables 配置:实现以太网与 Wi-Fi 流量转发
4.1 启用 IP 转发
# 编辑sysctl.conf,启用ipv4转发
nano /etc/sysctl.conf
# 移除以下行的注释符号#
net.ipv4.ip_forward=1
# 使配置生效
sysctl -p
4.2 配置 iptables 转发规则
# 配置NAT转发:mlan0和mmlan0接口的出站流量做地址伪装
iptables -t nat -A POSTROUTING -o mlan0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o mmlan0 -j MASQUERADE
# 允许已建立的连接和相关连接的转发
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# 允许mlan0到eth0的流量转发(Wi-Fi→以太网)
iptables -A FORWARD -i mlan0 -o eth0 -j ACCEPT
# 允许mmlan0到eth0的流量转发(Wi-Fi→以太网)
iptables -A FORWARD -i mmlan0 -o eth0 -j ACCEPT
# 重启iptables服务
systemctl --system daemon-reload
systemctl restart iptables
5. 以太网 DHCP 服务:为有线设备分配 IP
5.2 配置 udhcpd(DHCP 服务)
# 创建并编辑udhcpd配置文件
nano /etc/udhcpd-eth0.conf
配置内容:
start 192.168.6.10 # IP地址池起始
end 192.168.6.20 # IP地址池结束
interface eth0 # 绑定以太网接口
max_leases 11 # 最大租约数
lease_file /etc/udhcpd-eth0.leases # 租约文件路径
opt dns 192.168.1.1 192.168.43.1 165.114.52.147 165.114.89.4 # DNS服务器(包含双Wi-Fi网关)
option subnet 255.255.255.0 # 子网掩码
opt router 192.168.6.2 # 以太网接口IP(eth0的IP)
option domain local
option lease 864000 # 租约有效期(10天)
5.2 创建租约文件并启动服务
# 创建租约文件
touch /etc/udhcpd-eth0.leases
# 启动udhcpd服务
udhcpc -S /etc/udhcpd-eth0.conf -f &
- 验证:PC 通过网线连接开发板 eth0 接口,执行
ipconfig /all(Windows)或ifconfig(Linux),可获取 192.168.6.x 网段 IP,网关为 192.168.6.2。
6. 功能验证:双路径上网测试
6.1 验证 5G 路径(以太网→mlan0→外部 AP)
(1)设置 5G 路径为默认网关(优先级 10)
# 添加mlan0网关(优先级10,默认优先使用)
route add default gw 192.168.1.1 dev mlan0 metric 10
# 添加mmlan0网关(优先级20,备用)
route add default gw 192.168.43.1 dev mmlan0 metric 20
(2)PC 端测试
ping 8.8.8.8
- 成功标志:ping 无丢包,延迟约 36-38ms,说明流量通过 5G Wi-Fi 转发。
6.2 验证 2.4G 路径(以太网→mmlan0→手机热点)
(1)切换 2.4G 路径为默认网关(优先级 5)
# 提高mmlan0网关优先级(5>10,优先使用)
route add default gw 192.168.43.1 dev mmlan0 metric 5
(2)PC 端测试
ping 8.8.8.8
- 成功标志:ping 无丢包,延迟约 49-62ms,说明流量切换到 2.4G Wi-Fi 转发。
7. 关键避坑事项
- 驱动接口启用:
drv_mode=3会生成 4 个接口,仅需关注 mlan0(5G)和 mmlan0(2.4G),无需启用 uap0/muap0; - connman 服务禁用:必须执行
systemctl disable connman,否则会占用 Wi-Fi 接口,导致 wpa_supplicant 启动失败; - 网关配置:mmlan0 获取 IP 后需手动添加默认网关,mlan0 会自动获取网关;
- 路由优先级:通过
metric参数设置优先级(数值越小优先级越高),实现路径切换; - iptables 规则:确保
net.ipv4.ip_forward=1已启用,否则转发规则无效; - DNS 配置:DHCP 服务的 DNS 需包含双 Wi-Fi 网关,确保两条路径都能正常解析域名。
88W9098 双频 Wi-Fi 桥的核心是 “双 STA 接口配置 + iptables 转发 + DHCP 服务”,通过两条独立 Wi-Fi 路径实现有线设备无线上网,支持灵活切换默认路径。整个流程无需复杂硬件改动,重点在于驱动参数适配、路由配置和 iptables 规则设置,适用于需要冗余上网路径或无线扩展的场景。
阅读全文
99