注意事项
- 以下脚本默认按网口 0(eth0/end0)作为有线连接编写,若使用网口 1,请将所有
end0替换为 。
Rockchip Ubuntu24.04 系统下 AIC8800 WiFi 驱动移植及 AP 热点配置指南。通过安装内核模块、配置 udev 规则重命名网卡、设置 hostapd 和 dnsmasq 服务、配置 IP 转发及 iptables 规则,实现设备作为无线接入点功能。包含驱动文件部署、网络接口脚本编写及开机自启方法。

end0 替换为 。
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online
end1sudo apt update
sudo apt install hostapd iptables iptables-persistent
平台信息
aic8800_linux_driver.zip。drivers/aic8800/aic_load_fw/aic_load_fw.ko 复制到设备 /lib/modules/ 目录下。drivers/aic8800/aic8800_fdrv/aic8800_fdrv.ko 复制到设备 /lib/modules/ 目录下。fw/aic8800DC 文件夹复制到 /lib/firmware/ 目录下。cd aic8800_linux_driver/
cp drivers/aic8800/aic_load_fw/aic_load_fw.ko /lib/modules
cp drivers/aic8800/aic8800_fdrv/aic8800_fdrv.ko /lib/modules
# 部分模组驱动可能是 aic8800_bsp.ko、aic8800_fdrv.ko 以及 aic8800_btlpm.ko,替换为下面命令
cp drivers/aic8800/aic8800_bsp/aic8800_bsp.ko /lib/modules
cp drivers/aic8800/aic8800_fdrv/aic8800_fdrv.ko /lib/modules
cp drivers/aic8800/aic8800_btlpm/aic8800_btlpm.ko /lib/modules
cp -r fw/aic8800DC /lib/firmware/
/usr/bin/wifibt-init.sh。vi /usr/bin/wifibt-init.sh
替换为以下内容:
#!/bin/bash
### load_aic_wifi.sh - 加载 AIC WiFi 驱动并配置 AP 模式
### 加载 AIC 驱动模块
insmod /lib/modules/aic_load_fw.ko
insmod /lib/modules/aic8800_fdrv.ko
### 等待驱动加载完成
sleep 5
创建规则文件:
vi /etc/udev/rules.d/70-rename-wifi.rules
输入以下内容,使 idVendor 和 idProduct 相符的 wifi 模块添加节点后自动重命名为 wlan0:
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="368b", ATTRS{idProduct}=="8d85", NAME="wlan0"
禁止 WIFI 模块上电默认当作 U 盘。创建规则文件:
vi /etc/udev/rules.d/50-aic-wifi-eject.rules
输入以下内容,使 idVendor 和 idProduct 相符的 wifi 模块当作 U 盘时自动弹出:
ACTION=="add", SUBSYSTEM=="block", SUBSYSTEMS=="usb", ATTRS{idVendor}=="a69c", ATTRS{idProduct}=="5721", RUN+="/usr/bin/eject $devnode"
注意:上面两个步骤都用到了 idVendor 和 idProduct 参数,可用 lsusb 命令查看。如果模块叫 8800D80,此时则不是 U 盘设备,所以 id 368b:8d85 是网络适配器的,在重命名网络节点为 wlan0 时使用。
重新加载规则并生效:
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo apt install hostapd
vi /etc/hostapd.conf
输入下列内容,使用 11ax 无线标准,加密方式 WPA-PSK,ssid 为热点名称,wpa_passphrase 为自定义密码,均可修改:
interface=wlan0 driver=nl80211 ctrl_interface_group=0 ctrl_interface=/var/run/hostapd beacon_int=100 ssid=aic_ax_2.4G country_code=CN channel=6 hw_mode=g ieee80211n=1 ieee80211ac=1 ieee80211ax=1 ht_capab=[HT20][SHORT-GI-20][HT40-][HT40+][SHORT-GI-40] wmm_enabled=1 he_basic_mcs_nss_set=65534 auth_algs=3 wpa=3 wpa_passphrase=1234567890 wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP rsn_pairwise=CCMP
输入下列内容,使用 11ac 无线标准,加密方式 WPA-PSK,ssid 为热点名称,wpa_passphrase 为自定义密码,均可修改:
interface=wlan0 ctrl_interface=/var/run/hostapd ctrl_interface_group=0 ssid=fc2x_ag35_0809 hw_mode=a channel=149 ieee80211n=1 ieee80211ac=1 wpa=3 wpa_passphrase=12345678 wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP rsn_pairwise=CCMP
vi /etc/dnsmasq.conf
输入下列内容:
# 只监听 AP 接口
interface=wlan0
bind-interfaces
# DHCP 配置
dhcp-range=192.168.11.2,192.168.11.20,255.255.255.0,24h
dhcp-option=3,192.168.11.1
dhcp-option=6,8.8.8.8,114.114.114.114
resolv-file=/etc/dnsmasq/resolv.conf
/etc/dnsmasq/resolv.conf。mkdir -p /etc/dnsmasq
vi /etc/dnsmasq/resolv.conf
输入下列内容:
nameserver 8.8.8.8
nameserver 8.8.4.4
systemctl stop systemd.resolved
systemctl disable systemd.resolved
vi /usr/bin/start_wifi_ap.sh
输入下列内容:
#!/bin/bash
### 查找 wlxe 开头的网络接口
WIFI_IFACE=wlan0
# 配置 IP 地址
ifconfig $WIFI_IFACE 192.168.11.1 up
# 启动 hostapd
hostapd /etc/hostapd.conf -dd
# 准备并启动 dnsmasq
touch /var/lib/misc/udhcp.leases
dnsmasq -i $WIFI_IFACE -C /etc/dnsmasq.conf &
echo "AIC WiFi AP started on interface $WIFI_IFACE"
修改权限:
chmod a+x /usr/bin/start_wifi_ap.sh
reboot
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
/etc/sysctl.conf,找到并取消这一行的注释:net.ipv4.ip_forward=1
sudo sysctl -p
sudo apt update
sudo apt install iptables-persistent
sudo apt install iptables
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
iptables -t nat -A POSTROUTING -o end0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o end0 -j ACCEPT
sudo iptables -A FORWARD -i end0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo netfilter-persistent save
lsmod
输出示例:
Module Size Used by
aic8800_fdrv 557056 0
aic_load_fw 81920 1 aic8800_fdrv
之后每次开启 AP 都可以通过 start_wifi_ap.sh 脚本启动。如果想开机自启,请自行添加 service 实现。
start_wifi_ap.sh
# 应该能看到 nl80211 的很多日志