Every Mac exposes SMBIOS (System Management BIOS) data that identifies the exact Mac model it is. macOS uses this identifier — theDocumentation 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.
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
TheSMBIOS.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
| CPU Codename | Platform | macOS Target | Selected Model |
|---|---|---|---|
| Arrandale / Clarksfield | Laptop | Any | MacBookPro6,1 |
| Sandy Bridge | Desktop | Any | iMac12,2 |
| Sandy Bridge | NUC | Any | Macmini5,1 / Macmini5,3 |
| Sandy Bridge | Laptop | Any | MacBookPro8,1 / MacBookPro8,2 |
| Sandy Bridge / Ivy Bridge | Any | macOS Ventura+ | MacPro6,1 |
| Ivy Bridge | Desktop | Any | iMac13,1 / iMac13,2 |
| Ivy Bridge | NUC | Any | Macmini6,1 / Macmini6,2 |
| Ivy Bridge | Laptop | Any | MacBookPro10,1 / MacBookPro10,2 |
| Haswell | Desktop | Any | iMac14,4 / iMac15,1 |
| Haswell | NUC | Any | Macmini7,1 |
| Haswell | Laptop | Any | MacBookPro11,1 / MacBookPro11,5 |
| Broadwell | Desktop | Any | iMac16,2 / iMac17,1 |
| Broadwell | NUC | Any | iMac16,1 |
| Broadwell | Laptop | Any | MacBookPro12,1 / MacBookPro11,5 |
| Skylake | Desktop | Any | iMac17,1 |
| Skylake | Laptop | Any | MacBookPro13,1 / MacBookPro13,3 |
| Kaby Lake / Amber Lake | Desktop | Any | iMac18,1 / iMac18,3 |
| Kaby Lake / Amber Lake | Laptop | Any | MacBookPro14,1 / MacBookPro14,3 |
| Coffee Lake / Comet Lake | Desktop | macOS High Sierra and older | iMac18,3 |
| Coffee Lake / Comet Lake | Desktop | macOS Mojave+ | iMac19,1 / iMac20,1 / iMac20,2 |
| Coffee Lake / Comet Lake | Laptop | Any | MacBookPro15,x / MacBookPro16,x |
| Ice Lake | Laptop | Any | MacBookAir9,1 |
| HEDT (Westmere–Bloomfield) | Any | macOS Mojave and older | MacPro5,1 |
| HEDT (Westmere–Bloomfield) | Any | macOS Catalina+ | MacPro6,1 |
| Any (no iGPU) | Desktop | macOS Sequoia and older | iMacPro1,1 |
| Any (no iGPU) | Desktop | macOS Tahoe+ | MacPro7,1 |
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:
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.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.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.config.plist under PlatformInfo → Generic are:
| Field | Source | Purpose |
|---|---|---|
SystemProductName | Model selection logic | Identifies the Mac model to macOS |
SystemSerialNumber | macserial output | Per-unit serial number used by iServices |
MLB | macserial output | Logic Board Serial used by iServices |
ROM | Random MAC address | Used for iServices validation; should be replaced with real NIC MAC |
SystemUUID | uuid.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 OS | Binary Name |
|---|---|
| Windows | macserial.exe |
| Linux | macserial.linux or macserial |
| macOS | macserial |
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,1is 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.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.
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.
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.
Select a model
Enter the index number of the model you want to use. The currently selected model is highlighted in green with
[*].