使用OpenCore Legacy Patcher工具在macOS Sonoma中重新打开不被支持的博通Wi-Fi无线网卡的正确插入姿势
适用于:
OCLP
>=0.6.9
(Sonoma 开发分支)
技术背景
在macOS Sonoma开发的早期阶段,负责使用旧Wi-Fi卡的kext和框架被删除,使得常用的BT / Wi-Fi卡的Wi-Fi部分处于非工作状态
以下 Wi-Fi 卡芯片组受到影响:
- 现代的:
- Broadcom:
BCM94350
(也包括BCM94352
) /BCM94360
/BCM43602
/BCM94331
/BCM943224
- 必需的 Kexts:
IOSkywalkFamily
/IO80211FamilyLegacy
/AirPortBrcmNIC
/AirportBrcmFixup
/AirPortBrcmNIC_Injector
- Broadcom:
- 旧版的 :
- Atheros:
AR928X
/AR93xx
/AR242x
/AR542x
/AR5418
/AR5416
(苹果好像从未用过它) - Broadcom:
BCM94322
/BCM94328
- 必需的 Kexts:
corecaptureElCap
/IO80211ElCap
/AirPortAtheros40
(只适用于Atheros)
- Atheros:
多亏了Dortania的 OpenCore Legacy Patcher
,可以通过注入所需的kexts以及使用OCLP修补系统中的文件来重新启用这些Wi-Fi卡。如果您想了解 OCLP Wi-Fi 修补的工作原理,请查看这篇文章。
由于macOS Sonoma的补丁程序仍在开发中,因此在当前的公开版本(0.6.8)上不提供修补Wi-Fi的功能。最重要的是,修补Wi-Fi的能力是基于检测真实Mac中使用的Wi-Fi / BT卡的兼容设备ID / IONames。因此,在Wintel系统上,如果补丁程序没有检测到Apple使用的卡,则补丁程序将不会显示修补Wi-Fi的选项。
尽管 OCLP 允许在应用程序中设置某些功能,但手动启用 Wi-Fi 修补的选项尚未在应用程序的 GUI 中实现。因此,我们必须在源代码中手动强制启用它,然后编译自定义版本的 OCLP 以应用 Wi-Fi 根补丁(方法 1)
方法1: 在 OpenCore Legacy Patcher
中强制启用 Wi-Fi
修复补丁
1. 先决条件
要使“现代”和“旧版”无线在macOS Sonoma中正常工作,必须满足以下先决条件(在beta 5上测试):
如果您的系统不受 macOS 文图拉及更高版本(第 7 代英特尔 Kaby Lake 之前的所有系统)的支持,您需要先按照 CPU 系列的配置指南准备配置和 EFI
通过以太网连接系统以访问互联网。这应该是显而易见的,因为 Wi-Fi 在此阶段不起作用…
启用macOS安装应用允许任何来源
1
sudo spctl --master-disable
安装 Python。我们需要它来构建和运行
OpenCore Legacy Patcher
的修改版本,以强制启用Wi-Fi补丁通过终端安装命令行工具。构建 OCLP 也需要它:
1
xcode-select --install
由于我们在这里使用的是测试版软件,因此强烈建议使用
OpenCore
的最新夜间自动构建版本以及您正在使用的所有kext,以最大限度地提高兼容性。这可以通过将OCAT切换到DEV模式并更新OpenCore
和Kexts
来实现,或者通过从多塔尼亚下载最新版本并手动应用更新(繁琐)。
重要说明:如果您进行了最新 Sonoma beta abd 的全新安装,则未从已安装命令行工具的现有安装进行更新,则在尝试通过终端安装时,如果更新服务器上不存在该文件,您可能会收到错误消息。在这种情况下,您需要从Apple的开发人员站点下载安装程序(您需要一个帐户)。它位于:https://developer.apple.com/download/all/
2. 配置和EFI调整
将以下更改应用于您的配置文件(或从plist示例复制它们),并将列出的kexts添加到 EFI/OC/Kexts
文件夹中:
请使用工具 OCAT
,将 OpenCore
版本更新到 v0.9.5
,打开配置文件: config.plist
Kernel
->Add
- 引入
RestrictEvents.kext
- 引入
AMFIPass.kext
,设置MinKernel
为23.0.0
- 引入
IOSkywalkFamily.kext
,设置MinKernel
为23.0.0
- 引入
IO80211FamilyLegacy.kext
以及AirPortBrcmNIC.kext
,设置MinKernel
为23.0.0
- 引入
Kernel
->Block
- 阻止
IOSkywalkFamily
,Identifier
填写:com.apple.iokit.IOSkywalkFamily
,Enabled
设置为true
,MinKernel
设置为:23.0.0
- 阻止
NVRAM
->Add
7C436110-AB2A-4BBB-A880-FE41995C9F82
boot-args
中添加引导参数:ipc_control_port_options=0
- 备注:
ipc_control_port_options=0
为可选项,它对某些Electron及应用有治愈作用,比如百毒云盘、天翼云盘
- 备注:
csr-active-config
数据类型设置为:Data
,值为:7F0A0000
NVRAM
->Delete
7C436110-AB2A-4BBB-A880-FE41995C9F82
- 确保添加:
boot-args
- 确保添加:
csr-active-config
- 确保添加:
Misc
->Security
SecureBootModel
->Disabled
保存配置文件:
config.plist
,退出OCAT
请使用工具:OpenCore Legacy Patcher
OCLP工具下载链接
打开工具:
OpenCore Legacy Patcher
双击
Post-Install Root Patch
按钮如果
Networking: Modern Wireless
或Networking: Legacy Wireless
的打补丁选项可用,请点击:Start Root Patching
按钮在弹出的窗口中点击
Yes
出现
Root Patching
窗口,请耐心等待补丁执行完成补丁执行完,在弹出的窗口按
Reboot
重启即可
故障排除提示
- 下载并打开 IORegistryExplorer
- 搜索
ARPT
- 高亮显示 ARPT 条目,并在右侧列表中查找属性
IOName
- 如果列出的
IOName
与您通过DeviceProperties
注入的相同,则欺骗工作正常,问题可能是其他方面引起的。 - 如果仍然显示原始的
IOName
,则欺骗不起作用。
执行了 Root Patching
后卡住了的处理方法
通过在 OCLP 启动选择器上选择你的磁盘时按下空格键进入恢复模式(如果你隐藏了它,请在启动时按住 ESC 键)
- 注意: 如果你的磁盘名称不是“Macintosh HD”,请相应地修改路径。你可以通过输入
ls /Volumes
来找出你的磁盘名称。
打开终端并首先通过输入以下命令挂载磁盘:
1 | mount -uw "/Volumes/Macintosh HD" |
然后还原快照
1 | bless --mount "/Volumes/Macintosh HD" --bootefi --last-sealed-snapshot |
之后,输入以下命令:
1 | cd "/Volumes/Macintosh HD/Library/Extensions" |
然后通过输入 ls
命令,你应该能看到一堆 .kexts 文件。
- 注意: 如果你只看到以“HighPoint”开头的 .kexts 文件,你可以忽略它并重新启动系统。如果找到其他的 kext 文件,继续操作。
通过使用 rm -rf "kextname"
命令删除除以“HighPoint”开头的外的所有文件。
然后重新启动,现在你的系统应该已恢复到未修补的快照状态,能够正常启动了。
注意事项
- 请记住,一旦应用了根补丁,增量系统更新将不再起作用。相反,将下载完整的 macOS 安装程序(≈13 GB)。有一个解决方法,可以暂时使增量更新起作用。
- 一旦正式发布 macOS Sonoma 版本的官方 OpenCore Patcher,并且在 GUI 中启用了根补丁的 Wi-Fi 功能,或者在 Wintel 机器上使用的卡的检测工作得更好,可能就不再需要这个解决方法了。毕竟,OpenCore Legacy Patcher 是为真实的 Mac 设备编写的。
致谢
- Acidanthera 提供 OpenCore 和 Kexts
- Dortania 提供 OpenCore Legacy Patcher
- Acquarius13 找出了 OCLPs 源代码的编辑方法
- deeveedee 告诉我使用
brcmfxbeta
启动参数以及伪造兼容的IOName
的方法。