├── Assets └── background.png ├── PostInstall ├── CombojackFix │ ├── ComboJack │ ├── hda-verb │ ├── Headphone.icns │ ├── com.XPS.ComboJack.plist │ ├── l10n.json │ ├── Information.rtf │ ├── install.sh │ └── LICENSE └── FakeEthernet │ ├── NullEthernet.kext │ └── Contents │ │ ├── MacOS │ │ └── NullEthernet │ │ └── Info.plist │ └── SSDT-RMNE.dsl ├── Kexts ├── AppleALC.kext │ └── Contents │ │ ├── MacOS │ │ └── AppleALC │ │ └── _CodeSignature │ │ └── CodeResources ├── VerbStub.kext │ └── Contents │ │ ├── MacOS │ │ └── VerbStub │ │ └── Info.plist └── USBPorts.kext │ └── Contents │ └── Info.plist ├── ACPI ├── SSDT-AWAC.dsl ├── SSDT-TPDX.dsl ├── SSDT-ALS0.dsl ├── SSDT-PLUG.dsl ├── SSDT-USBX.dsl ├── SSDT-EXT4-WakeScreen.dsl ├── SSDT-DGPU.dsl ├── SSDT-BCKM.dsl └── SSDT-PCI0.dsl ├── .gitignore ├── packages.csv ├── README.md ├── CLOVER └── config.plist ├── update.py └── OC └── config.plist /Assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tctien342/Dell-Inspiron-7591-Hackintosh/HEAD/Assets/background.png -------------------------------------------------------------------------------- /PostInstall/CombojackFix/ComboJack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tctien342/Dell-Inspiron-7591-Hackintosh/HEAD/PostInstall/CombojackFix/ComboJack -------------------------------------------------------------------------------- /PostInstall/CombojackFix/hda-verb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tctien342/Dell-Inspiron-7591-Hackintosh/HEAD/PostInstall/CombojackFix/hda-verb -------------------------------------------------------------------------------- /PostInstall/CombojackFix/Headphone.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tctien342/Dell-Inspiron-7591-Hackintosh/HEAD/PostInstall/CombojackFix/Headphone.icns -------------------------------------------------------------------------------- /Kexts/AppleALC.kext/Contents/MacOS/AppleALC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tctien342/Dell-Inspiron-7591-Hackintosh/HEAD/Kexts/AppleALC.kext/Contents/MacOS/AppleALC -------------------------------------------------------------------------------- /Kexts/VerbStub.kext/Contents/MacOS/VerbStub: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tctien342/Dell-Inspiron-7591-Hackintosh/HEAD/Kexts/VerbStub.kext/Contents/MacOS/VerbStub -------------------------------------------------------------------------------- /PostInstall/FakeEthernet/NullEthernet.kext/Contents/MacOS/NullEthernet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tctien342/Dell-Inspiron-7591-Hackintosh/HEAD/PostInstall/FakeEthernet/NullEthernet.kext/Contents/MacOS/NullEthernet -------------------------------------------------------------------------------- /ACPI/SSDT-AWAC.dsl: -------------------------------------------------------------------------------- 1 | /* 2 | * Forces enables legacy RTC clock, also gets arond INI conflict found on X299X boards 3 | */ 4 | DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AWAC", 0x00000000) 5 | { 6 | External (STAS, IntObj) 7 | 8 | Scope (_SB) 9 | { 10 | If (_OSI ("Darwin")) 11 | { 12 | STAS = One 13 | } 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | ._* 3 | .vscode/ 4 | __pycache__/ 5 | APPLE/ 6 | Microsoft/ 7 | Boot/ 8 | BOOT/ 9 | Dell/ 10 | Manjaro/ 11 | *.aml 12 | ACPI/iasl 13 | macserial 14 | CLOVER/* 15 | !CLOVER/config.plist 16 | OC/* 17 | BOOT/* 18 | !OC/config.plist 19 | *.kext 20 | !Kexts/* 21 | !PostInstall/*/*.kext 22 | Clover_Install_Log.txt 23 | test.py 24 | tmp 25 | Builds 26 | Kexts/.DS_Store 27 | -------------------------------------------------------------------------------- /PostInstall/CombojackFix/com.XPS.ComboJack.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | KeepAlive 6 | 7 | Label 8 | com.XPS.ComboJack 9 | ProgramArguments 10 | 11 | /usr/local/sbin/ComboJack 12 | 13 | RunAtLoad 14 | 15 | ServiceIPC 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /ACPI/SSDT-TPDX.dsl: -------------------------------------------------------------------------------- 1 | // Enable TPD0 GPIO pinning 2 | // Patch: Rename USTP to One 3 | // Find: VVNUUBA= 4 | // Replace: AaOjoxA= 5 | // References: 6 | // [1] https://github.com/xxxzc/xps15-9550-macos/issues/26#issuecomment-546838295 7 | // [2] https://github.com/daliansky/OC-little/tree/master/09-OCI2C-TPXX%E8%A1%A5%E4%B8%81%E6%96%B9%E6%B3%95 8 | // [3] https://github.com/alexandred/VoodooI2C/blob/master/Documentation/GPIO%20Pinning.md 9 | 10 | DefinitionBlock ("", "SSDT", 2, "hack", "TPDX", 0x00000000) 11 | { 12 | External (TPDM, FieldUnitObj) 13 | 14 | Scope (\) 15 | { 16 | If (_OSI ("Darwin")) 17 | { 18 | TPDM = Zero // enable GPIO pinning for TPD0 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /PostInstall/CombojackFix/l10n.json: -------------------------------------------------------------------------------- 1 | { 2 | "zh_CN": { 3 | "dialogTitle" : "耳机接入通知", 4 | "dialogMsg" : "请选择接入的设备类型(按ESC键取消)", 5 | "btnHeadphone" : "耳机", 6 | "btnLinein" : "线路输入", 7 | "btnHeadset" : "耳麦", 8 | "btnCancel" : "取消" 9 | }, 10 | "en_US": { 11 | "dialogTitle" : "Combo Jack Selection", 12 | "dialogMsg" : "Select your device type (Press ESC to cancel)", 13 | "btnHeadphone" : "Headphones", 14 | "btnLinein" : "Line-In", 15 | "btnHeadset" : "Headset", 16 | "btnCancel" : "Cancel" 17 | }, 18 | "vi_VN": { 19 | "dialogTitle" : "Thông báo cắm tai nghe", 20 | "dialogMsg" : "Lựa chọn loại thiết bị được cắm vào? (Bấm ESC để huỷ)", 21 | "btnHeadphone" : "Tai nghe thường", 22 | "btnLinein" : "Microphone", 23 | "btnHeadset" : "Tai nghe có mic", 24 | "btnCancel" : "Huỷ" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ACPI/SSDT-ALS0.dsl: -------------------------------------------------------------------------------- 1 | /* 2 | * Starting with macOS 10.15 Ambient Light Sensor presence is required for backlight functioning. 3 | * Here we create an Ambient Light Sensor ACPI Device, which can be used by SMCLightSensor kext 4 | * to report either dummy (when no device is present) or valid values through SMC interface. 5 | */ 6 | DefinitionBlock ("", "SSDT", 2, "ACDT", "ALS0", 0x00000000) 7 | { 8 | Scope (_SB) 9 | { 10 | Device (ALS0) 11 | { 12 | Name (_HID, "ACPI0008" /* Ambient Light Sensor Device */) // _HID: Hardware ID 13 | Name (_CID, "smc-als") // _CID: Compatible ID 14 | Name (_ALI, 0x012C) // _ALI: Ambient Light Illuminance 15 | Name (_ALR, Package (0x01) // _ALR: Ambient Light Response 16 | { 17 | Package (0x02) 18 | { 19 | 0x64, 20 | 0x012C 21 | } 22 | }) 23 | Method (_STA, 0, NotSerialized) // _STA: Status 24 | { 25 | If (_OSI ("Darwin")) 26 | { 27 | Return (0x0F) 28 | } 29 | Else 30 | { 31 | Return (Zero) 32 | } 33 | } 34 | } 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /PostInstall/CombojackFix/Information.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600 2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Verdana;} 3 | {\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red255\green255\blue255;\red17\green90\blue209; 4 | } 5 | {\*\expandedcolortbl;;\cssrgb\c0\c0\c0;\cssrgb\c100000\c100000\c100000;\cssrgb\c5882\c44706\c85490; 6 | } 7 | \margl1440\margr1440\vieww10800\viewh8400\viewkind0 8 | \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 9 | 10 | \f0\fs24 \cf0 Modified ComboJack binary for ALC295 Dell Inspiron 7590/7591 by SaintNo\ 11 | \ 12 | Based on the idea of 13 | \f1 \cf2 \cb3 \expnd0\expndtw0\kerning0 14 | \'a0{\field{\*\fldinst{HYPERLINK "https://github.com/goodwin/ALCPlugFix"}}{\fldrslt \cf4 \ul \ulc4 https://github.com/goodwin/ALCPlugFix}}\ 15 | Implemented by way of porting hda-verb from alsa-tools:\ 16 | {\field{\*\fldinst{HYPERLINK "https://www.alsa-project.org/main/index.php/Main_Page"}}{\fldrslt https://www.alsa-project.org/main/index.php/Main_Page}}\ 17 | \ 18 | Portions of code adapted from CodecCommander ({\field{\*\fldinst{HYPERLINK "https://github.com/RehabMan/EAPD-Codec-Commander"}}{\fldrslt https://github.com/RehabMan/EAPD-Codec-Commander}}) and the Linux kernel ({\field{\*\fldinst{HYPERLINK "https://github.com/torvalds/linux"}}{\fldrslt https://github.com/torvalds/linux}}). All copyrights belong to their respective owners.\ 19 | \ 20 | Uses layout-id 77. VerbStub.kext goes into EFI/Clover/kexts/Other.} -------------------------------------------------------------------------------- /ACPI/SSDT-PLUG.dsl: -------------------------------------------------------------------------------- 1 | // Inject plugin-type=1 for XCPM power management 2 | // Reference: 3 | // [1] https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl 4 | 5 | DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000) 6 | { 7 | External (_SB.PR00, ProcessorObj) 8 | 9 | Scope (_SB.PR00) 10 | { 11 | Method (DTGP, 5, NotSerialized) 12 | { 13 | If ((Arg0 == ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b"))) 14 | { 15 | If ((Arg1 == One)) 16 | { 17 | If ((Arg2 == Zero)) 18 | { 19 | Arg4 = Buffer (One) 20 | { 21 | 0x03 22 | } 23 | Return (One) 24 | } 25 | 26 | If ((Arg2 == One)) 27 | { 28 | Return (One) 29 | } 30 | } 31 | } 32 | 33 | Arg4 = Buffer (One) 34 | { 35 | 0x00 36 | } 37 | Return (Zero) 38 | } 39 | 40 | Method (_DSM, 4, NotSerialized) 41 | { 42 | Local0 = Package (0x02) 43 | { 44 | "plugin-type", 45 | One 46 | } 47 | DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) 48 | Return (Local0) 49 | } 50 | } 51 | } 52 | 53 | -------------------------------------------------------------------------------- /ACPI/SSDT-USBX.dsl: -------------------------------------------------------------------------------- 1 | // USB power injection 2 | // References: 3 | // [1] https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl 4 | // [2] https://github.com/daliansky/XiaoMi-Pro-Hackintosh/blob/master/EFI/CLOVER/ACPI/patched/SSDT-USB.dsl 5 | 6 | DefinitionBlock ("", "SSDT", 2, "hack", "_USB", 0x00000000) 7 | { 8 | External (_SB_.PCI0.LPCB, DeviceObj) // (from opcode) 9 | 10 | Scope (\_SB) 11 | { 12 | Device (USBX) 13 | { 14 | Name (_ADR, Zero) // _ADR: Address 15 | Method (_STA, 0, NotSerialized) // _STA: Status 16 | { 17 | If (_OSI ("Darwin")) 18 | { 19 | Return (0x0F) 20 | } 21 | 22 | Return (Zero) 23 | } 24 | 25 | Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method 26 | { 27 | If (LNot (Arg2)) 28 | { 29 | Return (Buffer (One) 30 | { 31 | 0x03 32 | }) 33 | } 34 | 35 | Return (Package (0x08) 36 | { 37 | "kUSBSleepPowerSupply", 38 | 0x13EC, 39 | "kUSBSleepPortCurrentLimit", 40 | 0x0834, 41 | "kUSBWakePowerSupply", 42 | 0x13EC, 43 | "kUSBWakePortCurrentLimit", 44 | 0x0834 45 | }) 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /PostInstall/FakeEthernet/SSDT-RMNE.dsl: -------------------------------------------------------------------------------- 1 | /* ssdt.dsl -- SSDT injector for NullEthernet 2 | * 3 | * Copyright (c) 2014 RehabMan 4 | * All rights reserved. 5 | * 6 | * This program is free software; you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the Free 8 | * Software Foundation; either version 2 of the License, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but WITHOUT 12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 14 | * more details. 15 | * 16 | */ 17 | 18 | // Use this SSDT as an alternative to patching your DSDT... 19 | 20 | DefinitionBlock("ssdt-rmne.aml", "SSDT", 2, "RehabMan", "RMNE", 0x00001000) 21 | { 22 | Device (RMNE) 23 | { 24 | Name (_ADR, Zero) 25 | // The NullEthernet kext matches on this HID 26 | Name (_HID, "NULE0000") 27 | // This is the MAC address returned by the kext. Modify if necessary. 28 | Name (MAC, Buffer() { 0x01, 0x02, 0x03, 0xA8, 0x8F, 0xCF }) 29 | Method (_DSM, 4, NotSerialized) 30 | { 31 | If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) } 32 | Return (Package() 33 | { 34 | "built-in", Buffer() { 0x00 }, 35 | "IOName", "ethernet", 36 | "name", Buffer() { "ethernet" }, 37 | "model", Buffer() { "RM-NullEthernet-1001" }, 38 | "device_type", Buffer() { "ethernet" }, 39 | }) 40 | } 41 | } 42 | } 43 | 44 | -------------------------------------------------------------------------------- /ACPI/SSDT-EXT4-WakeScreen.dsl: -------------------------------------------------------------------------------- 1 | /* 2 | * Intel ACPI Component Architecture 3 | * AML/ASL+ Disassembler version 20180427 (64-bit version)(RM) 4 | * Copyright (c) 2000 - 2018 Intel Corporation 5 | * 6 | * Disassembling to non-symbolic legacy ASL operators 7 | * 8 | * Disassembly of iASLy7PQrN.aml, Wed Mar 11 14:19:31 2020 9 | * 10 | * Original Table Header: 11 | * Signature "SSDT" 12 | * Length 0x00000111 (273) 13 | * Revision 0x02 14 | * Checksum 0xE7 15 | * OEM ID "ACDT" 16 | * OEM Table ID "EXT4" 17 | * OEM Revision 0x00000000 (0) 18 | * Compiler ID "INTL" 19 | * Compiler Version 0x20180427 (538444839) 20 | */ 21 | DefinitionBlock ("", "SSDT", 2, "ACDT", "EXT4", 0x00000000) 22 | { 23 | External (_SB_.LID0, DeviceObj) // (from opcode) 24 | External (_SB_.LID_, DeviceObj) // (from opcode) 25 | External (_SB_.PCI0.LPCB.LID0, DeviceObj) // (from opcode) 26 | External (_SB_.PCI0.LPCB.LID_, DeviceObj) // (from opcode) 27 | 28 | Method (EXT4, 1, NotSerialized) 29 | { 30 | If (LEqual (0x03, Arg0)) 31 | { 32 | If (CondRefOf (\_SB.LID)) 33 | { 34 | Notify (\_SB.LID, 0x80) 35 | } 36 | 37 | If (CondRefOf (\_SB.LID0)) 38 | { 39 | Notify (\_SB.LID0, 0x80) 40 | } 41 | 42 | If (CondRefOf (\_SB.PCI0.LPCB.LID)) 43 | { 44 | Notify (\_SB.PCI0.LPCB.LID, 0x80) 45 | } 46 | 47 | If (CondRefOf (\_SB.PCI0.LPCB.LID0)) 48 | { 49 | Notify (\_SB.PCI0.LPCB.LID0, 0x80) 50 | } 51 | } 52 | } 53 | } 54 | 55 | -------------------------------------------------------------------------------- /PostInstall/CombojackFix/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [[ $EUID -ne 0 ]]; then 4 | exec sudo /bin/bash "$0" "$@" 5 | fi 6 | echo "<> Installing AudioFix..." 7 | 8 | cd "$(dirname "${BASH_SOURCE[0]}")" 9 | # Clean legacy stuff 10 | # 11 | sudo launchctl unload /Library/LaunchDaemons/com.XPS.ComboJack.plist 2>/dev/null 12 | sudo rm -rf /Library/Extensions/CodecCommander.kext 13 | sudo rm -f /usr/local/bin/ALCPlugFix 14 | sudo rm -f /Library/LaunchAgents/good.win.ALCPlugFix 15 | sudo rm -f /Library/LaunchDaemons/good.win.ALCPlugFix 16 | sudo rm -f /usr/local/sbin/hda-verb 17 | sudo rm -f /usr/local/share/ComboJack/Headphone.icns 18 | sudo rm -f /usr/local/share/ComboJack/l10n.json 19 | 20 | # install 21 | mkdir -p /usr/local/sbin 22 | sudo cp ComboJack /usr/local/sbin 23 | sudo chmod 755 /usr/local/sbin/ComboJack 24 | sudo chown root:wheel /usr/local/sbin/ComboJack 25 | sudo cp hda-verb /usr/local/sbin 26 | sudo mkdir -p /usr/local/share/ComboJack/ 27 | sudo cp Headphone.icns /usr/local/share/ComboJack/ 28 | sudo chmod 644 /usr/local/share/ComboJack/Headphone.icns 29 | sudo cp l10n.json /usr/local/share/ComboJack/ 30 | sudo chmod 644 /usr/local/share/ComboJack/l10n.json 31 | sudo cp com.XPS.ComboJack.plist /Library/LaunchDaemons/ 32 | sudo chmod 644 /Library/LaunchDaemons/com.XPS.ComboJack.plist 33 | sudo chown root:wheel /Library/LaunchDaemons/com.XPS.ComboJack.plist 34 | sudo launchctl load /Library/LaunchDaemons/com.XPS.ComboJack.plist 35 | 36 | echo "<> Rebuild kext..." 37 | sudo spctl --master-disable 38 | sudo mount -uw / 39 | sudo killall Finder 40 | sudo chown -v -R root:wheel /System/Library/Extensions 41 | sudo touch /System/Library/Extensions 42 | sudo chmod -v -R 755 /Library/Extensions 43 | sudo chown -v -R root:wheel /Library/Extensions 44 | sudo touch /Library/Extensions 45 | sudo kextcache -i / 46 | 47 | echo "<> Done, please reboot your macos!" 48 | exit 0 49 | -------------------------------------------------------------------------------- /ACPI/SSDT-DGPU.dsl: -------------------------------------------------------------------------------- 1 | // Disable discrete GPU 2 | // Patch: Rename _WAK to ZWAK 3 | // Find: FDlfV0FLAQ== 4 | // Replace: FDlaV0FLAQ== 5 | // Patch: Rename _PTS to ZPTS 6 | // Find: FEkEX1BUUwE= 7 | // Replace: FEkEWlBUUwE= 8 | // Reference: 9 | // [1] https://github.com/RehabMan/OS-X-Clover-Laptop-Config/blob/master/hotpatch/SSDT-DDGPU.dsl 10 | // [2] https://github.com/RehabMan/OS-X-Clover-Laptop-Config/blob/master/hotpatch/SSDT-PTSWAK.dsl 11 | DefinitionBlock ("", "SSDT", 2, "hack", "DGPU", 0x00000000) 12 | { 13 | External (_SB_.PCI0.PEG0.PEGP._OFF, MethodObj) // 0 Arguments (from opcode) 14 | External (_SB_.PCI0.PEG0.PEGP._ON_, MethodObj) 15 | External (_SB_.PCI0.PEG0.PG00._OFF, MethodObj) // 0 Arguments (from opcode) 16 | External (_SB_.PCI0.PGOF, MethodObj) 17 | External (EXT4, MethodObj) // 1 Arguments (from opcode) 18 | External (ZWAK, MethodObj) // 1 Arguments (from opcode) 19 | External (ZPTS, MethodObj) // 1 Arguments (from opcode) 20 | 21 | Method (DGPU, 0, NotSerialized) 22 | { 23 | If (CondRefOf (\_SB.PCI0.PEG0.PEGP._OFF)) 24 | { 25 | \_SB.PCI0.PEG0.PEGP._OFF () 26 | } 27 | If (CondRefOf (\_SB.PCI0.PEG0.PG00._OFF)) 28 | { 29 | \_SB.PCI0.PEG0.PG00._OFF () 30 | } 31 | If (CondRefOf (\_SB_.PCI0.PGOF)) 32 | { 33 | \_SB.PCI0.PGOF () 34 | } 35 | } 36 | 37 | Device (RMD1) 38 | { 39 | Name (_HID, "RMD10000") // _HID: Hardware ID 40 | Method (_INI, 0, NotSerialized) // _INI: Initialize 41 | { 42 | If (_OSI ("Darwin")) 43 | { 44 | DGPU () 45 | } 46 | } 47 | 48 | Method (_STA, 0, NotSerialized) // _STA: Status 49 | { 50 | If (_OSI ("Darwin")) 51 | { 52 | Return (0x0F) 53 | } 54 | 55 | Return (Zero) 56 | } 57 | } 58 | 59 | Method (_WAK, 1, NotSerialized) // _WAK: Wake 60 | { 61 | Store (ZWAK (Arg0), Local0) 62 | If (_OSI ("Darwin")) 63 | { 64 | If (CondRefOf (EXT4)) 65 | { 66 | EXT4 (Arg0) 67 | } 68 | 69 | DGPU () 70 | } 71 | 72 | Return (Local0) 73 | } 74 | 75 | Method (_PTS, 1, NotSerialized) // _PTS: Sleep 76 | { 77 | If (_OSI ("Darwin")) 78 | { 79 | \_SB.PCI0.PEG0.PEGP._ON () 80 | } 81 | ZPTS(Arg0) 82 | } 83 | } 84 | 85 | -------------------------------------------------------------------------------- /Kexts/VerbStub.kext/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 18B75 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | VerbStub 11 | CFBundleIdentifier 12 | com.XPS.VerbStub 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | VerbStub 17 | CFBundlePackageType 18 | KEXT 19 | CFBundleShortVersionString 20 | 1.0.3 21 | CFBundleSupportedPlatforms 22 | 23 | MacOSX 24 | 25 | CFBundleVersion 26 | 1.0.3 27 | DTCompiler 28 | com.apple.compilers.llvm.clang.1_0 29 | DTPlatformBuild 30 | 10B61 31 | DTPlatformVersion 32 | GM 33 | DTSDKBuild 34 | 18B71 35 | DTSDKName 36 | macosx10.14 37 | DTXcode 38 | 1010 39 | DTXcodeBuild 40 | 10B61 41 | IOKitPersonalities 42 | 43 | VerbStub 44 | 45 | CFBundleIdentifier 46 | com.XPS.VerbStub 47 | IOClass 48 | com_XPS_VerbStub 49 | IOMatchCategory 50 | com_XPS_VerbStub 51 | IOProviderClass 52 | IOHDACodecFunction 53 | IOUserClientClass 54 | VerbStubUserClient 55 | 56 | VerbStubResidency 57 | 58 | CFBundleIdentifier 59 | com.XPS.VerbStub 60 | IOClass 61 | VerbStubResidency 62 | IOMatchCategory 63 | VerbStubResidency 64 | IOProviderClass 65 | IOResources 66 | 67 | 68 | NSHumanReadableCopyright 69 | Copyright © 2017 VerbStub. All rights reserved. 70 | OSBundleLibraries 71 | 72 | com.apple.iokit.IOPCIFamily 73 | 2.9 74 | com.apple.kpi.iokit 75 | 16.6 76 | com.apple.kpi.libkern 77 | 16.6 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /Kexts/AppleALC.kext/Contents/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | files2 8 | 9 | rules 10 | 11 | ^Resources/ 12 | 13 | ^Resources/.*\.lproj/ 14 | 15 | optional 16 | 17 | weight 18 | 1000 19 | 20 | ^Resources/.*\.lproj/locversion.plist$ 21 | 22 | omit 23 | 24 | weight 25 | 1100 26 | 27 | ^Resources/Base\.lproj/ 28 | 29 | weight 30 | 1010 31 | 32 | ^version.plist$ 33 | 34 | 35 | rules2 36 | 37 | .*\.dSYM($|/) 38 | 39 | weight 40 | 11 41 | 42 | ^(.*/)?\.DS_Store$ 43 | 44 | omit 45 | 46 | weight 47 | 2000 48 | 49 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 50 | 51 | nested 52 | 53 | weight 54 | 10 55 | 56 | ^.* 57 | 58 | ^Info\.plist$ 59 | 60 | omit 61 | 62 | weight 63 | 20 64 | 65 | ^PkgInfo$ 66 | 67 | omit 68 | 69 | weight 70 | 20 71 | 72 | ^Resources/ 73 | 74 | weight 75 | 20 76 | 77 | ^Resources/.*\.lproj/ 78 | 79 | optional 80 | 81 | weight 82 | 1000 83 | 84 | ^Resources/.*\.lproj/locversion.plist$ 85 | 86 | omit 87 | 88 | weight 89 | 1100 90 | 91 | ^Resources/Base\.lproj/ 92 | 93 | weight 94 | 1010 95 | 96 | ^[^/]+$ 97 | 98 | nested 99 | 100 | weight 101 | 10 102 | 103 | ^embedded\.provisionprofile$ 104 | 105 | weight 106 | 20 107 | 108 | ^version\.plist$ 109 | 110 | weight 111 | 20 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /PostInstall/FakeEthernet/NullEthernet.kext/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 16C67 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | NullEthernet 11 | CFBundleGetInfoString 12 | 1.0.6, Copyright © 2014 RehabMan. All rights reserved. 13 | CFBundleIdentifier 14 | org.rehabman.driver.NullEthernet 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | NullEthernet 19 | CFBundlePackageType 20 | KEXT 21 | CFBundleShortVersionString 22 | 1.0.6 23 | CFBundleSignature 24 | ???? 25 | CFBundleSupportedPlatforms 26 | 27 | MacOSX 28 | 29 | CFBundleVersion 30 | 1.0.6 31 | DTCompiler 32 | com.apple.compilers.llvm.clang.1_0 33 | DTPlatformBuild 34 | 8C1002 35 | DTPlatformVersion 36 | GM 37 | DTSDKBuild 38 | 10M2518 39 | DTSDKName 40 | macosx10.6 41 | DTXcode 42 | 0821 43 | DTXcodeBuild 44 | 8C1002 45 | IOKitPersonalities 46 | 47 | NullEthernet 48 | 49 | CFBundleIdentifier 50 | org.rehabman.driver.NullEthernet 51 | IOClass 52 | org_rehabman_NullEthernet 53 | IONameMatch 54 | NULE0000 55 | IOProviderClass 56 | IOACPIPlatformDevice 57 | Model 58 | NullEthernet 59 | Vendor 60 | RehabMan 61 | 62 | 63 | NSHumanReadableCopyright 64 | Copyright © 2014 RehabMan. All rights reserved. 65 | OSBundleLibraries 66 | 67 | com.apple.iokit.IOACPIFamily 68 | 1.0d1 69 | com.apple.iokit.IONetworkingFamily 70 | 1.1.0 71 | com.apple.kpi.bsd 72 | 8.10.0 73 | com.apple.kpi.iokit 74 | 8.10.0 75 | com.apple.kpi.libkern 76 | 8.10.0 77 | com.apple.kpi.mach 78 | 8.10.0 79 | 80 | OSBundleRequired 81 | Network-Root 82 | Source Code 83 | https://github.com/RehabMan/OS-X-NullEthernet 84 | 85 | 86 | -------------------------------------------------------------------------------- /packages.csv: -------------------------------------------------------------------------------- 1 | Folder,Name,Description,Version,Pattern,Url 2 | Kexts,AirportBrcmFixup.kext,Broadcom Wi-Fi driver,latest,.*RELEASE,https://github.com/acidanthera/AirportBrcmFixup 3 | Kexts,AppleALC.kext,Custom appleALC for dell inspiron 759x,kext-100920,AppleALC.kext.zip,https://github.com/tctien342/Dell-Inspiron-7591-Hackintosh 4 | Kexts,BrcmBluetoothInjector.kext,Injects the BT hardware data,latest,.*RELEASE,https://github.com/acidanthera/BrcmPatchRAM 5 | Kexts,BrcmFirmwareData.kext,Most appropriate for bootloader injection,latest,.*RELEASE,https://github.com/acidanthera/BrcmPatchRAM 6 | Kexts,BrcmPatchRAM3.kext,Apply the firmware update to Bluetooth,latest,.*RELEASE,https://github.com/acidanthera/BrcmPatchRAM 7 | Kexts,CPUFriend.kext,Dynamic CPU power management,latest,.*RELEASE,https://github.com/acidanthera/CPUFriend 8 | Kexts,CPUFriendDataProvider.kext,Custom frequency data,kext-120320,CPUFriendDataProvider.kext.zip,https://github.com/tctien342/Dell-Inspiron-7591-Hackintosh 9 | Kexts,Lilu.kext,Arbitrary kext and process patching,latest,.*RELEASE,https://github.com/acidanthera/Lilu 10 | Kexts,NoTouchID.kext,Disable TouchID,latest,.*RELEASE,https://github.com/al3xtjames/NoTouchID 11 | Kexts,NVMeFix.kext,improve compatibility with non-Apple SSDs,latest,.*RELEASE,https://github.com/acidanthera/NVMeFix 12 | Kexts,SMCBatteryManager.kext,Emulation layer of AppleSmartBattery,latest,.*RELEASE,https://github.com/acidanthera/VirtualSMC 13 | Kexts,SMCProcessor.kext,Add support for CPU monitoring,latest,.*RELEASE,https://github.com/acidanthera/VirtualSMC 14 | Kexts,SMCLightSensor.kext,Add support for emulator of light sensor,latest,.*RELEASE,https://github.com/acidanthera/VirtualSMC 15 | Kexts,SMCDellSensors.kext,Add support for dell sensor monitoring,latest,.*RELEASE,https://github.com/acidanthera/VirtualSMC 16 | Kexts,USBPorts.kext,USBPorts for dell Insipron 759x,kext-100920,USBPorts.kext.zip,https://github.com/tctien342/Dell-Inspiron-7591-Hackintosh 17 | Kexts,VirtualSMC.kext,SMC emulator layer,latest,.*RELEASE,https://github.com/acidanthera/VirtualSMC 18 | Kexts,VoodooI2C.kext,Stock VoodooI2C,latest,VoodooI2C-2.*,https://github.com/VoodooI2C/VoodooI2C 19 | Kexts,VoodooI2CHID.kext,Stock VoodooI2C,latest,VoodooI2C-2.*,https://github.com/VoodooI2C/VoodooI2C 20 | Kexts,VerbStub.kext,VerbStub for combojack fix,70320,VerbStub.kext.zip,https://github.com/tctien342/Dell-Inspiron-7591-Hackintosh 21 | Kexts,VoodooPS2Controller.kext,PS/2 controller,latest,.*RELEASE,https://github.com/acidanthera/VoodooPS2 22 | Kexts,WhateverGreen.kext,Patches for GPUs,latest,.*RELEASE,https://github.com/acidanthera/WhateverGreen 23 | Kexts,CpuTscSync.kext,Lvs1974 CpuTscSync replacement for VoodooTCSSync,latest,.*RELEASE,https://github.com/lvs1974/CpuTscSync 24 | Kexts,HibernationFixup.kext,An open source kernel extension providing a sync between RTC variables and NVRAM,latest,.*RELEASE,https://github.com/acidanthera/HibernationFixup 25 | Drivers,VBoxHfs.efi,HFS+ support with bless extensions,latest,.*RELEASE,https://github.com/acidanthera/AppleSupportPkg 26 | CLOVER/drivers/UEFI,ApfsDriverLoader.efi,Open source apfs.efi loader,latest,.*RELEASE,https://github.com/acidanthera/AppleSupportPkg 27 | CLOVER/drivers/UEFI,OcQuirks.efi,Correct memory map,latest,OcQuirks.zip,https://github.com/ReddestDream/OcQuirks 28 | CLOVER/drivers/UEFI,OpenRuntime.efi,Correct memory map,latest,OcQuirks.zip,https://github.com/ReddestDream/OcQuirks 29 | CLOVER/drivers/UEFI,OcQuirks.plist,Correct memory map,latest,OcQuirks.zip,https://github.com/ReddestDream/OcQuirks 30 | CLOVER,CLOVERX64.efi,Bootloader for macOS and other systems,latest,CloverV2-*,https://github.com/CloverHackyColor/CloverBootloader 31 | OC/Drivers,OpenRuntime.efi, Drives for Opencore,latest,.*RELEASE,https://github.com/acidanthera/OpenCorePkg 32 | OC/Drivers,OpenCanopy.efi, Drives for Opencore,latest,.*RELEASE,https://github.com/acidanthera/OpenCorePkg 33 | OC,OpenCore.efi,Bootloader for macOS and other systems,latest,.*RELEASE,https://github.com/acidanthera/OpenCorePkg 34 | OC,Tools,Tools for Opencore,latest,.*RELEASE,https://github.com/acidanthera/OpenCorePkg 35 | OC,Bootstrap,Bootstrap for Opencore,latest,.*RELEASE,https://github.com/acidanthera/OpenCorePkg 36 | ../BOOT/CLOVER,BOOTX64.efi,Bootloader for macOS and other systems,latest,CloverV2-*,https://github.com/CloverHackyColor/CloverBootloader 37 | ../BOOT/OC,BOOTx64.efi,Bootloader for macOS and other systems,latest,.*RELEASE,https://github.com/acidanthera/OpenCorePkg 38 | -------------------------------------------------------------------------------- /ACPI/SSDT-BCKM.dsl: -------------------------------------------------------------------------------- 1 | // Make brightness control and brightness keys work 2 | // Patch: Rename BRT6 to BRTX 3 | // Find: QlJUNgI= 4 | // Replace: QlJUWAI= 5 | // References: 6 | // [1] https://github.com/daliansky/OC-little/blob/master/05-OC-PNLF%E6%B3%A8%E5%85%A5%E6%96%B9%E6%B3%95/%E5%AE%9A%E5%88%B6%E4%BA%AE%E5%BA%A6%E8%A1%A5%E4%B8%81/SSDT-PNLF-CFL.dsl 7 | // [2] https://github.com/daliansky/OC-little/tree/master/%E4%BF%9D%E7%95%99%E9%A1%B9%E7%9B%AE/X02-%E4%BA%AE%E5%BA%A6%E5%BF%AB%E6%8D%B7%E9%94%AE%E8%A1%A5%E4%B8%81 8 | // [3] https://www.dell.com/community/Precision-Mobile-Workstations/Fn-and-brightness-key-causing-a-lot-of-errors-in-kernel-logs/td-p/7393145 9 | 10 | DefinitionBlock ("", "SSDT", 2, "hack", "BCKM", 0x00000000) 11 | { 12 | External (_SB_.ACOS, IntObj) 13 | External (_SB_.ACSE, IntObj) 14 | External (_SB_.PCI0.GFX0, DeviceObj) 15 | External (_SB_.PCI0.GFX0.BRTX, MethodObj) 16 | External (_SB_.PCI0.GFX0.LCD_, DeviceObj) 17 | External (_SB_.PCI0.LPCB.PS2K, DeviceObj) 18 | External (_SB_.PCI0.PEG0.PEGP, DeviceObj) 19 | External (_SB_.PCI0.PEG0.PEGP.LCD_, DeviceObj) 20 | External (_SB_.PCI0.PEG0.PEGP.EVD5, FieldUnitObj) 21 | 22 | // inject PNLF for CoffeeLake to make brightness control work[1] 23 | Scope (_SB) 24 | { 25 | Device (PNLF) 26 | { 27 | Name(_ADR, Zero) 28 | Name(_HID, EisaId("APP0002")) 29 | Name(_CID, "backlight") 30 | // _UID is set depending on PWMMax to match profiles in AppleBacklightFixup.kext Info.plist 31 | // 14: Sandy/Ivy 0x710 32 | // 15: Haswell/Broadwell 0xad9 33 | // 16: Skylake/KabyLake 0x56c (and some Haswell, example 0xa2e0008) 34 | // 17: custom LMAX=0x7a1 35 | // 18: custom LMAX=0x1499 36 | // 19: CoffeeLake 0xffff 37 | // 99: Other (requires custom AppleBacklightInjector.kext/AppleBackightFixup.kext) 38 | Name(_UID, 19) 39 | Method (_STA, 0, NotSerialized) // _STA: Status 40 | { 41 | If (_OSI ("Darwin")) 42 | { 43 | Return (0x0B) 44 | } 45 | Return (Zero) 46 | } 47 | } 48 | } 49 | 50 | // make BRT6 to be called on Darwin 51 | // call chain: _Q66 -> NEVT -> SMIE -> SMEE -> EV5 -> BRT6 52 | // in SMEE, EV5 is called only when OSID >= 0x20, and OSID: 53 | // if ACOS == 0: init ACOS based on OS version 54 | // return ACOS 55 | // hence set ACOS >= 0x20 can do the trick, and this trick affects less methods than _OSI renaming patch 56 | Scope (\) 57 | { 58 | If (_OSI ("Darwin")) 59 | { 60 | \_SB.ACOS = 0x80 61 | \_SB.ACSE = Zero 62 | 63 | } 64 | } 65 | 66 | // notify PS2K when brightness control key was pressed[2] 67 | Scope (\_SB.PCI0.GFX0) 68 | { 69 | Method (BRT6, 2, NotSerialized) 70 | { 71 | If (_OSI ("Darwin")) 72 | { 73 | If (LEqual (Arg0, One)) 74 | { 75 | Notify (^LCD, 0x86) //native code 76 | Notify (^^LPCB.PS2K, 0x10) //ELAN code 77 | Notify (^^LPCB.PS2K, 0x0206) // PS2 code 78 | Notify (^^LPCB.PS2K, 0x0286) // PS2 code 79 | } 80 | If (And (Arg0, 0x02)) 81 | { 82 | Notify (^LCD, 0x87) //native code 83 | Notify (^^LPCB.PS2K, 0x20) //ELAN code 84 | Notify (^^LPCB.PS2K, 0x0205) // PS2 code 85 | Notify (^^LPCB.PS2K, 0x0285) // PS2 code 86 | } 87 | } 88 | Else 89 | { 90 | \_SB.PCI0.GFX0.BRTX (Arg0, Arg1) 91 | } 92 | } 93 | } 94 | 95 | Scope(_SB.PCI0.PEG0.PEGP) 96 | { 97 | Method (BRT6, 2, NotSerialized) 98 | { 99 | // try to fix[3] 100 | If (!_OSI ("Darwin") && (EVD5 == One) && CondRefOf(\_SB.PCI0.PEG0.PEGP.LCD)) 101 | { 102 | If ((Arg0 == One)) 103 | { 104 | Notify (\_SB.PCI0.PEG0.PEGP.LCD, 0x86) // Device-Specific 105 | } 106 | 107 | If ((Arg0 & 0x02)) 108 | { 109 | Notify (\_SB.PCI0.PEG0.PEGP.LCD, 0x87) // Device-Specific 110 | } 111 | } 112 | } 113 | } 114 | } 115 | 116 | -------------------------------------------------------------------------------- /ACPI/SSDT-PCI0.dsl: -------------------------------------------------------------------------------- 1 | // Add various missing devices in PCI0 2 | // Include EC, PMCR, DMAC, MCHC and SBUS 3 | // Rename ECDV to EC to not brake battery statistics for laptop[2] 4 | // #(Disabled)Patch: Rename ECDV to EC 5 | // Find: RUNEVg== 6 | // Replace: RUNfXw== 7 | // References: 8 | // [1] https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-SBUS-MCHC.dsl 9 | // [2] https://www.insanelymac.com/forum/topic/338516-opencore-discussion/?do=findComment&comment=2685513 10 | // [3] https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl 11 | // [4] https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PMC.dsl 12 | 13 | DefinitionBlock ("", "SSDT", 2, "hack", "PCI0", 0x00000000) 14 | { 15 | External (_SB_.AC__, DeviceObj) // (from opcode) 16 | External (_SB_.PCI0, DeviceObj) // (from opcode) 17 | External (_SB_.PCI0.LPCB, DeviceObj) // (from opcode) 18 | External (_SB_.PCI0.SBUS.BUS0, DeviceObj) // (from opcode) 19 | 20 | Device (MEM2) 21 | { 22 | Name (_HID, EisaId ("PNP0C01")) // _HID: Hardware ID 23 | Name (_UID, 0x02) // _UID: Unique ID 24 | Name (CRS, ResourceTemplate () 25 | { 26 | Memory32Fixed (ReadWrite, 27 | 0x20000000, // Address Base 28 | 0x00200000, // Address Length 29 | ) 30 | Memory32Fixed (ReadWrite, 31 | 0x40000000, // Address Base 32 | 0x00200000, // Address Length 33 | ) 34 | }) 35 | Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings 36 | { 37 | Return (CRS) 38 | } 39 | 40 | Method (_STA, 0, NotSerialized) // _STA: Status 41 | { 42 | If (_OSI ("Darwin")) 43 | { 44 | Return (0x0F) 45 | } 46 | Else 47 | { 48 | Return (Zero) 49 | } 50 | } 51 | } 52 | 53 | Scope (\_SB.AC) 54 | { 55 | If (_OSI ("Darwin")) 56 | { 57 | Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake 58 | { 59 | 0x18, 60 | 0x03 61 | }) 62 | } 63 | } 64 | 65 | Scope (_SB.PCI0) 66 | { 67 | Device (EC) 68 | { 69 | Name (_HID, "ACID0001") // _HID: Hardware ID 70 | Method (_STA, 0, NotSerialized) // _STA: Status 71 | { 72 | If (_OSI ("Darwin")) 73 | { 74 | Return (0x0F) 75 | } 76 | 77 | Return (Zero) 78 | } 79 | } 80 | 81 | Device (PPMC) 82 | { 83 | Name (_ADR, 0x001F0002) // _ADR: Address 84 | Method (_STA, 0, NotSerialized) // _STA: Status 85 | { 86 | If (_OSI ("Darwin")) 87 | { 88 | Return (0x0F) 89 | } 90 | Else 91 | { 92 | Return (Zero) 93 | } 94 | } 95 | } 96 | 97 | Device (MCHC) 98 | { 99 | Name (_ADR, Zero) // _ADR: Address 100 | Method (_STA, 0, NotSerialized) // _STA: Status 101 | { 102 | If (_OSI ("Darwin")) 103 | { 104 | Return (0x0F) 105 | } 106 | 107 | Return (Zero) 108 | } 109 | } 110 | } 111 | 112 | Scope (_SB.PCI0.LPCB) 113 | { 114 | Device (PMCR) 115 | { 116 | Name (_HID, EisaId ("APP9876")) // _HID: Hardware ID 117 | Method (_STA, 0, NotSerialized) // _STA: Status 118 | { 119 | If (_OSI ("Darwin")) 120 | { 121 | Return (0x0B) 122 | } 123 | Else 124 | { 125 | Return (Zero) 126 | } 127 | } 128 | 129 | Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings 130 | { 131 | Memory32Fixed (ReadWrite, 132 | 0xFE000000, // Address Base 133 | 0x00010000, // Address Length 134 | ) 135 | }) 136 | } 137 | 138 | Device (DMAC) 139 | { 140 | Name (_HID, EisaId ("PNP0200")) // _HID: Hardware ID 141 | Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings 142 | { 143 | IO (Decode16, 144 | 0x0000, // Range Minimum 145 | 0x0000, // Range Maximum 146 | 0x01, // Alignment 147 | 0x20, // Length 148 | ) 149 | IO (Decode16, 150 | 0x0081, // Range Minimum 151 | 0x0081, // Range Maximum 152 | 0x01, // Alignment 153 | 0x11, // Length 154 | ) 155 | IO (Decode16, 156 | 0x0093, // Range Minimum 157 | 0x0093, // Range Maximum 158 | 0x01, // Alignment 159 | 0x0D, // Length 160 | ) 161 | IO (Decode16, 162 | 0x00C0, // Range Minimum 163 | 0x00C0, // Range Maximum 164 | 0x01, // Alignment 165 | 0x20, // Length 166 | ) 167 | DMA (Compatibility, NotBusMaster, Transfer8_16, ) 168 | {4} 169 | }) 170 | Method (_STA, 0, NotSerialized) // _STA: Status 171 | { 172 | If (_OSI ("Darwin")) 173 | { 174 | Return (0x0F) 175 | } 176 | 177 | Return (Zero) 178 | } 179 | } 180 | } 181 | 182 | Device (_SB.PCI0.SBUS.BUS0) 183 | { 184 | Name (_CID, "smbus") // _CID: Compatible ID 185 | Name (_ADR, Zero) // _ADR: Address 186 | Device (DVL0) 187 | { 188 | Name (_ADR, 0x57) // _ADR: Address 189 | Name (_CID, "diagsvault") // _CID: Compatible ID 190 | Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method 191 | { 192 | If (LNot (Arg2)) 193 | { 194 | Return (Buffer (One) 195 | { 196 | 0x03 197 | }) 198 | } 199 | 200 | Return (Package (0x02) 201 | { 202 | "address", 203 | 0x57 204 | }) 205 | } 206 | } 207 | 208 | Method (_STA, 0, NotSerialized) // _STA: Status 209 | { 210 | If (_OSI ("Darwin")) 211 | { 212 | Return (0x0F) 213 | } 214 | 215 | Return (Zero) 216 | } 217 | } 218 | } 219 | 220 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dell Inspiron 759x 2 | 3 |

