ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

MacBook Pro 2016/2017 装 Win10 网卡驱动排障

MacBook Pro 2016/2017 装 Win10 网卡驱动排障

简介:面向在2015—2017款MacBook Pro上通过Boot Camp运行Windows 10、遇到无线网卡无法识别或WiFi连接异常的用户,这份驱动合集聚焦Broadcom无线网卡在Windows环境下的兼容性问题,适合需要补齐跨平台系统驱动、排查网络适配器故障的读者参考。压缩包共34个文件、约13.24MB,主体由dll、sys、inf、cat等驱动核心文件构成,并配有exe安装程序、xml配置及多语言txt许可说明,目录用途较明确,便于按文件类型定位所需组件。现有1316人学习或下载,说明该问题在MacBook Pro装Windows 10场景中具有一定普遍性。其价值在于提供与对应机型匹配的无线网卡驱动集合,可帮助读者核对驱动版本、理解inf/cat/sys等文件的协作关系,并为无线网络适配器异常时的排查与修复提供可参考的文件依据。

1. MacBook Pro 2016/2017 装 Windows 10:卡在网卡驱动那一步的人比想象中多

给 MacBook Pro 2016/2017 装 Windows 10,十台里有八台会停在同一个画面:系统装完、桌面出来了,右下角网络图标却是个红叉,设备管理器里「网络控制器」顶着黄色感叹号。这个问题跟动手能力关系不大,有人一晚上重装三遍系统,最后还是切回 macOS 去下驱动。归根结底,这类机器的无线网卡直接焊在主板上,Windows 10 自带的通用驱动库只当它是「未知设备」,既不认型号,也点不亮射频。

网卡驱动一旦缺失,后面的事都做不了:微信登不上、驱动装不了、系统更新拉不下来,你会被逼着用 U 盘在两种系统之间反复搬运文件。所以这套环境的关键从来不是「装 Windows」,而是「装完之后怎么让网卡先工作起来」。这篇记录对应的是把 2016/2017 两代机型的网络相关驱动单独整理出来的那个包,适合手上有一台吃灰的老机器、想把它改成一台能上网的备用办公本的人。

2. 装前环境核对:机型代号、Windows 10 版本和驱动包三样先对齐

动手之前先别急着插 U 盘。这代机器跨了两个年份、三个尺寸、带不带 Touch Bar 的差异,网卡和蓝牙模块的组合不完全一样,装错包的情况我见过不止一次,表现就是驱动装完了设备管理器里照样有感叹号。花十分钟把下面三件事核对清楚,能省掉后面两小时的反复。

2.1 用型号标识符确认自己属于哪一代

在 macOS 下点左上角苹果菜单 →「关于本机」→「系统报告」→「硬件概览」,第一行「型号标识符」就是答案。2016/2017 这两代常见的是 MacBookPro13,1、13,2、13,3 和 MacBookPro14,1、14,2、14,3 这六个,前三位是年款,后一位区分尺寸和是否带 Touch Bar。如果手头机器已经装了 Windows,那就看设备管理器里主板或 SMBIOS 的信息,或者直接查机身底部的型号字样。

为什么要精确到这一位?因为 13 寸和 15 寸的无线网卡虽然同属一个芯片系列,但子系统 ID 不同,驱动 inf 里列出的匹配项是按子系统 ID 走的。inf 里没列你的 ID,强行装也能装进去,只是设备起来之后状态可能是「该设备无法启动」。我一般会把这个标识符抄在记事本上,后面挑 inf 的时候对照着看。

顺手把「系统报告」里的「Wi-Fi」和「蓝牙」两栏也截个图,能看到芯片型号和固件版本。这张图在 Windows 那边排查对不上号时非常有用——尤其是你怀疑自己装错了包的时候,直接比对芯片型号比猜快得多。

2.2 Windows 10 版本选哪个:1809 之后的差异比你想的大

这代机器官方支持的是 Windows 10,具体到版本号,我的建议是优先 1909 或 21H2 的 64 位专业版,22H2 也能用,但要多做一步收尾。原因是 Windows 10 从 2004 开始调整了驱动安装的优先级,系统会更多地从 Windows Update 拉取厂商驱动,而这代机器的无线网卡驱动在更新库里有一个微软自己签名的旧版本,它会覆盖掉你手工装的版本——你会遇到「刚装好能用,重启一次又不行了」这种玄学现象。

