Yoga-9-15IMH5-Hackintosh

June 2, 2026 · View on GitHub

Lenovo Yoga 9 15IMH5 macOS (Tahoe/Sequoia/Ventura) Hackintosh 配置。

硬件信息

组件规格
CPUIntel Core i9-10980HK(8 核 16 线程,2.4 GHz / 5.3 GHz)
芯片组HM470 (Comet Lake-H)
型号MacBookPro16,1
内存16 GB
WiFiIntel AX201 (Wireless-AC AX201, PCI ID 0x06F08086)
蓝牙Intel AX201 Bluetooth (USB VID=0x8087, PID=0x0026, hw_variant=0x13/HrP, hw_platform=0x37)
声卡Realtek ALC298(layout-id 98)
触摸板I2C HID
独显NVIDIA GTX 1650 Max-Q(已通过 SSDT-dGPU-Off 禁用)

ACPI SSDT 列表

SSDT用途
SSDT-PLUGXCPM CPU 电源管理,影响变频和功耗
SSDT-EC-USBX-LAPTOPEC 修复 + USB 电源属性(Dortania 官方要求)
SSDT-AWAC400 系列芯片组 AWAC 时钟修复,macOS 必需
SSDT-dGPU-Off禁用 NVIDIA 独显,节省电源+避免冲突
SSDT-PNLF背光控制,配合 WhateverGreen
SSDT-XOSII2C 触控板需要(配合 _OSI → XOSI 重命名补丁)
SSDT-ECRWYogaSMC EC 读写访问,风扇/传感器/电池通知必需
SSDT-RCSMYogaSMC 翻盖模式控制(Read Clamshell Mode),IdeaVPC 功能依赖
SSDT-Brightness亮度键 EC→ACPI 标准通知,配合 BrightnessKeys
SSDT-SBUS-MCHCSBUS + MCHC 设备注入(合并版)

ACPI Patch 列表

重命名用途
_OSI → XOSIOS 检测欺骗,触控板+亮度键依赖
_Q1C → XQ1C亮度键(Fn+F12 亮度增)
_Q1D → XQ1D亮度键(Fn+F11 亮度减)
_Q52 → XQ52翻盖模式 EC 事件

亮度键方案

Lenovo Yoga 9 15IMH5 的 EC 亮度键通知链路存在两个阻断点(SWBL 标志位 + DIDX OpRegion 未初始化),导致 BrightnessKeys.kext 单独使用时无法收到通知。

解决方案:SSDT-Brightness + BrightnessKeys.kext 配合使用:

Fn+F11/F12 → EC 触发 _Q1C/_Q1D

SSDT-Brightness (Darwin 分支) → Notify(DD1F, 0x86/0x87)

BrightnessKeys 收到 → 派发 F15/F14 键盘事件

macOS 系统调节亮度
  • SSDT-Brightness:覆盖 _Q1C/_Q1D,绕过 SWBL/DIDX 阻断,发送 ACPI 标准亮度通知
  • BrightnessKeys:接收 ACPI 通知并转为 macOS 键盘事件
  • _Q1C → XQ1C_Q1D → XQ1D 重命名补丁必须保留(避免方法冲突 + Windows 兼容性)
  • SSDT-Brightness 使用 _OSI("Darwin") 检查,Windows 下调用原始 XQ1C()/XQ1D()

Kext 列表

