Skip to content

Latest commit

 

History

History
113 lines (81 loc) · 8.62 KB

File metadata and controls

113 lines (81 loc) · 8.62 KB

Using unsupported Board-IDs with macOS 11.3 and newer

TABLE of CONTENTS


Explanation

OpenCore Legacy Patcher (OCLP) 0.3.2 introduced a set of Booter and Kernel patches which utilize macOS'es virtualization capabilities (VMM) introduced in Big Sur to trick macOS into "believing" that it's running inside a Virtual Machine:

Parrotgeek1's VMM patch set would force kern.hv_vmm_present to always return True. With hv_vmm_present returning True, both OSInstallerSetupInternal and SoftwareUpdateCore will set the VMM-x86_64 board-id while the rest of the OS will continue with the original ID.

  • Patching kern.hv_vmm_present over manually setting the VMM CPUID allows for native features such as CPU and GPU power management.

Source: OCLP issue 543

This construct allows installing and receiving OTA system updates for macOS 11.3 and newer on otherwise unsupported Board-IDs/CPUs. Although OCLP's primary aim is to install OpenCore and macOS on legacy Macs, these patches can be utilized on Hackintoshes as well while using the "native", designated SMBIOS for a given CPU family which improves CPU and GPU Power Management - especially on Laptops. I am successfully using this spoof on my Lenovo T530 ThinkPad for running macOS Sonoma.

Although installing macOS on systems with an unsupported SMBIOS was possible long before these patches existed (via boot-arg -no_compat_check), receiving OTA system updates is impossible if this boot-arg is active.

Caution

  • With the release of RestrictEvents.kext v1.1.3, the Kernel Patches were implemented into the kext itself, so adding them is no longer necessary. So If your config.plist still contains these Kernel Patches, please disable/delete them!
  • Prior to the release of RestrictEvents.kext, the kernel patches had negative effects on Bluetooth since enabling the VMM Board-ID skipped loading firmware of Bluetooth devices. This has been resolved now (→ more details).

System Requirements

Minimum macOS: Big Sur 11.3 or newer (Darwin Kernel 20.4+) is mandatory!

Intel CPU families:

Note

7th to 10 Gen Intel Core CPUs don't need this spoof (yet) since they are still supported by macOS.

Use Cases

  1. Installing macOS 11.3+ on systems with unsupported CPUs and SMBIOSes/Board-IDs

  2. Enabling System Updates. As a side effect, you can use these patches to workaround issues with System Updates in macOS 11.3 and newer when using an SMBIOS of a Mac model with a T1/T2 security chip, such as (value in brackets = SecureBootModel):

    • MacBookPro15,1 (J680), 15,2 (J132), 15,3 (J780), 15,4 (J213)
    • MacBookPro16,1 (J152F), 16,2 (J214K), 16,3 (J223), 16,4 (J215)
    • MacBookAir8,1 (J140K), 8,2 (J140A)
    • MacBookAir9,1 (J230K)
    • Macmini8,1 (J174)
    • iMac20,1 (J185), 20,2 (J185F)
    • iMacPro1,1 (J137)
    • MacPro7,1 (J160)

Normally, macOS wouldn't be able to receive System Update Notifications (and therefore wouldn't be able to download OTA System Updates) under the following conditions:

  1. Using a csr-active-config bitmask containing the flags "Allow Apple Internal" and "Allow unauthenticated Root" to lower System Integrity Protection (SIP). Lowering SIP is mandatory for applying root-patches with OCLP to the system volume to re-enable legacy hardware since it cannot be enabled by injecting settings and kexts via OpenCore alone alone. But if these 2 SIP flags are active, you won't receive System Update Notifications any longer. Since re-installing files on the system partition also breaks its security seal, SecureBootModel has to be disabled in order to boot the system afterwards.
  2. Using an SMBIOS of one of the Mac models listed above in combination with SecureBootModel set to Disabled (instead of using the correct "J" value).
  3. Using boot-arg -no_compat_check which allows booting with an unsupported board-id but it also disables system updates.

In conclusion: in order to be able to boot the system with the designated SMBIOS, patched-in drivers and receive system updates, the Board-ID VMM spoof is the only workaround.

Instructions

  • Mount your EFI
  • Open your config.plist with ProperTree
  • Copy the "Skip Board ID check" patch from OCLP's Booter/Patch section to your config.plist and enable it.
  • Add RestrictEvent.kext 1.1.3 or newer to your EFI/OC/Kext folder and config.plist
  • Delete -no_compat_check boot-arg (if present)
  • Add revpatch=sbvmm to boot-args or as as an NVRAM variable:
    revpatch
  • Optional (but recommended): Under PlatformInfo/Generic, pick the correct/designated SMBIOS for your CPU family/system and generate new serials, etc (with OCAT or GenSMBIOS for example)
  • Save your config and reboot.
  • Install macOS 12 or newer.
Proof that the spoof is working (Click to reveal)

Proof

I tested the Board-id vmm spoof on my Lenovo T530 Notebook (Ivy Bridge), using the MacBookPro10,1 SMBIOS, which is officially not compatible with macOS Monterey. After rebooting, the system started without using -no_compat_check boot-arg, as you can see here:

Proof01

Terminal shows the currently used Board-ID which belongs to the MacBookPro10,1 SMBIOS as you can see in Clover Configurator. Usually, running macOS 12+ would require SMBIOS MacBookPro11,4 which uses a different Board-ID:

boardid

Next, I checked for updates and was offered macOS 12.1 beta:

Proof03

Which I installed…

Proof04

Installation went smoothly and macOS 12.1 booted without issues:

About

Notes

  • After upgrading to macOS 12+, you have to re-install graphics drivers for legacy iGPUs/dGPUs that are no longer supported by macOS, such as: Intel HD Graphics (Ivy Bridge to Skylake), NVIDIA Kepler and AMD Vega, Polaris and GCN. To do so, you can use OpenCore Patcher GUI App
  • For getting macOS Ventura and newer to work on unsupported platforms, check the OCLP Wintel section for detailed configuration guides (1st to 6th Gen Intel Core CPUs).

Credits