Windows 10 版本与这批驱动的适配情况建议
1809 / 1903兼容性最好,系统不会主动抢驱动首选
1909 / 20H2基本可用,需要在组策略里关掉驱动更新首选
21H2 / 22H2可以装,但要手动禁用驱动自动更新可用,需收尾
Windows 11不在支持范围内,联想的机型限制也不允许不建议

安装介质就用微软官方的媒体创建工具做一个 64 位 U 盘,容量 8G 起步,格式化成 FAT32。这里有一个和网卡驱动直接相关的坑:全新安装 Windows 10 时,安装程序走到「让我们为你连接到网络」这一步会强制要求联网,而这代机器此刻没有网卡驱动,于是你就卡死了。解决办法是在这一步点「我没有 Internet 连接」→「继续执行受限设置」,进桌面之后再装驱动。如果连这个选项都没出现,按 Shift+F10 调出命令行,输入oobe\bypassnro回车,机器会重启并给出跳过选项。

2.3 装之前把「后悔药」准备好

我吃过一次亏:驱动装到一半蓝屏,重启之后 macOS 分区还在但启动项乱了,那天晚上花了三个小时才把两个系统都救回来。所以现在固定流程是三步。

第一步,macOS 下用时间机器做一次完整备份,外接硬盘或网络位置都行,确保能回滚到当前状态。第二步,准备一个 macOS 的 U 盘启动盘,用createinstallmedia做,容量 16G。这一步看着多余,但当你把启动项搞乱、macOS 分区被误操作之后,它就是唯一能救命的东西。第三步,把这个驱动包单独拷一份到一个 FAT32 格式的 U 盘上——注意必须是 FAT32 或 exFAT,NTFS 在 macOS 下默认只读,你没法往里写。

提示:驱动包解压之后路径里不要带中文和空格,Windows 的 pnputil 对含空格的路径容错很差,出问题时报的错还特别含糊。

3. 解压与驱动识别:从压缩包里挑出真正要装的那几个 inf

拿到包的第一步不是双击安装,而是先看清楚里面有什么。这批驱动是从官方支持组件里单独摘出来的网络部分,按厂商和功能分了子目录,直接对着 exe 双击很可能装到一半提示「找不到匹配的设备」。正确做法是先让系统告诉你它缺什么,再从包里找对应的 inf。

3.1 用设备管理器锁定硬件 ID

Windows 这边,右键开始菜单 →「设备管理器」,展开「其他设备」或者「网络适配器」,找到带黄色感叹号的那一项,通常是「网络控制器」和「蓝牙外围设备」两条。右键 →「属性」→「详细信息」选项卡 →「属性」下拉里选「硬件 Id」,会看到类似PCI\VEN_14E4&DEV_43BA&SUBSYS_xxxx&REV_03这样一串。

VEN_14E4是厂商代码,DEV_43BA是设备代码,SUBSYS后面那四位数就是子系统 ID——这一串才是挑 inf 的关键。这代 13 寸和 15 寸在这四位数上不一样,同一个大包里的 inf 未必都覆盖到。命令行方式更省事:

# 列出所有网络类设备,看状态列里带 Error 的那几条 Get-PnpDevice -Class Net | Format-Table -AutoSize Status, FriendlyName, InstanceId # 单独把某个设备的硬件 ID 全捞出来,替换 InstanceId 为你实际看到的 Get-PnpDeviceProperty -InstanceId "PCI\VEN_14E4&DEV_43BA&SUBSYS_00000000&REV_03" -KeyName DEVPKEY_Device_HardwareIds

Get-PnpDevice -Class Net只筛网络类,避免在一堆声卡、显卡里翻。-AutoSize是为了让长名字不被截断。第二条命令里的DEVPKEY_Device_HardwareIds是设备属性键,返回的是完整硬件 ID 列表,一条设备可能对应好几个 ID(PCI 的、兼容 ID 的),挑VEN_开头那条看就行。

