恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
老服务器网卡失联?BCM5709/5716/5722驱动安装与排错实战
首页
资讯中心
/
老服务器网卡失联?BCM5709/5716/5722驱动安装与排错实战
老服务器网卡失联?BCM5709/5716/5722驱动安装与排错实战
发布时间:2026/10/7 12:49:54
简介博通 BCM5709、BCM5716 与 BCM5722 网卡驱动整合包面向服务器、工作站及企业级网络设备运维人员解决三款博通网卡在操作系统中的驱动识别、安装升级与故障排查问题。三款型号分别覆盖千兆高性能、双口冗余与万兆以太网控制器适配数据中心和虚拟化集群场景。压缩包共含 306 个文件大小约 179.6MB其中 exe、msi、rpm 为跨平台安装程序sys、inf 为驱动核心txt、htm、pdf 提供安装与版本说明。已有 2164 人浏览学习适合系统管理员、运维工程师及需要为上述网卡重装或升级驱动的用户。通过该包可获取从基础驱动、固件升级到管理诊断的完整组件便于快速部署与排障保障网络链路稳定高效。1. 博通 BCM5709/5716/5722 网卡驱动老服务器升级系统时最先卡住的那道坎一台好好的戴尔 R710装了十年 Windows Server 2008 一直没动过你心血来潮想把它升级到 Windows Server 2019。系统装完进桌面发现网络连接里空空如也设备管理器里一块“以太网控制器”顶着黄色感叹号——BCM5709博通 NetXtreme II 系列里的老将。BCM5709、BCM5716、BCM5722 这三个型号的驱动几乎存在于每一台 2010 年前后的品牌服务器里也是重装系统、迁移虚拟化、硬盘克隆之后最常见的“失联”原因。这篇笔记会从硬件识别讲到 Windows/Linux 双侧安装最后把签名校验、账号下载、队列调优这些坑一次性填平。适合正在折腾旧服务器、或者接手了一台没有驱动盘的戴尔/惠普二手设备的运维。2. 先认清硬件设备 ID 和驱动包里那些文件各管什么2.1 看硬件 ID 认型号VEN_14E4 后面那几位是重点驱动装不上第一件事不是去找驱动而是先确认你手里这张网卡到底是 BCM5709 还是 BCM5716。三个型号外观几乎一样芯片丝印也可能被散热片盖住唯一靠谱的识别方式是设备管理器里的硬件 ID。Windows 下按右键点击那个带感叹号的设备选“属性 → 详细信息 → 硬件 ID”会看到类似PCI\VEN_14E4DEV_163BSUBSYS_02831028 PCI\VEN_14E4DEV_163BREV_10其中VEN_14E4固定表示博通DEV_后面四位是设备 ID。BCM5709 常见为163B也有早期的163ABCM5716 是163CBCM5722 是163D。子系统的SUBSYS_02831028里1028是戴尔的厂商代码惠普是0x103C这个信息在下载驱动时很有用——品牌机官网会按机型提供定制版驱动不一定非要跑到博通官网去翻。注意同一批芯片在不同服务器上设备 ID 完全相同但子系统 ID 不同个别 OEM 板卡会因此拒绝安装公版驱动报“找不到对应硬件”。遇到这种情况直接记下 SUBSYS去 Dell/HP 支持页按服务标签搜驱动。Linux 下确认更简单lspci直接输出lspci | grep -i ethernet输出形式是Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme II BCM5709 Gigabit Ethernet (rev 20)型号写在名称里。如果系统里网卡还没被驱动lspci -nn看到的[14e4:163b]就是 PCI 厂商号和设备号和 Windows 硬件 ID 对应。2.2 解压驱动包inf、sys、dll 三件套的分工标题里的“网卡驱动程序.zip”解压后你会看到一堆按操作系统分好的子目录通常有Win7、Win8、Server2008、Win10之类的名字也可能直接平铺几个文件。一个 Windows 网卡驱动包里真正起作用的是两三个文件.inf是安装脚本纯文本告诉系统这个驱动支持哪些硬件 ID、要复制哪些文件、注册哪些服务.sys是真正的内核驱动本体比如b57nd60x.sys是 NDIS 6 驱动b57nd65x.sys是面向 Windows 10 / Server 2016 以后系统的 NDIS 6.5 驱动.dll里通常是厂商的配置面板或安装辅助程序。还有一个b57.pdb之类调试符号文件生产环境用不上。判断你手上的包是 32 位还是 64 位不能只看文件夹名字。打开.inf文件搜索CatalogFile或Signature段落观察文件名里有没有x64、amd64字样。.sys文件也可以右键看属性里的文件版本和“目标平台”。把这个事情搞清楚能省掉大量“装完驱动蓝屏”的血泪时间。2.3 为什么这三块卡经常打包在一起BCM5709、5716、5722 在博通产品线里属于 NetXtreme II 家族共享同一套驱动架构和大部分寄存器逻辑。对驱动包来说它们往往共用一个.inf文件只是硬件 ID 列表里多列几行比如%DEV_163B% BCM57XX.ndi, PCI\VEN_14E4DEV_163B下面再列出163C、163D。所以你在官网看到的下载页面经常是“NetXtreme II Driver Source”或者一个压缩包同时写明BCM570957165722下载一次就能覆盖整批服务器——这也正是标题里三个型号写在同一个 zip 文件名里的原因不是打包者偷懒而是驱动确实共源。3. Windows 下把驱动装进系统三条路从手工到自动化排开3.1 设备管理器手动安装过程最慢但定位问题最直接设备管理器里右键点网卡设备选“更新驱动程序 → 浏览我的电脑以查找驱动程序 → 让我从计算机上的可用驱动程序列表中选取”。这一步要先选“网络适配器”然后点“从磁盘安装”浏览到你解压后的驱动目录选中对应的.inf文件。确认对话框里列出的设备描述是否和你的网卡型号一致。不一致说明你选的驱动目录不对——常见情况是驱动包里同时带旧版 NetXtreme 和新版 NetXtreme II 两套驱动描述文字长得像选错也能装上但设备可能只能跑百兆或者 RSS 多队列功能缺失。如果硬盘上有多个版本解压目录建议先把不相关的目录临时移走减少误选的概率。手动安装出现“数据无效”或“指定的位置不包含有关硬件的信息”九成是路径指错选到了子目录但没有指向.inf所在层级。注意不要在选择cat或sys文件上纠结Windows 认的是.inf。3.2 用 pnputil 命令行预装驱动批量装机的地基批量部署几十台服务器不可能每台都去点设备管理器。pnputil是 Windows 自带的驱动预装命令把驱动加进“驱动程序存储区”之后设备出现就能被自动识别。# 将当前目录下的 b57nd60x.inf 加入驱动库并安装到匹配的设备 pnputil /add-driver b57nd60x.inf /install # 递归处理目录下所有 inf适合子目录多的驱动包 pnputil /add-driver D:\drivers\broadcom\ /subdirs /install # 列出所有第三方驱动确认安装结果 pnputil /enum-drivers参数说明/add-driver后面可以跟单个.inf文件路径也可以跟目录/subdirs让命令递归扫描子目录强烈建议加上因为博通的驱动包解压后往往嵌套好几层/install是遇到匹配设备时立即装好不加这个参数只入库存不生效。/enum-drivers输出里能看到发布名称比如oem0.inf这个编号在卸载驱动时要用到。注意Windows 7 / Server 2008 R2 的 pnputil 语法和 Win10 以后不完全一样老系统用pnputil -i -a D:\xxx.inf不带斜杠参数。脚本要在多版本系统间通用建议按系统版本分流。装完以后确认网卡是否被识别可以看Get-NetAdapterGet-NetAdapter | Format-Table Name, InterfaceDescription, Status状态Up且描述里是Broadcom NetXtreme II BCM5709说明驱动工作正常。如果设备管理器里感叹号消失但Status还是Disabled去Enable-NetAdapter -Name 以太网拉起来即可。3.3 老系统到新系统Server 2008 到 2022 的驱动目录差异博通的驱动 zip 里通常按操作系统分了目录原因在于 NDIS 版本。Server 2008 / Vista 是 NDIS 6.0Win7 / Server 2008 R2 是 NDIS 6.1Win10 / Server 2016 是 NDIS 6.5 以上驱动模型有变化不能拿新驱动直接喂老系统。驱动目录名一般写得很直白但偶尔会写Win8实际上覆盖到 Server 2012写Win10覆盖到 Server 2016/2019/2022这个对应关系要在安装前确认一下。判断一个驱动能不能在目标系统上用的另一个办法是看.inf文件里的[Manufacturer]段和[Models]段的注释写着; Windows 10 x64的段落就是给新系统准备的。经验之谈老服务器如果继续跑 2008优先用当年随服务器附带的光盘驱动或 OEM 定制版不要强上新版反过来新系统用老驱动倒是常有的事性能虽然吃不满但至少不蓝屏。翻车往往出在把新版驱动硬装到 XP/2003 上直接提示“找不到入口点”。4. Linux 下的情况内核自带 bnx2 和源码编译选哪条路4.1 先查 bnx2 模块很多发行版根本不用装驱动BCM5709/5716/5722 在 Linux 下对应的是bnx2内核模块而不是tg3tg3 负责的是博通 NetXtreme I 那一代比如 5700/5721。这两个模块名字长得像功能边界却完全不同排查时先分清楚。多数现代发行版的内核都自带 bnx2系统装完网卡直接就是通的不需要任何额外驱动。# 查看 bnx2 模块是否已加载 lsmod | grep bnx2 # 查看网卡驱动名称和固件版本 ethtool -i eth0ethtool -i输出里driver: bnx2表示已由内核驱动接管version字段是驱动版本不是固件版本。如果输出报错或者在lspci里看到网卡但ethtool说找不到设备再往下走。如果内核确实没有这个模块才需要回到源码编译路线。还有一种情况是模块被装进了 kernel-modules-extra 包里在最小化安装的 CentOS/RHEL 上常见。这时直接yum install kernel-modules-extra或apt install linux-modules-extra-$(uname -r)比编译省事得多。4.2 编译安装 netxtreme2 源码包一条完整的命令流程遇到定制内核、老发行版、或者需要改编译参数比如启用调试时才需要从博通官网或 OEM 站下载源码包。源码包解压后是netxtreme2-x.x.x目录里面分src源码、firmware固件二进制等子目录。# 1. 准备工具链 yum install -y gcc make kernel-devel kernel-headers # Ubuntu/Debian 用: apt install -y build-essential linux-headers-$(uname -r) # 2. 解压源码包进入 src 目录 tar xzf NetXtreme2-7.14.25.tar.gz cd NetXtreme2-7.14.25/src # 3. 清理旧编译产物开始编译 make clean make # 4. 安装模块到内核模块目录 make install逻辑说明make会读取源码里的 Makefile依据当前内核头文件生成bnx2.ko等模块make install把编译好的.ko文件复制到/lib/modules/$(uname -r)/updates/下并执行depmod刷新模块依赖。这三步缺一不可跳过depmod会导致重启后模块找不到。参数注意事项如果内核头文件路径不是默认的/usr/src/kernels/需要给 Makefile 传KVER变量make KVER4.18.0-xxx。老内核2.6.x还需要同时装ncurses-devel菜单配置依赖和elfutils-libelf-devel模块符号解析否则编译会在后半段报Cannot find orc.h或elf.h缺失。编译过程中如果报 “Kernel source tree not found”本质是kernel-devel版本和你uname -r的版本对不上不是源码包的问题。这一条很长一段时间里被运维归为“玄学”实际上比对两个版本号就行。建议编译完成后保留源码目录在/usr/src下别删后面 DKMS 和排查都会用到。4.3 DKMS 注册和网口命名重启后模块丢了怎么办源码编译安装的模块遇到内核升级就丢——新内核的/lib/modules/下没有你编译的bnx2.ko。DKMS 是解决这个问题的标准方案它的作用是每次内核更新后自动重新编译第三方模块。# 把源码包注册到 DKMS dkms add -m netxtreme2 -v 7.14.25 # 为当前内核构建并安装 dkms build -m netxtreme2 -v 7.14.25 dkms install -m netxtreme2 -v 7.14.25dkms add需要源码目录里有dkms.conf描述文件没有就手动建一个核心两行是PACKAGE_NAMEnetxtreme2和PACKAGE_VERSION7.14.25。执行后dkms status能看到当前注册状态installed表示已可用。另一个常见的重启问题不是模块丢失而是网口名变了。老系统里网卡叫eth0换了新内核后 systemd 按总线位置重新命名可能变成enp2s0f0或eno1。脚本里写死eth0的地方全部失联。# 查看所有网络接口和 MAC 地址对应关系 ip link show # 给旧名字创建 udev 规则 echo SUBSYSTEMnet, ACTIONadd, ATTR{address}xx:xx:xx:xx:xx:xx, NAMEeth0 /etc/udev/rules.d/70-net.rules用实际网卡 MAC 替换上面的xx:xx:xx:xx:xx:xx重启后 udev 会把它改回eth0。需要注意的是这条规则里系统里所有网卡 MAC 都必须唯一存在如果多网卡服务器写漏了一张那张卡会直接变成随机名。5. 驱动安装避坑指南下载、签名、编译三大拦路虎5.1 Broadcom 官网账号收不到验证码下载驱动的第一道坎这是国内运维遇到最多的问题从博通官网支持中心下载驱动注册账号时验证邮件死活收不到。现象是提交注册后提示已发送邮件但 QQ 邮箱、163 邮箱等几分钟过去了邮箱里空空如也甚至垃圾箱也翻遍了。原因基本有三类博通的验证邮件发件域名通常是broadcom.com的系统邮件被国内邮箱服务商判定为垃圾营销流量直接丢弃注册时用了免费邮箱后缀而博通的风控策略对企业邮箱更友好以及注册过程中需要填写公司信息缺了字段触发人工审核账号处于“已创建但未激活”状态。解决路径按性价比排序第一先用公司域名邮箱重新注册收件概率显著高于免费邮箱第二去当年服务器的品牌官网戴尔支持站、惠普支持站按服务标签下载 OEM 定制版驱动不需要博通账号第三去数百个第三方驱动站下载这是下策——下载完了必须核对文件哈希或数字签名因为第三方站的包经常被二次打包塞进旧版本或推广程序。我个人的习惯是能走 OEM 站就走 OEM 站博通官方门户用来查文档和固件不用来抢驱动。5.2 驱动签名校验失败老 Windows 装新驱动的经典报错Windows Server 2008 R2 装 2016 版驱动或反过来 Win10 系统上装 Server 2008 时期的旧驱动都容易弹“数字签名”错误。现象是设备管理器里更新驱动时提示“此驱动程序已被阻止加载”或者“无法验证此驱动程序软件的发布者”。原因是驱动包里的.cat目录文件包含的签名证书不被当前系统的信任链认可。老驱动是 SHA-1 签名的新系统默认禁用了 SHA-1新驱动是 SHA-256 签名的XP / Server 2003 根本读不了。解决按“风险从低到高”排列首选去找该驱动有没有 WHQL 重签名版本博通官网对主流系统的驱动基本都有签名其次旧系统上临时禁用驱动签名校验Windows 7 / 2008 R2 开机按 F8选“禁用驱动程序签名强制”这一招只能坚持到下次重启定位验证够了第三命令行永久开测试签名bcdedit /set testsigning on这个操作会降低系统整体安全性只建议在隔离环境或测试机上用。生产环境遇到签名问题我的建议是停止折腾换一条下载路径拿对的版本而不是绕过签名。5.3 Linux 编译失败内核头文件缺失是头号嫌疑人bnx2 源码包编译失败百分之六十的情况出在kernel-devel版本不匹配剩下的分散在gcc版本过老、make版本过新、源码不认当前内核 API 等几个方向。现象一make一开始就报linux/version.h: No such file or directory原因是/lib/modules/$(uname -r)/build链接指向的内核头文件目录不存在解决方式就是按 4.2 节装齐kernel-devel并核对版本。现象二编译到一半报一堆error: implicit declaration of function ...原因是源码包太老不认识新内核里改名的 API。处理办法不是去改代码而是去查该系列驱动有没有更新的补丁包。内核 5.x 之后博通基本停止维护独立 bnx2 源码包建议直接回归内核自带模块。现象三make install报Cant read private signature或模块签名失败这是启用了 Secure Boot 的系统在编译第三方模块时的常见拦路虎。解决是给模块签名或用mokutil导入自己的 Machine Owner Key这个流程比较长新手建议直接在 BIOS 里临时关 Secure Boot 验证驱动能不能跑再决定要不要做签名。5.4 zip 解压乱码和驱动包损坏老资料站下载的文件不省心标题里的 zip 包听起来像是国内网盘或论坛流传的打包文件这种文件常常有额外的坑。现象是解压后文件名乱码或者安装时报“INF 文件中指定的服务不存在”。乱码通常是 zip 里文件名用了 GBK 编码而 Windows 10 自带的资源管理器默认按 UTF-8 解压文件名就花掉了驱动本身不受影响但目录名错了容易找错文件。解决方式是用 7-Zip 打开 zip在选项里把“文件名编码”设为简体中文GBK再解压或者在解压前先看 zip 内的列表。文件损坏则要小心现象是解压到一半报“CRC 失败”或者安装到一半提示“系统找不到指定的文件”。处理方法是重下同时校验下载完的 zip 哈希——网上流传的老驱动包经常是被改过的。提示任何驱动包解压后第一件事打开数字签名查看“签名人姓名”博通官方驱动的签名主体一定包含 Broadcom 字样。签名无效的直接丢回收站这一步能过滤掉九成带毒驱动。6. 驱动装好之后验证、备份、离线注入一条龙6.1 用命令确认驱动真的在工作两侧系统的核对清单Windows 侧双命令确认Get-NetAdapter | Select Name, InterfaceDescription, DriverVersion, LinkSpeed Get-WmiObject Win32_NetworkAdapter | Where {$_.Manufacturer -like *Broadcom*} | Select Name, DeviceID, Speed第一行看的是驱动状态和协商速率第二行看物理设备属性。记得顺便跑一次Get-NetAdapterAdvancedProperty -Name 以太网把 RSS接收端缩放、Jumbo Packet、TCP/UDP Checksum Offload 这几项列出来——默认值一般是开启的如果发现被关闭多半是驱动安装时走了兼容模式回设备管理器里“高级”标签页打开。Linux 侧一条命令看透驱动和队列ethtool -i eno1 ethtool eno1 | grep -E Speed|Duplex ethtool -l eno1第三条-l显示当前和最大队列数。BCM5709 在 Linux 下一般有 8 个 RX/TX 队列irqbalance 服务会自动把中断铺到不同 CPU。如果显示Current hardware parameters: 1说明队列数过低用ethtool -L eno1 combined 8提上来但这个设置在重启后失效要落实到配置文件或 NetworkManager dispatcher 脚本里。6.2 驱动备份和离线注入新装系统用 DISM 一劳永逸把驱动 zip 解压目录整个拷贝到移动硬盘或部署共享里是机房老手的基本习惯。更进阶的做法是把驱动塞进安装镜像让系统第一次开机就有网。Windows 部署环境用 DISM 完成。# 挂载 install.wim 后离线添加驱动 dism /Mount-Image /ImageFile:D:\server2019\sources\install.wim /Index:1 /MountDir:C:\mount # 递归注入整个驱动目录 dism /Image:C:\mount /Add-Driver /Driver:D:\drivers\broadcom\ /Recurse # 保存并卸载镜像 dism /Unmount-Image /MountDir:C:\mount /Commit参数说明/Index:1指 WIM 文件里的第一个镜像版本多版本 WIM 要注意 Index 对应的系统版本/Recurse必须带驱动目录里嵌套的子目录才会全被扫进去。/Commit是写回更改忘掉这个等于没做。6.3 两个值得做的参数调整和一条安全底线驱动稳定后老网卡通常还做两件事Windows 下确认“高级”页里 RSS 已启用并把流控制Flow Control设为 RX/TX Enabled——这两个参数直接影响多队列吞吐Linux 下配合 irqbalance 调好队列映射批量业务或大文件拷贝时能明显感受到 CPU0 不再被打满。固件的事则要克制。BCM5709 系列网卡支持通过博通 Flash 工具更新 NVRAM 和 Boot AgentPXE 引导 ROM但这属于“能跑就别动”的范畴。固件升级失败会让网卡变砖而且这些老平台固件资源已经很难找渠道验证完整性。我自己在机房里的底线是驱动能识别、速率能协商到千兆、多队列正常就绝不去碰固件。希望这篇笔记能帮你少走两趟弯路——驱动这种东西看似小事断网的时候它就是最急的事。本文还有配套的精品资源点击获取