Properties
Automatic- Type:
plist boolean - Failsafe:
false - Description: Generate PlatformInfo based on the
Genericsection instead of using values from theDataHub,NVRAM, andSMBIOSsections.
Enabling this option is useful when Generic section is flexible enough:
- When enabled
SMBIOS,DataHub, andPlatformNVRAMdata is unused. - When disabled
Genericsection is unused.
Warning: Setting this option to
falseis strongly discouraged when intending to update platform information. Afalsesetting is typically only valid for minor corrections toSMBIOSvalues on legacy Apple hardware. In all other cases, settingAutomatictofalsemay lead to hard-to-debug errors resulting from inconsistent or invalid settings.- Type:
CustomMemory- Type:
plist boolean - Failsafe:
false - Description: Use custom memory configuration defined in the
Memorysection. This completely replaces any existing memory configuration in SMBIOS, and is only active whenUpdateSMBIOSis set totrue.
- Type:
UpdateDataHub- Type:
plist boolean - Failsafe:
false - Description: Update Data Hub fields. These fields are read from the
GenericorDataHubsections depending on the setting of theAutomaticproperty.
Note: The implementation of the Data Hub protocol in EFI firmware on virtually all systems, including Apple hardware, means that existing Data Hub entries cannot be overridden. New entries are added to the end of the Data Hub instead, with macOS ignoring old entries. This can be worked around by replacing the Data Hub protocol using the
ProtocolOverridessection. Refer to theDataHubprotocol override description for details.- Type:
UpdateNVRAM- Type:
plist boolean - Failsafe:
false - Description: Update NVRAM fields related to platform information.
These fields are read from the
GenericorPlatformNVRAMsections depending on the setting of theAutomaticproperty. All the other fields are to be specified with the NVRAM section.If
UpdateNVRAMis set tofalse, the aforementioned variables can be updated with theNVRAMsection. IfUpdateNVRAMis set totrue, the behaviour is undefined when any of the fields are present in theNVRAMsection.- Type:
UpdateSMBIOS- Type:
plist boolean - Failsafe:
false - Description: Update SMBIOS fields. These fields are read from the
GenericorSMBIOSsections depending on the setting of theAutomaticproperty.
- Type:
UpdateSMBIOSMode- Type:
plist string - Failsafe:
Create -
Description: Update SMBIOS fields approach:
TryOverwrite-Overwriteif new size is <= than the page-aligned original and there are no issues with legacy region unlock.Createotherwise. Has issues on some types of firmware.Create- Replace the tables with newly allocated EfiReservedMemoryType at AllocateMaxAddress without any fallbacks.Overwrite- Overwrite existing gEfiSmbiosTableGuid and gEfiSmbiosTable3Guid data if it fits new size. Abort with unspecified state otherwise.Custom- Write SMBIOS tables (gEfiSmbios(3)TableGuid) togOcCustomSmbios(3)TableGuidto workaround firmware overwriting SMBIOS contents at ExitBootServices. Otherwise equivalent toCreate. Requires patching AppleSmbios.kext and AppleACPIPlatform.kext to read from another GUID:"EB9D2D31" - "EB9D2D35"(in ASCII), done automatically byCustomSMBIOSGuidquirk.
Note: A side effect of using the
Customapproach that it makes SMBIOS updates exclusive to macOS, avoiding a collision with existing Windows activation and custom OEM software but potentially obstructing the operation of Apple-specific tools.- Type:
UseRawUuidEncoding- Type:
plist boolean - Failsafe:
false - Description: Use raw encoding for SMBIOS UUIDs.
Each UUID
AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPPis essentially a hexadecimal 16-byte number. It can be encoded in two ways:Big Endian- by writing all the bytes as they are without making any order changes ({AA BB CC DD EE FF GG HH II JJ KK LL MM NN OO PP}). This method is also known as RFC 4122 encoding orRawencoding.Little Endian- by interpreting the bytes as numbers and using Little Endian byte representation ({DD CC BB AA FF EE HH GG II JJ KK LL MM NN OO PP}).
The SMBIOS specification did not explicitly specify the encoding format for the UUID up to SMBIOS 2.6, where it stated that
Little Endianencoding shall be used. This led to the confusion in both firmware implementations and system software as different vendors used different encodings prior to that.- Apple uses the
Big Endianformat everywhere but it ignores SMBIOS UUID within macOS. dmidecodeuses theBig Endianformat for SMBIOS 2.5.x or lower and theLittle Endianformat for 2.6 and newer. Acidanthera dmidecode prints all three.- Windows uses the
Little Endianformat everywhere, but this only affects the visual representation of the values.
OpenCore always sets a recent SMBIOS version (currently 3.2) when generating the modified DMI tables. If
UseRawUuidEncodingis enabled, theBig Endianformat is used to store theSystemUUIDdata. Otherwise, theLittle Endianformat is used.Note: This preference does not affect UUIDs used in DataHub and NVRAM as they are not standardised and are added by Apple. Unlike SMBIOS, they are always stored in the
Big Endianformat.- Type:
Generic- Type:
plist dictionary - Description: Update all fields in
Automaticmode.
Note: This section is ignored but may not be removed when
Automaticisfalse.- Type:
DataHub- Type:
plist dictionary - Description: Update Data Hub fields in non-
Automaticmode.
Note: This section is ignored and may be removed when
Automaticistrue.- Type:
Memory- Type:
plist dictionary - Description: Define custom memory configuration.
Note: This section is ignored and may be removed when
CustomMemoryisfalse.- Type:
PlatformNVRAM- Type:
plist dictionary - Description: Update platform NVRAM fields in non-
Automaticmode.
Note: This section is ignored and may be removed when
Automaticistrue.- Type:
SMBIOS- Type:
plist dictionary - Description: Update SMBIOS fields in non-
Automaticmode.
Note: This section is ignored and may be removed when
Automaticistrue.- Type: