故障排查
睡眠唤醒后黑屏
启动参数(boot-args)中已经专门为这个问题加入了 -igfxblr 参数。如果睡眠后屏幕背光仍然无法恢复:
- 在 OpenCore 启动选择界面按空格键显示隐藏选项,选择 verbose 模式(会临时在启动参数中追加
-v)来查看详细的启动日志 - 通过苹果菜单 → 睡眠让电脑进入睡眠,然后按键盘任意键尝试唤醒
- 如果屏幕保持黑屏但背光实际上是亮着的(你能看到屏幕有微弱的光):在终端中执行
sudo pmset -a displaysleep 0,这会将显示器睡眠设为永不 - 如果屏幕完全黑暗、没有任何背光:按住电源键强制关机,然后重新开机。macOS 在启动时会检测到上次是非正常关机,上一次会话的内核崩溃日志(kernel panic log)会保存在
/Library/Logs/DiagnosticReports/目录中——打开最近的一个 .panic 文件来查看崩溃原因
没有声音
按照以下步骤逐项排查:
- 确认
config.plist的 DeviceProperties 中PciRoot(0x0)/Pci(0x1F,0x3)路径下的layout-id值为87 - 确认
AppleALC.kext文件存在于EFI/Kexts/目录中,且在 config.plist 的 Kernel → Add 中 Enabled = true - 确认 AppleHDA 没有被屏蔽——检查
Kernel → Block部分,仓库默认只屏蔽了AppleTyMCEDriver(一个和 Xeon CPU 相关的驱动,在 7740 上不需要),没有屏蔽 AppleHDA - 如果 layout-id 87 仍然没有声音,按照以下顺序逐一尝试备选 layout-id:87 → 11 → 15 → 23 → 99 → 7 → 93。每次修改 layout-id 后保存 config.plist 并重启测试
- 打开"系统设置 → 声音 → 输出",确认选中的输出设备是"内置扬声器"而不是"耳机端口"或其他设备。有时候 macOS 会自动切换到耳机输出——即使你没有插耳机
WiFi 能用但蓝牙不工作
确认 BrcmPatchRAM3.kext 和 BlueToolFixup.kext 都已经在 config.plist 的 Kernel → Add 中启用,并且加载顺序正确——BlueToolFixup 必须排在 BrcmPatchRAM3 之前。OpenCore 是按照 Kernel → Add 数组中的顺序来加载 kext 的,不是按字母顺序。本仓库提供的 config.plist 中这两个 kext 的顺序已经正确排列好了;如果你自己重新添加过 kext,请务必保持 BlueToolFixup 在前、BrcmPatchRAM3 在后的顺序。此外,还需要确认 Intel 的蓝牙驱动(IntelBluetoothFirmware、IntelBluetoothInjector、IntelBTPatcher)已被禁用——同时启用 Broadcom 和 Intel 两套蓝牙驱动会导致蓝牙子系统崩溃。
触摸板抖动或丢事件
Dell Precision 7740 的 Alps I2C 触摸板需要六个 kext 全部启用才能正常工作。它们必须作为一个整体一起加载——如果只启用其中几个而禁用其他的,剩下的驱动可能会加载成功但 HID 协议栈在枚举设备时无法完成初始化。这六个 kext 是:VoodooI2C.kext(I2C 总线核心驱动)、VoodooI2CHID.kext(HID over I2C 协议层)、VoodooGPIO.kext(GPIO 中断处理)、VoodooI2CServices.kext(I2C 设备服务层)、VoodooInput.kext(输入事件路由)、AlpsHID.kext(Alps 触摸板专有协议驱动)。本仓库的 config.plist 默认六者全部启用且按此顺序排列。如果触摸板仍然抖动或频繁丢事件,可以尝试在 VoodooI2C 的内核启动参数中调整 GPIO 中断引脚号——不同批次的 7740 主板的 GPIO 引脚分配可能有差异。
重启后无限循环回到 OpenCore 选择界面
- 在 OpenCore 启动选择界面中,按一下空格键来显示被隐藏的辅助启动项
- 在辅助项中选择 Reset NVRAM——这会清除 OpenRuntime 在 NVRAM 中存储的所有变量(包括上次启动失败的错误记录和错误的启动项缓存)
- Reset NVRAM 执行完毕后系统会自动重启。再次进入 OpenCore 界面,选择你的 macOS 启动项正常启动
- 如果 Reset NVRAM 之后仍然无限循环重启,在 OpenCore 界面中按 V 键切换到 verbose 模式,然后启动 macOS——屏幕上会显示详细的内核加载日志,你可以在崩溃发生时看到是哪一条 kext 或者哪一步导致了崩溃
SD 卡读卡器(内置 SD 卡槽)不识别插入的卡
本仓库附带了 RealtekCardReader.kext 和 RealtekCardReaderFriend.kext 两个文件,但在提供的 config.plist 中它们默认被禁用。原因是 Dell Precision 7740 的 RTS5260 读卡器在某些 BIOS 修订版本上存在已知的时序问题——启用后可能导致内核崩溃(kernel panic)。如果你需要启用 SD 读卡器:
- 打开 config.plist,找到
Kernel → Add部分 - 找到
RealtekCardReader.kext的条目,将Enabled从false改为true - 同样将
RealtekCardReaderFriend.kext的Enabled改为true - 保存 config.plist,重启电脑,插入一张 SD 卡测试
如果在启用读卡器后你遇到了内核崩溃(启动时卡住或启动后插入 SD 卡时崩溃),说明你的 7740 主板属于受影响的批次——将这两个 kext 重新禁用即可。如果你不常使用 SD 卡,建议保持禁用状态以避免不必要的不稳定性。
Apple ID 服务(iMessage / FaceTime)无法激活
iMessage 和 FaceTime 的激活依赖于你的 SMBIOS 序列号看起来像一台合法的真 Mac。以下是标准的排查步骤:
- 确认你的 SMBIOS 三元组(SystemSerialNumber / MLB / SystemUUID)是使用 GenSMBIOS 生成的有效序列号,而不是全零的占位值。访问 checkcoverage.apple.com,输入你的 SystemSerialNumber——页面应该返回"不对应任何 Apple 产品"(而不是显示一台真 Mac 的保修信息)。如果返回的是真 Mac 的信息,用 GenSMBIOS 重新生成一组
- 确认 config.plist 中的
ROM字段填入了你真实的网卡 MAC 地址(12 位十六进制,无冒号),而不是默认的占位值112233445566或其他随便填的假 MAC 地址。Apple 的服务器会校验 ROM 值是否合理 - 在 config.plist 的
NVRAM → Add路径下,确认MLB字节串的值和PlatformInfo → Generic → MLB中的值完全一致——如果这两个地方的 MLB 不匹配,iMessage 的激活令牌签名会失败 - 如果你是从另一台 Mac 或黑苹果上迁移过来的系统,打开"钥匙串访问"(Keychain Access),搜索并删除所有包含"iMessage"或"FaceTime"的钥匙串条目,然后重新尝试登录
- 对于较旧版本的 macOS(Catalina 及以前),还需要删除网络配置文件:执行
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist,然后重启。这个文件会在重启后被系统自动重新生成——新生成的文件会包含正确的网卡 MAC 地址(和你在 ROM 字段中填写的值一致),修复网络接口 UUID 和 SMBIOS 之间的不匹配