Ubuntu 无密码热点(Soft AP)完整配置方案

发布于:2025-04-08 ⋅ 阅读:(14) ⋅ 点赞:(0)

适用于 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

五、启动热点服务 + 分配地址

  1. 启动热点:
sudo hostapd -B /etc/hostapd.conf

成功输出应包含:

wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
  1. 设置静态 IP:
sudo ifconfig wlan0 10.5.5.1 netmask 255.255.255.0
  1. 启动 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

网站公告

今日签到

点亮在社区的每一天
去签到