Contribute
Register

[GUIDE] OpenCore 0.6.3: new memory properties section

Status
Not open for further replies.
Joined
Dec 10, 2010
Messages
1,378
Motherboard
Gigabyte Z390 Aorus Elite
CPU
i9-9900K
Graphics
RX 6600 XT
Mobile Phone
  1. iOS
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.

  • 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).​
How to know characteristics of RAM?

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:
Any benefits to using?
 
Any benefits to using?
So far I have not observed improvements in my system that, before this, worked very well.
What led me to write my post was that, when going from OC 0.6.2 to OC 0.6.3, I saw that there were differences in config.plist and that it was difficult for me to eliminate errors from this file. So I was reading about it to have a well formed config.plist file.
Now I would like to teach others what I have learned and save them some effort and mistakes.
 
thanks @miliuco - great writeup, I dl'd dmidecode...didn't know about it.
since there's no real benefit, I'm not sure im going to add. In my case OC 0.6.3 has been running clean (so far, fingers still crossed).
thanks.
 
thanks @miliuco - great writeup, I dl'd dmidecode...didn't know about it.
since there's no real benefit, I'm not sure im going to add. In my case OC 0.6.3 has been running clean (so far, fingers still crossed).
thanks.
:thumbup:
 
Wondering what possible issues if some data fields are not known- a serial # of 0 seems suspect. Not sure why G.Skill RAM would not show up. Possibly the tool needs updating?

Bash:
Memory Device
    Array Handle: 0x0011
    Error Information Handle: No Error
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 16 GB
    Form Factor: DIMM
    Set: None
    Locator: ChannelA-DIMM0
    Bank Locator: BANK 0
    Type: DDR4
    Type Detail: Synchronous Unbuffered (Unregistered)
    Speed: 3200 MT/s
    Manufacturer: 04CD
    Serial Number: 00000000
    Asset Tag: 9876543210
    Part Number: F4-3200C16-16GVK
    Rank: 2
    Configured Memory Speed: 3200 MT/s
 
@ekohn00 @Feartech @agrajag @smcpipint
When installing OC 0.6.3 I got "unable to parse configuration" errors and, when I saw this new key, I thought the bug was there. So I tried to learn how the Memory section is filled.
I have set CustomMemory to false and I have deleted all the keys that are included into Memory and Big Sur boots up and works the same. Only difference is that some insignificant data is missing in System Profile - Memory but it seems purely cosmetic because memory is well recognized, without the need for these keys.

memoria3.jpg
 
@ekohn00 @Feartech @agrajag @smcpipint
When installing OC 0.6.3 I got "unable to parse configuration" errors and, when I saw this new key, I thought the bug was there. So I tried to learn how the Memory section is filled.
I have set CustomMemory to false and I have deleted all the keys that are included into Memory and Big Sur boots up and works the same. Only difference is that some insignificant data is missing in System Profile - Memory but it seems purely cosmetic because memory is well recognized, without the need for these keys.

View attachment 493137
I am currently running 0.6.2 so haven't looked into this memory section

not sure if i will use it, depends if the machine works fine without the need
 
Status
Not open for further replies.
Back
Top