NXP 88W8987 Wi-Fi 模组在 Linux 平台(i.MX8MN-EVK 开发板)下,可通过 hostapd 工具快速实现 uAP(软 AP)模式,支持 2.4GHz 和 5GHz 热点部署,配合 udhcpd 提供 DHCP 服务,还能通过桥接或 iptables 实现上网路由。核心思路是配置驱动参数、编写 hostapd/udhcpd 配置文件、启动服务,适用于工业物联网、智能家居等设备热点共享场景。本文详解从驱动配置到路由实现的完整流程,确保新手也能快速搭建可用 uAP。
1. 核心前提与环境准备
1.1 硬件基础
- 开发板:NXP i.MX8MN-EVK;
- Wi-Fi 模组:NXP 88W8987(如 SD8987);
- 辅助设备:USB 线(烧录 / 调试)、电脑(配置与测试)、手机(热点连接验证)。
1.2 软件与版本要求
- 操作系统:i.MX Yocto Linux BSP L6.12.3_1.0.0;
- 核心工具:hostapd(AP 管理)、udhcpd(DHCP 服务)、brctl(桥接)、iptables(路由转发);
- 驱动 / 固件:SD8987 驱动(moal.ko、mlan.ko),固件文件
sduart8987_combo.bin。
2. 核心配置:驱动参数调整(关键第一步)
88W8987 的 uAP 模式依赖驱动参数正确配置,核心文件为
/lib/firmware/nxp/wifi_mod_para.conf,需调整以下关键参数:2.1 驱动配置文件(wifi_mod_para.conf)
SD8987 = {
cfg80211_wext=0xf
max_vir_bss=1
cal_data_cfg=none
drv_mode=2 # 仅启用uAP模式(uap0接口)
ps_mode=2 # 禁用802.11省电模式
auto_ds=2 # 禁用自动深度睡眠模式
host_mlme=1 # 支持WPA3加密(不使用可省略)
fw_name=nxp/sduart8987_combo.bin # 固件路径
}
2.2 参数说明(避坑核心)
drv_mode:接口模式选择,2 = 仅 uAP(推荐),3=STA+uAP,7 = 所有接口(默认);ps_mode/auto_ds:uAP 模式下禁用省电模式,避免连接不稳定;fw_name:固件文件名需与实际路径一致,否则驱动加载失败。
2.3 驱动加载与卸载
- 加载驱动(随内核编译时):
modprobe moal mod_para=nxp/wifi_mod_para.conf - 单独编译驱动加载:
insmod mlan.ko insmod moal.ko mod_para=nxp/wifi_mod_para.conf - 卸载驱动(重新配置时):
rmmod moal && rmmod mlan - 验证加载成功:
dmesg日志显示 “wlan: Driver loaded successfully” 和 “Register NXP 802.11 Adapter uap0”。
3. 2.4GHz uAP 配置与启动
3.1 配置 hostapd(AP 核心配置)
创建
/etc/hostapd-uap0-2g-wpa2.conf,定义热点名称、加密方式、信道等:ctrl_interface=/var/run/hostapd
interface=uap0 # 绑定uAP接口
driver=nl80211
ssid=8987-uap0_2G # 热点名称
hw_mode=g # 2.4GHz模式(g对应2.4G,a对应5G)
channel=1 # 信道(2.4G可选1/6/11,避免干扰)
max_num_sta=10 # 最大连接设备数
auth_algs=1 # 仅支持WPA认证
beacon_int=100 # 信标间隔(ms)
dtim_period=1
wmm_enabled=1 # 启用QoS
wpa=2 # 仅支持WPA2
wpa_key_mgmt=WPA-PSK # 预共享密钥模式
wpa_passphrase=12345678 # 连接密码(8位及以上)
rsn_pairwise=CCMP # 加密算法
ignore_broadcast_ssid=0 # 广播SSID
3.2 配置 udhcpd(DHCP 服务)
创建
/etc/udhcpd-uap0-2g.conf,分配 IP 地址池:start 192.168.8.10 # IP起始地址
end 192.168.8.20 # IP结束地址
interface uap0 # 绑定uAP接口
max_leases 11 # 最大租约数
lease_file /etc/udhcpd-uap0-2g.leases # 租约文件路径
opt dns 192.168.1.1 165.114.52.147 # DNS服务器
option subnet 255.255.255.0 # 子网掩码
opt router 192.168.8.1 # 网关(uAP0的IP)
option domain local
option lease 864000 # 租约有效期(10天)
3.3 启动步骤
- 禁用 connman 服务,避免接口冲突:
systemctl stop connman.service - 加载驱动(参考第二章步骤);
- 配置 uAP0IP 并启动接口:
ifconfig uap0 192.168.8.1 netmask 255.255.255.0 up route add default gw 192.168.8.1 - 启动 hostapd 服务:
hostapd -d /etc/hostapd-uap0-2g-wpa2.conf -B - 启动 DHCP 服务:
touch /etc/udhcpd-uap0-2g.leases # 创建租约文件 udhcpd -S /etc/udhcpd-uap0-2g.conf & - 验证:手机搜索 SSID “8987-uap0_2G”,输入密码 12345678,成功获取 192.168.8.x 网段 IP 即生效。
4. 5GHz uAP 配置与启动(特殊注意事项)
5GHz 配置与 2.4GHz 类似,但需额外配置国家码,避免驱动崩溃,步骤如下:
4.1 配置 hostapd(/etc/hostapd-uap0-5g-wpa2.conf)
ctrl_interface=/var/run/hostapd
interface=uap0
driver=nl80211
ssid=8987-uap0_5G # 5G热点名称
hw_mode=a # 5GHz模式
channel=36 # 5G信道(推荐36/40/44/48)
wmm_enabled=1
ieee80211n=1 # 启用802.11n
vht_oper_chwidth=1 # 信道宽度
vht_oper_centr_freq_seg0_idx=42
vht_capab=[SHORT-GI-80]
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=12345678
rsn_pairwise=CCMP
require_ht=1
require_vht=1
4.2 配置 udhcpd(/etc/udhcpd-uap0-5g.conf)
start 192.168.6.10
end 192.168.6.20
interface uap0
max_leases 11
lease_file /etc/udhcpd-uap0-5g.leases
opt dns 192.168.1.1 165.114.52.147
option subnet 255.255.255.0
opt router 192.168.6.1 # 5G网关IP(与2G区分)
option domain local
option lease 864000
4.3 启动步骤(关键差异)
- 先配置国家码(加载驱动前执行):
iw reg set CN # 配置中国国家码,避免CHAN_REGION_CFG报错 - 禁用 connman 服务、加载驱动(同 2.4G 步骤);
- 配置 uAP0IP 并启动:
ifconfig uap0 192.168.6.1 netmask 255.255.255.0 up route add default gw 192.168.6.1 - 启动 hostapd 和 DHCP 服务(参考 2.4G 步骤,替换配置文件路径);
- 验证:手机搜索 “8987-uap0_5G”,连接后获取 192.168.6.x 网段 IP,连接速度显示 121Mbps 左右即正常。
5. 路由配置:实现设备上网(两种方案)
方案一:桥接模式(简单直接)
将 uAP0 与 eth0(外网接口)桥接,设备连接 uAP 后直接共享外网:
# 1. 创建桥接口br0
brctl addbr br0
# 2. 将eth0和uAP0加入桥接
brctl addif br0 eth0
brctl addif br0 uap0
# 3. 启动桥接口
ifconfig br0 up
# 4. 启动hostapd和DHCP服务(同前文步骤)
- 适用场景:eth0 已连接外网(如路由器),无需复杂配置,设备连接 uAP 即可上网。
方案二:iptables 转发模式(灵活可控)
通过 IP 转发和 iptables 规则实现上网,适用于 eth0 有外网但需限制访问的场景:
# 1. 删除原有桥接(若已创建)
ifconfig br0 down && brctl delbr br0
# 2. 终止现有hostapd和DHCP服务
killall hostapd && killall udhcpd
# 3. 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 4. 配置iptables转发规则
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i uap0 -o eth0 -j ACCEPT
# 5. 重启服务
systemctl restart iptables
# 6. 重新启动hostapd和DHCP服务
6. 关键避坑事项
- 驱动加载前必做:禁用 connman 服务,否则接口会被扫描占用,导致 uAP 启动失败;
- 5G 专属配置:必须先执行
iw reg set CN,且 hostapd 配置中不能写country_code,否则触发 driver crash; - 密码要求:wpa_passphrase 需 8 位及以上,否则 hostapd 启动报错;
- 信道选择:2.4G 优先 1/6/11 信道,5G 优先 36/40/44/48 信道,避免同频干扰;
- 驱动卸载:重新配置驱动参数时,需先
rmmod moal和rmmod mlan,再重新加载。
88W8987 实现 uAP 模式的核心是 “驱动参数配置 + hostapd/DHCP 服务启动”,2.4G 和 5G 仅需调整信道、模式等关键参数,5G 需额外配置国家码。通过桥接或 iptables 可实现设备上网,适配不同应用场景。整个流程无需复杂开发,配置文件可直接复用,适合快速部署软 AP 热点。
阅读全文
96