4 | 5 |

6 | 7 | ## System configuration 8 | 9 | | Model | MacBookPro16,1 | Version | BigSur 11 Beta | 10 | | :-------- | :------------------ | :------------- | :------------------ | 11 | | Processor | Intel Core i5-9300H | Graphics | UHD Graphics 630 | 12 | | Memory | 2667MHz DDR4 2x8GB | OS Disk | Samsung 970Evo Plus | 13 | | Audio | Realtek ALC295 | WiFi/Bluetooth | DW1820A | 14 | 15 | ## About build 16 | 17 | - You need at least Macos 10.15.5 to boot with SMBIOS 16,1 18 | - Intel wifi card is finally worked: 19 | - Follow this: https://openintelwireless.github.io 20 | 21 | #### Performance 22 | 23 | - [Geekbench 5](https://browser.geekbench.com/v5/cpu/1927376): 1052 SingleCore, 3935 MultiCore 24 | - Battery: 57wh with 87% health and 60% brightness (2 NVME and 1 SSD SATA), I got 3h20 screen time when suffering web and light code 25 | 26 | #### Not Working 27 | 28 | - Thing may never work: 29 | - Discrete GPU (Disabled) 30 | - Fingerprint (Disabled) 31 | - Internal Microphone 32 | 33 | #### HDMI blinking at boot 34 | 35 | > This will happen when using plug-in HDMI after bootup. This will be fixed after short sleep (about 1min) and never happen again until reboot 36 | 37 | - You can fixed this by turn off **com.apple.driver.AppleHDAController** in `Kernel and Kext Patches` on Clover or `Kernel > Patch` on Opencore but **HDMI Audio** will be disabled 38 | 39 | > From 10.15.6, event 11, HDMI audio is `dead`, still finding solution 40 | 41 | ## For building 42 | 43 | > This will pull all newest kext and build into zip files 44 | 45 | - Clone this repo 46 | - Run follow command: `python3 update.py --build` 47 | - Get your build at Builds folder 48 | 49 | ## Installation 50 | 51 | ### BIOS 52 | 53 | - Disk in `AHCI` mode 54 | - Fastboot: `Thorough` 55 | - Power on lid: `Disabled` - Fix black screen after wake 56 | - Disabled thunderbolt `auto switch` and select it to `BIOS assist` for better battery management in Catalina and BigSur 57 | 58 | ### STEP 59 | 60 | > You can follow [Dortania's guide](https://dortania.github.io/OpenCore-Install-Guide/) as it very detail and easy to understand. 61 | 62 | #### Short once 63 | 64 | - Prepair an Mac installer in USB with bootloader you choice ( Use unibeast to create it ) 65 | - Go to `release` and download lastest version of your choice ( Clover or Opencore ) 66 | - Replace EFI folder in USB EFI partition with this shipped EFI folder ( find the folder with name is `EFI` from zip file) 67 | - Boot into USB and select MacOs installer 68 | - After install success, run PostInstall/install.sh in terminal 69 | - Then you need to mount EFI partition and replace it with USB's EFI 70 | - After System EFI replaced by your EFI, Using Opencore Configurator, Clover Configurator or update script to change SMBIOS, generate your serial and MBL 71 | - If you're using intel card, please use NullEthernet for fixing iMess and FaceTime - Change MAC in NullEthernet with your new created one, see below 72 | - For intel wifi card's user, follow [Intel's guide](https://openintelwireless.github.io) for init your wifi 73 | 74 | #### Fake ethernet 75 | 76 | - Generate your MAC address in SSDT-RMNE if using NullEthernet 77 | - You can make an MacAddress in [Mac generator online](https://www.browserling.com/tools/random-mac) 78 | - Edit SSDT-RMNE.aml with MaciASL and replace MAC with your generated one 79 | - Save as -> ACPI machine language (replace exited one) 80 | - Add it to your bootloader: 81 | - Kext add in Kexts: 82 | - Copy kext to kexts/other if using Clover 83 | - Copy kext to Kexts and add it into Kernel in config.plist (Use OpencoreConfigurator) 84 | - AML's file add to ACPI folder (Opencore need add to ACPI after copy SSDT file to ACPI, use OpencoreConfigurator) 85 | - Reboot 86 | 87 | #### Sleep Wake 88 | 89 | ```shell 90 | sudo pmset -a hibernatemode 0 91 | sudo pmset -a autopoweroff 0 92 | sudo pmset -a standby 0 93 | sudo pmset -a proximitywake 0 94 | sudo pmset -b tcpkeepalive 0 (optional) 95 | ``` 96 | 97 | > `-b` - Battery `-c` - AC Power `-a` - Both 98 | 99 | Please uncheck all options (except `Prevent computer from sleeping...`, which is optional) in the `Energy Saver` panel. 100 | 101 | #### Display 102 | 103 | If you are using FHD(1080p) display, you may want to enable font smoothing, run this command from terminal: 104 | 105 | ``` 106 | defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO 107 | ``` 108 | 109 | If your laptop display is 4K screen, you should set uiscale to 2: 110 | 111 | - Opencore: NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> UIScale -> 2 112 | - Clover: BootGraphics -> UIScale -> 2 113 | 114 | #### Using DW1820a as wifi card 115 | 116 | - You have to do following changes to Device Properties or it `cant boot into macos`: 117 | - DW1820a now have been supported by `AirportBrcmFixup`, if u facing with connection issues then follow bellow 118 | 119 | > Change 120 | 121 | ```xml 122 | #PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0) 123 | ``` 124 | 125 | > Into 126 | 127 | ```xml 128 | PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0) 129 | ``` 130 | 131 | - See [THE Solution:Dell DW1820A](https://www.tonymacx86.com/threads/the-solution-dell-dw1820a-broadcom-bcm94350zae-macos-15.288026/) 132 | - Other card you may need google for it 133 | 134 | #### NTFS Writing 135 | 136 | Add `UUID=xxx none ntfs rw,auto,nobrowse` to `/etc/fstab`, **xxx** is the UUID of your NTFS partition. 137 | 138 | If your NTFS partition has Windows installed, you need to run `powercfg -h off` in powershell in Windows to disable hibernation. 139 | 140 | #### Tap Delay 141 | 142 | - Turn off `Smart zoom` to avoid two-finger tap delay. 143 | 144 | > See [is-it-possible-to-get-rid-of-the-delay-between-right-clicking-and-seeing-the-context-menu](https://apple.stackexchange.com/a/218181) 145 | 146 | ## BIOS value unlock (Advanced User) 147 | 148 | > Big thanks for @Leoing, who found all nessesary value 149 | 150 | | Name | Address | Configable value | Default value | 151 | | :----------- | :------ | :--------------- | :------------ | 152 | | CFC-Lock | 0x6F0 | 0x1 or 0x0 | 0x1 | 153 | | DGPU | 0x574 | 0x1 or 0x0 | 0x1 | 154 | | Voltage Lock | 0x78C | 0x1 or 0x0 | 0x1 (1.6.0) | 155 | 156 | You can follow [this](https://github.com/Azkali/GPD-P2-MAX-Hackintosh/issues/16#issuecomment-565882180) to change those value 157 | 158 | > For Bios 1.6.0 `0x78C` need set to 0x0 so VoltageShift can be used 159 | 160 | > You can use mine SmartCPU Script base on VoltageShift for controlling cpu power's usage: [SmartCPU](https://github.com/tctien342/smart-cpu) 161 | 162 |

