### Example GPU Path
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/nvidia-patching
This is an example of the output from gfxutil, showing the PCI root path for a GPU.
```text
67:00.0 10DE:0A20 /PC02@0/BR2A@0/GFX0@0/ = PciRoot(0x2)/Pci(0x0,0x0)/Pci(0x0,0x0)
```
--------------------------------
### Install NVRAM Emulation Script
Source: https://dortania.github.io/OpenCore-Post-Install/misc/nvram.html
After configuring OpenCore and placing the LogoutHook folder, run these commands in the terminal to install the necessary scripts for NVRAM emulation.
```bash
cd /Users/$(whoami)/LogoutHook/
./Launchd.command install
```
--------------------------------
### Extracting Setup Information with ifrextract
Source: https://dortania.github.io/OpenCore-Post-Install/misc/msr-lock.html
Use ifrextract to convert firmware setup data into a human-readable text file. This is a prerequisite for finding CFG Lock offsets.
```bash
path/to/ifrextract path/to/Setup.bin path/to/Setup.txt
```
--------------------------------
### Example gfxutil Output for Audio Device
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
An example of gfxutil output, highlighting how to locate the PciRoot path for a specific audio device based on its PCI ID.
```text
66:00.0 1102:0010 /PC02@0/BR2A@0/SL05@0 = PciRoot(0x32)/Pci(0x0,0x0)/Pci(0x0,0x0)
```
--------------------------------
### Install AMDRyzenCPUPowerManagement.kext for AMD
Source: https://dortania.github.io/OpenCore-Post-Install/universal/sleep.html
Install AMDRyzenCPUPowerManagement.kext to add power management capabilities to Ryzen-based CPUs. Refer to the repository's README for installation and usage instructions.
```bash
AMDRyzenCPUPowerManagement.kext
```
--------------------------------
### Run BootCamp MSI Installer on Windows
Source: https://dortania.github.io/OpenCore-Post-Install/multiboot/bootcamp.html
Alternatively, run the BootCamp.msi installer as Administrator to bypass the SMBIOS model check.
```text
bootcamp-{filename}\BootCamp\Drivers\Apple\BootCamp.msi
```
--------------------------------
### Example Supported Layout IDs for ALC1220
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
This example shows the output for an ALC1220 codec, listing its hardware revision and supported layout IDs.
```text
0x100003, layout 1, 2, 3, 5, 7, 11, 13, 15, 16, 21, 27, 28, 29, 34
```
--------------------------------
### Run BootCamp Setup on Windows
Source: https://dortania.github.io/OpenCore-Post-Install/multiboot/bootcamp.html
Execute the Setup.exe from the BootCamp folder on Windows. This requires correct SMBIOS spoofing.
```text
bootcamp-{filename}\BootCamp\Setup.exe
```
--------------------------------
### IOProviderClass Example
Source: https://dortania.github.io/OpenCore-Post-Install/usb/manual/manual.html
An example of the IOProviderClass value, derived from a CFBundleIdentifier. This property determines the USB driver macOS will use.
```text
AppleUSBXHCIPCI
```
--------------------------------
### Map Display Outputs with BusID Examples
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/intel-patching/busid.html
Examples of mapping display outputs by iterating through BusID values for different ports and connector types.
```text
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x000003C7 - DP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x000003C7 - DP
[3] busId: 0x06, pipe: 8, type: 0x00000400, flags: 0x000003C7 - DP
01050900 00040000 C7030000
02040A00 00040000 C7030000
03060800 00040000 C7030000
```
```text
01xx0900 **00080000** C7030000
```
```text
02**00**0A00 00040000 C7030000
03**00**0800 00040000 C7030000
```
```text
01**01**0900 00080000 C7030000
01**02**0900 00080000 C7030000
01**03**0900 00080000 C7030000
```
```text
port 1 = `01000900 00040000 C7030000`
port 2 = `02**xx**0A00 00080000 C7030000`
port 3 = `03000800 00040000 C7030000`
```
--------------------------------
### CPUFriend Power Management Data Example
Source: https://dortania.github.io/OpenCore-Post-Install/universal/pm.html
This example shows how to inject modified power management data using CPUFriend. Ensure X86PlatformPlugin is loaded and that Sandy Bridge and AMD CPUs are not used.
```text
plugin-type | Number | 0x1
```
--------------------------------
### macserial example output
Source: https://dortania.github.io/OpenCore-Post-Install/universal/iservices.html
This is an example of the output generated by the macserial command, showing a serial number and a board serial (MLB).
```bash
$ ./macserial \
--model "iMacPro1,1"
Warning: arc4random is not available!
C02V7UYGHX87 | C02733401J9JG36A8
```
--------------------------------
### Install NVMeFix.kext for Power Management
Source: https://dortania.github.io/OpenCore-Post-Install/universal/sleep.html
Install NVMeFix.kext to enable proper NVMe power management, as macOS drivers are limited to Apple branded drives.
```bash
NVMeFix.kext
```
--------------------------------
### Setting boot-args for DarkWake
Source: https://dortania.github.io/OpenCore-Post-Install/usb/misc/keyboard.html
Example of combining darkwake flags (HID Tickle Late and Graphics Power State 1) and applying the resulting value to the boot-args in NVRAM.
```text
NVRAM
|---Add
|---7C436110-AB2A-4BBB-A880-FE41995C9F82
|---boot-args | Sting | darkwake=514
```
--------------------------------
### Set VRAM Totalsize Property
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/nvidia-patching
Example of how to set the VRAM,totalsize property with the calculated hexadecimal value.
```text
VRAM,totalsize = 0000004000000000
```
--------------------------------
### SSDT-RHUB-MAP Creation Example
Source: https://dortania.github.io/OpenCore-Post-Install/usb/manual/manual.html
Demonstrates the process of creating a custom SSDT-RHUB-MAP by modifying an SSDT file with maciASL and extracting ACPI path information from IOReg.
```markdown
# before modifying
IOService:/AppleACPIPlatformExpert/PC00@0/AppleACPIPCI/RP05@1C,4/IOPP/PXSX@0
```
```markdown
* `IOService:/AppleACPIPlatformExpert/`
* `@##`
* `IOPP`
```
```markdown
Once cleaned up, yours should look similar:
```
--------------------------------
### Example IOPathMatch for USB Controller
Source: https://dortania.github.io/OpenCore-Post-Install/usb/manual/manual.html
An example of an IOPathMatch value used in a USB map kext's info.plist. This property tells macOS which device to attach the USB map to.
```text
IOService:/AppleACPIPlatformExpert/PC00@0/AppleACPIPCI/RP05@1C,4/IOPP/PXSX@0/PXSX@01000000
```
--------------------------------
### Set rom-revision Property
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/nvidia-patching
Example of setting the rom-revision property. The value can be arbitrary but the property must exist.
```text
rom-revision = Dortania
```
--------------------------------
### Get GPU PCI Root with gfxutil
Source: https://dortania.github.io/OpenCore-Post-Install/universal/sleep.html
Use the gfxutil tool to find the PciRoot of your GPU, which is needed for certain DeviceProperties configurations.
```bash
/path/to/gfxutil -f GFX0
```
--------------------------------
### Verify Lilu and AppleALC Installation
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Run this command in the terminal to check if Lilu, AppleALC, and AppleHDA are loaded. Ensure VoodooHDA is not present as it conflicts with AppleALC.
```bash
kextstat | grep -E "AppleHDA|AppleALC|Lilu"
```
--------------------------------
### USB-A Port Mapping Example
Source: https://dortania.github.io/OpenCore-Post-Install/usb/manual/manual.html
Illustrates the mapping of USB 3.0 and USB 2.0 personalities for a USB-A port. This helps in understanding how macOS identifies different USB port types.
```markdown
3.0 Personality | 2.0 Personality
---|---
|
```
--------------------------------
### Hexadecimal Byte Swapping Example
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Illustrates how to handle hexadecimal layout IDs greater than 255, where bytes are swapped. For example, layout ID 256 becomes '00 01 00 00'.
```text
00 01 00 00
```
--------------------------------
### Enable AdviseFeatures Quirk
Source: https://dortania.github.io/OpenCore-Post-Install/multiboot/bootcamp.html
Enable the AdviseFeatures quirk in OpenCore's PlatformInfo -> Generic settings to resolve 'You can't change the startup disk to the selected disk' errors, often caused by partition setup issues.
```text
PlatformInfo -> Generic -> AdviseFeatures -> True
```
--------------------------------
### Verify System Information with macserial
Source: https://dortania.github.io/OpenCore-Post-Install/universal/iservices.html
Run the macserial command to get a detailed rundown of your system's serial number and related information. Ensure this matches your intended configuration.
```bash
path/to/macserial -s
```
--------------------------------
### Finding a Compatible Intel iGPU Device ID
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/intel-patching
Demonstrates finding a similar iGPU's Device ID when the native one is not supported, using the i3-4330's HD 4600 as an example.
```text
Device ID = 0x412
```
--------------------------------
### Get Memory Size from Devices
Source: https://dortania.github.io/OpenCore-Post-Install/universal/memory.html
Use dmidecode to retrieve the Size of each memory stick in GB and convert to MB. Use 1 for empty slots.
```bash
path/to/dmidecode -t memory | grep "Size:"
#Example Output
Size: 8 GB
Size: No Module Installed
Size: 8 GB
Size: No Module Installed
Size: 8 GB
Size: No Module Installed
Size: 8 GB
Size: No Module Installed
# Final Value
Entry 1: 8192
Entry 2: 1
Entry 3: 8192
Entry 4: 1
Entry 5: 8192
Entry 6: 1
Entry 7: 8192
Entry 8: 1
Entry 9: 1
Entry 10: 1
Entry 11: 1
Entry 12: 1
```
--------------------------------
### Get Audio Codec Information on Linux
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Use the 'cat' command on Linux to retrieve information about your audio codec, which can help in finding compatible layout IDs.
```bash
cat /proc/asound/card0/codec#0 | less
```
--------------------------------
### NVIDIA GPU Device Properties Configuration
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/nvidia-patching
Example configuration for NVIDIA GPU device properties within OpenCore's config.plist. This section is vital for proper GPU recognition and functionality.
```plist
PciRoot(0x2)/Pci(0x0,0x0)/Pci(0x0,0x0)
model | String | GeForce GT 220
device_type | String | NVDA,Parent
VRAM,totalsize | Data | 0000004000000000
rom-revision | String | Dortania
NVCAP | Data | 05000000 00000300 0c000000 0000000f 00000000
@0,compatible | String | NVDA,NVMac
@0,device_type | String | display
@0,name | String | NVDA,Display-A
@1,compatible | String | NVDA,NVMac
@1,device_type | String | display
@1,name | String | NVDA,Display-B
```
--------------------------------
### Verify LauncherOption Entry Applied
Source: https://dortania.github.io/OpenCore-Post-Install/multiboot/bootstrap.html
Check OpenCore logs for messages indicating a new boot option was created or the boot order was updated. This confirms LauncherOption is functioning.
```text
OCB: Have existing option 1, valid 1
OCB: Boot order has first option as the default option
```
--------------------------------
### NVCAP Calculation Example
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/nvidia-patching
Example of a calculated NVCAP value. This value is crucial for enabling NVIDIA GPU features and compatibility.
```text
NVCAP:
05000000 00000300 0c000000 0000000f 00000000
```
--------------------------------
### Compile and run macserial on Linux
Source: https://dortania.github.io/OpenCore-Post-Install/universal/iservices.html
This snippet shows how to clone the OpenCorePkg repository, navigate to the macserial utility, compile it, and make it executable on a Linux system.
```bash
git clone --depth 1 https://github.com/acidanthera/OpenCorePkg.git
cd ./OpenCorePkg/Utilities/macserial/
make
chmod +x ./macserial
```
--------------------------------
### Verifying Lilu and WhateverGreen Kexts
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/intel-patching
Command to verify if Lilu and WhateverGreen kexts are loaded correctly in macOS.
```bash
kextstat | grep -E "Lilu|WhateverGreen"
```
--------------------------------
### Verify Lilu and WhateverGreen Injection Success
Source: https://dortania.github.io/OpenCore-Post-Install/universal/drm.html
Examine OpenCore logs to confirm successful pre-link injection of Lilu.kext and WhateverGreen.kext. Failures may indicate configuration issues.
```text
14:354 00:020 OC: Prelink injection Lilu.kext () - Success
14:367 00:012 OC: Prelink injection WhateverGreen.kext () - Success
```
--------------------------------
### Examples of iServices Entries in Keychain
Source: https://dortania.github.io/OpenCore-Post-Install/universal/iservices.html
This list provides examples of entries to remove from your Keychain related to iServices. Removing these can help resolve issues with Apple ID authentication.
```text
ids: identity-rsa-key-pair-signature-v1
ids: identity-rsa-private-key
ids: identity-rsa-public-key
ids: message-protection-key
ids: message-protection-public-data-registered
ids: personal-public-key-cache
iMessage Encryption Key
iMessage Signing Key
com.apple.facetime: registrationV1
etc ...
```
--------------------------------
### Using Boot Argument for DRM
Source: https://dortania.github.io/OpenCore-Post-Install/universal/drm.html
Alternatively, you can use a boot argument to configure DRM decoding. This is often specified in the Shiki mode column of the WhateverGreen DRM chart.
```bash
-shikigva=80
```
--------------------------------
### Compare config.plist with Sample.plist using diff
Source: https://dortania.github.io/OpenCore-Post-Install/universal/update.html
Use the terminal 'diff' command to compare your current config.plist with the new Sample.plist. This helps identify necessary changes for compatibility with the new OpenCore release.
```bash
diff (file input 1) (file input 2)
```
--------------------------------
### Workaround for DC9/DC6 Transition Issues on Ice Lake
Source: https://dortania.github.io/OpenCore-Post-Install/universal/sleep.html
For certain Ice Lake laptops kernel panicking on DC9 transitions, use these boot-args to work around the issue.
```bash
-noDC9
```
```bash
-nodisplaysleepDC6
```
--------------------------------
### Get Manufacturer from Memory Devices
Source: https://dortania.github.io/OpenCore-Post-Install/universal/memory.html
Use dmidecode to retrieve the Manufacturer for each memory slot.
```bash
path/to/dmidecode -t memory | grep "Manufacturer:"
```
--------------------------------
### ACPI Error Example
Source: https://dortania.github.io/OpenCore-Post-Install/universal/pm.html
This error indicates a conflict where a device or method is already declared in your OEM's SSDT.
```text
ACPI Error: Method parse/execution failed [\_SB._INI] , AE_ALREADY_EXIST
```
--------------------------------
### OpenCore Injection Logs
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Examine OpenCore logs to confirm successful or failed injection of Lilu.kext and AppleALC.kext. Look for 'Success' or 'Invalid Parameter' messages.
```text
14:354 00:020 OC: Prelink injection Lilu.kext () - Success
14:367 00:012 OC: Prelink injection AppleALC.kext () - Success
```
```text
15:448 00:007 OC: Prelink injection AppleALC.kext () - Invalid Parameter
```
--------------------------------
### Calculating New ScanPolicy Value
Source: https://dortania.github.io/OpenCore-Post-Install/universal/security/scanpolicy.html
Example of adding OC_SCAN_ALLOW_DEVICE_USB to the default ScanPolicy. This involves hexadecimal addition and conversion to decimal.
```text
0x00200000 + 0x10F0103 = 0x12F0103
Converting this to decimal gives us 19,857,667
```
--------------------------------
### Renaming PCI0.XHC1.RHUB to PC00.RP05.PXSX.RHUB
Source: https://dortania.github.io/OpenCore-Post-Install/usb/manual/manual.html
Before and after examples of renaming a PCI device path in an SSDT file. This is crucial for correctly identifying your USB controller.
```text
External (_SB_.PCI0.XHC1.RHUB, DeviceObj) <- Rename this
Scope (_SB.PCI0.XHC1.RHUB) <- Rename this
```
```text
External (_SB.PC00.RP05.PXSX.RHUB, DeviceObj) <- Renamed
Scope (_SB.PC00.RP05.PXSX.RHUB) <- Renamed
```
--------------------------------
### Check Loaded Kexts
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Verify if Lilu, AppleALC, and AppleHDA are loaded correctly in the system. Ensure VoodooHDA and other conflicting kexts are not present.
```bash
kextstat | grep -E "AppleHDA|AppleALC|Lilu"
```
--------------------------------
### Delay AppleHDAController Initialization
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Use boot-args or DeviceProperties to delay AppleHDAController initialization by up to 3000ms if hardware is not initialized in time for sound output.
```text
alcdelay=1000
```
```text
alc-delay | Number | 1000
```
--------------------------------
### Get Memory Speed from Devices
Source: https://dortania.github.io/OpenCore-Post-Install/universal/memory.html
Use dmidecode to retrieve the Speed of each memory stick in MHz. Use 1 for empty slots.
```bash
path/to/dmidecode -t memory | grep "Speed:"
#Example Output
Speed: 2666 MT/s
Speed: Unknown
Speed: 2666 MT/s
Speed: Unknown
Speed: 2666 MT/s
Speed: Unknown
Speed: 2666 MT/s
Speed: Unknown
# Final Value
Entry 1: 2666
Entry 2: 1
Entry 3: 2666
Entry 4: 1
Entry 5: 2666
Entry 6: 1
Entry 7: 2666
Entry 8: 1
Entry 9: 1
Entry 10: 1
Entry 11: 1
Entry 12: 1
```
--------------------------------
### Get Serial Number from Memory Devices
Source: https://dortania.github.io/OpenCore-Post-Install/universal/memory.html
Use dmidecode to retrieve the Serial Number for each memory slot. Use 'EmptyDIMM' for empty slots.
```bash
path/to/dmidecode -t memory | grep "Serial Number:"
#Example Output
Serial Number: 0F095257
Serial Number: NO DIMM
Serial Number: 0C099A57
Serial Number: NO DIMM
Serial Number: 752EDED8
Serial Number: NO DIMM
Serial Number: A2032E84
Serial Number: NO DIMM
# Final Value
Entry 1: 0F095257
Entry 2: EmptyDIMM
Entry 3: 0C099A57
Entry 4: EmptyDIMM
Entry 5: 752EDED8
Entry 6: EmptyDIMM
Entry 7: A2032E84
Entry 8: EmptyDIMM
Entry 9: EmptyDIMM
Entry 10: EmptyDIMM
Entry 11: EmptyDIMM
Entry 12: EmptyDIMM
```
--------------------------------
### Get Part Number from Memory Devices
Source: https://dortania.github.io/OpenCore-Post-Install/universal/memory.html
Use dmidecode to retrieve the Part Number for each memory slot. Use 'EmptyDIMM' for empty slots.
```bash
path/to/dmidecode -t memory | grep "Part Number:"
#Example Output
Part Number: KHX2666C16/8G
Part Number: NO DIMM
Part Number: KHX2666C16/8G
Part Number: NO DIMM
Part Number: KHX2666C16/8G
Part Number: NO DIMM
Part Number: KHX2666C15D4/8G
Part Number: NO DIMM
# Final Value
Entry 1: KHX2666C16/8G
Entry 2: EmptyDIMM
Entry 3: KHX2666C16/8G
Entry 4: EmptyDIMM
Entry 5: KHX2666C16/8G
Entry 6: EmptyDIMM
Entry 7: KHX2666C15D4/8G
Entry 8: EmptyDIMM
Entry 9: EmptyDIMM
Entry 10: EmptyDIMM
Entry 11: EmptyDIMM
Entry 12: EmptyDIMM
```
--------------------------------
### Download BootCamp Drivers with Brigadier
Source: https://dortania.github.io/OpenCore-Post-Install/multiboot/bootcamp.html
Use Brigadier to download BootCamp drivers. You can specify a particular SMBIOS model if needed.
```bash
path/to/Brigadier --model MacPro7,1
```
--------------------------------
### USBInjectAll for Older Systems
Source: https://dortania.github.io/OpenCore-Post-Install/usb/manual/manual.html
Instructions for using USBInjectAll on Coffee Lake and older systems to address missing USB ports. This involves adding the kext to EFI/OC/Kexts and config.plist.
```markdown
* Coffee Lake and older should use USBInjectAll(opens new window)
* Don't forget to add this to both EFI/OC/Kexts and you config.plist's kernel -> Add
```
--------------------------------
### Configure layout-id in DeviceProperties (Hexadecimal)
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Add the 'layout-id' property to your config.plist under DeviceProperties. This example shows the hexadecimal (Data) format for layout ID 11.
```text
layout-id | Data | <0B000000>
```
--------------------------------
### Adding Fake Device ID for GMA 950
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/legacy-intel
Example of how to add a fake device ID for GMA 950 (Calistoga) in `config.plist` to enable compatibility.
```yaml
# GMA 950(Calistoga) Fake ID
config.plist:
|-DeviceProperties
|- Add
|- PciRoot(0x0)/Pci(0x2,0x0)
|- device-id | Data | A2270000
```
--------------------------------
### Alternative AAPL,ig-platform-id for Some iGPUs
Source: https://dortania.github.io/OpenCore-Post-Install/universal/sleep.html
This AAPL,ig-platform-id is known to work on some iGPU systems.
```bash
AAPL,ig-platform-id
0300923E
```
--------------------------------
### Test Layout ID using boot-arg
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Configure your config.plist to test a specific layout ID by setting the 'boot-args' NVRAM variable. Remember to test one ID at a time.
```text
config.plist
├── NVRAM
├── Add
├── 7C436110-AB2A-4BBB-A880-FE41995C9F82
├── boot-args | String | alcid=11
```
--------------------------------
### Configure TSCAdjustReset Kext
Source: https://dortania.github.io/OpenCore-Post-Install/universal/sleep.html
Customizes the TSCAdjustReset kext for HEDT/Server hardware. Modify `IOPropertyMatch -> IOCPUNumber` to the total number of CPU threads starting from 0.
```xml
IOPropertyMatch
IOCPUNumber
35
```
--------------------------------
### Finding GPU Device Path with gfxutil
Source: https://dortania.github.io/OpenCore-Post-Install/universal/drm.html
Use the `gfxutil` tool to determine the correct device path for your iGPU or dGPU, which is necessary for injecting properties.
```bash
path/to/gfxutil -f GFX0
```
```bash
path/to/gfxutil -f IGPU
```
--------------------------------
### Generate ApECID using Python
Source: https://dortania.github.io/OpenCore-Post-Install/universal/security/applesecureboot.html
Use this command to generate a cryptographically secure 64-bit random integer for your ApECID value. Ensure Python 3 is installed.
```bash
python3 -c 'import secrets; print(secrets.randbits(64))'
```
--------------------------------
### Get Device Locator from Memory Devices
Source: https://dortania.github.io/OpenCore-Post-Install/universal/memory.html
Use dmidecode to retrieve the Device Locator for each memory slot. This is used to identify specific slots like DIMM_A1.
```bash
path/to/dmidecode -t memory | grep "Locator:"
#Example Output
Locator: DIMM_A1
Locator: DIMM_A2
Locator: DIMM_B1
Locator: DIMM_B2
Locator: DIMM_C1
Locator: DIMM_C2
Locator: DIMM_D1
Locator: DIMM_D2
# Final Value
Entry 1: DIMM_A1
Entry 2: DIMM_A2
Entry 3: DIMM_B1
Entry 4: DIMM_B2
Entry 5: DIMM_C1
Entry 6: DIMM_C2
Entry 7: DIMM_D1
Entry 8: DIMM_D2
Entry 9: DIMM_EMPTY
Entry 10: DIMM_EMPTY
Entry 11: DIMM_EMPTY
Entry 12: DIMM_EMPTY
```
--------------------------------
### Get Bank Locator from Memory Devices
Source: https://dortania.github.io/OpenCore-Post-Install/universal/memory.html
Use dmidecode to retrieve the Bank Locator for each memory slot. If 'Not Specified' is returned, leave the entry blank.
```bash
path/to/dmidecode -t memory | grep "Bank Locator:"
```
--------------------------------
### Get Asset Tag from Memory Devices
Source: https://dortania.github.io/OpenCore-Post-Install/universal/memory.html
Use dmidecode to retrieve the Asset Tag for each memory slot. If 'Not Specified' is returned, leave the entry blank.
```bash
path/to/dmidecode -t memory | grep "Asset Tag:"
```
--------------------------------
### Calculating and Converting Memory Values
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/intel-patching/vram.html
This section demonstrates how to convert a desired memory size (e.g., 9MB) into bytes and then into a hexadecimal value, which is necessary for patching. It also shows the hex-swapping process required for injection.
```bash
# Convert 9MB Megabytes to Bytes
echo '9 * 1024 * 1024' | bc
9437184
# Convert from decimal to hexadecimal
echo 'obase=16; ibase=10; 9437184' | bc
900000
# Hexswap so it can be injected correctly
# ie. swap in pairs
900000 -> 90 00 00 -> 00 00 90
# Pad the value to 4 bytes with 00 at the end
00 00 90 00
```
--------------------------------
### WhateverGreen Patch Properties
Source: https://dortania.github.io/OpenCore-Post-Install/gpu-patching/intel-patching/vram.html
These are the key-value pairs used in the config.plist to enable and configure WhateverGreen's VRAM patching. 'framebuffer-patch-enable' activates the patching, while 'framebuffer-stolenmem' and 'framebuffer-fbmem' set the desired memory values.
```text
framebuffer-patch-enable | Data | 01000000
framebuffer-stolenmem | Data | 00003001
framebuffer-fbmem | Data | 00009000
```
--------------------------------
### Configure layout-id in DeviceProperties (Decimal)
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Alternatively, you can use the decimal (Number) format for the 'layout-id' property in your config.plist's DeviceProperties. This example uses layout ID 11.
```text
layout-id | Number | <11>
```
--------------------------------
### Find Audio Controller PCI Path
Source: https://dortania.github.io/OpenCore-Post-Install/universal/audio.html
Use the gfxutil tool in the macOS terminal to find the PCI path of your audio controller, which is needed for DeviceProperties configuration.
```bash
path/to/gfxutil -f HDEF
```
--------------------------------
### Configure OpenCore config.plist for Password Security
Source: https://dortania.github.io/OpenCore-Post-Install/universal/security/password.html
Add the generated PasswordHash and PasswordSalt to the Misc -> Security section of your `config.plist`. Remember to enable `EnablePassword` to activate the password prompt.
```xml
Misc
Security
EnablePassword
PasswordHash
YOUR_PASSWORD_HASH
PasswordSalt
YOUR_PASSWORD_SALT
```