Properties
Automatic
- Type:
plist boolean
- Failsafe:
false
- Description: Generate PlatformInfo based on the
Generic
section instead of using values from theDataHub
,NVRAM
, andSMBIOS
sections.
Enabling this option is useful when Generic section is flexible enough:
- When enabled
SMBIOS
,DataHub
, andPlatformNVRAM
data is unused. - When disabled
Generic
section is unused.
Warning: Setting this option to
false
is strongly discouraged when intending to update platform information. Afalse
setting is typically only valid for minor corrections toSMBIOS
values on legacy Apple hardware. In all other cases, settingAutomatic
tofalse
may 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
Memory
section. This completely replaces any existing memory configuration in SMBIOS, and is only active whenUpdateSMBIOS
is set totrue
.
- Type:
UpdateDataHub
- Type:
plist boolean
- Failsafe:
false
- Description: Update Data Hub fields. These fields are read from the
Generic
orDataHub
sections depending on the setting of theAutomatic
property.
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
ProtocolOverrides
section. Refer to theDataHub
protocol 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
Generic
orPlatformNVRAM
sections depending on the setting of theAutomatic
property. All the other fields are to be specified with the NVRAM section.If
UpdateNVRAM
is set tofalse
, the aforementioned variables can be updated with theNVRAM
section. IfUpdateNVRAM
is set totrue
, the behaviour is undefined when any of the fields are present in theNVRAM
section.- Type:
UpdateSMBIOS
- Type:
plist boolean
- Failsafe:
false
- Description: Update SMBIOS fields. These fields are read from the
Generic
orSMBIOS
sections depending on the setting of theAutomatic
property.
- Type:
UpdateSMBIOSMode
- Type:
plist string
- Failsafe:
Create
-
Description: Update SMBIOS fields approach:
TryOverwrite
-Overwrite
if new size is <= than the page-aligned original and there are no issues with legacy region unlock.Create
otherwise. 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)TableGuid
to 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 byCustomSMBIOSGuid
quirk.
Note: A side effect of using the
Custom
approach 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-KKLLMMNNOOPP
is 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 orRaw
encoding.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 Endian
encoding 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 Endian
format everywhere but it ignores SMBIOS UUID within macOS. dmidecode
uses theBig Endian
format for SMBIOS 2.5.x or lower and theLittle Endian
format for 2.6 and newer. Acidanthera dmidecode prints all three.- Windows uses the
Little Endian
format 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
UseRawUuidEncoding
is enabled, theBig Endian
format is used to store theSystemUUID
data. Otherwise, theLittle Endian
format 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 Endian
format.- Type:
Generic
- Type:
plist dictionary
- Description: Update all fields in
Automatic
mode.
Note: This section is ignored but may not be removed when
Automatic
isfalse
.- Type:
DataHub
- Type:
plist dictionary
- Description: Update Data Hub fields in non-
Automatic
mode.
Note: This section is ignored and may be removed when
Automatic
istrue
.- Type:
Memory
- Type:
plist dictionary
- Description: Define custom memory configuration.
Note: This section is ignored and may be removed when
CustomMemory
isfalse
.- Type:
PlatformNVRAM
- Type:
plist dictionary
- Description: Update platform NVRAM fields in non-
Automatic
mode.
Note: This section is ignored and may be removed when
Automatic
istrue
.- Type:
SMBIOS
- Type:
plist dictionary
- Description: Update SMBIOS fields in non-
Automatic
mode.
Note: This section is ignored and may be removed when
Automatic
istrue
.- Type: