适用于 Jetson、嵌入式 Linux、RDK 平台。目标:配置一个无密码热点(Soft AP),供手机等设备直接连接。实现开机自动启动热点,也支持后续一键切换回 WiFi 客户端模式。
平台:Yahboom RDK X3(Jetson Xavier NX)
- 系统版本:Ubuntu 22.04(官方镜像)
适用于设备默认启动为热点、供手机或电脑直接连接调试的场景。
一、安装依赖
sudo apt update
sudo apt install hostapd isc-dhcp-server -y
二、配置 hostapd(无密码热点)
编辑配置文件:
sudo vim /etc/hostapd.conf
内容如下:
interface=wlan0
driver=nl80211
ctrl_interface=/var/run/hostapd
ssid=Sunrise
channel=6
ieee80211n=1
hw_mode=g
ignore_broadcast_ssid=0
编辑 DHCP 服务绑定网卡:
sudo vim /etc/default/isc-dhcp-server
添加或修改为:
INTERFACESv4="wlan0"
三、配置 DHCP 地址池
编辑 DHCP 主配置文件:
sudo vim /etc/dhcp/dhcpd.conf
确保开启权限:
authoritative;
末尾添加:
subnet 10.5.5.0 netmask 255.255.255.0 {
range 10.5.5.100 10.5.5.254;
option subnet-mask 255.255.255.0;
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
四、关闭 WiFi 客户端并刷新接口
sudo systemctl mask wpa_supplicant
sudo systemctl stop wpa_supplicant
sudo ip addr flush dev wlan0
sleep 0.5
sudo ifconfig wlan0 down
sleep 1
sudo ifconfig wlan0 up
五、启动热点服务 + 分配地址
- 启动热点:
sudo hostapd -B /etc/hostapd.conf
成功输出应包含:
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
- 设置静态 IP:
sudo ifconfig wlan0 10.5.5.1 netmask 255.255.255.0
- 启动 DHCP 服务:
sudo systemctl start isc-dhcp-server
sudo systemctl enable isc-dhcp-server
六、验证
连接手机等设备到 SSID 为 Sunrise
的热点,IP 地址应为 10.5.5.xxx
,在开发板查看:
ip a show wlan0
七、切换回 Station 模式(WiFi 客户端)
sudo killall -9 hostapd
sudo ip addr flush dev wlan0
sleep 0.5
sudo ifconfig wlan0 down
sleep 1
sudo ifconfig wlan0 up
sudo systemctl unmask wpa_supplicant
sudo systemctl restart wpa_supplicant
# 如果有驱动模块,可重装
# sudo rmmod aic8800_fdrv
# sudo modprobe aic8800_fdrv
# 连接 WiFi(如使用 wifi_connect 脚本)
wifi_connect "WiFi-Test" "12345678"
八、一键切换脚本配置
/usr/local/bin/softap-init.sh
#!/bin/bash
echo "[INFO] 正在切换至 Soft AP 模式..."
nmcli device disconnect wlan0
systemctl stop NetworkManager
systemctl stop wpa_supplicant
killall -9 hostapd 2>/dev/null
rm -rf /var/run/hostapd
ip addr flush dev wlan0
ifconfig wlan0 down
sleep 1
ifconfig wlan0 up
ifconfig wlan0 10.5.5.1 netmask 255.255.255.0
echo "[INFO] 启动 hostapd..."
hostapd -B /etc/hostapd.conf
echo "[INFO] 启动 isc-dhcp-server..."
systemctl restart isc-dhcp-server
/usr/local/bin/softap-stop.sh
#!/bin/bash
echo "[INFO] 正在切换回 Station 模式..."
killall -9 hostapd 2>/dev/null
systemctl stop isc-dhcp-server 2>/dev/null
ip addr flush dev wlan0
ifconfig wlan0 down
sleep 1
ifconfig wlan0 up
systemctl unmask wpa_supplicant
systemctl restart wpa_supplicant
systemctl start NetworkManager
sleep 2
if nmcli connection show | grep -q "AutoGo Lab-5G"; then
echo "[INFO] 尝试连接 AutoGo Lab-5G ..."
nmcli connection up "AutoGo Lab-5G"
else
echo "[WARN] 未找到保存的连接配置,尝试手动连接"
nmcli device wifi connect "AutoGo Lab-5G" --ask
fi
九、自启动服务配置(SoftAP 开机启动)
/etc/systemd/system/softap-init.service
[Unit]
Description=Initialize SoftAP Mode (hostapd + DHCP)
After=network.target
Wants=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/softap-init.sh
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable softap-init.service
sudo systemctl start softap-init.service
sudo systemctl status softap-init.service
十、可执行软链接(简化调用)
sudo ln -s /usr/local/bin/softap-init.sh /usr/local/bin/softap-init
sudo ln -s /usr/local/bin/softap-stop.sh /usr/local/bin/softap-stop
此后可用命令:
softap-init # 启动热点
softap-stop # 关闭热点并连接 WiFi