LOADING

安装 YT6801 网卡驱动问题

linux

背景

机械革命无界14x 笔记本电脑配备了一款 裕太微 YT6801 千兆以太网卡。该网卡在 Linux 下需要单独安装驱动。 官方提供了驱动源码包YT6801千兆PCIE以太网控制器芯片,但在较新的内核(如 Linux 6.17)上编译时会因内核 API 变更而失败。 本文记录了在 AnduinOS(基于 Ubuntu 22.04/24.04,内核 6.17.0-12-generic)上成功安装并启用 YT6801 驱动的完整过程。

环境信息

  • 笔记本:机械革命无界14x
  • 操作系统:AnduinOS 1.4.2 x86_64
  • 内核:Linux 6.17.0-14-generic
  • 网卡:YT6801(裕太微电子)
  • 目标:使有线网卡正常工作(千兆速率)

官方驱动的问题

最初尝试使用官方提供的驱动包 yt6801-linux-driver-1.0.31.tar.gz,按照说明执行安装脚本:

sudo ./yt_nic_install.sh

但脚本执行失败,提示 Fail to make。手动进入源码目录执行 sudo make 出现编译错误:

cd yt6801-1.0.31/
sudo make
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc (Ubuntu 15.2.0-4ubuntu4) 15.2.0
  You are using:           gcc (Ubuntu 15.2.0-4ubuntu4) 15.2.0
  CC [M]  fuxi-gmac-common.o
fuxi-gmac-common.c: In function ‘fxgmac_default_config’:
fuxi-gmac-common.c:75:23: error: ‘FXGMAC_INT_MODERATION_ENABLED’ undeclared (first use in this function); did you mean ‘FXGMAC_WOL_FEATURE_ENABLED’?
   75 |     pdata->intr_mod = FXGMAC_INT_MODERATION_ENABLED;
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       FXGMAC_WOL_FEATURE_ENABLED

这是因为官方驱动并未适配 Linux 6.x 内核,其中使用的宏 FXGMAC_INT_MODERATION_ENABLED 在新内核中已不存在或更名。尽管安装了 build-essential 和对应内核头文件,编译仍无法通过。

解决方案:使用社区适配版驱动

在查找解决方案时,发现 GitHub 上已有开发者针对新版内核(如 Fedora 40)适配了 YT6801 驱动,仓库地址:silent-reader-cn/yt6801。该版本解决了因内核 API 变化导致的编译问题。

步骤一:克隆适配版驱动

cd ~/下载
git clone https://github.com/silent-reader-cn/yt6801.git
cd yt6801

步骤二:执行安装脚本(需 root 权限)

该脚本会检查旧驱动、编译新模块并更新 initramfs。注意脚本提示不要用 sudo 直接运行,而是先切换到 root 用户:

sudo su
./yt_nic_install.sh

执行过程中会看到一些编译警告(如缺少函数原型、BTF 生成跳过等),但没有错误,最终输出:

Make ok.
Install ok.

步骤三:更新模块依赖并重启

退出 root 环境后,运行:

sudo depmod -a
sudo reboot

步骤四:验证驱动是否成功加载

重启后,检查网卡状态:

ip link show

应该能看到名为 enp1s0(或其他名称)的有线网卡,状态为 UP。例如:

6: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether b0:25:aa:7f:05:bc brd ff:ff:ff:ff:ff:ff

查看内核日志,确认驱动初始化及链路速率:

dmesg | grep -i yt6801

输出中应包含:

[ 4428.051453] yt6801 0000:01:00.0 enp1s0: renamed from eth0
[ 4431.714107] yt6801 now is link up, mac_speed=1000.

mac_speed=1000 表示已成功协商为千兆速率。

注意事项

1. 关于内核污染警告

日志中会出现:

yt6801: loading out-of-tree module taints kernel.
yt6801: module verification failed: signature and/or required key missing - tainting kernel

这是正常现象,因为驱动并非来自官方内核树且未签名,不影响网卡功能。

2. 内核更新后驱动失效

由于驱动是单独编译的内核模块,当系统通过 apt upgrade 升级内核版本(例如从 6.17 升级到 6.18)后,原有模块将不再适用,网卡会失效。此时只需重新进入驱动目录,再次以 root 执行安装脚本即可:

cd ~/下载/yt6801
sudo su
./yt_nic_install.sh
exit
sudo depmod -a
sudo reboot

3. 网络管理器配置

如果网卡已识别但未自动获取 IP,请检查 NetworkManager 或 systemd-networkd 配置,确保有线连接已启用。

总结

通过使用社区适配版驱动(silent-reader-cn/yt6801),机械革命无界14x 的 YT6801 网卡在 AnduinOS(内核 6.17)上成功驱动并实现千兆网络。该方案同样适用于其他 Ubuntu 衍生版及新版内核。遇到类似编译错误的用户可参考本文步骤,避免手动修改源码的繁琐过程。


参考资料