kext来源用途
Lilu源码编译核心框架(必须第一位加载)
VirtualSMC上游 releaseSMC 模拟
SMCProcessor上游 releaseCPU 温度监控(VirtualSMC 插件)
SMCBatteryManager上游 release电池状态(VirtualSMC 插件)
WhateverGreen上游 release显卡驱动
AppleALC源码编译(最小化)声卡驱动
RestrictEvents上游 release系统事件限制
BrightnessKeys上游 releaseACPI 亮度通知→键盘事件
ECEnabler上游 releaseEC 电池支持
YogaSMC源码编译Yoga 特性支持(Fn键、风扇、翻盖模式)
NVMeFix上游 releaseNVMe 电源管理
VoodooPS2Controller上游 release键盘驱动
VoodooI2C + VoodooI2CHID上游 releaseI2C 触摸板
AMFIPassOCLP payloadsAMFI 签名绕过
IOSkywalkFamilyOCLP payloadsSkywalk 网络栈(Sequoia/Tahoe)
IO80211FamilyLegacyOCLP payloadsWiFi API 兼容层(Sequoia/Tahoe)
AirportItlwm源码编译(最小化)Intel WiFi
IntelBluetoothFirmware源码编译(最小化)Intel 蓝牙固件加载
IntelBTPatcher源码编译(最小化)Intel 蓝牙运行时补丁
BlueToolFixup上游 release蓝牙修复(Monterey+)
HoRNDIS上游 releaseUSB 网络共享
USBMap上游 releaseUSB 端口映射

已移除 SMCSuperIO(无 Super I/O 芯片,detectDevice() 空转)和 SMCLightSensor(无光线传感器)。

关键依赖:Lilu 必须第一位加载;VirtualSMC 插件在其后;IOSkywalkFamily → IO80211FamilyLegacy → AirportItlwm 为 Intel WiFi 依赖链。AirportItlwm 子类化 IO80211Controller(IO80211FamilyLegacy 定义),编译时强依赖,AirPortBrcmNIC.kext 作为其插件需存在,无法精简。

关键配置

apfs_aligned.efi(Tahoe FV2 Bug 规避)

  • macOS Tahoe 的 APFS UEFI 驱动存在 FileVault 2 软件解密 Bug(acidanthera/bugtracker #2499)
  • apfs_aligned.efi 来自 macOS Sequoia,不包含此 Bug
  • 配置:UEFI.APFS.EnableJumpstart = false + 手动加载 apfs_aligned.efi
  • 即使不使用 FileVault,Tahoe 升级安装可能自动启用 FV2,建议始终使用此方案

YogaSMC SSDT 补丁

SSDT-RCSM 来自 YogaSMC/SSDTSample,实现 Clamshell Mode(翻盖模式)控制。当 RCSM = 1 时,_Q52 翻盖 EC 事件被静默忽略,屏幕不会因翻盖而唤醒。必须保留

YogaSMC SSDTSample 中仅 SSDT-ECRW 和 SSDT-RCSM 适用于此设备,其余(SSDT-THINK/WMIS/YVPC)因 EC 布局或 DSDT 不匹配不适用。

自动构建

GitHub Actions 每周一自动检查上游更新并构建。详见 .github/workflows/build-kexts.yml

目录结构

├── config/device-config.json   # 设备配置(PCI ID、codec、patches)
├── patches/                    # 源码补丁(SSDT、AppleALC、IntelBT)
│   └── ssdt/                   # ACPI SSDT 补丁(.aml)
├── scripts/                    # 构建脚本(最小化、下载、更新检查)
├── acpi/                       # 原始 ACPI 表转储(参考用)
├── BIOS/                       # BIOS 相关文件
└── USB定制/                    # USB 端口映射

Intel AX201 蓝牙配置

硬件参数

参数
USB VID/PID0x8087:0x0026
hw_variant0x13 (HrP = AX201)
hw_platform0x37 (Gen3)
冷启动固件ibt-19-16-0.sfi(上游不存在,从 ibt-19-16-4.sfi 复制)

macOS Tahoe 必需配置

项目说明
IntelBluetoothFirmware.kext精简版,仅含 ibt-19-16-0.{sfi,ddc}冷启动固件加载
IntelBTPatcher.kextv2.5.0+修复 LE Scan 崩溃
BlueToolFixup.kextv2.7.2+Monterey+ 必需,替代 IntelBluetoothInjector
IntelBluetoothInjector.kext不要使用Monterey+ 会导致冲突
boot-args-amfipassbeta -ibtcompatbetabeta macOS 兼容
NVRAM bluetoothInternalControllerInfo14字节全零 (AAAAAAAAAAAAAAAAAAA=)bluetoothd 识别内部控制器必需
NVRAM bluetoothExternalDongleFailed0x00 (AA==)防止回退到 BCM_4350C2