公司动态
RK3588 (ARM64) 绿联 AX900 USB 无线网卡驱动安装教程
RK3588 (ARM64) 绿联 AX900 USB 无线网卡驱动安装教程芯片方案AIC 8800D80 (爱科微)适用平台Rockchip RK3588 / ARM64 Linux测试环境LubanCat-5 / Debian 12 Bookworm / Linux 6.1.99-rk3588网卡型号绿联 CM763 AX900 (USB 3.0, WiFi 6)一、前言最近给手头的 RK3588 开发板LubanCat-5配了一个绿联 AX900 USB 无线网卡型号 CM763芯片方案是爱科微AICSemi的 AIC 8800D80支持 WiFi 6 (802.11ax)。官方的 Linux 驱动包虽然提供了源码但在 ARM64 较新内核6.x下编译会踩一些坑。本文记录完整的驱动安装过程供有同样需求的朋友参考。二、环境信息项目信息开发板RK3588 (LubanCat-5)操作系统Debian GNU/Linux 12 (bookworm)内核版本6.1.99-rk3588架构aarch64 (ARM64)编译器GCC 12.2.0 (Debian 12)USB 网卡绿联 CM763 (AIC 8800D80)USB 设备 ID368b:8d88(WiFi 模式)三、驱动准备3.1 下载驱动绿联官方或网卡配套光盘/U盘中的驱动包解压后目录结构如下UGREEN-CM763-35265_USB无线网卡驱动_V1.4.zip └── Linux/ ├── aic8800_linux_driver/ # 驱动源码 │ ├── drivers/aic8800/ │ │ ├── aic8800_fdrv/ # WiFi 主驱动 │ │ ├── aic_load_fw/ # 固件加载 蓝牙 │ │ └── Makefile │ ├── fw/aic8800D80/ # 固件文件 │ ├── tools/aic.rules # udev 规则 │ └── install_setup.sh └── release_note.txt3.2 安装内核头文件编译内核模块需要匹配当前内核的头文件sudoaptinstalllinux-headers-$(uname-r)确认 build 链接存在ls/lib/modules/$(uname-r)/build注意RK3588 的定制内核头文件包名通常是linux-headers-6.1.99-rk3588这类带后缀的格式。3.3 插入网卡 模式切换插入 USB 网卡后lsusb会先看到存储模式Bus 001 Device 003: ID a69c:5724 aicsemi Aic MSC此时网卡被识别为 USB 大容量存储设备虚拟光盘内含 Windows 驱动。需要 eject 切换到 WiFi 模式# 先查看设备节点lsblk|grepsda# 设备通常挂载在 /media/xxx/UGREENsudoeject/dev/sda再次lsusb设备变为 WiFi 模式Bus 001 Device 004: ID 368b:8d88 AICSemi AIC 8800D80四、编译驱动4.1 复制固件和 udev 规则# 复制固件sudocp-rfaic8800_linux_driver/fw/aic8800D80 /lib/firmware/# 复制 udev 规则用于下次插入时自动 ejectsudocpaic8800_linux_driver/tools/aic.rules /etc/udev/rules.d/sudoudevadm control--reloadsudoudevadm trigger4.2 修复编译错误直接make会遇到 GCC 12 将警告视为错误的问题。主要报错如下# 错误1: 未使用的变量 aic_compat_8800d80.c:375:31: error: unused variable patch_info [-Werrorunused-variable] aic_compat_8800d80.c:374:31: error: unused variable head [-Werrorunused-variable] aic_compat_8800d80.c:340:12: error: aicbt_ext_patch_data_load defined but not used [-Werrorunused-function] # 错误2: 类型溢出 aicbluetooth.c:760:15: error: conversion from long unsigned int to u32 changes value [-Werroroverflow] # 错误3: 数组地址永远非空内核 API 变更bssid 从指针变为数组 rwnx_msg_rx.c:792:29: error: the comparison will always evaluate as true for the address of bssid will never be NULL [-Werroraddress]解决方法在两个子模块的 Makefile 中添加-Wno-error禁用警告即错误文件1aic8800_fdrv/Makefile第2行后添加EXTRA_CFLAGS $(USER_EXTRA_CFLAGS) EXTRA_CFLAGS -Wno-implicit-fallthrough EXTRA_CFLAGS -Wno-error # -- 添加此行文件2aic_load_fw/Makefile第35行后添加ccflags-y -DAICWF_USB_SUPPORT ccflags-y -Wno-error # -- 添加此行4.3 编译cdaic8800_linux_driver/drivers/aic8800# 清理makeclean# 8 核并行编译make-j$(nproc)编译完成后生成两个.ko文件aic_load_fw/aic_load_fw.ko # 固件加载模块 aic8800_fdrv/aic8800_fdrv.ko # WiFi 主驱动模块五、安装与加载驱动5.1 安装模块sudomakeinstall这将模块安装到/lib/modules/$(uname -r)/kernel/drivers/net/wireless/aic8800/并执行depmod。5.2 ⚠️ 重要覆盖旧模块RK3588 的 LubanCat 镜像可能预置了旧版aic_load_fw.ko位于rockchip_wlan目录下。modprobe会优先加载旧版导致符号不匹配aic8800_fdrv加载失败aic8800_fdrv: Unknown symbol get_testmode (err -2) aic8800_fdrv: Unknown symbol get_flash_bin_size (err -2) aic8800_fdrv: Unknown symbol aicwf_prealloc_txq_alloc (err -2)解决用新编译的aic_load_fw.ko覆盖旧版# 查找旧模块位置find/lib/modules/$(uname-r)-nameaic_load_fw.ko# 备份并替换sudomv/lib/modules/$(uname-r)/kernel/drivers/net/wireless/rockchip_wlan/aic8800_usb/aic_load_fw/aic_load_fw.ko{,.bak}sudocpaic_load_fw/aic_load_fw.ko /lib/modules/$(uname-r)/kernel/drivers/net/wireless/rockchip_wlan/aic8800_usb/aic_load_fw/sudodepmod-a5.3 加载模块sudomodprobe aic_load_fwsudomodprobe aic8800_fdrv检查是否加载成功lsmod|grepaicdmesg|tail-10|grepaic此时wlan0接口应该已出现iplinkshow wlan0# 6: wlan0: NO-CARRIER,BROADCAST,MULTICAST,UP mtu 1500 ...六、连接 WiFi6.1 使用 NetworkManager推荐# 扫描可用网络nmcli dev wifi list# 连接sudonmcli dev wifi connectysdlabpasswordyour_password6.2 验证连接# 查看 IPipaddr show wlan0# 查看连接信息iwconfig wlan0示例输出wlan0 IEEE 802.11ax ESSID:ysdlab Nickname:AIC8800 Mode:Auto Frequency:2.437 GHz Access Point: 9C:47:82:A8:D2:4E Bit Rate:286 Mb/s Link Quality0/100 Signal level-4 dBm Noise level0 dBm6.3 外网连通性测试ping-c4-Iwlan08.8.8.864 bytes from 8.8.8.8: icmp_seq1 ttl112 time46.7 ms 64 bytes from 8.8.8.8: icmp_seq2 ttl112 time43.4 ms 64 bytes from 8.8.8.8: icmp_seq3 ttl112 time43.9 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss rtt min/avg/max/mdev 43.410/44.664/46.698/1.450 ms七、最终结果总结项目状态驱动编译✅ 成功模块加载✅aic_load_fwaic8800_fdrvWiFi 接口✅wlan0(802.11ax)IP 地址192.168.3.100/24连接速率286 Mb/s信号强度-4 dBm外网访问✅ ping 8.8.8.8 1% 丢包八、常见问题 FAQQ1: 插入网卡后仍是存储模式如何切换A: 执行sudo eject /dev/sda替换为实际的设备节点。也可安装usb-modeswitch自动处理。Q2: 编译报all warnings being treated as errorsA: 在aic8800_fdrv/Makefile和aic_load_fw/Makefile中添加-Wno-error编译选项。Q3:modprobe aic8800_fdrv报 Unknown symbolA: 系统中存在旧版aic_load_fw.ko需找到并用新版覆盖见第 5.2 节。Q4: 重启后驱动需要重新加载A: 可将模块名加入/etc/modulesechoaic_load_fw|sudotee-a/etc/modulesechoaic8800_fdrv|sudotee-a/etc/modulesQ5: 内核升级后需要重新编译A: 是的。建议将驱动源码保留在本地内核升级后重新编译安装。或用 DKMS 管理。参考链接绿联官网 AX900 驱动下载页LubanCat-RK3588 官方文档Linux Wireless Wiki: cfg80211 API changes本文写于 2026-07-31在 LubanCat-5 (RK3588) Debian 12 内核 6.1.99-rk3588 上验证通过。