扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

NXP 88W8987 Linux uAP 模式实操:hostapd搭建2G/5G热点+路由配置

2小时前
96
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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 启动步骤

  1. 禁用 connman 服务,避免接口冲突:
    systemctl stop connman.service
    
  2. 加载驱动(参考第二章步骤);
  3. 配置 uAP0IP 并启动接口:
    ifconfig uap0 192.168.8.1 netmask 255.255.255.0 up
    route add default gw 192.168.8.1
    
  4. 启动 hostapd 服务:
    hostapd -d /etc/hostapd-uap0-2g-wpa2.conf -B
    
  5. 启动 DHCP 服务:
    touch /etc/udhcpd-uap0-2g.leases  # 创建租约文件
    udhcpd -S /etc/udhcpd-uap0-2g.conf &
    
  6. 验证:手机搜索 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 启动步骤(关键差异)

  1. 先配置国家码(加载驱动前执行):
    iw reg set CN  # 配置中国国家码,避免CHAN_REGION_CFG报错
    
  2. 禁用 connman 服务、加载驱动(同 2.4G 步骤);
  3. 配置 uAP0IP 并启动:
    ifconfig uap0 192.168.6.1 netmask 255.255.255.0 up
    route add default gw 192.168.6.1
    
  4. 启动 hostapd 和 DHCP 服务(参考 2.4G 步骤,替换配置文件路径);
  5. 验证:手机搜索 “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. 关键避坑事项

  1. 驱动加载前必做:禁用 connman 服务,否则接口会被扫描占用,导致 uAP 启动失败;
  2. 5G 专属配置:必须先执行iw reg set CN,且 hostapd 配置中不能写country_code,否则触发 driver crash;
  3. 密码要求:wpa_passphrase 需 8 位及以上,否则 hostapd 启动报错;
  4. 信道选择:2.4G 优先 1/6/11 信道,5G 优先 36/40/44/48 信道,避免同频干扰;
  5. 驱动卸载:重新配置驱动参数时,需先rmmod moalrmmod mlan,再重新加载。
88W8987 实现 uAP 模式的核心是 “驱动参数配置 + hostapd/DHCP 服务启动”,2.4G 和 5G 仅需调整信道、模式等关键参数,5G 需额外配置国家码。通过桥接或 iptables 可实现设备上网,适配不同应用场景。整个流程无需复杂开发,配置文件可直接复用,适合快速部署软 AP 热点。

相关推荐