[deb] 爱科微 AIC8800 芯片的无线网卡驱动(Debian 11.8, linux-image-6.1.0-0.deb11.11-amd64)

新标题:爱科微 AIC8800 芯片的无线网卡驱动(Debian 11.8, linux-image-6.1.0-0.deb11.11-amd64)

  • 2023.10.22 第3次更新

原标题:Tenda U2 V5.0 无线网卡驱动(Debian 11.8, 5.10.0-26-amd64)

  • 2023.10.15 发布

2023.10.06 Tenda 官方新推出了一款USB无线网卡,价格 29.9元。

USB 无线网卡_腾达(Tenda)官方网站

官方宣传资料中,明确标示支持 UOS,Kylin 等 Linux 系统(实际上官方也的确提供了 DEB 安装包)。
最重要的是,声称能直接 3.2 - 6.2 的内核版本。

官方 Linux 驱动下载页面(含 amd64 的 deb 驱动包):

tenda-wifi-u2v5-d3


Tenda (腾达) U2 V5.0 (带单根天线)

* 设备型号:Tenda U2 V5.0 无线网卡(WiFi 6, AX300)
     (注:该驱动应该同样适用于2023年6月发布的另一款迷你型的USB无线网卡,基于同一芯片:
        Tenda W311MI V6.0 (价格:约25元) 

* 芯片型号:AIC8800 (爱科微)

* 上市日期:2023.10 

附、自己编译的 deb 驱动包

(先在 Debian 11.8 的机器上编译测试)

  • 编译系统:Debian 11.8 amd64
  • 已验证有效的内核版本(需要下载安装对应 内核版本 的 DEB 包):
    • 5.10.0-26-amd64
    • 6.1.0-0.deb11.11-amd64

firmware-wifi-aic8800-5.10.0-26-amd64_1-deb11.8~kba1_amd64.deb
文件大小: 5.5 M

WiFi-Tenda-U2-V5.0_aic8800DC_deb:

https://url48.ctfile.com/d/30646948-58456320-e1fa27?p=6859
(访问密码: 6859)

效果图:

aic8800DC-1d3

手动编译驱动

下载了官网的 驱动.看了一下 deb 包,其实就是一堆源码,
需要安装完 deb 后,再切换到安装目录,
运行安装脚本 install_setup.sh
进行手动编译和安装.

这种包的优点:

  • deb 安装包体积很小,只有 530 K。
  • 能适用不同的内核版本(注:安装过程,实际上也需要编译2个内核驱动 ko 文件 !)

附、Tenda 官网也给了一篇指导用户手动编译无线网卡驱动的帖子 (2023.10.12 发布)

缺点:

  • deb 打包不是太规范,且没有明确标注依赖关系,以及编译需要安装的头文件依赖包,普通玩家编译时,估计会编译失败。另外,用户手动编译后,电脑里也会遗留大量编译过程中生成的临时文件。

于是拆包,折腾了半天时间,编译成功、使用成功。
顺便把编译出来的 成品驱动文件 aic8800_fdrv.ko 和 aic_load_fw.ko 打了个 deb ,
方便 Debian 11.8 amd64 的玩家。


  • 编译系统:Debian 11.8 amd64
  • 适用内核版本:5.10.0-26-amd64

编译出的2个驱动文件:

  • aic8800_fdrv.ko (大小:16 M)
  • aic_load_fw.ko (大小:2 M)

驱动文件保存目录:

/lib/modules/5.10.0-26-amd64/kernel/drivers/net/wireless/aic8800/aic8800_fdrv.ko

/lib/modules/5.10.0-26-amd64/kernel/drivers/net/wireless/aic8800/aic_load_fw.ko


附1、编译细节

插上 USB 无线网卡,以普通用户,输入命令
lsusb | grep -i Aic

显示的无线网卡信息为
Bus 001 Device 013: ID a69c:5721 aicsemi Aic MSC

说明:在安装完驱动后,再次运行

lsusb | grep -i Aic

命令,型号信息会变成 Tenda :

Bus 001 Device 007: ID 2604:0014 Tenda AIC8800DC

  • 驱动文件的文件名,路径,编译/安装时需要的辅助命令,可以参考

install_setup.sh 和 uninstall_setup.sh 安装脚本,以及几个 Makefile 配置文件。


附2:(私人编译的 deb 包)文件清单


 1	 etc/udev/rules.d/aic.rules

 2	 lib/firmware/aic8800DC/fmacfw_rf_patch_8800dc.bin

 3	 lib/firmware/aic8800DC/aic_userconfig_8800dc.txt

 4	 lib/firmware/aic8800DC/fw_patch_table_8800dc.bin

 5	 lib/firmware/aic8800DC/fmacfw_patch_8800dc.bin

 6	 lib/firmware/aic8800DC/fw_patch_8800dc.bin

 7	 lib/firmware/aic8800DC/fw_patch_table_8800dc_u02.bin

 8	 lib/firmware/aic8800DC/fmacfw_patch_8800dc_ipc_u02.bin

 9	 lib/firmware/aic8800DC/fmacfw_patch_8800dc_u02.bin

10	 lib/firmware/aic8800DC/fmacfw_patch_tbl_8800dc_ipc_u02.bin

11	 lib/firmware/aic8800DC/lmacfw_rf_8800dc.bin

12	 lib/firmware/aic8800DC/fmacfw_patch_8800dc_ipc.bin

13	 lib/firmware/aic8800DC/fmacfw_patch_tbl_8800dc_u02.bin

14	 lib/firmware/aic8800DC/fw_patch_8800dc_u02.bin

15	 lib/modules/5.10.0-26-amd64/kernel/drivers/net/wireless/aic8800/aic8800_fdrv.ko

16	 lib/modules/5.10.0-26-amd64/kernel/drivers/net/wireless/aic8800/aic_load_fw.ko

17	 usr/share/doc/firmware-wifi-aic8800-5.10.0-26-amd64/copyright

18	 usr/share/doc/firmware-wifi-aic8800-5.10.0-26-amd64/changelog.Debian.gz

19	 usr/share/doc/firmware-wifi-aic8800-5.10.0-26-amd64/README-zh_CN.md
2 个赞

硬件驱动,使用 dkms 的方式打包比较好。

相对于服务器的维护和运营,确实 dkms 的方式,维护比较方便。

但是相对于普通家庭用户,或者内网、无网络的环境下,编译好的 成品 .ko 无线网卡驱动文件,也是有一定的使用优势的。至少依赖包方面,只需要安装了 linux-image- 的内核包,就可以了。

当然,对于 USB 的无线网卡驱动,如果用到 udev 包的 /etc/udev/rules.d/XXX.rules 配置文件,或者
额外安装 usb_modeswitch 软件包,并使用 usb-modeswitch 相关指令来处理 USB 光盘/U盘的模式
(切换到无线网卡模式),再在 postinst 安装脚本里,添加两行命令

udevadm trigger
udevadm control --reload


postrm 脚本里,添加一行命令,
udevadm control --reload


就能搞定了。

另外,个人也试着用 dkms 编译过 某型号的 无线网卡驱动,有些个人体会,有几个坑,可能用户需要注意:

  1. dkms 模式,相当于在 deb 包里集成网卡驱动源码,然后结合 对应版本的内核头文件 linux-headers-*
    软件包,进行编译。编译过程的依赖包有:build-essential (而老的 Debian 8.11 ,似乎是不包含这个包的。)

  2. 有一台机: Debian 10.11 amd64, dkms 依赖的 内核包名 linux-image-amd64, 对应的内核最新版是 4.19.0-21-amd64. 而这台机,实际已经装了2个内核版本:4.19.0-14-amd64 (安装 Debian 8.7 DVD ISO 自带的内核版本),以及后来联网后,安装的 backports 仓库里的 5.10 内核。
    现在 安装 dkms 软件包时,软件依赖指定要下载、安装 4.19.0-21-amd64 的内核版本。
    而这台机的 /boot 分区,是独立分区,当时只分了 250 M左右,只能安装两个内核版本,就没有多少空间了。必须要先删除一个内核,把空间清理出来才行。

  3. dkms 编译时,可能还会有其它的依赖包未指明,导致某些用户实际使用环境下,会编译失败。
    从这点来说,是不太适合新手,以及对 Linux 系统驱动编译不太熟悉的用户的。

1 个赞

有了 dkms 包后,可以比较方便的编译出各个内核版本的 二进制 驱动包,厂家可以把常用的内核版本二进制包直接提供给用户下载安装。

dkms 依赖的内核头文件软件包名称,一般就是使用 Linux amd64 配置的头文件(元包)名称 linux-headers-amd64。

atzlinux@atzlinux-ff:~$ apt list linux-headers-amd64
正在列表… 完成
linux-headers-amd64/oldstable,now 5.10.197-1 amd64 [已安装]
N: 还有 1 个版本。请使用 -a 选项来查看它(他们)。
atzlinux@atzlinux-ff:~$ apt list linux-image-rt-amd64
正在列表… 完成
linux-image-rt-amd64/bullseye-backports,now 6.1.38-4~bpo11+1 amd64 [已安装]

dkms 在安装依赖包时,会根据目前系统上该 元包 的发行版版本来安装。
如果只安装了具体的内核软件包,都是没有安装这个元包,就有可能导致安装的内核头文件软件包版本不匹配。

内核驱动 ko 文件,不占用 /boot 分区。

dkms 的 deb 包制作不规范,软件包依赖设置错误,都会导致驱动无法正常构建。

  1. ko 驱动文件, 的确不占用 /boot/ 分区。但是,每安装一个版本的内核,都会有一个大约 7M 左右的 vmlinuz ,以及 70-80 M 左右的 initrd.img ,放到 /boot/ 分区。

  2. 针对 ubuntu, deepin 的 DKMS 无线网卡驱动 DEB 包,时常在某些论坛,或者 CSDN 看到。
    只是很多 dkms 的 deb 包都是私人制作,私下流通,真正收录到 debian/ubuntu/deepin 源的,不多。

  3. realtek r8188gu 型号,我模糊记得,似乎在 deepin 论坛有见过 dkms 包。偏 偏想找的时侯,又搜不到有效的信息和下载出处。

  4. realtek r8188eu ( lsusb 命令 通常识别为 RTL8188EUS ),从 Debian 9 的 4.9.0-6 的内核开始,就已经集成了驱动。正好我手上有一款这个型号的,想要安装到 Debian 8.6 i386 的老爷机上 (1G 内存的老机),
    现在就等找到 dkms 现成的。如果不好找,只能自己试着编译驱动了。

可以尝试在 8.6 i386 老爷机上,直接安装 Debian 9 的 4.9.x 内核。
有很大可能性能够驱动了。

如果这款网卡需要固件的话,不要忘记也安装下固件软件包。

多谢提醒!

因为 当前 老旧的 Debian 8, Debian 9, 国内的镜像已不再提供源服务(Debian 10, 11 ,以及现在的 12),是可以正常使用国内镜像源的。

下载速度有点慢,我这边最快约 120 k/s .

在 debian 官方的旧版本归档源
http://archive.debian.org/debian/pool/main/l/linux/

找了一下,手动下载了i386 和 4.9 内核包,
再查了下,果然自带了realtek 8188eu 的驱动 ko 文件:

dpkg -c ~/Downloads/linux-image-4.9.0-0.bpo.6-686_4.9.88-1+deb9u1~bpo8+1_i386.deb | grep -i 8188eu.ko

-rw-r–r-- root/root 503644 2018-05-14 09:30 ./lib/modules/4.9.0-0.bpo.6-686/kernel/drivers/staging/rtl8188eu/r8188eu.ko

改天有时间,再到老机上验证一下。

国内部分镜像站提供 debian-archive 的镜像服务。

jessie-backports 提供 linux 内核的 4.9.0 版本。首先考虑从向后移植安装而非从下个大版本安装应当是更安全的选择。

1 个赞

在 stable 上 用 stable-backports 安装向后移植软件,是更好。但是有时候版本不新,没有完全跟上 testing,有时候也不更新了。

i386 老爷机,即使只有 1G 内存,安装 Debian 12 的 i386 版本,应该也没有啥问题,性能也不会有多少下降,可以试一下。

一语点醒梦中人!
我只知道,国内镜像源,很多旧版Debian 的iso 文件,是不再收录保存的。没想到 debian-archive 原来一直都有的。玩了这么多年debian, 大意了。 :joy: 非常感谢提醒!

debian 8.11 i386, 内核 3.16.0-0-686-pae,
已经自带了 Realtek RTL8188EUS 芯片的驱动(r8188eu.ko). 只要安装了 firmware-realtek 的软件包,就能自动识别这款无线网卡。

应当指出的是,debian-archive 并不包括 旧版本 Debian 的安装映像。

From Debian -- Distribution Archives :

We have only source code for releases older than bo, and binaries and source code for bo and newer releases. As time goes on we will expire the binary packages for old releases.

这些映像存在于 debian-cdimagearchive 区域,国内目前没有同步这一部分的镜像站。

安装你打包的驱动时,出现这个错误怎么办

不好意思,打包时候,没有对不同硬件环境进行严格测试。我猜你的电脑可能是有光驱,或者是安装时没有插上网卡。

临时解决方案:
以root 或者 sudo,手动修改 并 运行 postinst 安装脚本。

把 postinst 脚本前面某一行的
set -e
删除,或者 加 # 号禁用,再保存。
(set -e 命令的作用:如果执行到某一步,出现错误,则停止运行后面的所有命令)

. /var/lib/dpkg/firmware-aic8800*.postinst

还有一种办法:
解压缩 提取出 deb 包里的 postinst 文件,删除 set -e 这行,保存,并手动运行一次。

另外,debian 11.9 内核前段时间,已经升级了。如果你安装了新版本内核,说一声。过几天我再打一个新的优化后的 deb 放出来

上次安装时忘记插网卡了,我这次插着网卡安装的,但又出现了新的错误

有几种可能:

  1. 你的是 tp-link 的 aic8800 无线网卡,我编译用的是 tenda 的驱动源码,可能有点不一样。

2.你安装的驱动包,对应 5.10-26 版本的内核。但是你现在进的系统,是另一个版本的内核。这个deb 包里的 postinst 脚本,
depmod 命令后面,错误写成了 $(uname -r ). 应该是要写成 $KVER 的。

  1. 不确定你有没有安装我打的另一个包
    firmware-aic8800-bin (或者新的名字 firmware-aic8800) ? 这两个包里有 aic8800 需要的 固件 bin 文件,也是必须要安装的

这两天我看下有没有时间,用 tplink 的驱动源码,再编译一次试试

我在grub中选择5.10.0-26内核进入系统后,成功安装了网卡驱动,但是nmtui中却只显示有线连接,这是怎么回事?

还是建议使用 tplink 官网的驱动 deb 安装包吧,可能省事一点。

提示: 6000H 的型号,是带天线的。
不带 H 字母的,是迷你型的。两款型号,驱动应该会通用

网盘已有编译好的 的 debian 11.9 /12.5 amd64 的内核驱动deb 包。已测试验证,可以支持 tenda, tp-link, comfast 多家厂商的网卡。

debian 11.9 amd64:

  • 内核 5.10.0-28-amd64
  • backports 升档内核 6.1.0-0.deb11.17-amd64

debian 12.5 amd64

  • 6.1.0
  • backports 6.6.8-13+bpo-amd64