拿到 ID 之后去包里搜:用文本编辑器打开候选的 inf,Ctrl+F 搜SUBSYS,看有没有你这一串。有,说明这个 inf 是对的;没有,说明要么包不完整,要么你选错了子目录。

3.2 驱动包的目录分工

解压之后大致是这样几个部分,理解分工能让你少点很多次「下一步」:

  • 无线网卡目录:放的是 802.11ac 网卡的 Windows 驱动,核心文件是一个.inf加若干.sys、.cat,通常还有 32 位和 64 位两套。这代机器只装 64 位那套。
  • 蓝牙目录:蓝牙模块是走 USB 总线挂上去的,inf 名字和无线网卡完全不同,别混。
  • 有线网卡目录:这代机器没有 RJ45 口,这部分是给 USB-C 转以太网转接器用的,芯片可能是 ASIX 或 Realtek,看你用的什么转接器。
  • 公共组件目录:一些 Apple 自己的系统服务和总线驱动,理论上装完无线网卡再装它们才有效。

我的习惯是先只装无线网卡,能上网了再回来装剩下的。原因是只要网络通了,其他的都可以在线补;反过来先装一堆上层组件,网卡没起来,后面全是白费。

注意:整个解压目录不要放在「下载」文件夹里。Windows 的「下载」有自动清理策略,某些精简版系统会把超过 30 天没动过的文件移走,等你哪天要重装驱动时发现文件没了。

3.3 用 pnputil 做离线的驱动注入

图形界面点「更新驱动程序」的方式最直观,但一台一台点太慢,而且有些 inf 在图形界面里会因为签名问题被拦下来。用 pnputil 走命令行更干净,出问题也能看到具体报错。以管理员身份开 PowerShell:

# 把包解到一个不含空格和中文的固定路径 Expand-Archive -Path "D:\MBP1617WIN10NET.zip" -DestinationPath "C:\Drivers\MBP1617" -Force # 先列出所有 inf,确认路径对不对 Get-ChildItem -Path "C:\Drivers\MBP1617" -Recurse -Filter *.inf | Select-Object FullName, Length # 把无线网卡那条单独加到驱动仓库并尝试安装 pnputil /add-driver "C:\Drivers\MBP1617\Wireless\x64\*.inf" /install # 装完看仓库里现在有哪些第三方驱动 pnputil /enum-drivers

Expand-Archive的-Force是覆盖同名目录,重装的时候不用先手动删。-Filter *.inf配合-Recurse能把所有子目录里的 inf 都列出来,长度那一列可以帮你判断是不是空的占位文件。pnputil /add-driver后面跟路径,支持通配符,但只对同一层目录生效,所以我把*.inf放在具体的 x64 子目录下;/install表示加进仓库后立刻尝试匹配设备,不加这个参数就只是放进去不装。

/enum-drivers的输出里重点看「发布名称」那一列,形如oem12.inf。这个编号是系统分配的,重装驱动之前如果想彻底清干净,得用pnputil /delete-driver oem12.inf /uninstall /force按这个编号删。我遇到过装了三遍不同版本、仓库里堆了四个同名驱动互相打架的情况,就是靠这个命令清出来的。

4. 安装与配置:无线、蓝牙、有线三条线分开走

三块硬件的处理顺序有讲究。无线网卡决定你能不能上网,优先;蓝牙和无线共用 2.4G 频段的天线,装完无线再装蓝牙,能避免射频抢占导致的掉线;有线网卡是兜底手段,放在最后,但别省——万一无线驱动反复翻车,一根转接线能让你保持在线。

4.1 无线网卡的手动更新驱动流程

设备管理器里右键那个带感叹号的「网络控制器」→「更新驱动程序」→「浏览我的电脑以查找驱动程序」→「让我从计算机上的可用驱动程序列表中选取」→「从磁盘安装」→ 浏览到C:\Drivers\MBP1617\Wireless\x64\下的具体那个 inf。这一步不要用「浏览文件夹」的方式让它自己搜,那会把整个目录下所有 inf 都试一遍,试错的顺序不受你控制。

装完立刻验证三件事,缺一不可:

