Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/lzhoang2801/OpCore-Simplify/llms.txt

Use this file to discover all available pages before exploring further.

Every Mac exposes SMBIOS (System Management BIOS) data that identifies the exact Mac model it is. macOS uses this identifier — the SystemProductName, commonly called the Mac model — to look up the appropriate power management profiles, thermal policies, supported feature flags, and iServices entitlements. On a Hackintosh, you must present a plausible Mac model that is compatible with your CPU generation, platform type, and target macOS version. OpCore Simplify handles model selection and serial number generation automatically, but gives you full control to override both if needed.

Automatic Model Selection

The SMBIOS.select_smbios_model() function determines the best Mac model for your hardware by evaluating:
  • CPU codename — e.g., Sandy Bridge, Haswell, Coffee Lake, Ice Lake
  • Platform — Desktop, Laptop, or NUC
  • GPU type — whether the last detected GPU is an Integrated GPU or a discrete card
  • Target macOS version — some older models are excluded when targeting newer macOS releases
The selection matrix below shows which model is chosen for common configurations:
CPU CodenamePlatformmacOS TargetSelected Model
Arrandale / ClarksfieldLaptopAnyMacBookPro6,1
Sandy BridgeDesktopAnyiMac12,2
Sandy BridgeNUCAnyMacmini5,1 / Macmini5,3
Sandy BridgeLaptopAnyMacBookPro8,1 / MacBookPro8,2
Sandy Bridge / Ivy BridgeAnymacOS Ventura+MacPro6,1
Ivy BridgeDesktopAnyiMac13,1 / iMac13,2
Ivy BridgeNUCAnyMacmini6,1 / Macmini6,2
Ivy BridgeLaptopAnyMacBookPro10,1 / MacBookPro10,2
HaswellDesktopAnyiMac14,4 / iMac15,1
HaswellNUCAnyMacmini7,1
HaswellLaptopAnyMacBookPro11,1 / MacBookPro11,5
BroadwellDesktopAnyiMac16,2 / iMac17,1
BroadwellNUCAnyiMac16,1
BroadwellLaptopAnyMacBookPro12,1 / MacBookPro11,5
SkylakeDesktopAnyiMac17,1
SkylakeLaptopAnyMacBookPro13,1 / MacBookPro13,3
Kaby Lake / Amber LakeDesktopAnyiMac18,1 / iMac18,3
Kaby Lake / Amber LakeLaptopAnyMacBookPro14,1 / MacBookPro14,3
Coffee Lake / Comet LakeDesktopmacOS High Sierra and olderiMac18,3
Coffee Lake / Comet LakeDesktopmacOS Mojave+iMac19,1 / iMac20,1 / iMac20,2
Coffee Lake / Comet LakeLaptopAnyMacBookPro15,x / MacBookPro16,x
Ice LakeLaptopAnyMacBookAir9,1
HEDT (Westmere–Bloomfield)AnymacOS Mojave and olderMacPro5,1
HEDT (Westmere–Bloomfield)AnymacOS Catalina+MacPro6,1
Any (no iGPU)DesktopmacOS Sequoia and olderiMacPro1,1
Any (no iGPU)DesktopmacOS Tahoe+MacPro7,1
For NUC systems, the tool detects “NUC” in the motherboard name and treats the platform as NUC rather than Desktop.

How Serial Number Generation Works

Once a model is selected, SMBIOS.generate_smbios() is called to produce the four SMBIOS values required by OpenCore. The process is:
1

Locate macserial

The tool looks for the macserial binary in the Scripts/ directory. If it is not present, OpCore Simplify re-downloads OpenCorePkg (which includes macserial) automatically — with up to 3 retry attempts.
2

Generate serial and MLB

