如何在 macOS Sonoma 及更高版本
本指南介绍了使用 Clover 和 OpenCore 在 macOS Sonoma 及更高版本上修复 Broadcom WiFi。通过遵循本指南,您将能够使用 Clover 或 OpenCore Bootloader 在 macOS Sonoma 及更高版本上启用基于 Broadcom 的 WiFi。本指南仅适用于 OpenCore 用户,可能不适用于 Clover,因为除了通过 Clover GUI 选择器手动完成之外,它没有永久阻止 kext 的选项。如果 Clover 获得这样的功能,本指南将在未来更新。
仅在 macOS Sonoma 及更高版本上必须遵循本指南。如果您运行的是早期版本的 macOS,则可以使用适用于 macOS Ventura 的原始 Broadcom WiFi 和蓝牙指南:
概述
最近,Apple 于 2023 年 6 月 6 日宣布了新的 macOS 系列,即 macOS Sonoma,并于今年秋季即 2023 年 9 月 26 日公开发布了最终版本。不幸的是,随着 macOS Sonoma 的发布,Apple 已正式放弃对 Skylake 的支持,包括 IGPU 支持,其次是 macOS Ventura。然而,我们看到的最大的失败是 macOS Sonoma 中取消了 Broadcom WiFi 支持。这让使用安装了 macOS 的非 Apple 电脑的用户感到非常失望。
如果您不是新手并且熟悉运行 macOS 的非 Apple 电脑,您可能已经知道,在非 Apple 电脑上,Broadcom WiFi 通常是原生 WiFi/BT 功能的首选(例如 Fenvi T919、BCM94360NG、BCM94352Z 等) )。然而,自从 macOS Sonoma 发布以来,Apple 已经取消了对所有未焊接的 Broadcom WiFi 的支持,因此如果您有任何此类型号,则 WiFi 目前将无法工作。如果您检查 S/L/E,您会注意到对基于 Broadcom 的旧 WiFi 卡的支持完全不存在,并且所有相关的 kext 都从相应的目录中删除。这意味着即使您安装了原生 WiFi 卡(例如 Fenvi T919 或 BCM94360NG),由于缺少所需的驱动程序,WiFi 仍然无法工作。英特尔等第三方 WiFi 将继续与第三方 kext 配合使用。此外,具有 Realtek/MediaTek 芯片组的基于 USB 的 WiFi 也将与其制造商提供的驱动程序配合使用。不过,由于 OCLP 团队对旧硬件的持续支持,仍然有一种解决方法可以让这些卡在 macOS Sonoma 上运行。
Apple 开始从 Monterey 给出提示,其中 AirPortBrcmNIC 作为插件移至新位置,并引入了新的 kext IO80211FamilyLegacy.kext。为了支持其他最新的 WiFi 型号,自 macOS Ventura 以来引入了新的 kext AppleBCMWLANBusInterfacePCIeMac.kext,并快进到 macOS Sonoma,IO80211FamilyLegacy.kext 已被完全删除并且不再存在。这清楚地告诉我们,苹果已经计划淘汰旧型号,并在未来版本中取消对旧型号的支持,因为他们从英特尔转向了自己的基于 Apple Silicon 的 Mac 系列。这并不是苹果第一次这样做。这种做法在苹果公司很常见,如果你是苹果爱好者,你可能会知道。
您可能有一个疑问,苹果长期以来一直在其 Mac 机型中使用 Broadcom WiFi,
这是否意味着支持 macOS Sonoma 的本机支持的 Mac 机型将缺乏 WiFi 功能?嗯,答案是否定的。那是因为
因此,使 WiFi/BT 卡处于不可用/不工作状态。
它在菜单栏中都不可用。
要求
以下是在 macOS 上启用 Broadcom WiFi 的要求。在继续阅读本指南之前,请确保您满足要求。
如果您尝试全新安装或升级,强烈建议您先执行全新安装或升级,然后再按照本指南进行操作。
第 1 步:设置BIOS
第一步是设置 BIOS 以在系统上启用 Broadcom WiFi/BT。这是因为有一些系统可以选择在 BIOS 中启用 WiFi/BT,这会影响 macOS/OS X 下的功能。
- 在目标计算机上,启动至 BIOS。请参阅您的用户手册了解 BIOS 密钥
- 启用 WiFi/BT 功能。
- 保存并退出设置。
第 2 步:验证 WiFi检测
下一步是验证 macOS 下是否检测到安装的卡。需要执行此步骤,以确保您走在正确的轨道上,并且根据兼容性列表拥有正确的卡。如果未检测到该卡,即使正确遵循指南也无助于识别该卡。此外,并非所有 WWN 插槽都是 M.2。有一些带有 cNVi 插槽的系统,即使您用兼容的卡更换卡,也根本不会检测到该卡。这是因为英特尔专有的连接接口。这意味着主板上的特定 CNVi 插槽仅接受基于 Intel 的 WiFi/BT 卡,因此如果更换该卡,则必须验证 WiFi/BT 模块的检测。要验证 WiFi/BT 检测,请按照以下步骤操作。
- 从下载部分下载 Hackintool。
- 打开 Hackintool。
- 在 Hackintool 的 PCIe 部分下找到您的 WiFi 模块。WiFi 模块通常在“类”和“子类”列下列为网络控制器。
第 3 步:添加所需的Kexts
下一步是安装所需的驱动程序以启用 WiFi 和蓝牙支持。根据您的卡类型,从下面选择一种。
I. Apple Airport 和 Fenvi 卡
要启用 WiFi 支持,您需要添加IOSkywalkFamily.kext和IO80211FamilyLegacy.kext以及子 kext AirPortBrcmNIC.kext。这两个 kext 需要协同工作,才能为基于 Airport 和 Fenvi 的卡启用 WiFi。
1.下载IOskywalkFamily.kext和IO80211FamilyLegacy.kext。
2.安装 ESP。
3. 将IOSkywalkFamily.kext和复制IO80211FamilyLegacy.kext到 EFI/OC/Kexts目录。
4. 打开您的 config.plist 部分config.plist并添加IOSkywalkFamily.kext条目IO80211FamilyLegacy.kext。Kernel>Add此外,您需要指定 MinKernel 以23.0.0确保 kext 仅在 macOS Sonoma 上加载。
注意:您的 kext 列表和条目可能会有所不同,因为每个系统都不同并且有不同的要求。
二. 非Apple AirPort和非Fenvi卡
通过注入IOSkywalker.kext + IO80211FamilyLegacy.kext(由AirPortBrcmNIC.kext组成)并使用OCLP修补(指南后面),本机卡将可以工作(例如Fenvi T919,BCM94360NG , ETC)。但是,如果您的卡没有任何这些匹配 ID(14E4:43ba、14e4:43a3 或 14e4:43a0),例如 BCM94352Z,则还需要注入 AirPortBrcmFixup.kext 才能驱动它们。难怪尽管这些卡受到支持,但它们不能 OOTB 工作,并且始终需要 AirPortBrcmFixup.kext 和相关的蓝牙驱动程序才能工作!这是因为这些卡大多不是 Apple 制造的卡。此步骤仅适用于非 Apple Airport 和非 Fenvi 卡,即在 macOS Ventura 或更低版本中无法进行 OOTB 操作的卡(例如 BCM94352Z)。如果您拥有带设备 ID(14E4:43ba、14e4:43a3 或 14e4:43a0)的 Apple AirPort 和 Fenvi 卡,请跳过此步骤。
- 下载IOSkywalkFamily.kext、IO80211FamilyLegacy.kext和AirPortBrcmFixup.kext。
2.安装 ESP。 - 将IOSkywalkFamily.kext、IO80211FamilyLegacy.kext、复制AirPortBrcmFixup.kext到 EFI/OC/Kexts目录中。
- 打开config.plist 部分config.plist并添加IOSkywalkFamily.kext,IO80211FamilyLegacy.kext,和AirPortBrcmFixup.kext条目。Kernel>Add此外,如果使用相同的 EFI 引导多个 macOS 版本,您还需要指定 MinKernel 和 MaxKernel(如下所示),以确保 kext 仅在适当版本的 macOS 上加载。
- 你必须阻止AirPortBrcm4360_Injector.kext加载。这可以通过以下方式实现:(i) 删除 kext 条目以保持 config.plist 更加整洁,或 (ii) 使用引导参数仅加载一个特定驱动程序,或 (iii) 通过设备属性或 (iv) DSDT/SSDT补丁或 (v) 通过指定 MinKernel 和 MaxKernel。
笔记:
请确保 kext 以正确的排序顺序加载。
下载最新版本以获得更好的支持。
仅下载 RELEASE.zip 文件。
如果目录中已存在 kext,请将其替换为新版本
不要使用 AirportBrcmFixup.kext.dSYM
您的 kext 列表和条目可能会有所不同,因为每个系统都不同并且有不同的要求。
三.旧卡
尽管这些旧卡以前曾受到支持,但自 Sierra 以来,对 Broadcom 43224 和 Mojave 以来的 Broadcom 4331 的支持已被删除。要启用对这些旧卡(BCM4331 和 BCM43224)的 WiFi 支持,您需要添加corecaptureElCap.kext和IO80211ElCap.kext以及子 kext(AirPortBrcm4331.kext 和AirPortBrcm43224.kext)。这两个 kext 需要协同工作才能为旧卡启用 WiFi。
1.下载corecaptureElCap.kext和IO80211ElCap.kext。
2.安装 ESP。
3. 将corecaptureElCap.kext 和IO80211ElCap.kext到 EFI/OC/Kexts目录。
4. 打开您的 config.plist 部分config.plist并添加corecaptureElCap.kext条目IO80211ElCap.kext。Kernel>Add由于本指南仅适用于 Broadcom,因此您需要删除该AirPortAtheros40.kext条目,如下所示。此外,如果使用相同的 EFI 启动多个 macOS 版本,您还需要指定 MinKernel(如下所示),以确保 kext 仅在适当版本的 macOS 上加载。您还可以根据您的卡使用其中一个 kext 并删除不相关的 kext 以保持 config.plist 更加整洁(指南后面)。
根据您拥有的卡(例如 Broadcom 4331),您可以保留AirPortBrcm4331.kext并删除AirPortBrcm43224.kext以使 config.plist 更加整洁。
根据您拥有的卡(例如 Broadcom 43224),您可以保留AirPortBrcm43224.kext并删除AirPortBrcm4331.kext以使 config.plist 更加整洁。
注意:您的 kext 列表和条目可能会有所不同,因为每个系统都不同并且有不同的要求。
第 4 步:阻止所需的Kexts
下一步是阻止 IOSkywalk.kext。仅现代 WiFi 需要此步骤,无论 Apple AirPort 和 Fenvi 卡还是非 AirPort 和非 Fenvi 卡。如果您有旧卡,则可以跳过此步骤。在 macOS Sonoma 中阻止IOSkywalkFamily.kext将允许我们手动注入以前版本的IOSkywalkFamily.kext,从而允许我们降级。这是必需的,因为除非您不阻止此 kext,否则您将无法注入之前版本的IOSkywalkFamily.kext,并且虽然IOSkywalkFamily.kext注入之前版本时没有阻止,但从系统驱动器启动时会抛出错误。要阻止IOSkywalk.kext,请按照以下步骤操作。
- 假设config.plist仍处于打开状态,请Kernel>Block在config.plist. 此外,您需要指定 MinKernel 以23.0.0确保仅在 macOS Sonoma 上阻止 kext。
Arch | Identifier* | Comment | MinKernel | MaxKernel | MaxKernel | Strategy | Enabled |
---|---|---|---|---|---|---|---|
Any | com.apple.iokit.IOSkywalkFamily | Allow IOSkywalkFamily Downgrade | 23.0.0 | Exclude | YES |
注意:完成根修补并启用 WiFi 后,您可以再次将 SecureBootModel 设置为默认值。
第 6 步:添加引导参数
禁用安全启动模型后,下一步是添加所需的启动参数。要添加启动参数,请按照以下步骤操作
- 假设config.plist仍然打开,将启动参数添加到config.plist 部分的UUID 列表amfi=0x80下的 boot-args 项。7C436110-AB2A-4BBB-A880-FE41995C9F82NVRAM
快速信息:使用amfi=0x80boot arg 时,某些应用程序可能不会响应并最终崩溃,例如@svan71报告的 Firefox 。
第 7 步:禁用系统完整性保护 (SIP )
添加所需的启动参数后,下一步是禁用系统完整性保护。要禁用 SIP,请按照以下步骤操作。
- 假设config.plist仍然打开,将 设为csr-active-configDATA03080000值以进行根修补
- 保存您的config.plist.
第 8 步:使用新配置
完成上述步骤后,您需要使用更新的配置启动。只需重新启动系统即可。建议至少重置 NVRAM两次。
一旦您使用新配置启动,系统将在注入所需的 kext 时启用 wifi。但是,您将无法找到和/或连接到任何网络。
菜单栏中的 WiFi 网络均不可用
如果检查 IOReg,您会发现 AirPort_BrcmNIC 或 IOSkywalk Kext 均未加载。
第9步:修补系统卷
要使用 OCLP 修补系统,请按照以下步骤操作。
-
从本论坛的下载部分下载 OpenCore Legacy Patcher (OCLP)。
-
打开 OCLP,您将看到类似于下面所附屏幕截图的内容。
-
单击“安装根补丁后”,您将看到类似于下面所附屏幕截图的内容
如您所见,OCLP 已自动检测要应用的补丁。如果启用了 SIP,您可能会注意到一条消息“SIP 已启用”
如果您注意到这一点,请确保按照步骤 #1 中的说明禁用它。
单击“Start Root Patching”(开始根修补),您需要以 root 身份运行 OCLP。您将看到类似于下面所附屏幕截图的内容。
单击是以 root 身份重新启动 OCLP。出现提示时,输入您的系统密码。您将看到类似于下面所附屏幕截图的内容。
**
一旦 OCLP 以 root 身份启动,它将开始修补系统卷。
一旦 OCLP 完成对系统卷的修补,它将提示重新启动。单击重新启动以重新启动系统。
第 10 步:重新启动系统
执行完上述所有步骤后,重新启动系统以使应用的更改生效。建议至少重置 NVRAM两次。
验证WiFi
下一步是验证 WiFi 和 BT 是否工作。按照以下步骤验证 WiFi 功能。
系统报告
在“关于本机”>“系统报告”>“Wi-Fi”中验证 WiFi 接口
系统偏好设置
在“系统偏好设置”>“网络”中验证 WiFi 的可发现性
系统报告
在“关于本机”>“系统报告”>“Wi-Fi”中验证 WiFi 接口连接是否为 2.4GHz 和 5GHz
以下内容为恢复开启sip 以及按照上面的配置减少amfi=0x80内容 配置完oc 重启重置 2次 nvram 不然好多软件无法使用
像我这样子的说明是开启了SIP
在OpenCore中关闭SIP · NVRAM · Add · 7C436110-AB2A-4BBB-A880-FE41995C9F82 · csr-active-config 类型值: 67000000 值从00000000修改为67000000 ![](/i/l/?n=23&i=blog/1334552/202310/1334552-20231025140228653-619881400.png)关闭方法
在OpenCore中开启SIP
· NVRAM
· Add
· 7C436110-AB2A-4BBB-A880-FE41995C9F82
· csr-active-config 类型值: 00000000
值从67000000修改为00000000
来自原文:https://elitemacx86.com/threads/how-to-fix-broadcom-wifi-on-macos-sonoma-and-later.1415/