Ubuntu 24.04(内核 6.17)上对 UGREEN WiFi6 AX300(AIC8800)驱动的适配与安装过程

Ubuntu 24.04(内核 6.17)上对 UGREEN WiFi6 AX300(AIC8800)驱动的适配与安装过程

TomHanck4
2026-02-23 / 0 评论 / 0 阅读 / 正在检测是否收录...

AIC8800 WiFi 驱动:6.17 内核适配与安装总结

记一次在Ubuntu 24.04(内核 6.17)上对 UGREEN WiFi6 AX300(AIC8800)驱动的适配与安装过程。


资源下载


一、背景与问题

  1. 终端沙箱报错
    在 Cursor 中出现 “Terminal sandbox could not start”,与 Linux 6.2+ 的 AppArmor 有关。可安装官方 AppArmor 包或使用 ~/.cursor/sandbox.json"type": "insecure_none" 临时关闭沙箱。
  2. 驱动编译失败
    执行 sudo apt install curl 时触发了未配置完成的 aic8800fdrvpackage,其 post-install 脚本在编译内核模块时失败,原因包括:

    • 内核 6.17 中 del_timer / del_timer_sync 已改为 timer_delete / timer_delete_sync
    • 5.4+ 中 wakeup_source_create/add/remove/destroy 已移除,需用 wakeup_source_register / wakeup_source_unregister
    • cfg80211 回调 set_wiphy_paramsset_tx_power 增加 radio_idx 参数
    • cfg80211_rx_spurious_framecfg80211_rx_unexpected_4addr_frame 增加 link_id 参数
    • 定时器回调中 from_timer 需改为 container_of 等适配
    • 部分 switch 需要显式 fallthrough 以消除 -Wimplicit-fallthrough 报错

二、源码修改清单(6.17 内核适配)

驱动源码路径:aic8800_linux_drvier/drivers/aic8800/aic8800_fdrv/(及同目录下相关文件)。

文件修改内容
aicwf_tcp_ack.c增加 #include <linux/timer.h>
rwnx_compat.h增加 #include <linux/timer.h>;6.2+ 用宏将 del_timer/del_timer_sync 映射为 timer_delete/timer_delete_sync;6.2+ 为 from_timer 提供兼容宏(实际多数处已改为 container_of
rwnx_wakelock.c5.4+ 使用 wakeup_source_register(dev,name)wakeup_source_unregister(ws)rwnx_wakeup_init 改为接收 struct rwnx_hw * 以传入 devrwnx_wakeup_deinit 在 5.4+ 仅调用 wakeup_source_unregister
rwnx_wakelock.hrwnx_wakeup_init 声明改为 (struct rwnx_hw *, const char *);增加 struct rwnx_hw 前向声明
rwnx_main.c增加 #include <linux/timer.h>set_wiphy_params 在 6.2+ 增加 int radio_idxset_tx_power 在 6.2+ 增加 int radio_idx;定时器回调中用 container_of(t, struct rwnx_hw, p2p_alive_timer) 等替代 from_timer;多处 switch 增加 fallthrough;
rwnx_rx.c增加 #include <linux/timer.h>;6.2+ 对 cfg80211_rx_spurious_frame / cfg80211_rx_unexpected_4addr_frame 增加第三参数 link_id(传 -1);defrag_timeout_cbreord_timeout_handler 中用 container_of(t, struct defrag_ctrl_info, defrag_timer) 等替代 from_timer
rwnx_tx.c一处 switch 增加 fallthrough;
aicwf_sdio.c定时器回调中用 container_of(t, struct aic_sdio_dev, timer) 替代 from_timer

三、编译驱动

在驱动目录下执行(需已安装对应内核头文件,如 linux-headers-$(uname -r)):

cd /path/to/UGREEN_WiFi6_AX300_Driver_Linux_.../aic8800_linux_drvier/drivers/aic8800
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules

成功后会生成:

  • aic_load_fw/aic_load_fw.ko
  • aic8800_fdrv/aic8800_fdrv.ko

四、安装脚本说明

install_setup.sh 使用 su -c,在无交互终端时无法输入密码。因此新增两个脚本,均在 项目根目录下的 aic8800_linux_drvier 中执行。

1. install_with_sudo.sh(安装固件与 udev)

  • 复制 fw/aic8800DC/lib/firmware/
  • 复制 tools/aic.rules/etc/udev/rules.d/
  • 执行 udevadm triggerudevadm control --reload
  • 若存在 /dev/aicudisk 等虚拟光驱设备则执行 eject

使用:

cd /home/fsy/Downloads/UGREEN_WiFi6_AX300_Driver_Linux_CM760-25262_CM761-35263_CM860-75511_V1.6/aic8800_linux_drvier
./install_with_sudo.sh

按提示输入 sudo 密码即可。

2. load_modules.sh(加载内核模块)

  • 先检查 aic_load_fwaic8800_fdrv 是否已加载(lsmod
  • 未加载则执行 sudo insmod ... 加载对应 .ko
  • 若已加载(例如之前装过 aic8800fdrvpackage),会提示“已在运行,跳过”,避免 “File exists” 报错

使用:

cd /home/fsy/Downloads/UGREEN_WiFi6_AX300_Driver_Linux_CM760-25262_CM761-35263_CM860-75511_V1.6/aic8800_linux_drvier
./load_modules.sh

五、推荐操作顺序

  1. 应用上述源码修改并完成编译(第三节)。
  2. aic8800_linux_drvier 目录执行:./install_with_sudo.sh
  3. 再执行:./load_modules.sh
  4. 使用 ip anmcli device wifi 等确认无线网卡是否出现并可用。

六、若通过 deb 包安装

若系统之前或之后通过 aic8800fdrvpackage 的 deb 安装,需保证其使用的源码与本次修改一致,或在安装前先移除该包再按本文档从源码编译并安装:

sudo dpkg --remove --force-remove-reinstreq aic8800fdrvpackage   # 仅当该包导致问题时

然后再按第三、四节编译并运行 install_with_sudo.shload_modules.sh


文档基于当前驱动版本与内核 6.17.0-14-generic 整理。

0

评论 (0)

取消