Legacy Hackintosh iMessage Guide: Serial, SMBIOS, and Activation Steps
Step-by-step guide to getting iMessage and iCloud working on a legacy Hackintosh running macOS 10.13 High Sierra or older. Covers serial generation, SMBIOS config, ROM handling, and testing without risking your Apple ID.
Getting iMessage and iCloud working on a legacy Hackintosh is one of those problems that can eat up an entire weekend. Apple’s servers check a handful of hardware identifiers — serial numbers, board serials, UUIDs, and MAC addresses — before they let you sign into iMessage, FaceTime, or iCloud Drive. On a real Mac, those values are burned into firmware and never change. On a custom-built PC running macOS 10.13 High Sierra or older, you have to spoof them carefully. One wrong value can get your Apple ID blacklisted, forcing you to call Apple Support to restore access. This guide walks through generating a valid serial number, configuring the SystemUUID and MLB fields in your bootloader, and testing iMessage on a legacy Hackintosh without risking your main Apple account.
What Apple Actually Checks
When you sign into iMessage or iCloud, macOS sends a request containing several data points from the SMBIOS table. The most critical are:
- Serial Number — a 12-character string that must correspond to a real Mac model that Apple has actually manufactured. Using a random or invalid serial will cause the server to reject the request.
- MLB (Board Serial) — a longer alphanumeric string tied to the logic board of the real Mac. On a Hackintosh, this is often derived from the serial number using a known algorithm.
- SystemUUID — a 36-character GUID that should be unique to your machine. Apple does not publicly document the exact checks performed on this value, but reusing a UUID from another Hackintosh configuration can cause conflicts.
- ROM — derived from the primary network interface MAC address. On a real Mac, this is the built-in Ethernet MAC. On a Hackintosh, the bootloader can inject a custom ROM value.
If any of these values are invalid, duplicated, or inconsistent with each other, Apple’s servers may refuse the connection. After several failed attempts, the server can blacklist the Apple ID itself, requiring a phone call to Apple Support to restore access.

Generating a Valid Serial Number
Do not guess a serial number. Use a tool that generates serials based on Apple’s actual production ranges. The most reliable method for legacy systems (macOS 10.8–10.14) is to use a serial generator that supports Mac models from the 2010–2015 era, such as the MacPro6,1, iMac14,2, or MacBookPro11,3. For a desktop Hackintosh, a MacPro6,1 or iMac14,2 is usually the best match because these models use desktop-class CPUs and discrete GPUs.
After generating a candidate serial, verify it against Apple’s coverage check page. Do not submit the serial on that page — just observe whether the page returns a valid model description and purchase date. If the page says “invalid serial”, discard it and generate another. A valid serial will show the correct Mac model name and a purchase date that is not in the future.
Configuring SMBIOS in Clover
For legacy systems still running Clover, the SMBIOS settings live in the config.plist file under SMBIOS section. The essential keys are:
ProductName— e.g., MacPro6,1SerialNumber— the 12-character serial you verifiedBoardSerialNumber(MLB) — generated from the serial using the same tool that produced the serialSystemUUID— a fresh GUID. Do not reuse a UUID from a guide or another user’s config.Trust— set totruefor iMessage reliability on older macOS versions.
Open your config.plist with a plist editor (PlistEdit Pro or Xcode) and populate these fields. Save the file, reboot, and verify the values are applied by running system_profiler SPHardwareDataType in Terminal. The output should show your custom serial and board ID.
Handling the ROM Value
The ROM value is typically derived from the MAC address of your primary Ethernet interface. On a Hackintosh, the bootloader can override this. In Clover, navigate to RtVariables in your config.plist and set:
ROM— use the MAC address of your onboard Ethernet, stripped of colons and converted to lowercase. For example, if your MAC is00:1b:63:xx:yy:zz, the ROM value becomes001b63xxyyzz.MLB— duplicate the MLB value from the SMBIOS section here as well.
This duplication ensures that Clover passes the same MLB to both the SMBIOS and the RtVariables paths, which some older versions of macOS require.
Testing iMessage Without Risking Your Apple ID
Before signing in with your primary Apple ID, create a test Apple ID using a secondary email address. Use this test account for the initial iMessage activation attempt. If the activation fails, you have not compromised your main account. If it succeeds, you can sign out and sign in with your primary ID.
Open the Messages app and enter the test credentials. If you see “Activation unsuccessful” after a few seconds, check the console log for errors. Open Console.app and filter for imessage or appleid. Common error codes include:
- 100013 — serial number invalid or not matching the MLB.
- 100009 — ROM or UUID issue.
- 100004 — server-side blacklist or rate limiting.
If you get error 100013, recheck your serial and MLB generation. If you get 100009, verify that the ROM value matches your actual MAC and that the SystemUUID is unique. For error 100004, wait 24 hours before trying again with the same Apple ID — repeated attempts in a short window can trigger a temporary block.

Network Interface Order and Ethernet Built-In Flag
macOS expects the primary network interface to be built-in Ethernet. If your Hackintosh uses Wi-Fi as the primary interface, iMessage may fail. In Clover, you can set EthernetBuiltIn to true under RtVariables. This flag tells macOS that the first network interface is internal Ethernet. If you have multiple network cards, ensure the Ethernet port you intend to use is at en0. You can check this by running networksetup -listallhardwareports in Terminal. If Wi-Fi appears as en0 and Ethernet as en1, you need to either disable Wi-Fi temporarily or reorder the interfaces using the NetworkInterfaces.plist file in /Library/Preferences/SystemConfiguration/.
NVRAM and the Clover Bootloader
iMessage relies on NVRAM variables being preserved across reboots. On legacy systems with Clover, NVRAM emulation is handled by the EmuVariableUefi-64.efi driver. Ensure this driver is present in EFI/CLOVER/drivers64UEFI/ (or drivers64/ for BIOS systems). Without it, variables like ROM and MLB may not persist, causing iMessage to lose its activation state after a reboot. If you are using a motherboard with native NVRAM support (such as some Z77 and Z87 boards), you can skip the emulated driver, but verify that NVRAM is actually writable by running nvram -p and checking if values survive a restart.
ACPI Considerations
Some older boards require ACPI patches to expose the Ethernet controller correctly. If your DSDT does not declare the network device as built-in, macOS may not recognize it as an internal interface. You can fix this by adding a device-properties injection for the PCI Ethernet controller, or by patching the DSDT itself. For a detailed walkthrough of extracting and examining your DSDT for such properties, refer to the guide on Extract DSDT from macOS for Legacy Hackintosh (Z77, X79, X99). That article covers the extraction script and how to verify the integrity of your dump before making modifications.
When All Else Fails: The Null Ethernet Method
If your onboard Ethernet uses a chipset that macOS does not natively support (for example, Realtek RTL8111 on some older boards without the correct kext), you can still get iMessage working by using a null Ethernet kext that fakes a compatible MAC address. This approach is risky because it bypasses actual network connectivity for the iMessage handshake — the system must still have working network access through another interface. The null Ethernet method should be a last resort after exhausting all other fixes. It involves installing a kext that presents a fake en0 interface with a spoofed MAC, then using that MAC as the ROM value. This technique is fragile and may stop working after a macOS update.
Saving and Documenting Your Configuration
Once iMessage activates successfully, back up your entire EFI folder and note the SMBIOS values you used. Store them in a text file alongside the date of activation. If you ever need to reinstall macOS or switch to a different bootloader, having the exact serial, MLB, UUID, and ROM values will save hours of debugging. The Clover Bootloader Guide for Legacy Hackintosh: Configuration and Stability provides a complete framework for organizing your EFI structure and preserving bootable configurations across system changes.
Do not share your serial number or MLB online. If someone else uses the same values on their Hackintosh, both machines will conflict with Apple’s servers, and both Apple IDs risk being blocked. Treat your SMBIOS values as unique credentials tied to your hardware build.
