问题发现
在上文,我为我的小新pro13安装了Monterey
但出现了如下问题:
1.有线网络正常,wifi根本开不了
2.有线网络下,浏览器访问网站正常,appstore能登录,但是唯独icloud登录不了,而且很神奇的是,输入密码后,会发送验证码到手机,输入验证码后,报错“无法联系到苹果服务器”。
3.蓝牙用不了。我之前安装big Sur,没有配置任何驱动的前提下,蓝牙能用,能连接bose印象,而在Monterey 则是蓝牙根本就打不开
原因分析
经过各位大佬的帮助和我在网上的搜索,基本确定是“驱动问题”
群里大佬说她提供的efi不含驱动,所以需要自行安装。
然后我随意安装了群友给的驱动,发现WiFi正常,蓝牙根本用不了。
为什么蓝牙驱动用不了了,可以看OpenCore官网的这篇文章
大致意思是:
在Monterey中,苹果彻底改写了蓝牙协议栈。截至本文撰写之时,许多蓝牙设备无法工作(传统的Broadcom和Intel)。虽然通过重写, injector kexts打破了Monterey的蓝牙支持,但是firmware(固件) uploader kexts仍然需要。所以确保您:
1.Disable injector kexts(关闭以下 injector kexts)
IntelBluetoothInjector.kext for Intel cards
BrcmBluetoothInjector.kext for Broadcom cards
2.Keep Firmware uploader kexts(保留Firmware uploader kexts)
IntelBluetoothFirmware.kext for Intel
BrcmPatchRAM2/3.kext + BrcmFirmwareData.kext for Broadcom
3.Add BlueToolFixup(添加BlueToolFixup)
所有非本机蓝牙设备(包括Intel)都需要
如果您仍然启动Big Sur或更旧版本,可以将MinKernel字段设置为21.00.0,以防止在旧操作系统上加载BlueToolFixup。
解决方案
这个方案是基于您还未做任何修改驱动操作的前提
1.wifi驱动
下载OpenIntelWireless/itlwm
我下载的是AirportItlwm_v2.1.0_stable_Monterey.kext.zip
AirportItlwn相比于itlwm更原生,完全符合原生体验。
拿到这个kext文件,留着等下和蓝牙的驱动一起安排到esp分区里
2.蓝牙驱动
根据OpenCore官网提供的文献
在安装了IntelBluetoothFirmware驱动的基础上
1.我们要禁用IntelBluetoothInjector.kext
2.保留IntelBluetoothFirmware.kext
3.添加BlueToolFixup
我们先安装opencore提供的蓝牙驱动IntelBluetoothFirmware
下载完打开发现里面有三个kext文件
所以根据他说的
1.我们要禁用IntelBluetoothInjector.kext,这里用的是disable,意思为禁用,我们在后续config配置中不添加他即可,但是我们依旧需要安装它,把他放到kexts文件夹里
所以现在我们又得到三个kext驱动文件,等下一起放进esp分区的kexts文件夹里
然后他还要添加一个BlueToolFixup
oc官网给出的下载地址为BrcmPatchRAM
下载下来有这么多
我们把这里面的BlueToolFixup拿出来,和刚才的文件放一起,到时候一起放到esp分区里。
现在就是这四个kext驱动文件,等下一起放进esp分区的kexts文件夹里
把最开始下载的AirportItlwn驱动也放进来,就是如图五个驱动
然后把这五个驱动放进esp分区的EFI/OC/Kexts文件夹里
结果如图
然后放完驱动文件后,我们就要修改OC下的config.plist
右键他,
复制到桌面,
在桌边用文本编辑工具(记事本,vscode都可以)打开。
找到
Kernel Add BundlePath Lilu.kext Comment V1.6.1 | Patch engine Enabled ExecutablePath Contents/MacOS/Lilu MaxKernel MinKernel 10.0.0 PlistPath Contents/Info.plist BundlePath CPUFriend.kext .........这里省略可能和我不太一样,但关键是开头的Kernel
然后在这里添加如下代码
根据opencore官网给出的手册,我们要禁用IntelBluetoothInjector.kext
刚刚安装了5个kext驱动,禁用一个的话,我们就只需要在config的Kernel里添加四个驱动配置信息就可以。
BundlePath AirportItlwm.kext Comment intelWIFI Enabled ExecutablePath Contents/MacOS/AirportItlwm MaxKernel MinKernel PlistPath Contents/Info.plist BundlePath BlueToolFixup.kext Comment Enabled ExecutablePath Contents/MacOS/BlueToolFixup MaxKernel MinKernel PlistPath Contents/Info.plist BundlePath IntelBluetoothFirmware.kext Comment Enabled ExecutablePath Contents/MacOS/IntelBluetoothFirmware MaxKernel MinKernel PlistPath Contents/Info.plist BundlePath IntelBTPatcher.kext Comment Enabled ExecutablePath Contents/MacOS/IntelBTPatcher MaxKernel MinKernel PlistPath Contents/Info.plist
保存,然后替换oc文件夹下的config文件,重启进入mac即完成
其实上面添加代码的方式可能有点麻烦,
也可以刚才先不改config,
添加完kext文件后直接重启,
进入mac,
在 OpenCore Configurator中挂在efi,
然后把OC/Kexts里新的五个驱动除去IntelBluetoothInjector.kext,
直接从Finder拖入到如图所示的界面里,
然后保存,
重启即可。
来源地址:https://blog.csdn.net/weixin_45518621/article/details/127606193