### 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 ```