# 一看状态,应该是 OK 而不是 Error Get-PnpDevice -Class Net | Format-Table -AutoSize Status, FriendlyName # 二看驱动信息,确认加载的是你刚装的那个版本 netsh wlan show drivers # 三看接口,射频是否打开、连的是哪个频段 netsh wlan show interfaces

netsh wlan show drivers输出里重点看「驱动程序版本」和「无线电类型」两行。无线电类型应该显示 802.11ac 之类的,如果写的是「未知」或者干脆没有这一行,说明驱动加载了但射频没起来,通常的原因是天线被禁用了或者电源管理把设备关了。show interfaces里的「状态」应该是「已连接」,「无线电状态」是「硬件打开」,两个都对才说明链路真正通了。

如果设备管理器里显示正常、但show drivers报「无线自动配置服务未运行」,那就开服务:

# WLAN AutoConfig 是无线连接的管理服务,被精简版系统优化掉的情况很常见 Set-Service -Name WlanSvc -StartupType Automatic Start-Service -Name WlanSvc Get-Service -Name WlanSvc

-StartupType Automatic是为了让它随系统启动,光 Start 一次重启就没了。第三行是确认,状态应该是 Running。

4.2 蓝牙模块和 WiFi 的共存设置

这台机器的蓝牙和无线共享天线,2.4GHz 频段上两者会互相干扰。表现是接上蓝牙鼠标之后无线网速掉一半、或者蓝牙鼠标开始卡顿。装完蓝牙驱动后要做两件事。

第一件,在设备管理器里找到蓝牙无线电,属性 →「高级」→ 如果有「蓝牙协作」或者「共存模式」之类的选项,勾上。不同驱动版本叫法不一样,有就开,没有说明这版驱动没暴露这个开关。

第二件,把无线的首选频段挪到 5GHz。在路由器上分离 2.4G 和 5G 的 SSID,让机器只连 5G 那个。netsh wlan show interfaces输出里的「信号」和「无线电类型」能看出当前连的频段,802.11ac 一定是 5G,802.11n 可能是 2.4G 也可能是 5G,看「信道」那一行,1-13 是 2.4G,36 以上是 5G。

蓝牙驱动装不上还有一种情况:设备管理器里蓝牙设备显示「代码 43」。这多半是 USB 选择性暂停导致的——系统为了省电把蓝牙的 USB 端口挂起了,唤醒失败。这个在 4.4 里一起处理。

4.3 USB-C 转以太网和雷电扩展卡的驱动确认

这代机器砍掉了所有传统接口,有线网只能走 USB-C 转接。转接器芯片主流是 ASIX AX88179 和 Realtek RTL8153 两派,Windows 10 对这两个系列自带的通用驱动能识别,但用久了会断流。包里带了对应的驱动的话,就按 4.1 的流程手动指定一遍 inf。

判断当前用的是不是通用驱动:设备管理器里找到那个网卡,属性 →「驱动程序」→「驱动程序日期」和「提供商」。如果提供商写的是「Microsoft」、日期很老,那就是通用驱动,换成包里的厂商版本能明显改善稳定性。

雷电接口本身不需要额外驱动,Windows 10 1903 之后内置了雷电控制器驱动。但雷电转接的有线网卡、雷电转 HDMI 这类设备,走的是 PCIe 通道,设备管理器里会单独列出。它们不在这批驱动的处理范围内,识别不了就说明转接器本身有问题,换一个试。

4.4 电源管理和快速启动:两个把驱动搞"丢"的开关

驱动装完能用、睡一觉起来又没了,这个现象我见过太多次,根源几乎都在这两个地方。

第一个是网卡的电源管理。设备管理器 → 无线网卡属性 →「电源管理」选项卡 → 取消勾选「允许计算机关闭此设备以节约电源」。这代机器的网卡在低功耗状态下的唤醒握手做得不好,系统把它关掉之后叫不醒,表现就是设备管理器里设备还在但状态是「此设备当前不可用」。

第二个是 Windows 的快速启动。控制面板 →「电源选项」→「选择电源按钮的功能」→「更改当前不可用的设置」→ 取消「启用快速启动」。快速启动的本质是关机时把内核态内存镜像存到硬盘,开机时恢复。驱动如果在这期间状态没保存好,恢复出来就是个半死的设备。命令行也能关:

# 关闭休眠,快速启动依赖它,关掉休眠等于一并把快速启动关了 powercfg /hibernate off # 确认当前快速启动的状态,输出里 HiberbootEnabled 为 0 表示已关 reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /v HiberbootEnabled

powercfg /hibernate off会同时删除休眠文件和关闭快速启动,代价是失去休眠功能——对一台本来就长期插电的备用本来说不亏。第二条查注册表,HiberbootEnabled为 1 表示快速启动还开着,需要改成 0 并重启。

注意:关掉快速启动之后,开机会比以前慢个几秒到十几秒,这是正常的,不是系统坏了。

5. 常见问题排查:装完没网、代码 10、睡醒掉线怎么救

这一章是踩坑记录,都是真机上一次一次撞出来的。现象描述按你在设备管理器或命令行里实际看到的样子写,不要凭感觉对号入座。

5.1 装完驱动设备管理器里还是黄色感叹号,属性显示「代码 10」

现象:inf 装进去了,设备管理器里设备名变正确了,但图标还是黄叹号,双击看属性,「设备状态」写着「该设备无法启动。(代码 10)」。

原因:代码 10 的意思是设备无法启动,对网卡来说八成是固件没加载成功,或者上一条残留的驱动记录还在注册表里打架。还有一种可能是 inf 里的子系统 ID 和你机器对不上,驱动被强行绑定上了但硬件握手失败。

解决:先在设备管理器里右键卸载这个设备,勾选「删除此设备的驱动程序软件」,重启。然后用pnputil /enum-drivers把所有看起来相关的 oem 编号列出来,逐个pnputil /delete-driver oemXX.inf /uninstall /force删干净,再重装一次。如果还是代码 10,换包里另一个版本的 inf 试——同一个包内不同子目录里可能有不止一个候选。真机上偶尔会碰到必须先把蓝牙驱动装上、无线才能起来的顺序问题,可以试着反过来装一遍。

5.2 WiFi 显示已连接,但 DHCP 拿不到地址,一直是「正在识别」

现象:右下角图标显示已连接,但浏览器打不开任何页面,ipconfig一看地址是169.254.x.x开头。

原因:169.254是自动私有地址,说明 DHCP 请求没得到响应。可能是路由器那边的问题,也可能是本机的无线服务在连接过程中被打断了。这代机器上还有一个特殊原因:装了两套网络管理组件,Windows 自己的 WLAN AutoConfig 和随驱动装进来的第三方管理程序同时在管,互相抢。

解决:先排除路由器,用手机连同一个 SSID 试一下。手机正常就是本机问题。命令行走一遍:

# 释放并重新获取地址 ipconfig /release ipconfig /renew # 重置网络栈,这一步会清掉所有网络配置,慎用但有效 netsh winsock reset netsh int ip reset

前两条只影响当前适配器的地址租约,没有副作用。后两条会重置 Winsock 和 TCP/IP 栈,执行完必须重启。重启之后如果还这样,去「程序和功能」里看看有没有跟着驱动装进来的第三方网络管理工具,卸掉它,只留 Windows 自带的。

5.3 睡眠唤醒后 WiFi 图标变成地球或者干脆消失

现象:合盖睡一觉,打开之后网络图标变成一个地球或者带叉的图标,设备管理器里网卡不见了,要重启才能恢复。

原因:这代机器的网卡在 Modern Standby 下的电源状态切换有兼容问题,唤醒时驱动没重新初始化。再加上 4.4 里说的电源管理和快速启动两个开关没关,问题会稳定复现。

解决:先把 4.4 的两个开关都处理掉,这是根治手段。然后检查设备管理器里网卡属性 →「高级」选项卡,找「唤醒时重新初始化」之类的选项打开。如果驱动没暴露这个,就用一个笨办法兜底:设备管理器里禁用再启用一次网卡,比重启快得多。写成脚本放在桌面:

# 用设备名匹配,把 "你的网卡名" 换成设备管理器里看到的实际名字 $nic = Get-NetAdapter | Where-Object { $_.Name -like "*Wireless*" } Restart-NetAdapter -Name $nic.Name -Confirm:$false

Get-NetAdapter返回的是网络适配器对象,-like "*Wireless*"是按名字模糊匹配,实际名字可能是「WLAN」或「无线网络连接」,得按你机器上显示的改。Restart-NetAdapter就是禁用加启用,-Confirm:$false免掉确认提示。

5.4 刚装好用,重启之后驱动被 Windows 更新换回旧版本

现象:手工装的驱动版本是新的,用了一天没问题,第二天开机发现网速变慢或者设备又出问题,查驱动版本发现变回去了。

原因:Windows 10 从 2004 起会在后台通过更新推送厂商驱动,判定逻辑优先考虑微软签名和「更新」的时间戳,你的手工安装版本被当成旧的替换掉了。

解决:组策略里关掉驱动自动更新。gpedit.msc→ 计算机配置 → 管理模板 → Windows 组件 → Windows 更新 →「管理从 Windows 更新提供的更新」→ 启用 → 选「不包括驱动程序」。专业版以外的版本没有组策略,就改注册表:

# 禁止 Windows 更新在质量更新中携带驱动,1 为禁止 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v ExcludeWUDriversInQualityUpdate /t REG_DWORD /d 1 /f # 顺便把驱动搜索的来源限定为本机,防止联网找驱动 reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" /v SearchOrderConfig /t REG_DWORD /d 0 /f

第一条的ExcludeWUDriversInQualityUpdate是官方支持的策略键,/f表示已存在就覆盖。第二条SearchOrderConfig设为 0 表示装驱动时不去网上找,只用本机的。两条都改完重启生效。改完之后系统不会再自动换驱动,代价是以后想升级驱动得自己动手。

6. 装完怎么验证跑通:三条命令加一次断电重启才算数

驱动装完、能上网,很多人到这儿就收工了。我更看重的是「下一次能不能还正常」——老机器上的驱动问题往往是延时的,当天好不代表一周后好。所以我固定做一轮验证,把结果记下来,以后出问题时有对照。

第一条命令看链路层:

# 接口状态、信号强度、收发速率、当前信道 netsh wlan show interfaces

输出里我会记四个值:状态、信号、接收速率、信道。信号应该在 70% 以上,接收速率连 5G 的话至少 400Mbps 起步,信道在 36 以上说明确实走的 5G。如果接收速率长期停在 54Mbps 或者更低,说明射频降级了,多数是天线或者共存干扰的问题。

第二条看驱动加载:

# 驱动的版本、日期、提供商,以及支持的无线电类型 netsh wlan show drivers

版本和日期要和你装的 inf 对得上,提供商不该是 Microsoft。无线电类型那行如果是 802.11ac,说明硬件能力被正确识别了。

第三条看实际连通性和丢包:

# 先拿网关地址 ipconfig | Select-String "默认网关|Default Gateway" # 替换成你实际的网关 IP,连发 20 个包看丢包率 ping -n 20 192.168.1.1

-n 20比默认的 4 个包更能暴露间歇性丢包。丢包率超过 1% 就不算通过,得回去查信道干扰或者电源管理。再补一条ping -n 20 8.8.8.8看跨网段,两条都稳才算链路真的通。

命令都过了之后,还有最后一步:完整关机,拔掉电源,等十秒,再开机。这一步是专门验电源状态切换的,快速启动关掉之后能真正走到冷启动流程。开机后直接重复三条命令,结果和关机前一致,这套环境才算真的落地。我见过太多「重启正常、关机再开就挂」的案例,都是因为跳过了这一步。

检查项通过标准不通过时先看哪
接口状态已连接,无线电硬件打开电源管理、WlanSvc 服务
接收速率5G 下 400Mbps 以上信道、天线、共存干扰
驱动提供商非 Microsoft是否被 Windows 更新换回去
网关丢包20 包零丢包信道干扰、驱动版本
冷启动后复测与关机前一致快速启动、驱动仓库残留

从那以后我每次给这类老机器装完驱动,都会强制走一遍「命令三条 + 断电冷启」的流程,哪怕当时看着一切正常。有一次偷懒省了冷启动那步,机器交出去第三天就被人反馈「睡醒连不上网」,我又跑一趟重装。把验证做在前面,比事后远程猜问题省事得多。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进