- Joined
- Dec 10, 2010
- Messages
- 1,378
- Motherboard
- Gigabyte Z390 Aorus Elite
- CPU
- i9-9900K
- Graphics
- RX 6600 XT
- Mobile Phone
In Opencore (OC) 0.6.3, still in beta phase, a change has been made to SampleCustom.plist file, a new Memory section has been added within PlatformInfo, it describes a series of RAM memory parameters such as as defined in the SMBIOS specification.
Note: article useful only for those cases where memory has errors in SMBIOS and it is convenient to define its parameters manually. Most users start from Sample.plist file (instead of SampleCustom.plist file) and Memory section is absent from it, this article is not necessary for them. The difference is the new CustomMemory key which, if set to true, requires filling the Memory section but, if set to false, allows that section to be completely omitted.
Changes in OC 0.6.3 config.plist
OC 0.6.3 presents significant changes in its operating characteristics, several of them aimed at improving its integration with Big Sur. It also presents changes in the structure of SampleCustom.plist. All of these changes are inside PlatformInfo.
In Linux world there has long been a tool called dmidecode that provides information about hardware as described in the BIOS according to SMBIOS / DMI standard. Acidanthera has a specific version for macOS, the current version is 3.2c (dmidecode-mac-3.2c.zip). It is downloaded as an executable dmidecode file that should be copied to the / usr / local / bin folder so that it is accessible in the PATH variable. With this tool we obtain information about the SMBIOS parameters of the computer through the I / O Registry. In this case, we are interested in the memory section, specifically regarding the 4 memory slots. For this we use dmidecode with -t memory modifier. This code, for example, is from my PC (only the data of the first memory bank is shown):
With dmidecode we can find out some of the data to write in config.plist: DataWidth, ErrorConnection, FormFactor, TotalWidth, Type, TypeDetail, BankLocator, DeviceLocator, Speed, PartNumber, AssetTag and Manufacturer. The value of MaxCapacity is specified by the motherboard manufacturer. SerialNumber can be seen on the label attached to each memory module.
Fill in the config.plist data
With the data obtained from dmidecode, motherboard specifications, and memory module label, fields in config.plist can be filled in correctly. These data are from my system, you have to change them for yours if they are different.
DataWidth: 64 (current RAM usually is 64-bit)
ErrorCorrection: 3 (none)
FormFactor: 9 (DIMM)
MaxCapacity: 128 GB (137438953472 bytes)
TotalWidth: 64 (matches DataWidth)
Type: 26 (DDR4)
TypeDetail: 128 (Synchronous, bit 7)
AssetTag: 9876543210 (dmidecode)
BankLocator: BANK 0 / BANK 1 / BANK 2 / BANK 3
DeviceLocator: ChannelA-DIMM0 / ChannelA-DIMM1 / ChannelB-DIMM0 / ChannelB-DIMM
Manufacturer: Corsair
PartNumber: CMK16GX4M2B3200C16 (manufacturer's label)
SerialNumber: 200400138487908 / 200400138487909 (manufacturer's label)
Size: 8 Gb per module (8000 MB)
Speed: 3200 MT / s.
Note: see the OpenCore Reference Manual (0.6.3) [2020.10.24] for allowed values in these keys.
Note: article useful only for those cases where memory has errors in SMBIOS and it is convenient to define its parameters manually. Most users start from Sample.plist file (instead of SampleCustom.plist file) and Memory section is absent from it, this article is not necessary for them. The difference is the new CustomMemory key which, if set to true, requires filling the Memory section but, if set to false, allows that section to be completely omitted.
Changes in OC 0.6.3 config.plist
OC 0.6.3 presents significant changes in its operating characteristics, several of them aimed at improving its integration with Big Sur. It also presents changes in the structure of SampleCustom.plist. All of these changes are inside PlatformInfo.
- Removed SMBIOS key - MemoryFormFactor
- Added a new key called CustomMemory
- Added a new key called PlatformNVRAM with 5 subkeys: BID, FirmwareFeatures, FirmwareMask, MLB and ROM, some of these keys are still present in the SMBIOS section
- Added a new key called Memory with several subkeys related to RAM:
- DataWidth: bandwidth in bits of the bus, usually has the value of 64
- ErrorConnection: primary method of error detection or correction (none, parity, ECC ...)
- FormFactor: type of used module (DIMM, SODIMM ...)
- MaxCapacity: maximum memory capacity, in bytes, supported by the motherboard
- TotalWidth: total value of bus width, in bits, including error correction channels if any; if they do not exist, TotalWidth value is identical to DataWidth
- Type: memory type (DDR3, DDR4 ...)
- DetailType: additional information about memory (Synchronous, Buffered, Unbuffered ...)
- Devices: this section describes the memory banks, occupied or not, and specifies characteristics of each one:
- AssetTag: memory module property tag
- BankLocator: name of the memory bank in which the module is housed
- DeviceLocator: description of the bank position on the motherboard
- Manufacturer: memory manufacturer
- PartNumber: code corresponding to the memory model
- SerialNumber: serial number of each module
- Size: size in MB, 0 indicates it is empty
- Speed: maximum memory speed in MT / s (megatransfers per second).
In Linux world there has long been a tool called dmidecode that provides information about hardware as described in the BIOS according to SMBIOS / DMI standard. Acidanthera has a specific version for macOS, the current version is 3.2c (dmidecode-mac-3.2c.zip). It is downloaded as an executable dmidecode file that should be copied to the / usr / local / bin folder so that it is accessible in the PATH variable. With this tool we obtain information about the SMBIOS parameters of the computer through the I / O Registry. In this case, we are interested in the memory section, specifically regarding the 4 memory slots. For this we use dmidecode with -t memory modifier. This code, for example, is from my PC (only the data of the first memory bank is shown):
Bash:
> dmidecode -t memory
# dmidecode 3.2c
Scanning I/O Registry for entry point.
SMBIOS 3.2 present.
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 0 kB
Error Information Handle: No Error
Number Of Devices: 4
Memory Device
Array Handle: 0x009D
Error Information Handle: No Error
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Locator: ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR4
Type Detail: Synchronous
Speed: 3200 MT/s
Manufacturer: Corsair
Serial Number: 200400138487908
Asset Tag: 9876543210
Part Number: CMK16GX4M2B3200C16
(here goes on with parameters of the other 3 memory banks).
With dmidecode we can find out some of the data to write in config.plist: DataWidth, ErrorConnection, FormFactor, TotalWidth, Type, TypeDetail, BankLocator, DeviceLocator, Speed, PartNumber, AssetTag and Manufacturer. The value of MaxCapacity is specified by the motherboard manufacturer. SerialNumber can be seen on the label attached to each memory module.
Fill in the config.plist data
With the data obtained from dmidecode, motherboard specifications, and memory module label, fields in config.plist can be filled in correctly. These data are from my system, you have to change them for yours if they are different.
DataWidth: 64 (current RAM usually is 64-bit)
ErrorCorrection: 3 (none)
FormFactor: 9 (DIMM)
MaxCapacity: 128 GB (137438953472 bytes)
TotalWidth: 64 (matches DataWidth)
Type: 26 (DDR4)
TypeDetail: 128 (Synchronous, bit 7)
AssetTag: 9876543210 (dmidecode)
BankLocator: BANK 0 / BANK 1 / BANK 2 / BANK 3
DeviceLocator: ChannelA-DIMM0 / ChannelA-DIMM1 / ChannelB-DIMM0 / ChannelB-DIMM
Manufacturer: Corsair
PartNumber: CMK16GX4M2B3200C16 (manufacturer's label)
SerialNumber: 200400138487908 / 200400138487909 (manufacturer's label)
Size: 8 Gb per module (8000 MB)
Speed: 3200 MT / s.
Note: see the OpenCore Reference Manual (0.6.3) [2020.10.24] for allowed values in these keys.
Last edited: