ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Realtek网卡驱动重装指南:从Windows到Linux的选型与避坑

Realtek网卡驱动重装指南:从Windows到Linux的选型与避坑 1. 网卡突然罢工时我为什么选择重装驱动而不是换硬件网卡这东西平时你根本感觉不到它的存在直到某天开机发现右下角那个小电脑图标多了个黄色感叹号或者干脆连图标都没了。我遇到过好几次这种情况最典型的一次是台老台式机Realtek PCIe GbE Family Controller 在设备管理器里显示该设备无法启动代码 10重启没用禁用再启用也没用折腾半天最后靠重装驱动解决。从那以后我就养成了一个习惯网络出问题先排查驱动层别急着怀疑网线、路由器或者运营商。重装网络驱动这件事听起来简单但实际操作中坑不少。Windows 自带的驱动库有时候会给你装一个能用但不对劲的版本比如 Realtek 的网卡被识别成通用千兆网卡速度跑不满或者休眠唤醒后直接掉线。更麻烦的是 Linux 环境下r8168 和 r8169 这两个驱动模块经常打架内核自带 r8169 看着能用但实际跑起来丢包、断流必须换成 Realtek 官方维护的 r8168 才稳。这篇文章就是把我这些年重装网络驱动的经验整理出来从 Windows 到 Linux从有线到无线把选型逻辑、操作步骤、踩坑记录都讲清楚。不管你是刚遇到网卡识别问题的新手还是想彻底搞明白驱动加载机制的老手应该都能找到有用的东西。2. 先搞清楚你的网卡到底是谁Realtek 家族常见型号与驱动对应关系2.1 有线网卡RTL8111/8168/8411 系列是重灾区Realtek 的有线网卡芯片型号多得让人头疼但市面上最常见的就那么几类。RTL8111 系列是千兆有线网卡的主力衍生型号包括 8111B/C/D/E/F/G/H 等PCB 版本不同但驱动基本通用。RTL8168 是另一个高频出现的型号和 8111 共享同一套驱动代码Linux 下统称 r8168 驱动。还有 RTL8411常见于笔记本集成了读卡器功能驱动也是同一家族。问题在于Windows 设备管理器里显示的Realtek PCIe GbE Family Controller其实是一个笼统的标识它可能对应 8111、8168、8411 中的任何一个。你想装官方驱动去 Realtek 官网找的时候会发现他们不直接提供消费级网卡的驱动下载而是让去找主板厂商或者笔记本厂商。这就导致很多人下载到的是 OEM 定制版版本老旧功能残缺。我的做法是先用硬件 ID 确认具体型号。在设备管理器里右键网卡属性→详细信息→硬件 ID你会看到类似PCI\VEN_10ECDEV_8168SUBSYS_...的字符串。VEN_10EC 是 Realtek 的厂商 IDDEV_8168 就是设备 ID对应 RTL8168。记住这个 DEV 编号去下载驱动时对照着选基本不会错。2.2 无线网卡RTL8811CU、RTL8812BU 这些 USB 网卡的坑USB 无线网卡是另一个重灾区。RTL8811CU 和 RTL8812BU 是市面上最常见的两款 AC 双频 USB 网卡芯片很多品牌比如 COMFAST、EDUP、Tenda 的部分型号都在用。Windows 10 64 位下这两款芯片的驱动安装经常出问题表现为设备管理器里显示未知设备或者带感叹号的802.11ac NIC。关键点在于 VID 和 PID。RTL8811CU 的典型 VID 是 0BDAPID 是 C811RTL8812BU 的 VID 也是 0BDAPID 是 B812。有些厂商会改 PID比如 Netrtw 方案的 RTL8812CU 可能是 VID_0BDAPID_C812。你在设备管理器的硬件 ID 里看到这些编号就能确定芯片型号然后去找对应的驱动。Realtek 官方不直接提供这些 USB 网卡的驱动下载但社区维护的驱动版本反而更稳定比如 Linux 下的rtl8812au、rtl8811cu开源驱动Windows 下可以找芯片方案商发布的通用驱动。2.3 音频驱动和网卡驱动别搞混热搜词里出现了realtek audio console、realtek high definition audio这些说明很多人搜网卡驱动的时候被音频驱动干扰了。Realtek 同时做网卡和声卡芯片名字都带 Realtek但完全是两码事。如果你装完网卡驱动发现声音没了或者realtek audio console打不开那是音频驱动的问题别去折腾网卡。反过来也一样网卡识别不到的时候别去重装音频驱动。判断方法很简单设备管理器里看设备类别网络适配器下面的是网卡声音、视频和游戏控制器下面的是声卡。3. Windows 下重装 Realtek 网卡驱动的完整操作链路3.1 卸载旧驱动为什么不能直接覆盖安装很多人重装驱动就是下载一个新版 exe双击下一步下一步完事。但 Realtek 网卡驱动这么装经常出问题因为旧驱动的残留文件会和新驱动冲突。Windows 的驱动安装机制是如果系统里已经有一个版本的驱动新驱动安装程序可能会跳过某些步骤或者只更新部分文件导致版本混杂。正确的做法是彻底卸载旧驱动。步骤是设备管理器→网络适配器→右键你的 Realtek 网卡→卸载设备→勾选删除此设备的驱动程序软件→确定。然后重启电脑。重启后 Windows 可能会自动装一个通用驱动别管它继续下一步。更彻底的做法是用pnputil命令行工具清理驱动包。以管理员身份打开命令提示符输入pnputil /enum-drivers这会列出所有第三方驱动包。找到 Realtek 网卡相关的 oemXX.inf 文件记下编号然后pnputil /delete-driver oemXX.inf /uninstall /force这个操作会把驱动包从系统驱动仓库里彻底删除避免 Windows 自动重装旧版本。3.2 手动指定 INF 文件安装绕过安装程序的限制Realtek 官方驱动包解压后里面通常有一个setup.exe和一个包含 INF 文件的文件夹。如果 setup.exe 安装失败或者装完版本不对可以手动指定 INF 安装。操作流程设备管理器→右键网卡→更新驱动程序→浏览我的电脑以查找驱动程序→让我从计算机上的可用驱动程序列表中选取→从磁盘安装→浏览到驱动包里的 INF 文件→选择对应的型号→下一步。这时候 Windows 会提示驱动签名问题如果驱动是 WHQL 签名的直接装没签名的需要临时禁用驱动签名强制。手动安装的好处是你能明确看到驱动版本号和日期不会出现装完不知道装了什么版本的情况。而且如果驱动包里有多个型号的 INF你可以精确选择匹配你硬件 ID 的那个。3.3 安装后验证别只看设备管理器有没有感叹号驱动装完设备管理器里没感叹号不代表就万事大吉了。我见过太多次设备正常但网速跑不满或者休眠唤醒后掉线的情况。验证步骤应该包括第一看驱动版本和日期。设备管理器→网卡属性→驱动程序确认版本号是你期望的日期不是 2006 年那种微软自带的远古版本。第二跑速度测试。用 iperf3 或者在线测速工具确认能跑到网卡标称速度的 90% 以上。千兆网卡应该能跑到 940Mbps 左右如果只有 100Mbps可能是网线问题或者驱动协商有问题。第三测试休眠唤醒。让电脑睡眠再唤醒看网卡是否正常识别。Realtek 网卡在这方面出问题的概率不低尤其是老版本驱动。第四看事件查看器。Windows 日志→系统筛选来源为e1i或者rt640x64的事件看有没有报错。4. Linux 环境下 r8168 与 r8169 的取舍为什么官方驱动更稳4.1 r8169 是内核自带但为什么还要换 r8168Linux 内核自带 r8169 驱动理论上支持 Realtek 千兆网卡。但实际用下来r8169 在 RTL8111/8168 系列上有几个老毛病大流量下丢包、网卡频繁 up/down、休眠唤醒后不识别。原因是 r8169 是社区逆向工程实现的驱动虽然能用但对某些硬件版本的兼容性不如 Realtek 官方维护的 r8168。r8168 是 Realtek 官方提供的驱动代码质量更高对自家芯片的支持更完善。缺点是它不在内核主线里需要单独编译安装。而且每次内核升级后r8168 模块都需要重新编译这就是 dkms 发挥作用的地方。判断当前用的是哪个驱动lspci -k | grep -A 3 -i ethernet输出里会显示 Kernel driver in use: r8169 或者 r8168。如果是 r8169 且你遇到了网络问题换 r8168 是值得尝试的。4.2 dkms 机制让驱动跟着内核自动重建dkmsDynamic Kernel Module Support是一个框架它能在内核升级时自动重新编译第三方内核模块。对于 r8168 这种不在主线内核里的驱动dkms 几乎是必选项。安装流程以 Ubuntu/Debian 为例sudo apt update sudo apt install dkms build-essential linux-headers-$(uname -r)然后下载 Realtek 官方 r8168 驱动源码包解压后进入目录sudo ./autorun.sh这个autorun.sh脚本会自动检测系统环境调用 dkms 注册模块编译并安装。安装完成后r8168 模块会被加载r8169 会被自动加入黑名单。验证是否生效lsmod | grep r8168 dmesg | grep r8168如果看到 r8168 已加载且 dmesg 里没有报错基本就成功了。4.3 手动编译安装的备选方案有些发行版或者特殊环境下autorun.sh可能跑不起来比如缺少某些依赖或者内核头文件路径不对。这时候可以手动编译tar -xjf r8168-8.052.01.tar.bz2 cd r8168-8.052.01 make clean make sudo make install sudo modprobe r8168手动编译的缺点是内核升级后需要重新执行make sudo make install不如 dkms 省心。但如果 dkms 安装失败手动编译至少能让你先把网卡跑起来。5. 那些年我踩过的驱动安装坑从代码 10 到休眠掉线5.1 设备管理器代码 10设备无法启动代码 10 是 Realtek 网卡最常见的错误之一意思是设备无法启动。原因可能是驱动损坏、资源冲突、或者电源管理设置有问题。我的排查顺序是先卸载驱动重启让 Windows 重新识别。如果还是代码 10进 BIOS 检查网卡是否被禁用或者 PCIe 插槽是否有资源冲突。再不行换一个 PCIe 插槽试试。最后才是重装驱动。有一次我遇到代码 10折腾半天发现是主板 BIOS 里的PCIe ASPM设置导致的关掉 ASPM 就正常了。这个经验告诉我驱动问题不一定在驱动本身硬件配置和电源管理也会影响。5.2 装完驱动没声音Realtek 音频驱动的干扰这个坑我在热搜词里看到了确实有人遇到。原因是 Realtek 的音频驱动和网卡驱动有时候会共用一些系统组件或者安装程序会互相干扰。更常见的情况是你装网卡驱动的时候安装程序捆绑了音频驱动把原来的音频驱动覆盖了导致声音输出设备消失。解决办法先卸载 Realtek 音频驱动重启让 Windows 装通用音频驱动确认声音恢复后再单独装网卡驱动。装网卡驱动的时候如果安装程序有自定义安装选项把音频相关的勾选去掉。5.3 休眠唤醒后网卡消失这个问题在笔记本上特别常见尤其是用了 Realtek 网卡的轻薄本。原因是 Windows 的快速启动和网卡的电源管理有冲突。解决办法设备管理器→网卡属性→电源管理→取消勾选允许计算机关闭此设备以节约电源。然后在控制面板→电源选项→选择电源按钮的功能→更改当前不可用的设置→取消勾选启用快速启动。如果还不行更新 BIOS 和网卡驱动到最新版本。Realtek 在新版驱动里修复了不少电源管理相关的问题。5.4 Linux 下 r8168 编译失败内核头文件缺失在 Linux 下编译 r8168 驱动最常见的错误是找不到内核头文件。原因是你的系统没装linux-headers包或者装的头文件版本和当前运行的内核版本不一致。检查方法uname -r dpkg -l | grep linux-headers确保linux-headers-$(uname -r)已安装。如果没装sudo apt install linux-headers-$(uname -r)如果还是编译失败看make的输出通常是某个函数签名变了需要打补丁。Realtek 官方驱动更新不算频繁新内核出来后有可能会编译不过这时候可以去社区找别人打好补丁的版本。6. 驱动装完之后验证、调优与长期维护6.1 用 ethtool 确认协商速率和双工模式Linux 下装完 r8168 驱动用 ethtool 确认网卡工作状态sudo ethtool eth0看 Speed 和 Duplex 两项。千兆网卡应该显示 1000Mb/s 和 Full。如果显示 100Mb/s检查网线是不是超五类以上水晶头有没有问题。如果显示 Half说明协商有问题可以尝试强制指定sudo ethtool -s eth0 speed 1000 duplex full autoneg onWindows 下也可以在网卡属性→高级→Speed Duplex 里手动指定。6.2 关闭不必要的节能特性Realtek 网卡驱动默认开启了一些节能特性比如Green Ethernet、Energy Efficient Ethernet。这些功能在台式机上可能没问题但在某些交换机环境下会导致掉线。如果遇到随机断网可以尝试关闭Windows网卡属性→高级→找到 Green Ethernet、Energy Efficient Ethernet、Ultra Low Power Mode 等选项→全部禁用。Linuxsudo ethtool --set-eee eth0 eee off6.3 驱动版本管理别盲目追新Realtek 的驱动版本号看着很唬人但新版不一定比旧版稳。我的经验是如果当前驱动用着没问题别没事找事去升级。尤其是生产环境升级驱动前先在测试机上跑一周。如果非要升级记住旧版本号万一新版有问题可以回滚。Windows 下可以用pnputil回滚Linux 下重新编译旧版本源码即可。7. 无线网卡的特殊处理RTL8811CU 和 RTL8812BU 的驱动安装7.1 Windows 下识别未知设备RTL8811CU 和 RTL8812BU 在 Windows 10 下经常被识别为未知设备或者802.11ac NIC没有官方驱动。解决办法是手动指定 INF 文件。你需要找到对应芯片的驱动包里面通常有netrtwlanu.inf或者rtwlanu.inf。设备管理器→未知设备→更新驱动→浏览→从磁盘安装→选择 INF。如果 INF 文件里没有你的硬件 ID需要手动添加。打开 INF 文件在[Realtek.NTamd64]段落下添加一行%RTL8811CU.DeviceDesc% RTL8811CU.ndi, USB\VID_0BDAPID_C811保存后重新安装。这个操作有风险改之前备份 INF 文件。7.2 Linux 下编译开源驱动Linux 下 RTL8811CU 和 RTL8812BU 有社区维护的开源驱动比如rtl8812au和rtl8811cu。安装流程git clone https://github.com/brektrou/rtl8821CU.git cd rtl8821CU make sudo make install sudo modprobe 8821cu编译过程中可能会遇到内核版本兼容问题需要根据报错信息调整代码。这类驱动更新比较活跃建议去 GitHub 找最近有提交的分支。7.3 USB 网卡的供电和散热问题USB 无线网卡还有一个容易被忽略的问题供电不足和散热。RTL8812BU 这类双频网卡功耗不低插在 USB 2.0 口上可能供电不够导致频繁掉线。尽量插 USB 3.0 口或者用带供电的 USB Hub。散热方面长时间高负载下网卡芯片温度能到 60 度以上加个小散热片能明显改善稳定性。8. 我的驱动维护清单与几个实用建议折腾了这么多次网络驱动我总结了一个自己的维护清单每次遇到网络问题就按这个顺序排查第一确认物理连接。网线、接口、指示灯这些最基础的东西先排除。第二看设备管理器或lspci/lsusb确认系统有没有识别到硬件。识别不到就是硬件或 BIOS 问题识别到了但有问题就是驱动问题。第三确认当前驱动版本和来源。Windows 下看驱动程序详细信息Linux 下看lsmod和ethtool -i。第四卸载旧驱动重启装新驱动。Windows 用pnputil清理Linux 用 dkms 管理。第五装完验证速度、稳定性、休眠唤醒。几个实用建议Realtek 网卡驱动尽量用官方或主板厂商提供的版本别用 Windows 自动更新的Linux 下 r8168 驱动配合 dkms 使用省心USB 无线网卡注意供电和散热驱动不是越新越好稳定优先。最后说一个我最近发现的技巧如果你有多台机器可以把验证过的驱动包和安装脚本放在一个 U 盘里做成一个驱动急救盘。下次再遇到网卡罢工插上 U 盘几分钟就能恢复比临时去下载驱动快得多。这个习惯帮我省了不少时间尤其是在没有网络的情况下——毕竟网卡坏了你也没法上网下载驱动。
返回列表