diff --git a/CHANGELOG.md b/CHANGELOG.md
index edb377bbc..d2ecedda7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,15 @@
# OpenCore Legacy Patcher changelog
## 0.3.2
+- Implement spoofless support (ie. no SMBIOS patching)
+ - Requires macOS 11.3 or newer, for 11.2.3 and older use Minimal or higher spoofing
+ - See additional notes before updating: [VMM usage notes](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/543#issuecomment-953441283)
## 0.3.1
+- Increment Binaries:
+ - OpenCorePkg 0.7.4 release
+ - RestrictEvents 1.0.5 release
+ - WhateverGreen 1.5.4 release
- Allow for setting custom SIP values via TUI
- Drop `CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE` requirement for root patching
- Lowers default SIP Disabled value to 0xA03
diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist
index 05cc62cf4..e4ef87826 100644
--- a/payloads/Config/config.plist
+++ b/payloads/Config/config.plist
@@ -216,7 +216,56 @@
MmioWhitelist
Patch
-
+
+
+ Arch
+ x86_64
+ Comment
+ Skip Board ID check
+ Count
+ 0
+ Enabled
+
+ Find
+ AFAAbABhAHQAZgBvAHIAbQBTAHUAcABwAG8AcgB0AC4AcABsAGkAcwB0
+ Identifier
+ Apple
+ Limit
+ 0
+ Mask
+
+ Replace
+ AC4ALgAuAC4ALgAuAC4ALgAuAC4ALgAuAC4ALgAuAC4ALgAuAC4ALgAu
+ ReplaceMask
+
+ Skip
+ 0
+
+
+ Arch
+ x86_64
+ Comment
+ Reroute HW_BID to OC_BID
+ Count
+ 0
+ Enabled
+
+ Find
+ SABXAF8AQgBJAEQA
+ Identifier
+ Apple
+ Limit
+ 0
+ Mask
+
+ Replace
+ TwBDAF8AQgBJAEQA
+ ReplaceMask
+
+ Skip
+ 0
+
+
Quirks
AllowRelocationBlock
@@ -1262,6 +1311,96 @@
Skip
0
+
+ Arch
+ x86_64
+ Base
+
+ Comment
+ Reroute kern.hv_vmm_present patch (1)
+ Count
+ 1
+ Enabled
+
+ Find
+ AGRpcmVjdF9oYW5kb2ZmAEVuYWJsZSBkaXJlY3QgaGFuZG9mZiBmb3IgcmVhbHRpbWUgdGhyZWFkcwA=
+ Identifier
+ kernel
+ Limit
+ 0
+ Mask
+
+ MaxKernel
+
+ MinKernel
+ 20.4.0
+ Replace
+ AGh2X3ZtbV9wcmVzZW50AEVuYWJsZSBkaXJlY3QgaGFuZG9mZiBmb3IgcmVhbHRpbWUgdGhyZWFkcwA=
+ ReplaceMask
+
+ Skip
+ 0
+
+
+ Arch
+ x86_64
+ Base
+
+ Comment
+ Reroute kern.hv_vmm_present patch (2)
+ Count
+ 1
+ Enabled
+
+ Find
+ AGh2X2Rpc2FibGUAaHZfdm1tX3ByZXNlbnQA
+ Identifier
+ kernel
+ Limit
+ 0
+ Mask
+
+ MaxKernel
+
+ MinKernel
+ 20.4.0
+ Replace
+ AGh2X2Rpc2FibGUAZGlyZWN0X2hhbmRvZmYA
+ ReplaceMask
+
+ Skip
+ 0
+
+
+ Arch
+ x86_64
+ Base
+ _IOGetVMMPresent
+ Comment
+ Force IOGetVMMPresent
+ Count
+ 0
+ Enabled
+
+ Find
+
+ Identifier
+ kernel
+ Limit
+ 0
+ Mask
+
+ MaxKernel
+
+ MinKernel
+ 20.4.0
+ Replace
+ uAEAAADD
+ ReplaceMask
+
+ Skip
+ 0
+
Quirks
@@ -1278,7 +1417,7 @@
DisableIoMapper
DisableLinkeditJettison
-
+
DisableRtcChecksum
ExtendBTFeatureFlags
@@ -1401,7 +1540,7 @@
ScanPolicy
0
SecureBootModel
- j137
+ Default
Vault
Optional
@@ -1710,6 +1849,8 @@
Drivers
+ Comment
+
Path
OpenRuntime.efi
Enabled
@@ -1718,6 +1859,8 @@
+ Comment
+
Path
OpenCanopy.efi
Enabled
@@ -1726,6 +1869,8 @@
+ Comment
+
Path
NvmExpressDxe.efi
Enabled
@@ -1734,6 +1879,8 @@
+ Comment
+
Path
ExFatDxeLegacy.efi
Enabled
@@ -1742,6 +1889,8 @@
+ Comment
+
Path
XhciDxe.efi
Enabled
@@ -1750,6 +1899,8 @@
+ Comment
+
Path
OpenLinuxBoot.efi
Enabled
diff --git a/payloads/Kexts/Acidanthera/AirportBrcmFixup-v2.1.3.zip b/payloads/Kexts/Acidanthera/AirportBrcmFixup-v2.1.3-DEBUG.zip
similarity index 100%
rename from payloads/Kexts/Acidanthera/AirportBrcmFixup-v2.1.3.zip
rename to payloads/Kexts/Acidanthera/AirportBrcmFixup-v2.1.3-DEBUG.zip
diff --git a/payloads/Kexts/Acidanthera/AirportBrcmFixup-v2.1.3-RELEASE.zip b/payloads/Kexts/Acidanthera/AirportBrcmFixup-v2.1.3-RELEASE.zip
new file mode 100644
index 000000000..f224023d7
Binary files /dev/null and b/payloads/Kexts/Acidanthera/AirportBrcmFixup-v2.1.3-RELEASE.zip differ
diff --git a/payloads/Kexts/Acidanthera/AppleALC-v1.6.3.zip b/payloads/Kexts/Acidanthera/AppleALC-v1.6.3-DEBUG.zip
similarity index 100%
rename from payloads/Kexts/Acidanthera/AppleALC-v1.6.3.zip
rename to payloads/Kexts/Acidanthera/AppleALC-v1.6.3-DEBUG.zip
diff --git a/payloads/Kexts/Acidanthera/AppleALC-v1.6.3-RELEASE.zip b/payloads/Kexts/Acidanthera/AppleALC-v1.6.3-RELEASE.zip
new file mode 100644
index 000000000..a4354425f
Binary files /dev/null and b/payloads/Kexts/Acidanthera/AppleALC-v1.6.3-RELEASE.zip differ
diff --git a/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.0.zip b/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.0.zip
deleted file mode 100644
index d56c4bf30..000000000
Binary files a/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.0.zip and /dev/null differ
diff --git a/payloads/Kexts/Acidanthera/CPUFriend-v1.2.4.zip b/payloads/Kexts/Acidanthera/CPUFriend-v1.2.4-DEBUG.zip
similarity index 100%
rename from payloads/Kexts/Acidanthera/CPUFriend-v1.2.4.zip
rename to payloads/Kexts/Acidanthera/CPUFriend-v1.2.4-DEBUG.zip
diff --git a/payloads/Kexts/Acidanthera/CPUFriend-v1.2.4-RELEASE.zip b/payloads/Kexts/Acidanthera/CPUFriend-v1.2.4-RELEASE.zip
new file mode 100644
index 000000000..20dcaa931
Binary files /dev/null and b/payloads/Kexts/Acidanthera/CPUFriend-v1.2.4-RELEASE.zip differ
diff --git a/payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.4.zip b/payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.4-DEBUG.zip
similarity index 100%
rename from payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.4.zip
rename to payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.4-DEBUG.zip
diff --git a/payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.4-RELEASE.zip b/payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.4-RELEASE.zip
new file mode 100644
index 000000000..c11988c20
Binary files /dev/null and b/payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.4-RELEASE.zip differ
diff --git a/payloads/Kexts/Acidanthera/FeatureUnlock-v1.0.3.zip b/payloads/Kexts/Acidanthera/FeatureUnlock-v1.0.3-DEBUG.zip
similarity index 100%
rename from payloads/Kexts/Acidanthera/FeatureUnlock-v1.0.3.zip
rename to payloads/Kexts/Acidanthera/FeatureUnlock-v1.0.3-DEBUG.zip
diff --git a/payloads/Kexts/Acidanthera/FeatureUnlock-v1.0.3-RELEASE.zip b/payloads/Kexts/Acidanthera/FeatureUnlock-v1.0.3-RELEASE.zip
new file mode 100644
index 000000000..be99b2ea7
Binary files /dev/null and b/payloads/Kexts/Acidanthera/FeatureUnlock-v1.0.3-RELEASE.zip differ
diff --git a/payloads/Kexts/Acidanthera/Lilu-v1.5.6.zip b/payloads/Kexts/Acidanthera/Lilu-v1.5.6-DEBUG.zip
similarity index 100%
rename from payloads/Kexts/Acidanthera/Lilu-v1.5.6.zip
rename to payloads/Kexts/Acidanthera/Lilu-v1.5.6-DEBUG.zip
diff --git a/payloads/Kexts/Acidanthera/Lilu-v1.5.6-RELEASE.zip b/payloads/Kexts/Acidanthera/Lilu-v1.5.6-RELEASE.zip
new file mode 100644
index 000000000..6abc29e88
Binary files /dev/null and b/payloads/Kexts/Acidanthera/Lilu-v1.5.6-RELEASE.zip differ
diff --git a/payloads/Kexts/Acidanthera/NVMeFix-v1.0.9.zip b/payloads/Kexts/Acidanthera/NVMeFix-v1.0.9-DEBUG.zip
similarity index 100%
rename from payloads/Kexts/Acidanthera/NVMeFix-v1.0.9.zip
rename to payloads/Kexts/Acidanthera/NVMeFix-v1.0.9-DEBUG.zip
diff --git a/payloads/Kexts/Acidanthera/NVMeFix-v1.0.9-RELEASE.zip b/payloads/Kexts/Acidanthera/NVMeFix-v1.0.9-RELEASE.zip
new file mode 100644
index 000000000..62ce4d810
Binary files /dev/null and b/payloads/Kexts/Acidanthera/NVMeFix-v1.0.9-RELEASE.zip differ
diff --git a/payloads/Kexts/Acidanthera/RestrictEvents-MBP91-v1.0.5-DEBUG.zip b/payloads/Kexts/Acidanthera/RestrictEvents-MBP91-v1.0.5-DEBUG.zip
new file mode 100644
index 000000000..287bf0c61
Binary files /dev/null and b/payloads/Kexts/Acidanthera/RestrictEvents-MBP91-v1.0.5-DEBUG.zip differ
diff --git a/payloads/Kexts/Acidanthera/RestrictEvents-MBP91-v1.0.5.zip b/payloads/Kexts/Acidanthera/RestrictEvents-MBP91-v1.0.5.zip
index 287bf0c61..67b748aed 100644
Binary files a/payloads/Kexts/Acidanthera/RestrictEvents-MBP91-v1.0.5.zip and b/payloads/Kexts/Acidanthera/RestrictEvents-MBP91-v1.0.5.zip differ
diff --git a/payloads/Kexts/Acidanthera/RestrictEvents-v1.0.5-DEBUG.zip b/payloads/Kexts/Acidanthera/RestrictEvents-v1.0.5-DEBUG.zip
new file mode 100644
index 000000000..2bfec5841
Binary files /dev/null and b/payloads/Kexts/Acidanthera/RestrictEvents-v1.0.5-DEBUG.zip differ
diff --git a/payloads/Kexts/Acidanthera/RestrictEvents-v1.0.5-RELEASE.zip b/payloads/Kexts/Acidanthera/RestrictEvents-v1.0.5-RELEASE.zip
new file mode 100644
index 000000000..b30992f71
Binary files /dev/null and b/payloads/Kexts/Acidanthera/RestrictEvents-v1.0.5-RELEASE.zip differ
diff --git a/payloads/Kexts/Acidanthera/RestrictEvents-v1.0.5.zip b/payloads/Kexts/Acidanthera/RestrictEvents-v1.0.5.zip
deleted file mode 100644
index e239d0437..000000000
Binary files a/payloads/Kexts/Acidanthera/RestrictEvents-v1.0.5.zip and /dev/null differ
diff --git a/payloads/Kexts/Acidanthera/SidecarFixup-v1.0.2.zip b/payloads/Kexts/Acidanthera/SidecarFixup-v1.0.2.zip
deleted file mode 100644
index f9c5c936b..000000000
Binary files a/payloads/Kexts/Acidanthera/SidecarFixup-v1.0.2.zip and /dev/null differ
diff --git a/payloads/Kexts/Acidanthera/WhateverGreen-v1.5.3.zip b/payloads/Kexts/Acidanthera/WhateverGreen-v1.5.3.zip
deleted file mode 100644
index d1412b19a..000000000
Binary files a/payloads/Kexts/Acidanthera/WhateverGreen-v1.5.3.zip and /dev/null differ
diff --git a/payloads/Kexts/Acidanthera/WhateverGreen-v1.5.4-DEBUG.zip b/payloads/Kexts/Acidanthera/WhateverGreen-v1.5.4-DEBUG.zip
new file mode 100644
index 000000000..6074aeaca
Binary files /dev/null and b/payloads/Kexts/Acidanthera/WhateverGreen-v1.5.4-DEBUG.zip differ
diff --git a/payloads/Kexts/Acidanthera/WhateverGreen-v1.5.4-RELEASE.zip b/payloads/Kexts/Acidanthera/WhateverGreen-v1.5.4-RELEASE.zip
new file mode 100644
index 000000000..9ca63d82f
Binary files /dev/null and b/payloads/Kexts/Acidanthera/WhateverGreen-v1.5.4-RELEASE.zip differ
diff --git a/payloads/OpenCore/OpenCore-DEBUG.zip b/payloads/OpenCore/OpenCore-DEBUG.zip
index a5c70cc49..6cb2a7041 100644
Binary files a/payloads/OpenCore/OpenCore-DEBUG.zip and b/payloads/OpenCore/OpenCore-DEBUG.zip differ
diff --git a/payloads/OpenCore/OpenCore-RELEASE.zip b/payloads/OpenCore/OpenCore-RELEASE.zip
index 2876b53dd..3a784e944 100644
Binary files a/payloads/OpenCore/OpenCore-RELEASE.zip and b/payloads/OpenCore/OpenCore-RELEASE.zip differ
diff --git a/payloads/Tools/ocvalidate b/payloads/Tools/ocvalidate
index d6a7c75e6..0d105f8a7 100755
Binary files a/payloads/Tools/ocvalidate and b/payloads/Tools/ocvalidate differ
diff --git a/resources/build.py b/resources/build.py
index 3629284b5..6e699f652 100644
--- a/resources/build.py
+++ b/resources/build.py
@@ -98,13 +98,11 @@ class BuildOpenCore:
for name, version, path, check in [
# Essential kexts
("Lilu.kext", self.constants.lilu_version, self.constants.lilu_path, lambda: True),
- ("WhateverGreen.kext", self.constants.whatevergreen_version, self.constants.whatevergreen_path, lambda: self.constants.allow_oc_everywhere is False),
+ ("WhateverGreen.kext", self.constants.whatevergreen_version, self.constants.whatevergreen_path, lambda: self.constants.allow_oc_everywhere is False and self.constants.serial_settings != "None"),
("RestrictEvents.kext", self.constants.restrictevents_version, self.constants.restrictevents_path, lambda: self.model in model_array.MacPro),
- # Modded RestrictEvents with displaypolicyd blocked to fix dGPU switching
- ("RestrictEvents.kext", self.constants.restrictevents_mbp_version, self.constants.restrictevents_mbp_path, lambda: self.model in ["MacBookPro6,1", "MacBookPro6,2", "MacBookPro9,1"]),
- ("SMC-Spoof.kext", self.constants.smcspoof_version, self.constants.smcspoof_path, lambda: self.constants.allow_oc_everywhere is False),
+ ("SMC-Spoof.kext", self.constants.smcspoof_version, self.constants.smcspoof_path, lambda: self.constants.allow_oc_everywhere is False and self.constants.serial_settings != "None"),
# CPU patches
- ("AppleMCEReporterDisabler.kext", self.constants.mce_version, self.constants.mce_path, lambda: self.model.startswith("MacPro") or self.model.startswith("Xserve")),
+ ("AppleMCEReporterDisabler.kext", self.constants.mce_version, self.constants.mce_path, lambda: (self.model.startswith("MacPro") or self.model.startswith("Xserve")) and self.constants.serial_settings != "None"),
("AAAMouSSE.kext", self.constants.mousse_version, self.constants.mousse_path, lambda: smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.cpu_data.penryn.value),
(
"telemetrap.kext",
@@ -116,7 +114,7 @@ class BuildOpenCore:
"CPUFriend.kext",
self.constants.cpufriend_version,
self.constants.cpufriend_path,
- lambda: self.model not in ["iMac7,1", "Xserve2,1", "Dortania1,1"] and self.constants.allow_oc_everywhere is False and self.constants.disallow_cpufriend is False,
+ lambda: self.model not in ["iMac7,1", "Xserve2,1", "Dortania1,1"] and self.constants.allow_oc_everywhere is False and self.constants.disallow_cpufriend is False and self.constants.serial_settings != "None",
),
# Ethernet patches
("nForceEthernet.kext", self.constants.nforce_version, self.constants.nforce_path, lambda: smbios_data.smbios_dictionary[self.model]["Ethernet Chipset"] == "Nvidia"),
@@ -143,7 +141,37 @@ class BuildOpenCore:
self.enable_kext(name, version, path, check)
if self.constants.allow_oc_everywhere is False:
- self.get_item_by_kv(self.config["Kernel"]["Patch"], "Identifier", "com.apple.driver.AppleSMC")["Enabled"] = True
+ if self.constants.serial_settings == "None":
+ # Credit to Parrotgeek1 for boot.efi and hv_vmm_present patch sets
+ # print("- Enabling Board ID exemption patch")
+ # self.get_item_by_kv(self.config["Booter"]["Patch"], "Comment", "Skip Board ID check")["Enabled"] = True
+
+ print("- Enabling VMM exemption patch")
+ self.get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (1)")["Enabled"] = True
+ self.get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (2)")["Enabled"] = True
+
+ # Patch HW_BID to OC_BID
+ # Set OC_BID to MacPro6,1 Board ID (Mac-F60DEB81FF30ACF6)
+ # Goal is to only allow OS booting through OCLP, otherwise failing
+ print("- Enabling HW_BID reroute")
+ self.get_item_by_kv(self.config["Booter"]["Patch"], "Comment", "Reroute HW_BID to OC_BID")["Enabled"] = True
+ self.config["NVRAM"]["Add"]["4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14"]["OC_BID"] = "Mac-F60DEB81FF30ACF6"
+ self.config["NVRAM"]["Delete"]["4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14"] += ["OC_BID"]
+ else:
+ print("- Enabling SMC exemption patch")
+ self.get_item_by_kv(self.config["Kernel"]["Patch"], "Identifier", "com.apple.driver.AppleSMC")["Enabled"] = True
+
+ if self.get_kext_by_bundle_path("Lilu.kext")["Enabled"] is True:
+ # Required for Lilu in 11.0+
+ self.config["Kernel"]["Quirks"]["DisableLinkeditJettison"] = True
+
+ if self.model in ["MacBookPro6,1", "MacBookPro6,2", "MacBookPro9,1", "MacBookPro10,1"]:
+ # Modded RestrictEvents with displaypolicyd blocked to fix dGPU switching
+ if self.model in ["MacBookPro6,1", "MacBookPro6,2", "MacBookPro9,1"]:
+ self.enable_kext("RestrictEvents.kext", self.constants.restrictevents_version, self.constants.restrictevents_path)
+ elif self.constants.serial_settings == "None":
+ # MacBookPro10,1 without SMBIOS spoof needs RestrictEvents
+ self.enable_kext("RestrictEvents.kext", self.constants.restrictevents_version, self.constants.restrictevents_path)
# Ethernet Patch Sets
if smbios_data.smbios_dictionary[self.model]["Ethernet Chipset"] == "Broadcom":
@@ -152,13 +180,6 @@ class BuildOpenCore:
# Applicable for pre-Ivy Bridge models
self.enable_kext("CatalinaBCM5701Ethernet.kext", self.constants.bcm570_version, self.constants.bcm570_path)
- if self.constants.allow_oc_everywhere is False:
- if (smbios_data.smbios_dictionary[generate_smbios.set_smbios_model_spoof(self.model) or self.constants.override_smbios]["SecureBootModel"]) != None:
- # Monterey T2 SMBIOS don't get OS updates without a T2 SBM
- # Forces VMM patch instead
- if self.get_kext_by_bundle_path("RestrictEvents.kext")["Enabled"] is False:
- self.enable_kext("RestrictEvents.kext", self.constants.restrictevents_version, self.constants.restrictevents_path)
-
if smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.cpu_data.sandy_bridge.value:
# Ref: https://github.com/reenigneorcim/SurPlus
# Enable for all systems missing RDRAND support
@@ -308,8 +329,8 @@ class BuildOpenCore:
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += f" -brcmfxwowl"
# CPUFriend
- pp_map_path = Path(self.constants.platform_plugin_plist_path) / Path(f"{self.model}/Info.plist")
- if self.model not in ["iMac7,1", "Xserve2,1", "Dortania1,1"] and self.constants.allow_oc_everywhere is False:
+ if self.model not in ["iMac7,1", "Xserve2,1", "Dortania1,1"] and self.constants.allow_oc_everywhere is False and self.constants.serial_settings != "None":
+ pp_map_path = Path(self.constants.platform_plugin_plist_path) / Path(f"{self.model}/Info.plist")
Path(self.constants.pp_kext_folder).mkdir()
Path(self.constants.pp_contents_folder).mkdir()
shutil.copy(pp_map_path, self.constants.pp_contents_folder)
@@ -337,7 +358,6 @@ class BuildOpenCore:
# USB Map
usb_map_path = Path(self.constants.plist_folder_path) / Path("AppleUSBMaps/Info.plist")
- # iMac7,1 kernel panics with USB map installed, remove for time being until properly debugged
if (
usb_map_path.exists()
and self.constants.allow_oc_everywhere is False
@@ -351,52 +371,54 @@ class BuildOpenCore:
self.get_kext_by_bundle_path("USB-Map.kext")["Enabled"] = True
if self.constants.allow_oc_everywhere is False:
- if self.model == "MacBookPro9,1":
- print("- Adding AppleMuxControl Override")
- amc_map_path = Path(self.constants.plist_folder_path) / Path("AppleMuxControl/Info.plist")
- self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"] = {"agdpmod": "vit9696"}
- Path(self.constants.amc_kext_folder).mkdir()
- Path(self.constants.amc_contents_folder).mkdir()
- shutil.copy(amc_map_path, self.constants.amc_contents_folder)
- self.get_kext_by_bundle_path("AMC-Override.kext")["Enabled"] = True
+ if self.constants.serial_settings != "None":
+ if self.model == "MacBookPro9,1":
+ print("- Adding AppleMuxControl Override")
+ amc_map_path = Path(self.constants.plist_folder_path) / Path("AppleMuxControl/Info.plist")
+ self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"] = {"agdpmod": "vit9696"}
+ Path(self.constants.amc_kext_folder).mkdir()
+ Path(self.constants.amc_contents_folder).mkdir()
+ shutil.copy(amc_map_path, self.constants.amc_contents_folder)
+ self.get_kext_by_bundle_path("AMC-Override.kext")["Enabled"] = True
- if self.model not in model_array.NoAGPMSupport:
- print("- Adding AppleGraphicsPowerManagement Override")
- agpm_map_path = Path(self.constants.plist_folder_path) / Path("AppleGraphicsPowerManagement/Info.plist")
- Path(self.constants.agpm_kext_folder).mkdir()
- Path(self.constants.agpm_contents_folder).mkdir()
- shutil.copy(agpm_map_path, self.constants.agpm_contents_folder)
- self.get_kext_by_bundle_path("AGPM-Override.kext")["Enabled"] = True
+ if self.model not in model_array.NoAGPMSupport:
+ print("- Adding AppleGraphicsPowerManagement Override")
+ agpm_map_path = Path(self.constants.plist_folder_path) / Path("AppleGraphicsPowerManagement/Info.plist")
+ Path(self.constants.agpm_kext_folder).mkdir()
+ Path(self.constants.agpm_contents_folder).mkdir()
+ shutil.copy(agpm_map_path, self.constants.agpm_contents_folder)
+ self.get_kext_by_bundle_path("AGPM-Override.kext")["Enabled"] = True
- if self.model in model_array.AGDPSupport:
- print("- Adding AppleGraphicsDevicePolicy Override")
- agdp_map_path = Path(self.constants.plist_folder_path) / Path("AppleGraphicsDevicePolicy/Info.plist")
- Path(self.constants.agdp_kext_folder).mkdir()
- Path(self.constants.agdp_contents_folder).mkdir()
- shutil.copy(agdp_map_path, self.constants.agdp_contents_folder)
- self.get_kext_by_bundle_path("AGDP-Override.kext")["Enabled"] = True
+ if self.model in model_array.AGDPSupport:
+ print("- Adding AppleGraphicsDevicePolicy Override")
+ agdp_map_path = Path(self.constants.plist_folder_path) / Path("AppleGraphicsDevicePolicy/Info.plist")
+ Path(self.constants.agdp_kext_folder).mkdir()
+ Path(self.constants.agdp_contents_folder).mkdir()
+ shutil.copy(agdp_map_path, self.constants.agdp_contents_folder)
+ self.get_kext_by_bundle_path("AGDP-Override.kext")["Enabled"] = True
+
+ if self.constants.serial_settings != "None":
+ # AGPM Patch
+ if self.model in model_array.DualGPUPatch:
+ print("- Adding dual GPU patch")
+ if not self.constants.custom_model and self.computer.dgpu and self.computer.dgpu.pci_path:
+ self.gfx0_path = self.computer.dgpu.pci_path
+ print(f"- Found GFX0 Device Path: {self.gfx0_path}")
+ else:
+ if not self.constants.custom_model:
+ print("- Failed to find GFX0 Device path, falling back on known logic")
+ self.gfx0_path = "PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"
- # AGPM Patch
- if self.model in model_array.DualGPUPatch:
- print("- Adding dual GPU patch")
- if not self.constants.custom_model and self.computer.dgpu and self.computer.dgpu.pci_path:
- self.gfx0_path = self.computer.dgpu.pci_path
- print(f"- Found GFX0 Device Path: {self.gfx0_path}")
- else:
- if not self.constants.custom_model:
- print("- Failed to find GFX0 Device path, falling back on known logic")
- self.gfx0_path = "PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"
-
- if self.model in model_array.IntelNvidiaDRM and self.constants.drm_support is True:
- print("- Prioritizing DRM support over Intel QuickSync")
- self.config["DeviceProperties"]["Add"][self.gfx0_path] = {"agdpmod": "vit9696", "shikigva": 256}
- self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x2,0x0)"] = {
- "name": binascii.unhexlify("23646973706C6179"),
- "IOName": "#display",
- "class-code": binascii.unhexlify("FFFFFFFF"),
- }
- else:
- self.config["DeviceProperties"]["Add"][self.gfx0_path] = {"agdpmod": "vit9696"}
+ if self.model in model_array.IntelNvidiaDRM and self.constants.drm_support is True:
+ print("- Prioritizing DRM support over Intel QuickSync")
+ self.config["DeviceProperties"]["Add"][self.gfx0_path] = {"agdpmod": "vit9696", "shikigva": 256}
+ self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x2,0x0)"] = {
+ "name": binascii.unhexlify("23646973706C6179"),
+ "IOName": "#display",
+ "class-code": binascii.unhexlify("FFFFFFFF"),
+ }
+ elif self.constants.serial_settings != "None":
+ self.config["DeviceProperties"]["Add"][self.gfx0_path] = {"agdpmod": "vit9696"}
# Audio Patch
if self.constants.set_alc_usage is True:
@@ -464,6 +486,9 @@ class BuildOpenCore:
self.gfx0_path = "PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"
def nvidia_patch(self, backlight_path):
+ if not self.get_kext_by_bundle_path("WhateverGreen.kext")["Enabled"] is True:
+ # Ensure WEG is enabled as we need if for Backlight patching
+ self.enable_kext("WhateverGreen.kext", self.constants.whatevergreen_version, self.constants.whatevergreen_path)
if self.model in ["iMac11,1", "iMac11,2", "iMac11,3", "iMac10,1"]:
print("- Adding Nvidia Brightness Control and DRM patches")
self.config["DeviceProperties"]["Add"][backlight_path] = {
@@ -490,8 +515,11 @@ class BuildOpenCore:
"@0,backlight-control": binascii.unhexlify("01000000"),
"@0,built-in": binascii.unhexlify("01000000"),
"shikigva": 256,
- "agdpmod": "vit9696",
}
+ if self.constants.serial_settings != "None":
+ self.config["DeviceProperties"]["Add"][backlight_path] += {
+ "agdpmod": "vit9696",
+ }
print("- Disabling unsupported iGPU")
self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x2,0x0)"] = {
"name": binascii.unhexlify("23646973706C6179"),
@@ -505,11 +533,14 @@ class BuildOpenCore:
def amd_patch(self, backlight_path):
print("- Adding AMD DRM patches")
- self.config["DeviceProperties"]["Add"][backlight_path] = {"shikigva": 80, "unfairgva": 1}
+ if not self.get_kext_by_bundle_path("WhateverGreen.kext")["Enabled"] is True:
+ # Ensure WEG is enabled as we need if for Backlight patching
+ self.enable_kext("WhateverGreen.kext", self.constants.whatevergreen_version, self.constants.whatevergreen_path)
+ self.config["DeviceProperties"]["Add"][backlight_path] = {"shikigva": 128, "unfairgva": 1}
if self.constants.custom_model and self.model == "iMac11,2":
# iMac11,2 can have either PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0) or PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)
# Set both properties when we cannot run hardware detection
- self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)"] = {"shikigva": 80, "unfairgva": 1}
+ self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)"] = {"shikigva": 128, "unfairgva": 1}
if self.model in ["iMac12,1", "iMac12,2"]:
print("- Disabling unsupported iGPU")
self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x2,0x0)"] = {
@@ -712,6 +743,10 @@ class BuildOpenCore:
if self.constants.secure_status is False:
print("- Disabling SecureBootModel")
self.config["Misc"]["Security"]["SecureBootModel"] = "Disabled"
+ if self.constants.force_vmm is True:
+ print("- Forcing VMM patchset to support OTA updates")
+ self.get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (1)")["Enabled"] = True
+ self.get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (2)")["Enabled"] = True
if self.constants.serial_settings in ["Moderate", "Advanced"]:
print("- Enabling USB Rename Patches")
self.get_item_by_kv(self.config["ACPI"]["Patch"], "Comment", "XHC1 to SHC1")["Enabled"] = True
@@ -762,8 +797,9 @@ class BuildOpenCore:
def set_smbios(self):
spoofed_model = self.model
if self.constants.override_smbios == "Default":
- print("- Setting macOS Monterey Supported SMBIOS")
- spoofed_model = generate_smbios.set_smbios_model_spoof(self.model)
+ if self.constants.serial_settings != "None":
+ print("- Setting macOS Monterey Supported SMBIOS")
+ spoofed_model = generate_smbios.set_smbios_model_spoof(self.model)
else:
spoofed_model = self.constants.override_smbios
print(f"- Using Model ID: {spoofed_model}")
@@ -845,6 +881,7 @@ class BuildOpenCore:
self.config["PlatformInfo"]["Generic"]["SystemSerialNumber"] = macserial_output[0]
self.config["PlatformInfo"]["Generic"]["MLB"] = macserial_output[1]
self.config["PlatformInfo"]["Generic"]["SystemUUID"] = str(uuid.uuid4()).upper()
+
if self.constants.serial_settings == "Moderate":
print("- Using Moderate SMBIOS patching")
@@ -872,7 +909,7 @@ class BuildOpenCore:
else:
try:
map_config["IOKitPersonalities_x86_64"][entry]["model"] = self.spoofed_model
- if self.constants.serial_settings == "Minimal":
+ if self.constants.serial_settings in ["Minimal", "None"]:
if map_config["IOKitPersonalities_x86_64"][entry]["IONameMatch"] == "EH01":
map_config["IOKitPersonalities_x86_64"][entry]["IONameMatch"] = "EHC1"
if map_config["IOKitPersonalities_x86_64"][entry]["IONameMatch"] == "EH02":
@@ -882,7 +919,7 @@ class BuildOpenCore:
except KeyError:
continue
plistlib.dump(map_config, Path(new_map_ls).open("wb"), sort_keys=True)
- if self.constants.allow_oc_everywhere is False and self.model not in ["iMac7,1", "Xserve2,1", "Dortania1,1"] and self.constants.disallow_cpufriend is False:
+ if self.constants.allow_oc_everywhere is False and self.model not in ["iMac7,1", "Xserve2,1", "Dortania1,1"] and self.constants.disallow_cpufriend is False and self.constants.serial_settings != "None":
# Adjust CPU Friend Data to correct SMBIOS
new_cpu_ls = Path(self.constants.pp_contents_folder) / Path("Info.plist")
cpu_config = plistlib.load(Path(new_cpu_ls).open("rb"))
@@ -892,7 +929,7 @@ class BuildOpenCore:
cpu_config["IOKitPersonalities"]["CPUFriendDataProvider"]["cf-frequency-data"] = string_stuff
plistlib.dump(cpu_config, Path(new_cpu_ls).open("wb"), sort_keys=True)
- if self.constants.allow_oc_everywhere is False:
+ if self.constants.allow_oc_everywhere is False and self.constants.serial_settings != "None":
if self.model == "MacBookPro9,1":
new_amc_ls = Path(self.constants.amc_contents_folder) / Path("Info.plist")
amc_config = plistlib.load(Path(new_amc_ls).open("rb"))
@@ -973,6 +1010,9 @@ class BuildOpenCore:
for entry in list(self.config["ACPI"]["Patch"]):
if not entry["Enabled"]:
self.config["ACPI"]["Patch"].remove(entry)
+ for entry in list(self.config["Booter"]["Patch"]):
+ if not entry["Enabled"]:
+ self.config["Booter"]["Patch"].remove(entry)
for entry in list(self.config["Kernel"]["Add"]):
if not entry["Enabled"]:
self.config["Kernel"]["Add"].remove(entry)
diff --git a/resources/cli_menu.py b/resources/cli_menu.py
index 61101e529..8677d1cfa 100644
--- a/resources/cli_menu.py
+++ b/resources/cli_menu.py
@@ -46,8 +46,10 @@ class MenuOptions:
change_menu = input("Enable Kext DEBUG mode(y/n/q): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.kext_debug = True
+ self.constants.kext_variant = "DEBUG"
elif change_menu in {"n", "N", "no", "No"}:
self.constants.kext_debug = False
+ self.constants.kext_variant = "RELEASE"
elif change_menu in {"q", "Q", "Quit", "quit"}:
print("Returning to previous menu")
else:
@@ -95,6 +97,7 @@ Recommended for adanced users who want control how serials are handled
Valid options:
+0. None:\tOnly update FirmwareFeatures
1. Minimal:\tUse original serials and minimally update SMBIOS
2. Moderate:\tReplace entire SMBIOS but keep original serials
3. Advanced:\tReplace entire SMBIOS and generate new serials
@@ -104,7 +107,9 @@ Note: For new users we recommend leaving as default(1. Minimal)
"""
)
change_menu = input("Set SMBIOS Spoof Level(ie. 1): ")
- if change_menu == "1":
+ if change_menu == "0":
+ self.constants.serial_settings = "None"
+ elif change_menu == "1":
self.constants.serial_settings = "Minimal"
elif change_menu == "2":
self.constants.serial_settings = "Moderate"
@@ -191,7 +196,7 @@ Q. Return to previous menu
print(
"""SecureBootModel is used to ensure best firmware security,
however to patch the root volume this must be disabled.
-Only disable is absolutely necessary. SIP value = 0xFEF
+Only recommended to enable for users with T2 SMBIOS spoofs.
Valid options:
diff --git a/resources/constants.py b/resources/constants.py
index 0aa9c201e..b3e21a123 100644
--- a/resources/constants.py
+++ b/resources/constants.py
@@ -20,14 +20,14 @@ class Constants:
# OpenCore Versioning
# https://github.com/acidanthera/OpenCorePkg
- self.opencore_commit = "ff4b099 - 09-06-2021"
- self.opencore_version = "0.7.3"
+ self.opencore_commit = "bd3f7a1 - 10-04-2021"
+ self.opencore_version = "0.7.4"
# Kext Versioning
## Acidanthera
## https://github.com/acidanthera
self.lilu_version = "1.5.6" # Lilu
- self.whatevergreen_version = "1.5.3" # WhateverGreen
+ self.whatevergreen_version = "1.5.4" # WhateverGreen
self.airportbcrmfixup_version = "2.1.3" # AirPortBrcmFixup
self.nvmefix_version = "1.0.9" # NVMeFix
self.applealc_version = "1.6.3" # AppleALC
@@ -104,6 +104,7 @@ class Constants:
## Kext Settings
self.kext_debug = False # Enables Lilu debug and DebugEnhancer
+ self.kext_variant = "RELEASE"
## NVRAM Settings
self.verbose_debug = False # -v
@@ -111,7 +112,7 @@ class Constants:
## SMBIOS Settings
self.custom_cpu_model = 2 # Patch type value
self.custom_cpu_model_value = "" # New CPU name within About This Mac
- self.serial_settings = "Minimal" # Set SMBIOS level used
+ self.serial_settings = "None" # Set SMBIOS level used
self.override_smbios = "Default" # Set SMBIOS model used
## Latebloom Settings
@@ -157,6 +158,7 @@ class Constants:
self.force_latest_psp = False # Force latest PatcherSupportPkg
self.disable_msr_power_ctl = False # Disable MSR Power Control (missing battery throttling)
self.software_demux = False # Enable Software Demux patch set
+ self.force_vmm = False # Force VMM patch
self.custom_sip_value = None # Set custom SIP value
# OS Versions
@@ -231,19 +233,19 @@ class Constants:
@property
def lilu_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/Lilu-v{self.lilu_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/Lilu-v{self.lilu_version}-{self.kext_variant}.zip")
@property
def whatevergreen_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/WhateverGreen-v{self.whatevergreen_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/WhateverGreen-v{self.whatevergreen_version}-{self.kext_variant}.zip")
@property
def airportbcrmfixup_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/AirportBrcmFixup-v{self.airportbcrmfixup_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/AirportBrcmFixup-v{self.airportbcrmfixup_version}-{self.kext_variant}.zip")
@property
def restrictevents_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-v{self.restrictevents_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-v{self.restrictevents_version}-{self.kext_variant}.zip")
@property
def efi_disabler_path(self):
@@ -251,7 +253,7 @@ class Constants:
@property
def restrictevents_mbp_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-MBP91-v{self.restrictevents_mbp_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-MBP91-v{self.restrictevents_mbp_version}-{self.kext_variant}.zip")
@property
def bcm570_path(self):
@@ -295,7 +297,7 @@ class Constants:
@property
def applealc_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/AppleALC-v{self.applealc_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/AppleALC-v{self.applealc_version}-{self.kext_variant}.zip")
@property
def piixata_path(self):
@@ -307,7 +309,7 @@ class Constants:
@property
def cpufriend_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/CPUFriend-v{self.cpufriend_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/CPUFriend-v{self.cpufriend_version}-{self.kext_variant}.zip")
@property
def smcspoof_path(self):
@@ -319,15 +321,15 @@ class Constants:
@property
def nvmefix_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/NVMeFix-v{self.nvmefix_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/NVMeFix-v{self.nvmefix_version}-{self.kext_variant}.zip")
@property
def featureunlock_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/FeatureUnlock-v{self.featureunlock_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/FeatureUnlock-v{self.featureunlock_version}-{self.kext_variant}.zip")
@property
def debugenhancer_path(self):
- return self.payload_kexts_path / Path(f"Acidanthera/DebugEnhancer-v{self.debugenhancer_version}.zip")
+ return self.payload_kexts_path / Path(f"Acidanthera/DebugEnhancer-v{self.debugenhancer_version}-{self.kext_variant}.zip")
@property
def bluetool_path(self):
diff --git a/resources/defaults.py b/resources/defaults.py
index ac15328f3..b97d95fa0 100644
--- a/resources/defaults.py
+++ b/resources/defaults.py
@@ -1,6 +1,6 @@
# Generate Default Data
-from resources import utilities, device_probe
-from data import model_array
+from resources import utilities, device_probe, generate_smbios
+from data import model_array, smbios_data
class generate_defaults:
@@ -15,6 +15,7 @@ class generate_defaults:
if utilities.check_metal_support(device_probe, settings.computer) is False:
settings.disable_cs_lv = True
if settings.computer.dgpu and settings.computer.dgpu.arch == device_probe.NVIDIA.Archs.Kepler:
+ # 12.0 (B7+): Kepler are now unsupported
settings.sip_status = False
settings.amfi_status = True
settings.allow_fv_root = True # Allow FileVault on broken seal
@@ -22,8 +23,25 @@ class generate_defaults:
isinstance(settings.computer.wifi, device_probe.Broadcom)
and settings.computer.wifi.chipset in [device_probe.Broadcom.Chipsets.AirPortBrcm4331, device_probe.Broadcom.Chipsets.AirPortBrcm43224]
) or (isinstance(settings.computer.wifi, device_probe.Atheros) and settings.computer.wifi.chipset == device_probe.Atheros.Chipsets.AirPortAtheros40):
+ # 12.0: Legacy Wireless chipsets require root patching
settings.sip_status = False
settings.allow_fv_root = True # Allow FileVault on broken seal
+
+ if settings.computer.dgpu and settings.computer.dgpu.arch in [
+ device_probe.AMD.Archs.Legacy_GCN_7000,
+ device_probe.AMD.Archs.Legacy_GCN_8000,
+ device_probe.AMD.Archs.Legacy_GCN_9000,
+ device_probe.AMD.Archs.Polaris,
+ device_probe.AMD.Archs.Vega,
+ device_probe.AMD.Archs.Navi,
+ ]:
+ # Allow H.265 on AMD
+ settings.serial_settings = "Minimal"
+ elif model in ["MacPro4,1", "MacPro5,1"]:
+ # Allow H.265 on AMD
+ # Assume 2009+ machines have Polaris on pre-builts (internal testing)
+ # Hardware Detection will never hit this
+ settings.serial_settings = "Minimal"
elif model in model_array.LegacyGPU:
settings.disable_cs_lv = True
@@ -34,10 +52,6 @@ class generate_defaults:
settings.sip_status = False
# settings.secure_status = True # Monterey
settings.allow_fv_root = True # Allow FileVault on broken seal
- else:
- settings.sip_status = True
- # settings.secure_status = True # Monterey
- settings.amfi_status = True
else:
settings.sip_status = False # Unsigned kexts
settings.secure_status = False # Root volume modified
@@ -50,10 +64,6 @@ class generate_defaults:
settings.allow_fv_root = True # Allow FileVault on broken seal
# settings.amfi_status = True # Signed bundles, Don't need to explicitly set currently
- if model == "MacBook8,1":
- # MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
- settings.serial_settings = "Moderate"
-
custom_cpu_model_value = utilities.get_nvram("revcpuname", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
if custom_cpu_model_value is not None:
# TODO: Fix to not use two separate variables
@@ -73,3 +83,22 @@ class generate_defaults:
# Check if running in RecoveryOS
settings.recovery_status = utilities.check_recovery()
+
+ # Check if model uses T2 SMBIOS, if so see if it needs root patching (determined earlier on via SIP variable)
+ # If not, allow SecureBootModel usage, otherwise force VMM patching
+ # Needed for macOS Monterey to allow OTA updates
+ try:
+ spoof_model = generate_smbios.set_smbios_model_spoof(model)
+ except:
+ # Native Macs (mainly M1s) will error out as they don't know what SMBIOS to spoof to
+ # As we don't spoof on native models, we can safely ignore this
+ spoof_model = model
+ if smbios_data.smbios_dictionary[spoof_model]["SecureBootModel"] is not None:
+ if settings.sip_status is False:
+ # Force VMM as root patching breaks .im4m signature
+ settings.secure_status = False
+ settings.force_vmm = True
+ else:
+ # Allow SecureBootModel
+ settings.secure_status = True
+ settings.force_vmm = False
diff --git a/resources/validation.py b/resources/validation.py
index 33fe9ba54..3130cb028 100644
--- a/resources/validation.py
+++ b/resources/validation.py
@@ -59,6 +59,8 @@ def validate(settings):
settings.opencore_debug = True
settings.opencore_build = "DEBUG"
settings.kext_debug = True
+ settings.kext_variant = "DEBUG"
+ settings.kext_debug = True
settings.showpicker = False
settings.sip_status = False
settings.secure_status = True
@@ -68,5 +70,6 @@ def validate(settings):
settings.disable_tb = True
settings.force_surplus = True
settings.software_demux = True
+ settings.serial_settings = "Minimal"
build_prebuilt()
build_dumps()