163 | 164 |

165 | 166 | ## Credits 167 | 168 | - [acidanthera](https://github.com/acidanthera) for providing almost all kexts and drivers 169 | - [alexandred](https://github.com/alexandred) for providing VoodooI2C 170 | - [headkaze](https://github.com/headkaze) for providing the very useful [Hackintool](https://www.tonymacx86.com/threads/release-hackintool-v2-8-6.254559/) 171 | - [daliansky](https://github.com/daliansky) for providing the awesome hotpatch guide [OC-little](https://github.com/daliansky/OC-little/) and the always up-to-date hackintosh solutions [XiaoMi-Pro-Hackintosh](https://github.com/daliansky/XiaoMi-Pro-Hackintosh) [黑果小兵的部落阁](https://blog.daliansky.net/) 172 | - [RehabMan](https://github.com/RehabMan) for providing numbers of [hotpatches](https://github.com/RehabMan/OS-X-Clover-Laptop-Config/tree/master/hotpatch) and hotpatch guides 173 | - [knnspeed](https://www.tonymacx86.com/threads/guide-dell-xps-15-9560-4k-touch-1tb-ssd-32gb-ram-100-adobergb.224486) for providing Combojack, well-explained hot patches and USB-C hotplug solution 174 | - [bavariancake](https://github.com/bavariancake/XPS9570-macOS) and [LuletterSoul](https://github.com/LuletterSoul/Dell-XPS-15-9570-macOS-Mojave) for providing detailed installation guide and configuration for XPS15-9570 175 | - And all other authors that mentioned or not mentioned in this repo 176 | - [xxxza](https://github.com/xxxzc/xps15-9570-macos) this build is porter from his project, big thanks to him 177 | -------------------------------------------------------------------------------- /Kexts/USBPorts.kext/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleGetInfoString 8 | 1.0 Copyright © 2018 Headsoft. All rights reserved. 9 | CFBundleIdentifier 10 | com.Headsoft.USBPorts 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | USBPorts 15 | CFBundlePackageType 16 | KEXT 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | IOKitPersonalities 24 | 25 | MacBookPro15,2-XHC 26 | 27 | CFBundleIdentifier 28 | com.apple.driver.AppleUSBMergeNub 29 | IOClass 30 | AppleUSBMergeNub 31 | IONameMatch 32 | XHC 33 | IOProbeScore 34 | 5000 35 | IOProviderClass 36 | AppleUSBXHCIPCI 37 | IOProviderMergeProperties 38 | 39 | kUSBSleepPortCurrentLimit 40 | 2100 41 | kUSBSleepPowerSupply 42 | 2600 43 | kUSBWakePortCurrentLimit 44 | 2100 45 | kUSBWakePowerSupply 46 | 3200 47 | port-count 48 | 49 | EwAAAA== 50 | 51 | ports 52 | 53 | HS01 54 | 55 | UsbConnector 56 | 3 57 | port 58 | 59 | AQAAAA== 60 | 61 | 62 | HS02 63 | 64 | UsbConnector 65 | 3 66 | port 67 | 68 | AgAAAA== 69 | 70 | 71 | HS03 72 | 73 | UsbConnector 74 | 3 75 | port 76 | 77 | AwAAAA== 78 | 79 | 80 | HS04 81 | 82 | UsbConnector 83 | 10 84 | port 85 | 86 | BAAAAA== 87 | 88 | 89 | HS05 90 | 91 | UsbConnector 92 | 255 93 | port 94 | 95 | BQAAAA== 96 | 97 | 98 | HS06 99 | 100 | UsbConnector 101 | 255 102 | port 103 | 104 | BgAAAA== 105 | 106 | 107 | HS14 108 | 109 | UsbConnector 110 | 255 111 | port 112 | 113 | DgAAAA== 114 | 115 | 116 | SS01 117 | 118 | UsbConnector 119 | 10 120 | port 121 | 122 | EQAAAA== 123 | 124 | 125 | SS02 126 | 127 | UsbConnector 128 | 10 129 | port 130 | 131 | EgAAAA== 132 | 133 | 134 | SS03 135 | 136 | UsbConnector 137 | 10 138 | port 139 | 140 | EwAAAA== 141 | 142 | 143 | 144 | 145 | model 146 | MacBookPro15,2 147 | 148 | MacBookPro15,3-XHC 149 | 150 | CFBundleIdentifier 151 | com.apple.driver.AppleUSBMergeNub 152 | IOClass 153 | AppleUSBMergeNub 154 | IONameMatch 155 | XHC 156 | IOProbeScore 157 | 5000 158 | IOProviderClass 159 | AppleUSBXHCIPCI 160 | IOProviderMergeProperties 161 | 162 | port-count 163 | 164 | EwAAAA== 165 | 166 | ports 167 | 168 | HS01 169 | 170 | UsbConnector 171 | 0 172 | port 173 | 174 | AQAAAA== 175 | 176 | 177 | HS02 178 | 179 | UsbConnector 180 | 0 181 | port 182 | 183 | AgAAAA== 184 | 185 | 186 | HS03 187 | 188 | UsbConnector 189 | 0 190 | port 191 | 192 | AwAAAA== 193 | 194 | 195 | HS04 196 | 197 | UsbConnector 198 | 9 199 | port 200 | 201 | BAAAAA== 202 | 203 | 204 | HS05 205 | 206 | UsbConnector 207 | 255 208 | port 209 | 210 | BQAAAA== 211 | 212 | 213 | HS06 214 | 215 | UsbConnector 216 | 255 217 | port 218 | 219 | BgAAAA== 220 | 221 | 222 | HS14 223 | 224 | UsbConnector 225 | 255 226 | port 227 | 228 | DgAAAA== 229 | 230 | 231 | SS01 232 | 233 | UsbConnector 234 | 3 235 | port 236 | 237 | EQAAAA== 238 | 239 | 240 | SS02 241 | 242 | UsbConnector 243 | 3 244 | port 245 | 246 | EgAAAA== 247 | 248 | 249 | SS03 250 | 251 | UsbConnector 252 | 3 253 | port 254 | 255 | EwAAAA== 256 | 257 | 258 | 259 | 260 | model 261 | MacBookPro15,3 262 | 263 | MacBookPro16,1-XHC 264 | 265 | CFBundleIdentifier 266 | com.apple.driver.AppleUSBMergeNub 267 | IOClass 268 | AppleUSBMergeNub 269 | IONameMatch 270 | XHC 271 | IOPCIPrimaryMatch 272 | 0xa36d8086 273 | IOProbeScore 274 | 5000 275 | IOProviderClass 276 | AppleIntelCNLUSBXHCI 277 | IOProviderMergeProperties 278 | 279 | kUSBSleepPortCurrentLimit 280 | 2100 281 | kUSBSleepPowerSupply 282 | 5100 283 | kUSBWakePortCurrentLimit 284 | 2100 285 | kUSBWakePowerSupply 286 | 5100 287 | port-count 288 | 289 | EwAAAA== 290 | 291 | ports 292 | 293 | HS01 294 | 295 | UsbConnector 296 | 255 297 | name 298 | HS01 299 | port 300 | 301 | AQAAAA== 302 | 303 | 304 | HS02 305 | 306 | UsbConnector 307 | 255 308 | name 309 | HS02 310 | port 311 | 312 | AgAAAA== 313 | 314 | 315 | HS03 316 | 317 | UsbConnector 318 | 255 319 | name 320 | HS03 321 | port 322 | 323 | AwAAAA== 324 | 325 | 326 | HS04 327 | 328 | UsbConnector 329 | 9 330 | name 331 | HS04 332 | port 333 | 334 | BAAAAA== 335 | 336 | 337 | HS05 338 | 339 | UsbConnector 340 | 255 341 | name 342 | HS05 343 | port 344 | 345 | BQAAAA== 346 | 347 | 348 | HS06 349 | 350 | UsbConnector 351 | 255 352 | name 353 | HS06 354 | port 355 | 356 | BgAAAA== 357 | 358 | 359 | HS14 360 | 361 | UsbConnector 362 | 255 363 | name 364 | HS14 365 | port 366 | 367 | DgAAAA== 368 | 369 | 370 | SS01 371 | 372 | UsbConnector 373 | 255 374 | name 375 | SS01 376 | port 377 | 378 | EQAAAA== 379 | 380 | 381 | SS02 382 | 383 | UsbConnector 384 | 255 385 | name 386 | SS02 387 | port 388 | 389 | EgAAAA== 390 | 391 | 392 | SS03 393 | 394 | UsbConnector 395 | 255 396 | name 397 | SS03 398 | port 399 | 400 | EwAAAA== 401 | 402 | 403 | 404 | 405 | model 406 | MacBookPro16,1 407 | 408 | 409 | OSBundleRequired 410 | Root 411 | 412 | 413 | -------------------------------------------------------------------------------- /CLOVER/config.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ACPI 6 | 7 | AutoMerge 8 | 9 | DSDT 10 | 11 | DropOEM_DSM 12 | 13 | Patches 14 | 15 | 16 | Comment 17 | Rename BRT6 to BRTX 18 | Disabled 19 | 20 | Find 21 | 22 | QlJUNgI= 23 | 24 | Replace 25 | 26 | QlJUWAI= 27 | 28 | 29 | 30 | Comment 31 | Rename USTP to One 32 | Disabled 33 | 34 | Find 35 | 36 | VVNUUBA= 37 | 38 | Replace 39 | 40 | AaOjoxA= 41 | 42 | 43 | 44 | Comment 45 | Rename _WAK to ZWAK 46 | Disabled 47 | 48 | Find 49 | 50 | FDlfV0FLAQ== 51 | 52 | Replace 53 | 54 | FDlaV0FLAQ== 55 | 56 | 57 | 58 | Comment 59 | Rename _PTS to ZPTS 60 | Disabled 61 | 62 | Find 63 | 64 | FEkEX1BUUwE= 65 | 66 | Replace 67 | 68 | FEkEWlBUUwE= 69 | 70 | 71 | 72 | 73 | DropTables 74 | 75 | 76 | Signature 77 | SSDT 78 | TableId 79 | xh_cfhd4 80 | 81 | 82 | FixHeaders 83 | 84 | SSDT 85 | 86 | DropOem 87 | 88 | Generate 89 | 90 | PluginType 91 | 92 | 93 | PluginType 94 | 0 95 | 96 | 97 | Boot 98 | 99 | Arguments 100 | agdpmod=vit9696 darkwake=1 gfxrst=1 igfxfw=2 -v 101 | Debug 102 | 103 | DefaultVolume 104 | LastBootedVolume 105 | NeverHibernate 106 | 107 | Secure 108 | 109 | Timeout 110 | -1 111 | XMPDetection 112 | 1 113 | 114 | BootGraphics 115 | 116 | EFILoginHiDPI 117 | 1 118 | UIScale 119 | 1 120 | 121 | Devices 122 | 123 | Audio 124 | 125 | Inject 126 | No 127 | 128 | Properties 129 | 130 | #PciRoot(0x0)/Pci(0x1d,0x6)/Pci(0x0,0x0) 131 | 132 | AAPL,slot-name 133 | WLAN 134 | compatible 135 | pci14e4,43a3 136 | device_type 137 | Airport Extreme 138 | model 139 | DW1820A (BCM4350) 802.11ac Wireless 140 | name 141 | Airport 142 | pci-aspm-default 143 | 0 144 | 145 | PciRoot(0x0)/Pci(0x0,0x0) 146 | 147 | AAPL,slot-name 148 | Internal@0,0,0 149 | device_type 150 | Host bridge 151 | model 152 | 8th Gen Core 4-core Processor Host Bridge/DRAM Registers [Coffee Lake H] 153 | 154 | PciRoot(0x0)/Pci(0x1,0x0) 155 | 156 | AAPL,slot-name 157 | Internal@0,1,0 158 | device_type 159 | PCI bridge 160 | model 161 | Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) 162 | 163 | PciRoot(0x0)/Pci(0x12,0x0) 164 | 165 | AAPL,slot-name 166 | Internal@0,18,0 167 | device_type 168 | Signal processing controller 169 | model 170 | Cannon Lake PCH Thermal Controller 171 | 172 | PciRoot(0x0)/Pci(0x14,0x0) 173 | 174 | AAPL,slot-name 175 | Internal@0,20,0 176 | device_type 177 | USB controller 178 | model 179 | Cannon Lake PCH USB 3.1 xHCI Host Controller 180 | 181 | PciRoot(0x0)/Pci(0x14,0x2) 182 | 183 | AAPL,slot-name 184 | Internal@0,20,2 185 | device_type 186 | RAM memory 187 | model 188 | Cannon Lake PCH Shared SRAM 189 | 190 | PciRoot(0x0)/Pci(0x15,0x1) 191 | 192 | AAPL,slot-name 193 | Internal@0,21,1 194 | model 195 | Cannon Lake PCH Serial IO I2C Controller #1 196 | 197 | PciRoot(0x0)/Pci(0x16,0x0) 198 | 199 | AAPL,slot-name 200 | Internal@0,22,0 201 | device_type 202 | Communication controller 203 | model 204 | Cannon Lake PCH HECI Controller 205 | 206 | PciRoot(0x0)/Pci(0x17,0x0) 207 | 208 | AAPL,slot-name 209 | Internal@0,23,0 210 | device_type 211 | SATA controller 212 | model 213 | Cannon Lake Mobile PCH SATA AHCI Controller 214 | 215 | PciRoot(0x0)/Pci(0x1B,0x0) 216 | 217 | AAPL,slot-name 218 | Internal@0,27,0 219 | device_type 220 | PCI bridge 221 | model 222 | Cannon Lake PCH PCI Express Root Port #17 223 | 224 | PciRoot(0x0)/Pci(0x1B,0x0)/Pci(0x0,0x0) 225 | 226 | AAPL,slot-name 227 | Internal@0,27,0/0,0 228 | device_type 229 | PCI bridge 230 | model 231 | JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] 232 | 233 | PciRoot(0x0)/Pci(0x1B,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0) 234 | 235 | AAPL,slot-name 236 | Internal@0,27,0/0,0/0,0 237 | device_type 238 | PCI bridge 239 | model 240 | JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] 241 | 242 | PciRoot(0x0)/Pci(0x1B,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0) 243 | 244 | AAPL,slot-name 245 | Internal@0,27,0/0,0/0,0/0,0 246 | device_type 247 | System peripheral 248 | model 249 | JHL6340 Thunderbolt 3 NHI (C step) [Alpine Ridge 2C 2016] 250 | 251 | PciRoot(0x0)/Pci(0x1B,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0) 252 | 253 | AAPL,slot-name 254 | Internal@0,27,0/0,0/1,0 255 | device_type 256 | PCI bridge 257 | model 258 | JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] 259 | 260 | PciRoot(0x0)/Pci(0x1B,0x0)/Pci(0x0,0x0)/Pci(0x2,0x0) 261 | 262 | AAPL,slot-name 263 | Internal@0,27,0/0,0/2,0 264 | device_type 265 | PCI bridge 266 | model 267 | JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] 268 | 269 | PciRoot(0x0)/Pci(0x1B,0x0)/Pci(0x0,0x0)/Pci(0x2,0x0)/Pci(0x0,0x0) 270 | 271 | AAPL,slot-name 272 | Internal@0,27,0/0,0/2,0/0,0 273 | device_type 274 | USB controller 275 | model 276 | JHL6340 Thunderbolt 3 USB 3.1 Controller (C step) [Alpine Ridge 2C 2016] 277 | 278 | PciRoot(0x0)/Pci(0x1B,0x4) 279 | 280 | AAPL,slot-name 281 | Internal@0,27,4 282 | device_type 283 | PCI bridge 284 | model 285 | Cannon Lake PCH PCI Express Root Port #21 286 | 287 | PciRoot(0x0)/Pci(0x1D,0x0) 288 | 289 | AAPL,slot-name 290 | Internal@0,29,0 291 | device_type 292 | PCI bridge 293 | model 294 | Cannon Lake PCH PCI Express Root Port #9 295 | 296 | PciRoot(0x0)/Pci(0x1D,0x6) 297 | 298 | AAPL,slot-name 299 | Internal@0,29,6 300 | device_type 301 | PCI bridge 302 | model 303 | Cannon Lake PCH PCI Express Root Port #15 304 | 305 | PciRoot(0x0)/Pci(0x1F,0x0) 306 | 307 | compatible 308 | pci8086,9cc1 309 | device-id 310 | 311 | nMEA 312 | 313 | 314 | PciRoot(0x0)/Pci(0x1F,0x4) 315 | 316 | AAPL,slot-name 317 | Internal@0,31,4 318 | device_type 319 | SMBus 320 | model 321 | Cannon Lake PCH SMBus Controller 322 | 323 | PciRoot(0x0)/Pci(0x1F,0x5) 324 | 325 | AAPL,slot-name 326 | Internal@0,31,5 327 | model 328 | Cannon Lake PCH SPI Controller 329 | 330 | PciRoot(0x0)/Pci(0x1f,0x3) 331 | 332 | alc-delay 333 | 500 334 | layout-id 335 | 77 336 | 337 | PciRoot(0x0)/Pci(0x2,0x0) 338 | 339 | AAPL,ig-platform-id 340 | 341 | CQClPg== 342 | 343 | disable-external-gpu 344 | 345 | AQAAAA== 346 | 347 | dpcd-max-link-rate 348 | 349 | FAAAAA== 350 | 351 | enable-dpcd-max-link-rate-fix 352 | 353 | AQAAAA== 354 | 355 | enable-hdmi-dividers-fix 356 | 357 | AQAAAA== 358 | 359 | enable-hdmi20 360 | 361 | AQAAAA== 362 | 363 | enable-lspcon-support 364 | 365 | AQAAAA== 366 | 367 | framebuffer-con1-alldata 368 | 369 | AQUJAAAEAACHAQAA 370 | 371 | framebuffer-con1-enable 372 | 373 | AQAAAA== 374 | 375 | framebuffer-con2-alldata 376 | 377 | AgYJAAAEAACHAQAA 378 | 379 | framebuffer-con2-enable 380 | 381 | AQAAAA== 382 | 383 | framebuffer-con3-alldata 384 | 385 | AwQKAAAIAACHAQAA 386 | 387 | framebuffer-con3-enable 388 | 389 | AQAAAA== 390 | 391 | framebuffer-con3-has-lspcon 392 | 393 | AQAAAA== 394 | 395 | framebuffer-patch-enable 396 | 397 | AQAAAA== 398 | 399 | framebuffer-portcount 400 | 401 | BAAAAA== 402 | 403 | framebuffer-unifiedmem 404 | 405 | AAAAgA== 406 | 407 | 408 | PciRoot(0x0)/Pci(0x4,0x0) 409 | 410 | AAPL,slot-name 411 | Internal@0,4,0 412 | device_type 413 | Signal processing controller 414 | model 415 | Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem 416 | 417 | PciRoot(0x0)/Pci(0x8,0x0) 418 | 419 | AAPL,slot-name 420 | Internal@0,8,0 421 | device_type 422 | System peripheral 423 | model 424 | Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model 425 | 426 | 427 | USB 428 | 429 | FixOwnership 430 | 431 | 432 | 433 | GUI 434 | 435 | Hide 436 | 437 | Recovery 438 | Preboot 439 | 440 | Language 441 | en:0 442 | Mouse 443 | 444 | Enabled 445 | 446 | 447 | Scan 448 | 449 | Entries 450 | 451 | Legacy 452 | 453 | Tool 454 | 455 | 456 | Theme 457 | null 458 | 459 | KernelAndKextPatches 460 | 461 | Debug 462 | 463 | DellSMBIOSPatch 464 | 465 | KextsToPatch 466 | 467 | 468 | Disabled 469 | 470 | Find 471 | 472 | cJ0AAA== 473 | 474 | InfoPlistPatch 475 | 476 | Name 477 | com.apple.driver.AppleHDAController 478 | Replace 479 | 480 | SKMAAA== 481 | 482 | 483 | 484 | 485 | RtVariables 486 | 487 | BooterConfig 488 | 0x28 489 | CsrActiveConfig 490 | 0x67 491 | 492 | SMBIOS 493 | 494 | BiosReleaseDate 495 | 11/14/2019 496 | BiosVendor 497 | Apple Inc. 498 | BiosVersion 499 | MBP153.88Z.F000.B00.1911142110 500 | Board-ID 501 | Mac-1E7E29AD0135F9BC 502 | BoardManufacturer 503 | Apple Inc. 504 | BoardSerialNumber 505 | C02947300QX0000JC 506 | BoardType 507 | 10 508 | BoardVersion 509 | 1.0 510 | ChassisAssetTag 511 | MacBook-Aluminum 512 | ChassisManufacturer 513 | Apple Inc. 514 | ChassisType 515 | 0x09 516 | EfiVersion 517 | 1037.60.58.0.0 518 | Family 519 | MacBook Pro 520 | FirmwareFeatures 521 | 0xFC0FE137 522 | FirmwareFeaturesMask 523 | 0xFF1FFF3F 524 | LocationInChassis 525 | Part Component 526 | Manufacturer 527 | Apple Inc. 528 | Mobile 529 | 530 | PlatformFeature 531 | 0x02 532 | ProductName 533 | MacBookPro15,3 534 | SerialNumber 535 | C02ZQDYDLVCG 536 | SmUUID 537 | 6E167E28-A39C-423F-B244-20152956DD0C 538 | Version 539 | 1.0 540 | 541 | SystemParameters 542 | 543 | InjectKexts 544 | Yes 545 | InjectSystemID 546 | 547 | 548 | 549 | 550 | -------------------------------------------------------------------------------- /PostInstall/CombojackFix/LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | handles EAPD state updating for power-managed HDA codecs 294 | Copyright (C) 2013 Dolnor 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | {signature of Ty Coon}, 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | -------------------------------------------------------------------------------- /update.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | from pathlib import Path 3 | import plistlib 4 | from os.path import join 5 | from os import listdir 6 | from os import system as sh 7 | from datetime import datetime, date 8 | from base64 import b64decode 9 | from subprocess import check_output 10 | from urllib.request import urlopen, Request, urlretrieve 11 | import json 12 | import re 13 | import ssl 14 | 15 | ssl._create_default_https_context = ssl._create_unverified_context 16 | 17 | root = Path(__file__).absolute().parent 18 | 19 | # GITHUB CONF 20 | # Link for your config repo 21 | GITHUB_URL = 'https://github.com/tctien342/Dell-Inspiron-7591-Hackintosh' 22 | GITHUB_DESCRIPTION = 'Configuration for Dell Inspiron 759x' 23 | # GITHUB_ACCESS_TOKEN = '' 24 | 25 | # BUILD CONF 26 | SMBIOS_PRODUCT = 'MacBookPro15,3' 27 | DEFAULT_SN = 'C02ZQDYDLVCG' 28 | DEFAULT_MLB = 'C02947300QX0000JC' 29 | DEFAULT_SMUUID = '6E167E28-A39C-423F-B244-20152956DD0C' 30 | DELAY_AFTER_TYPE = 50 31 | KEXT_PIORITY = { 32 | 'Lilu.kext': 0, 'VirtualSMC.kext': 10, 'CpuTscSync.kext': 15, 'AppleALC.kext': 20, 'VoodooPS2Controller.kext': 25, 33 | 'VoodooGPIO.kext': 30, 'VoodooI2CServices.kext': 35, 'VoodooInput.kext': 26, 34 | 'VoodooI2C.kext': 40, 'VoodooI2CHID.kext': 50, 35 | 'CPUFriend.kext': 21, 'CPUFriendDataProvider.kext': 22, 36 | } 37 | BUILD_PREFIX = 'INSPIRON-759x' 38 | SHIPPED_FOLDER = [ 39 | 'PostInstall' 40 | ] 41 | 42 | 43 | def c(text, color): 44 | # colored output https://stackoverflow.com/a/56774969 45 | return "\33[38;5;{}m{}\33[0m".format(color, text) 46 | 47 | 48 | # SUB CONF 49 | PREFIX = c('::', 75) 50 | ARROW = c('==>', 40) 51 | 52 | 53 | def R(*args): 54 | return Path(root, *args) 55 | 56 | 57 | tmp = R('tmp') # cache downloaded files 58 | tmp.mkdir(exist_ok=True) 59 | 60 | 61 | def Done(msg: str = 'Done'): 62 | print(msg) 63 | sh('rm -rf {}'.format(tmp)) 64 | exit() 65 | 66 | 67 | ''' 68 | Arguments 69 | ''' 70 | parser = argparse.ArgumentParser(description=''' 71 | Update(download if not exist) kexts, drivers, bootloaders, 72 | patches, themes and config.''', formatter_class=argparse.ArgumentDefaultsHelpFormatter) 73 | parser.add_argument('p', default=root, metavar='PATH/PACKAGE/CONFIG', nargs='?', 74 | help='update/download package or packages in this path, e.g. Kexts/ config.plist OpenCore.efi themes/NightWish') 75 | parser.add_argument('--force', default=False, action='store_true', 76 | help='force to update without prompt') 77 | parser.add_argument('--set', nargs='*', metavar='k=v', 78 | help='update config.plist with `k=v` pairs') 79 | parser.add_argument('--acpi', default=False, action='store_true', 80 | help='update SSDTs and DSDT/Patches') 81 | parser.add_argument('--zip', default=False, action='store_true', 82 | help='zip folders') 83 | parser.add_argument('--fixsleep', default=False, action='store_true', 84 | help='fix sleep issue') 85 | parser.add_argument('--gen', default=False, action='store_true', 86 | help='generate SN, MLB and SmUUID') 87 | parser.add_argument('--self', default=False, action='store_true', 88 | help='update from {}/archive/master.zip'.format(GITHUB_URL)) 89 | parser.add_argument('--build', default=False, action='store_true', 90 | help='build source into zip files') 91 | parser.add_argument('--post', default=False, action='store_true', 92 | help='fix sleep and audio then rebuild kext') 93 | 94 | args = parser.parse_args() 95 | 96 | 97 | def fix_sleep(): 98 | sh('sudo pmset -a hibernatemode 0') 99 | sh('sudo pmset -a autopoweroff 0') 100 | sh('sudo pmset -a standby 0') 101 | sh('sudo pmset -a proximitywake 0') 102 | 103 | 104 | if args.fixsleep: 105 | fix_sleep() 106 | Done() 107 | 108 | mappers = dict(CLOVER={ 109 | 'ACPI': 'ACPI/patched', 110 | 'Kexts': 'kexts/Other', 111 | 'Drivers': 'drivers/UEFI' 112 | }, OC={}) 113 | 114 | CONVERT_THEME = { 115 | "Background.png": "background.png", 116 | "func_resetnvram.icns": "os_legacy.icns", 117 | "os_cata.icns": "os_cata.icns", 118 | "os_custom.icns": "os_mx.icns", 119 | "os_debian.icns": "os_debian.icns", 120 | "os_fedora.icns": "os_fedora.icns", 121 | "os_freebsd.icns": "os_freebsd.icns", 122 | "os_linux.icns": "os_linux.icns", 123 | # Attemp to fix opencore bug os_cata.icns => os_mac 124 | "os_mac.icns": "os_cata.icns", 125 | "os_moja.icns": "os_moja.icns", 126 | "os_recovery.icns": "os_recovery.icns", 127 | "os_redhat.icns": "os_redhat.icns", 128 | "os_ubuntu.icns": "os_ubuntu.icns", 129 | "os_unknown.icns": "os_unknown.icns", 130 | # Attemp to fix opencore bug os_vista.icns => os_win 131 | "os_win.icns": "os_vista.icns", 132 | "os_win10.icns": "os_vista.icns", 133 | } 134 | CONVERT_FALLBACK_DEFAULT_ICON = 'os_mac.icns' 135 | 136 | 137 | def convert_themes_clover_opencore(clover_theme_patch, opencore_theme_patch): 138 | print("Converting to opencore themes...") 139 | WORK_PATCH = './tmp/convert' 140 | sh('cp -r {} {}'.format(clover_theme_patch, WORK_PATCH)) 141 | sh('mkdir -p {}/opencore'.format(WORK_PATCH)) 142 | for file in listdir(WORK_PATCH): 143 | if file == 'background.png': 144 | sh('mv {} {}/opencore/{}'.format(WORK_PATCH + 145 | '/' + file, WORK_PATCH, 'Background.png')) 146 | if file == 'icons': 147 | icons = listdir(WORK_PATCH + '/' + file) 148 | for oIcon, cIcon in CONVERT_THEME.items(): 149 | if cIcon in icons: 150 | sh('cp -rf {} {}/opencore/{}'.format(WORK_PATCH + 151 | '/icons/' + cIcon, WORK_PATCH, oIcon)) 152 | else: 153 | sh('cp -rf {} {}/opencore/{}'.format(WORK_PATCH + 154 | '/icons/' + CONVERT_FALLBACK_DEFAULT_ICON, WORK_PATCH, oIcon)) 155 | for file in listdir(WORK_PATCH + '/opencore'): 156 | sh('mv -f {} {}'.format(WORK_PATCH + '/opencore/' + file, opencore_theme_patch)) 157 | sh('rm -rf ./tmp') 158 | 159 | 160 | def Title(*args): 161 | print(PREFIX, *args) 162 | 163 | 164 | def Prompt(msg: str): 165 | if args.force: 166 | return '' 167 | return input(ARROW + ' ' + msg) 168 | 169 | 170 | def Confirm(msg: str) -> bool: 171 | if args.force: 172 | return True 173 | r = Prompt(msg + '?(Y/n)') 174 | return r != 'n' 175 | 176 | 177 | def shout(cmd): 178 | return check_output(cmd, shell=True, encoding='utf-8').strip() 179 | 180 | 181 | def get_timestamp(p, f='B'): 182 | # 'B' - birth time, 'm' - modified time 183 | return int(shout('stat -f%{} {}'.format(f, p))) 184 | 185 | 186 | class Plist: 187 | clover_keywords = dict( 188 | sn='SMBIOS>SerialNumber', 189 | mlb='SMBIOS>BoardSerialNumber', 190 | smuuid='SMBIOS>SmUUID', 191 | uiscale='BootGraphics>UIScale', 192 | theme='GUI>Theme', 193 | bootarg='Boot>Arguments', 194 | timeout='Boot>Timeout', 195 | defaultvolume='Boot>DefaultVolume', 196 | layoutid='Devices>Properties>PciRoot(0x0)/Pci(0x1f,0x3)>layout-id', 197 | deviceproperties='Devices>Properties' 198 | ) 199 | oc_keywords = dict( 200 | sn='PlatformInfo>Generic>SystemSerialNumber', 201 | mlb='PlatformInfo>Generic>MLB', 202 | smuuid='PlatformInfo>Generic>SystemUUID', 203 | uiscale='NVRAM>Add>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14>UIScale', 204 | bootarg='NVRAM>Add>7C436110-AB2A-4BBB-A880-FE41995C9F82>boot-args', 205 | timeout='Misc>Boot>Timeout', 206 | layoutid='DeviceProperties>Add>PciRoot(0x0)/Pci(0x1f,0x3)>layout-id', 207 | deviceproperties='DeviceProperties>Add' 208 | ) 209 | 210 | def __init__(self, file): 211 | self.file = Path(file).absolute() 212 | with open(file, 'rb') as f: 213 | self.plist = plistlib.load(f) 214 | if 'Boot' in self.plist: # clover 215 | self.type = 'clover' 216 | self.keywords = self.clover_keywords 217 | else: 218 | self.type = 'oc' 219 | self.keywords = self.oc_keywords 220 | 221 | def save(self): 222 | with open(self.file, 'wb') as f: 223 | plistlib.dump(self.plist, f) 224 | 225 | def keyword(self, key): 226 | return self.keywords.get(key, key) 227 | 228 | @staticmethod 229 | def data(b64str): 230 | return b64decode(b64str) 231 | 232 | def get(self, key, value=False): 233 | key = self.keyword(key) 234 | ks = key.split('>') 235 | item = self.plist 236 | for k in ks[:-1]: 237 | item = item[k] 238 | return item[ks[-1]] if value else (item, ks[-1]) 239 | 240 | def set(self, key, value): 241 | item, key = self.get(key) 242 | if type(item[key]) is bytes: 243 | if type(value) is not bytes: 244 | value = Plist.data(value) 245 | else: 246 | value = type(item[key])(value) 247 | item[key] = value 248 | 249 | def copy(self, another): 250 | if self.type == another.type: 251 | Title('Replace everything from', 252 | another.file, '\nExcept:') 253 | for key in self.keywords.values(): 254 | value = self.get(key, True) 255 | another.set(key, value) 256 | print('{}={}'.format(key, value)) 257 | self.plist = another.plist 258 | else: 259 | Title('Replace following fields from', another.file) 260 | for k in self.keywords.keys(): 261 | i1, k1 = self.get(self.keywords[k]) 262 | value = another.get(another.keywords[k]) 263 | print('Set {} to {}'.format(k1, value)) 264 | i1[k1] = value 265 | return self 266 | 267 | 268 | # cache remote info - { url+pattern+version: (rurl, rver, rdat) } 269 | remote_infos = dict() 270 | 271 | 272 | class Package: 273 | # access only, 5000/hr 274 | # GITHUB_TOKEN = GITHUB_ACCESS_TOKEN 275 | 276 | def __init__(self, **kargs): 277 | self.__dict__.update(kargs) 278 | self.changelog = '' 279 | 280 | @property 281 | def lurl(self): 282 | return Path(self.folder, self.name) 283 | 284 | def check_update(self): 285 | # get local info 286 | lurl, lver, ldat = self.lurl, 'NotInstalled', None 287 | if lurl.exists(): 288 | ldat = datetime.fromtimestamp( 289 | get_timestamp(lurl, 'B')) # B -- birthdate 290 | lver = ldat.strftime('%y%m%d') 291 | if lurl.name.endswith('.kext'): 292 | lver += '(' + shout("grep -A1 -m 2 'CFBundleShortVersionString' " + str(Path( 293 | lurl, 'Contents', 'Info.plist')) + " | awk -F '[<,>]' 'NR>1{print $3}'") + ')' 294 | 295 | self.__dict__.update(dict(lver=lver, ldat=ldat)) 296 | 297 | # get remote info 298 | rurl, rver, rdat = self.url, self.version, date.today() 299 | 300 | if lver.split('(')[-1].startswith(rver): 301 | return False 302 | 303 | _info = self.url+self.version+self.pattern 304 | if _info in remote_infos: 305 | rurl, rver, rdat = remote_infos[_info] 306 | elif 'github' in rurl or 'bitbucket' in rurl: 307 | domain, user, repo = rurl.split('/')[-3:] 308 | isgithub = 'github' in domain 309 | if isgithub: 310 | req = Request('https://api.github.com/repos/{}/{}/releases/{}'.format( 311 | user, repo, 'tags/' + rver if rver != 'latest' else rver), 312 | headers={}) 313 | print(req.get_full_url()) 314 | else: 315 | req = 'https://api.bitbucket.org/2.0/repositories/{}/{}/downloads'.format( 316 | user, repo) 317 | print(req) 318 | info = json.loads(urlopen(req).read()) 319 | for asset in info['assets' if isgithub else 'values']: 320 | if re.match(self.pattern, asset['name'], re.I): 321 | if isgithub: 322 | rurl = asset['browser_download_url'] 323 | rver = info['tag_name'] 324 | rdat = asset['updated_at'] 325 | self.changelog = info['body'] 326 | else: 327 | rdat = asset['created_on'] 328 | if rver in ('latest', rdat[:10]): 329 | rurl = asset['links']['self']['href'] 330 | break 331 | print(rdat) 332 | rdat = datetime.fromisoformat(rdat[:19]) 333 | rver = rdat.strftime('%y%m%d') + '(' + rver + ')' 334 | self.__dict__.update(dict(rurl=rurl, rver=rver, rdat=rdat)) 335 | remote_infos[_info] = (rurl, rver, rdat) 336 | 337 | if not ldat: # not exist 338 | return True 339 | if lver.split('(')[-1] == rver.split('(')[-1]: 340 | return False 341 | return abs((rdat - ldat).days) > 1 342 | 343 | def update(self, tmp=Path(__file__).parent.joinpath('tmp')): 344 | tmpfile = tmp / self.rurl.split('/')[-1] 345 | tmpfolder = Path(tmp, tmpfile.name.split('.')[0]) 346 | if not tmpfile.exists(): 347 | print('Downloading', self.lurl, 'from', self.rurl) 348 | sh('curl -# -R -Lk {} -o {}'.format(self.rurl, tmpfile)) 349 | if self.rurl.endswith('.zip'): 350 | sh('unzip -qq -o {} -d {}'.format(tmpfile, tmpfolder)) 351 | else: 352 | tmpfolder.mkdir(exist_ok=True) 353 | sh('cp -p {} {}'.format(tmpfile, tmpfolder)) 354 | self.folder.mkdir(exist_ok=True, parents=True) 355 | sh('rm -rf {}'.format(self.lurl)) 356 | for r in tmpfolder.rglob(self.name): 357 | sh('cp -pr {} {}'.format(r, self.folder)) 358 | 359 | 360 | def download_theme(theme: Path): 361 | if not theme.exists() or Confirm('Theme {} exists, do you want to update it'.format(theme.name)): 362 | Title('Downloading theme', theme.name) 363 | sh('cd {} && git archive --remote=git://git.code.sf.net/p/cloverefiboot/themes HEAD themes/{} | tar -x -v'.format( 364 | theme.parent.parent, theme.name)) 365 | Title('Theme', theme.name, 'downloaded into', theme.parent) 366 | print() 367 | 368 | 369 | def update_themes(themes): 370 | if themes.exists(): 371 | [download_theme(theme) 372 | for theme in Path(themes).iterdir() if theme.is_dir()] 373 | else: 374 | themes.mkdir() 375 | download_theme(Path(themes, 'Nightwish')) 376 | 377 | 378 | def set_config(configfile: Path, kvs: list): 379 | '''Update config.plist with key=value pairs 380 | e.g. 381 | 'uiscale=1' for FHD display 382 | 'theme=Nightwish' to set Clover theme 383 | 'bootarg--v' to remove -v in bootarg 384 | 'bootarg+darkwake=1' to set darkwake to 1 385 | ''' 386 | isCLOVER = True if "CLOVER" in str(configfile).split("/") else False 387 | 388 | if not configfile.exists() or not configfile.name.endswith('.plist'): 389 | return False 390 | 391 | Title('Setting', configfile) 392 | 393 | config = Plist(configfile) 394 | # process bootargs 395 | bootargs = [] 396 | for kv in kvs: 397 | if kv.startswith('bootarg'): 398 | bootargs.append(kv) 399 | else: 400 | k, v = kv.split('=', 1) 401 | if k not in config.keywords: 402 | if k != 'theme': 403 | print(k, 'field not found.') 404 | continue 405 | 406 | if k == 'theme': 407 | if isCLOVER: 408 | theme = R('CLOVER', 'themes', v) 409 | if not theme.exists(): 410 | download_theme(theme) 411 | else: 412 | print('found') 413 | theme = R('tmp', 'themes', v) 414 | download_theme(theme) 415 | convert_themes_clover_opencore(theme, R('OC', 'Icons')) 416 | 417 | if k == 'uiscale': 418 | if config.type == 'oc': 419 | v = 'Ag==' if v == '2' else 'AQ==' 420 | if isCLOVER or k != 'theme': 421 | print('Set', config.keyword(k), 'to', v) 422 | config.set(k, v) 423 | 424 | if bootargs: 425 | boot, key = config.get('bootarg') 426 | argdict = dict((ba.split('=')[0], ba) for ba in boot[key].split()) 427 | for ba in bootargs: 428 | arg = ba[8:].split('=')[0] 429 | if ba[7] == '-': 430 | argdict.pop(arg, 0) 431 | else: 432 | argdict[arg] = ba[8:] 433 | boot[key] = ' '.join(argdict.values()) 434 | print('Boot Args:', boot[key]) 435 | 436 | config.save() 437 | return True 438 | 439 | 440 | def update_packages(packages): 441 | '''Updating packages 442 | ''' 443 | Title('Checking updates...') 444 | updates = [] 445 | for i, package in enumerate(packages, 1): 446 | print('({}/{}) {:<46}'.format(i, len(packages), package.name), end='\r') 447 | if package.check_update(): 448 | updates.append(package) 449 | packages = updates 450 | if not packages: 451 | print('Everything is up-to-date') 452 | return [] 453 | ''' 454 | Show updates 455 | ''' 456 | Title(len(packages), 'packages to update') 457 | for i, p in enumerate(packages, 1): 458 | print('[{}] {:<46} {} -> {}'.format( 459 | c(i, 172), '/'.join((c(p.folder, 39), p.name)), 460 | c(p.lver, 204), c(p.rver, 70))) 461 | print(c(p.rurl, 245)) 462 | if (p.changelog): 463 | print(c(p.changelog.strip(), 245)) 464 | 465 | def get_choices(choice: str) -> set: 466 | choices = set() 467 | for c in choice.split(' '): 468 | if not c: 469 | continue 470 | c = c.split('-') * 2 # fallback 471 | choices.update(range(int(c[0]), int(c[1]) + 1)) 472 | return choices 473 | 474 | if not args.force: 475 | choices = get_choices( 476 | Prompt('Enter package(s) number you don\'t want to update (e.g. 1 3 4-7):')) 477 | if choices: 478 | packages = [p for i, p in enumerate(packages, 1) 479 | if i not in choices] 480 | 481 | if not packages: 482 | print('Nothing to do') 483 | return [] 484 | Title('Updating...') 485 | [p.update() for p in packages] 486 | 487 | return packages 488 | 489 | 490 | def patching(kexts: Path): 491 | Title('Set delay after typing to 50ms') 492 | info = Plist(kexts / 'VoodooI2CHID.kext' / 'Contents' / 'Info.plist') 493 | info.set('IOKitPersonalities>VoodooI2CHIDDevice Precision Touchpad HID Event Driver>QuietTimeAfterTyping', DELAY_AFTER_TYPE) 494 | info.save() 495 | Title('Delete VoodooPS2Mouse.kext and VoodooPS2Trackpad.kext') 496 | for kext in ('VoodooPS2Mouse.kext', 'VoodooPS2Trackpad.kext', 'VoodooInput.kext'): 497 | sh('rm -rf {}'.format(kexts / 'VoodooPS2Controller.kext' / 498 | 'Contents' / 'PlugIns' / kext)) 499 | Title('Delete AirPortBrcm4360_Injector') 500 | for kext in ('AirPortBrcm4360_Injector.kext'): 501 | sh('rm -rf {}'.format(kexts / 'AirportBrcmFixup.kext' / 502 | 'Contents' / 'PlugIns' / kext)) 503 | 504 | 505 | def replace_with_release(folder: Path, version='latest'): 506 | '''folder is CLOVER/OC 507 | ''' 508 | # backup your config 509 | originconfig = folder / 'config.plist' 510 | backupconfig = R(folder.name + '.plist') 511 | originthemes = folder / 'themes' 512 | backupthemes = R('themes') 513 | if originconfig.exists(): 514 | sh('mv {} {}'.format(originconfig, backupconfig)) 515 | if originthemes.exists(): 516 | sh('mv {} {}'.format(originthemes, backupthemes)) 517 | 518 | sh('rm -rf {}'.format(folder)) 519 | if update_packages([Package( 520 | name=folder.name, folder=root, 521 | url=GITHUB_URL, 522 | description=folder.name + ' ' + GITHUB_DESCRIPTION, 523 | version=version, pattern='.*-' + folder.name)]): 524 | if backupconfig.exists(): 525 | originconfig = Plist(originconfig) 526 | Plist(backupconfig).copy(originconfig) 527 | originconfig.save() 528 | if backupthemes.exists(): 529 | sh('rm -rf {}'.format(originthemes)) 530 | sh('mv {} {}'.format(backupthemes, originthemes)) 531 | 532 | sh('rm -f {}'.format(backupconfig)) 533 | sh('rm -f {}'.format(backupthemes)) 534 | 535 | 536 | def update_acpi(ACPI: Path, folders): 537 | def compile_ssdts(folder: Path): 538 | # compile if .aml not exist 539 | ssdts = [] 540 | for dsl in folder.rglob('SSDT-*.dsl'): 541 | aml = Path(dsl.parent, dsl.name.replace('.dsl', '.aml')) 542 | if not aml.exists() or get_timestamp(dsl, 'm') > get_timestamp(aml, 'm'): 543 | ssdts.append((dsl, aml)) 544 | iasl = folder / 'iasl' 545 | if not iasl.exists(): 546 | Title('Downloading iasl...') 547 | sh('curl -# -R -LOk https://bitbucket.org/RehabMan/acpica/downloads/iasl.zip') 548 | sh('unzip iasl.zip iasl -d {} && rm iasl.zip'.format(iasl.parent)) 549 | sh('chmod a+x {}'.format(iasl)) 550 | for (dsl, aml) in ssdts: 551 | sh('{} -oa {}'.format(iasl, dsl)) 552 | return ssdts 553 | 554 | def get_patches(ACPI: Path): 555 | '''Get patches from dsl files 556 | // Patch: xxx 557 | // Find: ABC 558 | // Replace: DEF 559 | ''' 560 | patches = [] 561 | for dsl in Path(ACPI).rglob('SSDT-*.dsl'): 562 | with open(dsl, 'r') as f: 563 | while True: 564 | line = f.readline() 565 | if line.startswith('// Patch:'): 566 | patches.append( 567 | { 568 | 'Comment': line[9:].strip(), 569 | 'Find': Plist.data(f.readline()[8:].strip()), 570 | 'Replace': Plist.data(f.readline()[11:].strip()) 571 | } 572 | ) 573 | elif not line: 574 | break 575 | return patches 576 | 577 | patches = sorted(get_patches(ACPI), key=lambda x: x['Comment']) 578 | 579 | Title('Updating SSDTs') 580 | if ACPI == root: # do a full update 581 | sh('rm -rf {}/*.aml'.format(ACPI)) 582 | ssdts = compile_ssdts(ACPI) # [(dsl, aml), ...] 583 | for folder in folders: 584 | if not folder.exists(): 585 | continue 586 | patches = get_patches(ACPI) 587 | acpi = folder / mappers[folder.name].get('ACPI', 'ACPI') 588 | sh('rm -rf {}'.format(acpi)) 589 | acpi.mkdir(exist_ok=True, parents=True) 590 | sh('cp -p {}/SSDT-*.aml {}'.format(ACPI, acpi)) 591 | config = Plist(folder / 'config.plist') 592 | if folder == CLOVER: 593 | for patch in patches: 594 | patch['Disabled'] = False 595 | config.plist['ACPI']['DSDT']['Patches'] = patches 596 | else: 597 | for patch in patches: 598 | patch['Enabled'] = True 599 | config.plist['ACPI']['Patch'] = patches 600 | config.plist['ACPI']['Add'] = [{'Enabled': True, 'Path': aml.name} 601 | for aml in sorted((folder / 'ACPI').glob('SSDT-*.aml'))] 602 | config.save() 603 | print(folder, 'patches updated') 604 | 605 | 606 | def update_oc_info(folder: Path): 607 | '''Updating patches, kexts and drivers info for OpenCore 608 | ''' 609 | 610 | config = Plist(folder / 'config.plist') 611 | 612 | config.plist['ACPI']['Add'] = [{'Enabled': True, 'Path': aml.name} 613 | for aml in sorted((folder / 'ACPI').glob('SSDT-*.aml'))] 614 | 615 | kexts = [] 616 | kextpath = folder / 'Kexts' 617 | prioritys = KEXT_PIORITY 618 | for kext in sorted(kextpath.rglob('*.kext')): 619 | if kext.name[0] == '.': 620 | continue 621 | kextinfo = { 622 | 'Enabled': True, 623 | 'BundlePath': kext.relative_to(kextpath).as_posix(), 624 | 'PlistPath': 'Contents/Info.plist' 625 | } 626 | executable = '/'.join(('Contents', 'MacOS', kext.name[:-5])) 627 | if Path(kext, executable).exists(): 628 | kextinfo['ExecutablePath'] = executable 629 | kexts.append((prioritys.get(kext.name, 100), kextinfo)) 630 | 631 | config.plist['Kernel']['Add'] = [x[1] for x in sorted( 632 | kexts, key=lambda x: x[0])] 633 | print('Kexts info updated') 634 | 635 | config.plist['UEFI']['Drivers'] = sorted([ 636 | driver.name for driver in (folder / 'Drivers').glob('*.efi') 637 | ]) 638 | print('Drivers info updated') 639 | 640 | config.save() 641 | return 642 | 643 | 644 | # Env variable 645 | path = Path(args.p).absolute() 646 | CLOVER, OC = R('CLOVER'), R('OC') 647 | TEMP = R('temp') 648 | 649 | # Args functions 650 | 651 | 652 | def zip_folder(folders): 653 | sh('rm -rf {}/*.aml'.format(R('ACPI'))) 654 | sh('mkdir -p Builds') 655 | sh('rm -rf ./Builds/*') 656 | for folder in folders: 657 | # sh('mkdir -p Builds/{}'.format(folder.name)) 658 | sh('mkdir -p Builds/{}/EFI'.format(folder.name)) 659 | sh('mkdir -p Builds/{}/EFI/{} && cp -R {}/* Builds/{}/EFI/{}/'.format( 660 | folder.name, folder.name, folder.name, folder.name, folder.name)) 661 | sh('mkdir -p Builds/{}/EFI/BOOT && cp -R BOOT/{}/* Builds/{}/EFI/BOOT/'.format( 662 | folder.name, folder.name, folder.name)) 663 | set_config(folder / 'config.plist', 664 | 'sn={} mlb={} smuuid={} bootarg+-v'.format(DEFAULT_SN, DEFAULT_MLB, DEFAULT_SMUUID).split(' ')) 665 | sh('cd {} && zip -r {}-{}-$(date +%y%m%d).zip ./Builds/{} README.md update.py packages.csv {}'.format( 666 | root, BUILD_PREFIX, folder.name, folder.name, ' '.join(SHIPPED_FOLDER))) 667 | # Move to build folder 668 | sh('rm -rf ./Builds/*') 669 | sh('mv {}* ./Builds'.format(BUILD_PREFIX)) 670 | 671 | 672 | def post_install(): 673 | fix_sleep() 674 | sh('sudo bash ./PostInstall/CombojackFix/install.sh') 675 | 676 | 677 | def gen(folders): 678 | macserial = R('macserial') 679 | if not macserial.exists(): 680 | update_packages([ 681 | Package( 682 | name='macserial', folder=root, 683 | description='', version='latest', 684 | pattern='.*-mac', url='https://github.com/acidanthera/MacInfoPkg' 685 | ) 686 | ]) 687 | sn, s, mlb = shout( 688 | '{} -m {} -g -n 1'.format(macserial, SMBIOS_PRODUCT)).split(' ') 689 | uuid = shout('uuidgen') 690 | for folder in folders: 691 | set_config(folder / 'config.plist', 692 | 'sn={} mlb={} smuuid={}'.format(sn, mlb, uuid).split(' ')) 693 | 694 | 695 | def self_update(folders): 696 | sh('curl -# -LOk {}/archive/master.zip'.format(GITHUB_URL)) 697 | sh('unzip {} -d {}'.format('master.zip', root)) 698 | master = R('{}-macos-master'.format(BUILD_PREFIX.lower())) 699 | for folder in folders: 700 | config = folder / 'config.plist' 701 | if config.exists(): 702 | masterconfig = Plist(master / folder.name / 'config.plist') 703 | Plist(config).copy(masterconfig) 704 | masterconfig.save() 705 | else: 706 | sh('rm -rf {}'.format(master / folder.name)) 707 | sh('cp -pr {}/* {}'.format(master, root)) 708 | update_acpi(R('ACPI'), folders) 709 | if R('OC').exists(): 710 | update_oc_info(R('OC')) 711 | sh('rm -rf {} {}'.format('master.zip', master)) 712 | 713 | 714 | def acpi(): 715 | acpi = R('ACPI') 716 | update_acpi(acpi, (CLOVER, OC)) 717 | 718 | 719 | def set_conf_plist(folders): 720 | if path.name.endswith('.plist'): 721 | set_config(path, args.set) 722 | else: 723 | for folder in folders: 724 | set_config(folder / 'config.plist', args.set) 725 | 726 | 727 | def default(folders): 728 | keyword = '' 729 | if path.name in ('Kexts', 'kexts', 'Other'): 730 | keyword = 'kext' 731 | elif path.name in ('Drivers', 'drivers', 'UEFI'): 732 | keyword = 'driver' 733 | 734 | for folder in folders: 735 | name = folder.name 736 | mapper = mappers[name] 737 | other = 'CLOVER' if name == 'OC' else 'OC' 738 | packages = [] 739 | with open(R('packages.csv'), 'r') as f: 740 | keys = f.readline()[:-1].lower().split(',') 741 | for x in f: 742 | package = Package(**dict(zip(keys, x[:-1].split(',')))) 743 | pf = package.folder 744 | 745 | if pf[0] == '#': # remove this 746 | for r in folder.rglob(package.name): 747 | print('Remove {}'.format(r)) 748 | sh('rm -rf {}'.format(r)) 749 | continue 750 | 751 | if package.name == path.name: 752 | package.folder = path.parent 753 | packages = [package] 754 | break 755 | 756 | if pf.startswith(other) or keyword not in pf.lower(): 757 | continue 758 | 759 | if pf.startswith(name): 760 | package.folder = R(pf) 761 | else: 762 | package.folder = folder / mapper.get(pf, pf) 763 | 764 | packages.append(package) 765 | 766 | if packages and Confirm('Do packages update for ' + folder.name): 767 | update_packages(packages) 768 | 769 | patching(folder / mapper.get('Kexts', 'Kexts')) 770 | 771 | if OC in folders: 772 | update_oc_info(OC) 773 | 774 | 775 | if __name__ == '__main__': 776 | folders = [] 777 | if path == root: 778 | folders = [folder for folder in (CLOVER, OC) if folder.exists()] 779 | elif path == CLOVER or CLOVER in path.parents: 780 | folders = [CLOVER] 781 | elif path == OC or OC in path.parents: 782 | folders = [OC] 783 | 784 | if args.zip: 785 | zip_folder(folders) 786 | Done() 787 | 788 | if args.gen: 789 | gen(folders) 790 | Done() 791 | 792 | ''' 793 | update ACPI, packages.csv and update.py from repo 794 | ''' 795 | if args.self: 796 | self_update(folders) 797 | Done() 798 | 799 | if args.acpi: 800 | acpi() 801 | Done() 802 | 803 | ''' 804 | post after installed mac os, optimize, fix audio 805 | ''' 806 | if args.post: 807 | post_install() 808 | Done() 809 | 810 | ''' 811 | Set config.plist 812 | ''' 813 | if args.set: # set config 814 | set_conf_plist(folders) 815 | Done() 816 | 817 | ''' 818 | Build source into zip file 819 | ''' 820 | if args.build: # set config 821 | acpi() 822 | default(folders) 823 | zip_folder(folders) 824 | Done() 825 | 826 | ''' 827 | Replace current configuration with release 828 | ''' 829 | # if args.release: 830 | # for folder in folders: 831 | # replace_with_release(folder, args.release) 832 | # Done() 833 | 834 | ''' 835 | Update themes 836 | ''' 837 | if path.name == 'themes': 838 | update_themes(path) 839 | Done() 840 | elif path.parent.name == 'themes': 841 | download_theme(path) 842 | Done() 843 | elif path.name == 'CLOVER' or (path == root and CLOVER.exists()): 844 | update_themes(CLOVER / 'themes') 845 | Done() 846 | 847 | ''' 848 | Update packages 849 | ''' 850 | default() 851 | Done() 852 | -------------------------------------------------------------------------------- /OC/config.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | #WARNING - 1 6 | This is just a sample. Do NOT try loading it. 7 | #WARNING - 2 8 | Ensure you understand EVERY field before booting. 9 | #WARNING - 3 10 | In most cases recommended to use Sample.plist 11 | #WARNING - 4 12 | Use SampleCustom.plist only for special cases. 13 | ACPI 14 | 15 | Add 16 | 17 | 18 | Enabled 19 | 20 | Path 21 | SSDT-ALS0.aml 22 | 23 | 24 | Enabled 25 | 26 | Path 27 | SSDT-AWAC.aml 28 | 29 | 30 | Enabled 31 | 32 | Path 33 | SSDT-BCKM.aml 34 | 35 | 36 | Enabled 37 | 38 | Path 39 | SSDT-DGPU.aml 40 | 41 | 42 | Enabled 43 | 44 | Path 45 | SSDT-EXT4-WakeScreen.aml 46 | 47 | 48 | Enabled 49 | 50 | Path 51 | SSDT-PCI0.aml 52 | 53 | 54 | Enabled 55 | 56 | Path 57 | SSDT-PLUG.aml 58 | 59 | 60 | Enabled 61 | 62 | Path 63 | SSDT-TPDX.aml 64 | 65 | 66 | Enabled 67 | 68 | Path 69 | SSDT-USBX.aml 70 | 71 | 72 | Delete 73 | 74 | 75 | All 76 | 77 | Comment 78 | Delete CpuPm 79 | Enabled 80 | 81 | OemTableId 82 | 83 | Q3B1UG0AAAA= 84 | 85 | TableLength 86 | 0 87 | TableSignature 88 | 89 | U1NEVA== 90 | 91 | 92 | 93 | All 94 | 95 | Comment 96 | Delete Cpu0Ist 97 | Enabled 98 | 99 | OemTableId 100 | 101 | Q3B1MElzdAA= 102 | 103 | TableLength 104 | 0 105 | TableSignature 106 | 107 | U1NEVA== 108 | 109 | 110 | 111 | Patch 112 | 113 | 114 | Comment 115 | Rename BRT6 to BRTX 116 | Enabled 117 | 118 | Find 119 | 120 | QlJUNgI= 121 | 122 | Replace 123 | 124 | QlJUWAI= 125 | 126 | 127 | 128 | Comment 129 | Rename USTP to One 130 | Enabled 131 | 132 | Find 133 | 134 | VVNUUBA= 135 | 136 | Replace 137 | 138 | AaOjoxA= 139 | 140 | 141 | 142 | Comment 143 | Rename _WAK to ZWAK 144 | Enabled 145 | 146 | Find 147 | 148 | FDlfV0FLAQ== 149 | 150 | Replace 151 | 152 | FDlaV0FLAQ== 153 | 154 | 155 | 156 | Comment 157 | Rename _PTS to ZPTS 158 | Enabled 159 | 160 | Find 161 | 162 | FEkEX1BUUwE= 163 | 164 | Replace 165 | 166 | FEkEWlBUUwE= 167 | 168 | 169 | 170 | Quirks 171 | 172 | FadtEnableReset 173 | 174 | NormalizeHeaders 175 | 176 | RebaseRegions 177 | 178 | ResetHwSig 179 | 180 | ResetLogoStatus 181 | 182 | 183 | 184 | Booter 185 | 186 | MmioWhitelist 187 | 188 | 189 | Address 190 | 4275159040 191 | Comment 192 | Haswell: SB_RCBA is a 0x4 page memory region, containing SPI_BASE at 0x3800 (SPI_BASE_ADDRESS) 193 | Enabled 194 | 195 | 196 | 197 | Address 198 | 4278190080 199 | Comment 200 | Generic: PCI root is a 0x1000 page memory region used by some firmwares 201 | Enabled 202 | 203 | 204 | 205 | Quirks 206 | 207 | AvoidRuntimeDefrag 208 | 209 | DevirtualiseMmio 210 | 211 | DisableSingleUser 212 | 213 | DisableVariableWrite 214 | 215 | DiscardHibernateMap 216 | 217 | EnableSafeModeSlide 218 | 219 | EnableWriteUnprotector 220 | 221 | ForceExitBootServices 222 | 223 | ProtectMemoryRegions 224 | 225 | ProtectSecureBoot 226 | 227 | ProtectUefiServices 228 | 229 | ProvideCustomSlide 230 | 231 | ProvideMaxSlide 232 | 0 233 | RebuildAppleMemoryMap 234 | 235 | SetupVirtualMap 236 | 237 | SignalAppleOS 238 | 239 | SyncRuntimePermissions 240 | 241 | 242 | 243 | DeviceProperties 244 | 245 | Add 246 | 247 | #PciRoot(0x0)/Pci(0x1d,0x6)/Pci(0x0,0x0) 248 | 249 | AAPL,slot-name 250 | WLAN 251 | brcmfx-country 252 | #a 253 | compatible 254 | pci14e4,43a3 255 | device_type 256 | Airport Extreme 257 | model 258 | DW1820A (BCM4350) 802.11ac Wireless 259 | name 260 | Airport 261 | 262 | PciRoot(0x0)/Pci(0x1f,0x0) 263 | 264 | compatible 265 | pci8086,9cc1 266 | device-id 267 | 268 | nMEA 269 | 270 | 271 | PciRoot(0x0)/Pci(0x1f,0x3) 272 | 273 | alc-delay 274 | 1000 275 | layout-id 276 | 77 277 | 278 | PciRoot(0x0)/Pci(0x2,0x0) 279 | 280 | AAPL,ig-platform-id 281 | 282 | CQClPg== 283 | 284 | dpcd-max-link-rate 285 | 286 | FAAAAA== 287 | 288 | enable-dpcd-max-link-rate-fix 289 | 290 | AQAAAA== 291 | 292 | enable-hdmi20 293 | 294 | AQAAAA== 295 | 296 | enable-lspcon-support 297 | 298 | AQAAAA== 299 | 300 | framebuffer-con1-alldata 301 | 302 | AQUJAAAEAACHAQAA 303 | 304 | framebuffer-con1-enable 305 | 306 | AQAAAA== 307 | 308 | framebuffer-con2-alldata 309 | 310 | AgYJAAAEAACHAQAA 311 | 312 | framebuffer-con2-enable 313 | 314 | AQAAAA== 315 | 316 | framebuffer-con3-alldata 317 | 318 | AwQKAAAIAACHAQAA 319 | 320 | framebuffer-con3-enable 321 | 322 | AQAAAA== 323 | 324 | framebuffer-con3-has-lspcon 325 | 326 | AQAAAA== 327 | 328 | framebuffer-patch-enable 329 | 330 | AQAAAA== 331 | 332 | framebuffer-portcount 333 | 334 | BAAAAA== 335 | 336 | framebuffer-unifiedmem 337 | 338 | AAAAgA== 339 | 340 | 341 | 342 | Delete 343 | 344 | 345 | Kernel 346 | 347 | Add 348 | 349 | 350 | BundlePath 351 | Lilu.kext 352 | Enabled 353 | 354 | ExecutablePath 355 | Contents/MacOS/Lilu 356 | PlistPath 357 | Contents/Info.plist 358 | 359 | 360 | BundlePath 361 | VirtualSMC.kext 362 | Enabled 363 | 364 | ExecutablePath 365 | Contents/MacOS/VirtualSMC 366 | PlistPath 367 | Contents/Info.plist 368 | 369 | 370 | BundlePath 371 | CpuTscSync.kext 372 | Enabled 373 | 374 | ExecutablePath 375 | Contents/MacOS/CpuTscSync 376 | PlistPath 377 | Contents/Info.plist 378 | 379 | 380 | BundlePath 381 | AppleALC.kext 382 | Enabled 383 | 384 | ExecutablePath 385 | Contents/MacOS/AppleALC 386 | PlistPath 387 | Contents/Info.plist 388 | 389 | 390 | BundlePath 391 | CPUFriend.kext 392 | Enabled 393 | 394 | ExecutablePath 395 | Contents/MacOS/CPUFriend 396 | PlistPath 397 | Contents/Info.plist 398 | 399 | 400 | BundlePath 401 | CPUFriendDataProvider.kext 402 | Enabled 403 | 404 | PlistPath 405 | Contents/Info.plist 406 | 407 | 408 | BundlePath 409 | VoodooPS2Controller.kext 410 | Enabled 411 | 412 | ExecutablePath 413 | Contents/MacOS/VoodooPS2Controller 414 | PlistPath 415 | Contents/Info.plist 416 | 417 | 418 | BundlePath 419 | VoodooI2C.kext/Contents/PlugIns/VoodooInput.kext 420 | Enabled 421 | 422 | ExecutablePath 423 | Contents/MacOS/VoodooInput 424 | PlistPath 425 | Contents/Info.plist 426 | 427 | 428 | BundlePath 429 | VoodooI2C.kext/Contents/PlugIns/VoodooGPIO.kext 430 | Enabled 431 | 432 | ExecutablePath 433 | Contents/MacOS/VoodooGPIO 434 | PlistPath 435 | Contents/Info.plist 436 | 437 | 438 | BundlePath 439 | VoodooI2C.kext/Contents/PlugIns/VoodooI2CServices.kext 440 | Enabled 441 | 442 | ExecutablePath 443 | Contents/MacOS/VoodooI2CServices 444 | PlistPath 445 | Contents/Info.plist 446 | 447 | 448 | BundlePath 449 | VoodooI2C.kext 450 | Enabled 451 | 452 | ExecutablePath 453 | Contents/MacOS/VoodooI2C 454 | PlistPath 455 | Contents/Info.plist 456 | 457 | 458 | BundlePath 459 | VoodooI2CHID.kext 460 | Enabled 461 | 462 | ExecutablePath 463 | Contents/MacOS/VoodooI2CHID 464 | PlistPath 465 | Contents/Info.plist 466 | 467 | 468 | BundlePath 469 | AirportBrcmFixup.kext 470 | Enabled 471 | 472 | ExecutablePath 473 | Contents/MacOS/AirportBrcmFixup 474 | PlistPath 475 | Contents/Info.plist 476 | 477 | 478 | BundlePath 479 | AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcm4360_Injector.kext 480 | Enabled 481 | 482 | PlistPath 483 | Contents/Info.plist 484 | 485 | 486 | BundlePath 487 | AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcmNIC_Injector.kext 488 | Enabled 489 | 490 | PlistPath 491 | Contents/Info.plist 492 | 493 | 494 | BundlePath 495 | BrcmBluetoothInjector.kext 496 | Enabled 497 | 498 | PlistPath 499 | Contents/Info.plist 500 | 501 | 502 | BundlePath 503 | BrcmFirmwareData.kext 504 | Enabled 505 | 506 | ExecutablePath 507 | Contents/MacOS/BrcmFirmwareData 508 | PlistPath 509 | Contents/Info.plist 510 | 511 | 512 | BundlePath 513 | BrcmPatchRAM3.kext 514 | Enabled 515 | 516 | ExecutablePath 517 | Contents/MacOS/BrcmPatchRAM3 518 | PlistPath 519 | Contents/Info.plist 520 | 521 | 522 | BundlePath 523 | HibernationFixup.kext 524 | Enabled 525 | 526 | ExecutablePath 527 | Contents/MacOS/HibernationFixup 528 | PlistPath 529 | Contents/Info.plist 530 | 531 | 532 | BundlePath 533 | NVMeFix.kext 534 | Enabled 535 | 536 | ExecutablePath 537 | Contents/MacOS/NVMeFix 538 | PlistPath 539 | Contents/Info.plist 540 | 541 | 542 | BundlePath 543 | NoTouchID.kext 544 | Enabled 545 | 546 | ExecutablePath 547 | Contents/MacOS/NoTouchID 548 | PlistPath 549 | Contents/Info.plist 550 | 551 | 552 | BundlePath 553 | SMCBatteryManager.kext 554 | Enabled 555 | 556 | ExecutablePath 557 | Contents/MacOS/SMCBatteryManager 558 | PlistPath 559 | Contents/Info.plist 560 | 561 | 562 | BundlePath 563 | SMCDellSensors.kext 564 | Enabled 565 | 566 | ExecutablePath 567 | Contents/MacOS/SMCDellSensors 568 | PlistPath 569 | Contents/Info.plist 570 | 571 | 572 | BundlePath 573 | SMCLightSensor.kext 574 | Enabled 575 | 576 | ExecutablePath 577 | Contents/MacOS/SMCLightSensor 578 | PlistPath 579 | Contents/Info.plist 580 | 581 | 582 | BundlePath 583 | SMCProcessor.kext 584 | Enabled 585 | 586 | ExecutablePath 587 | Contents/MacOS/SMCProcessor 588 | PlistPath 589 | Contents/Info.plist 590 | 591 | 592 | BundlePath 593 | USBPorts.kext 594 | Enabled 595 | 596 | PlistPath 597 | Contents/Info.plist 598 | 599 | 600 | BundlePath 601 | VerbStub.kext 602 | Enabled 603 | 604 | ExecutablePath 605 | Contents/MacOS/VerbStub 606 | PlistPath 607 | Contents/Info.plist 608 | 609 | 610 | BundlePath 611 | VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext 612 | Enabled 613 | 614 | ExecutablePath 615 | Contents/MacOS/VoodooPS2Keyboard 616 | PlistPath 617 | Contents/Info.plist 618 | 619 | 620 | BundlePath 621 | WhateverGreen.kext 622 | Enabled 623 | 624 | ExecutablePath 625 | Contents/MacOS/WhateverGreen 626 | PlistPath 627 | Contents/Info.plist 628 | 629 | 630 | Block 631 | 632 | 633 | Arch 634 | Any 635 | Comment 636 | 637 | Enabled 638 | 639 | Identifier 640 | com.apple.driver.AppleTyMCEDriver 641 | MaxKernel 642 | 643 | MinKernel 644 | 645 | 646 | 647 | Emulate 648 | 649 | Cpuid1Data 650 | 651 | 652 | Cpuid1Mask 653 | 654 | 655 | 656 | Force 657 | 658 | Patch 659 | 660 | 661 | Arch 662 | Any 663 | Base 664 | 665 | Comment 666 | 667 | Count 668 | 0 669 | Enabled 670 | 671 | Find 672 | 673 | cJ0AAA== 674 | 675 | Identifier 676 | com.apple.driver.AppleHDAController 677 | Limit 678 | 0 679 | Mask 680 | 681 | 682 | MaxKernel 683 | 684 | MinKernel 685 | 686 | Replace 687 | 688 | SKMAAA== 689 | 690 | ReplaceMask 691 | 692 | 693 | Skip 694 | 0 695 | 696 | 697 | Quirks 698 | 699 | AppleCpuPmCfgLock 700 | 701 | AppleXcpmCfgLock 702 | 703 | AppleXcpmExtraMsrs 704 | 705 | AppleXcpmForceBoost 706 | 707 | CustomSMBIOSGuid 708 | 709 | DisableIoMapper 710 | 711 | DisableLinkeditJettison 712 | 713 | DisableRtcChecksum 714 | 715 | DummyPowerManagement 716 | 717 | ExternalDiskIcons 718 | 719 | IncreasePciBarSize 720 | 721 | LapicKernelPanic 722 | 723 | PanicNoKextDump 724 | 725 | PowerTimeoutKernelPanic 726 | 727 | ThirdPartyDrives 728 | 729 | XhciPortLimit 730 | 731 | 732 | Scheme 733 | 734 | FuzzyMatch 735 | 736 | KernelArch 737 | Auto 738 | KernelCache 739 | Auto 740 | 741 | 742 | Misc 743 | 744 | BlessOverride 745 | 746 | Boot 747 | 748 | ConsoleAttributes 749 | 0 750 | HibernateMode 751 | Auto 752 | HideAuxiliary 753 | 754 | PickerAttributes 755 | 1 756 | PickerAudioAssist 757 | 758 | PickerMode 759 | Builtin 760 | PollAppleHotKeys 761 | 762 | ShowPicker 763 | 764 | TakeoffDelay 765 | 0 766 | Timeout 767 | 5 768 | 769 | Debug 770 | 771 | AppleDebug 772 | 773 | ApplePanic 774 | 775 | DisableWatchDog 776 | 777 | DisplayDelay 778 | 0 779 | DisplayLevel 780 | 2147483650 781 | SerialInit 782 | 783 | SysReport 784 | 785 | Target 786 | 3 787 | 788 | Entries 789 | 790 | 791 | Arguments 792 | 793 | Auxiliary 794 | 795 | Comment 796 | Not signed for security reasons 797 | Enabled 798 | 799 | Name 800 | CustomOS 801 | Path 802 | PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)/NVMe(0x1,11-22-33-44-55-66-77-88)/HD(1,GPT,00000000-0000-0000-0000-000000000000,0x800,0x64000)/\EFI\BOOT\BOOTX64.EFI 803 | 804 | 805 | Security 806 | 807 | AllowNvramReset 808 | 809 | AllowSetDefault 810 | 811 | ApECID 812 | 0 813 | AuthRestart 814 | 815 | BootProtect 816 | Bootstrap 817 | DmgLoading 818 | Signed 819 | EnablePassword 820 | 821 | ExposeSensitiveData 822 | 6 823 | HaltLevel 824 | 2147483648 825 | PasswordHash 826 | 827 | 828 | PasswordSalt 829 | 830 | 831 | ScanPolicy 832 | 0 833 | SecureBootModel 834 | Default 835 | Vault 836 | Optional 837 | 838 | Tools 839 | 840 | 841 | Arguments 842 | 843 | Auxiliary 844 | 845 | Comment 846 | Not signed for security reasons 847 | Enabled 848 | 849 | Name 850 | UEFI Shell 851 | Path 852 | OpenShell.efi 853 | 854 | 855 | Arguments 856 | 857 | Auxiliary 858 | 859 | Comment 860 | Memory testing utility 861 | Enabled 862 | 863 | Name 864 | memcheck 865 | Path 866 | memcheck/memcheck.efi 867 | 868 | 869 | Arguments 870 | Shutdown 871 | Auxiliary 872 | 873 | Comment 874 | Perform shutdown 875 | Enabled 876 | 877 | Name 878 | Shutdown 879 | Path 880 | ResetSystem.efi 881 | 882 | 883 | 884 | NVRAM 885 | 886 | Add 887 | 888 | 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 889 | 890 | DefaultBackgroundColor 891 | 892 | AAAAAA== 893 | 894 | UIScale 895 | 896 | AQ== 897 | 898 | 899 | 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 900 | 901 | rtc-blacklist 902 | 903 | 904 | 905 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 906 | 907 | SystemAudioVolume 908 | 909 | Rg== 910 | 911 | boot-args 912 | debug=0x100 keepsyms=1 agdpmod=vit9696 -v 913 | csr-active-config 914 | 915 | /w8AAA== 916 | 917 | run-efi-updater 918 | No 919 | 920 | 921 | Delete 922 | 923 | 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 924 | 925 | UIScale 926 | DefaultBackgroundColor 927 | 928 | 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 929 | 930 | rtc-blacklist 931 | 932 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 933 | 934 | boot-args 935 | 936 | 937 | LegacyEnable 938 | 939 | LegacyOverwrite 940 | 941 | LegacySchema 942 | 943 | 7C436110-AB2A-4BBB-A880-FE41995C9F82 944 | 945 | EFILoginHiDPI 946 | EFIBluetoothDelay 947 | LocationServicesEnabled 948 | SystemAudioVolume 949 | SystemAudioVolumeDB 950 | SystemAudioVolumeSaved 951 | bluetoothActiveControllerInfo 952 | bluetoothInternalControllerInfo 953 | flagstate 954 | fmm-computer-name 955 | nvda_drv 956 | prev-lang:kbd 957 | 958 | 8BE4DF61-93CA-11D2-AA0D-00E098032B8C 959 | 960 | Boot0080 961 | Boot0081 962 | Boot0082 963 | BootNext 964 | BootOrder 965 | 966 | 967 | WriteFlash 968 | 969 | 970 | PlatformInfo 971 | 972 | Automatic 973 | 974 | Generic 975 | 976 | AdviseWindows 977 | 978 | MLB 979 | C02947300QX0000JC 980 | ROM 981 | 982 | iKeHqcrP 983 | 984 | SpoofVendor 985 | 986 | SystemProductName 987 | MacBookPro16,1 988 | SystemSerialNumber 989 | C02ZQDYDLVCG 990 | SystemUUID 991 | 6E167E28-A39C-423F-B244-20152956DD0C 992 | 993 | UpdateDataHub 994 | 995 | UpdateNVRAM 996 | 997 | UpdateSMBIOS 998 | 999 | UpdateSMBIOSMode 1000 | Custom 1001 | 1002 | UEFI 1003 | 1004 | APFS 1005 | 1006 | EnableJumpstart 1007 | 1008 | GlobalConnect 1009 | 1010 | HideVerbose 1011 | 1012 | JumpstartHotPlug 1013 | 1014 | MinDate 1015 | 0 1016 | MinVersion 1017 | 0 1018 | 1019 | Audio 1020 | 1021 | AudioCodec 1022 | 0 1023 | AudioDevice 1024 | PciRoot(0x0)/Pci(0x1b,0x0) 1025 | AudioOut 1026 | 0 1027 | AudioSupport 1028 | 1029 | MinimumVolume 1030 | 20 1031 | PlayChime 1032 | 1033 | VolumeAmplifier 1034 | 0 1035 | 1036 | ConnectDrivers 1037 | 1038 | Drivers 1039 | 1040 | OpenCanopy.efi 1041 | OpenRuntime.efi 1042 | VBoxHfs.efi 1043 | 1044 | Input 1045 | 1046 | KeyFiltering 1047 | 1048 | KeyForgetThreshold 1049 | 5 1050 | KeyMergeThreshold 1051 | 2 1052 | KeySupport 1053 | 1054 | KeySupportMode 1055 | Auto 1056 | KeySwap 1057 | 1058 | PointerSupport 1059 | 1060 | PointerSupportMode 1061 | 1062 | TimerResolution 1063 | 50000 1064 | 1065 | Output 1066 | 1067 | ClearScreenOnModeSwitch 1068 | 1069 | ConsoleMode 1070 | 1071 | DirectGopRendering 1072 | 1073 | IgnoreTextInGraphics 1074 | 1075 | ProvideConsoleGop 1076 | 1077 | ReconnectOnResChange 1078 | 1079 | ReplaceTabWithSpace 1080 | 1081 | Resolution 1082 | Max 1083 | SanitiseClearScreen 1084 | 1085 | TextRenderer 1086 | BuiltinGraphics 1087 | UgaPassThrough 1088 | 1089 | 1090 | ProtocolOverrides 1091 | 1092 | AppleAudio 1093 | 1094 | AppleBootPolicy 1095 | 1096 | AppleDebugLog 1097 | 1098 | AppleEvent 1099 | 1100 | AppleFramebufferInfo 1101 | 1102 | AppleImageConversion 1103 | 1104 | AppleImg4Verification 1105 | 1106 | AppleKeyMap 1107 | 1108 | AppleRtcRam 1109 | 1110 | AppleSecureBoot 1111 | 1112 | AppleSmcIo 1113 | 1114 | AppleUserInterfaceTheme 1115 | 1116 | DataHub 1117 | 1118 | DeviceProperties 1119 | 1120 | FirmwareVolume 1121 | 1122 | HashServices 1123 | 1124 | OSInfo 1125 | 1126 | UnicodeCollation 1127 | 1128 | 1129 | Quirks 1130 | 1131 | DeduplicateBootOrder 1132 | 1133 | ExitBootServicesDelay 1134 | 0 1135 | IgnoreInvalidFlexRatio 1136 | 1137 | ReleaseUsbOwnership 1138 | 1139 | RequestBootVarRouting 1140 | 1141 | TscSyncTimeout 1142 | 0 1143 | UnblockFsConnect 1144 | 1145 | 1146 | ReservedMemory 1147 | 1148 | 1149 | Address 1150 | 268435456 1151 | Comment 1152 | HD3000: IGPU memory corruption errata 1153 | Enabled 1154 | 1155 | Size 1156 | 268435456 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | --------------------------------------------------------------------------------