The tool runs macserial -g --model <SystemProductName> and parses the output. macserial produces a matching SystemSerialNumber and MLB (Logic Board Serial) pair that conform to Apple’s checksum algorithm for the specified model. If macserial fails or returns no output, the tool falls back to placeholder values: SystemSerialNumber = "A" + "0" × 10 + "9" and MLB = "A" + "0" × 15 + "Z". These placeholder values must be replaced before using iServices.
3

Generate ROM

A random 6-byte MAC address is generated as the ROM value. This is used by OpenCore as the Ethernet MAC for iServices calculations. For iServices to work reliably, this should eventually be replaced with the real MAC address of your motherboard’s built-in Ethernet port.
4

Generate SystemUUID

A random UUID is generated using Python’s uuid.uuid4() and stored as SystemUUID.
The four generated fields written to config.plist under PlatformInfo → Generic are:
FieldSourcePurpose
SystemProductNameModel selection logicIdentifies the Mac model to macOS
SystemSerialNumbermacserial outputPer-unit serial number used by iServices
MLBmacserial outputLogic Board Serial used by iServices
ROMRandom MAC addressUsed for iServices validation; should be replaced with real NIC MAC
SystemUUIDuuid.uuid4()System-unique identifier
Serial numbers generated by macserial are valid in format but are not real Apple serial numbers registered with Apple. iServices (iCloud, iMessage, FaceTime) also require correct USB mapping and the real MAC address of your physical Ethernet card set as the ROM value. Serial numbers alone are not sufficient for iServices to activate.

macserial Binary

macserial is a command-line utility included in the OpenCorePkg release archive. OpCore Simplify automatically detects the correct binary for your host OS:
Host OSBinary Name
Windowsmacserial.exe
Linuxmacserial.linux or macserial
macOSmacserial
The binary is placed in the Scripts/ directory after OpenCorePkg is downloaded. No manual installation is required.

SMBIOS-Specific Post-Selection Options

After a model is selected — either automatically or manually — SMBIOS.smbios_specific_options() applies additional adjustments:
  • MCHC ACPI patch: Enabled automatically for all Intel systems except MacPro models. The MCHC patch adds a Memory Controller Hub device to fix AppleSMBus detection, which is tied to the SMBIOS model because MacPro identifiers use a different AppleSMBus matching path.
  • RestrictEvents kext: Automatically enabled when MacPro7,1 is selected, to suppress the “Unsupported Configuration” notification that macOS shows for this model on non-Apple hardware.
  • NoTouchID kext: Automatically enabled for models that shipped with Touch ID sensors (certain MacBookPro models from 2016–2018), to prevent authentication dialog lag on systems without a real Touch ID chip.
The Board ID skip patch — which allows booting a Mac model on a macOS version outside its native support range — is applied separately by ConfigProdigy.add_booter_patch() in config_prodigy.py during the EFI build step, not by smbios_specific_options(). It is added automatically whenever the selected SMBIOS model’s support range does not include the target macOS version.

Customizing the SMBIOS Model

If the automatically selected model is not appropriate for your configuration — for example, if you want to use a specific model for better power management profiles or feature compatibility — you can override it from the main menu.
1

Open the SMBIOS customization menu

From the main menu, enter option 5 — “Customize SMBIOS Model”. The tool displays a categorized list of all available Mac models.
2

Review compatible models

By default, only models that are officially supported by your selected macOS version and match your platform (Laptop/Desktop) are shown. Models shown in gray are outside their native support range for the target macOS version.
3

Show all models

Enter A to show all Mac models regardless of macOS compatibility or platform type. Enter C to return to the filtered view.
4

Select a model

Enter the index number of the model you want to use. The currently selected model is highlighted in green with [*].
5

Restore the default

If you previously changed the model and want to revert, enter R — available only when the current selection differs from the auto-selected default.
Manually selecting a SMBIOS model that does not match your hardware generation or platform can cause power management issues, missing features, and boot failures. Only override the default model if you have a specific reason and understand the implications. Refer to the Dortania OpenCore Install Guide for guidance on model selection for edge cases.

Build docs developers (and LLMs) love