From 458a2a406ab3062ecdc6ab7b067dedf1b2a88a6c Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Wed, 22 Sep 2021 12:46:23 -0600 Subject: [PATCH] Add FirmwareFeature upgrading to all Models --- CHANGELOG.md | 2 + Resources/Build.py | 29 ++++++++--- Resources/SMBIOSData.py | 110 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 134 insertions(+), 7 deletions(-) create mode 100644 Resources/SMBIOSData.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a709fcd9..5beba8939 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,8 @@ - Disable Library Validation allowing for AMFI usage - Remove reliance on amfi_get_out_of_my_way=1 - Add Kepler Accleration Patches for Monterey Beta 7 and newer +- Add FirmwareFeature upgrading to all Models + - Fixes Monterey Beta 7 installation issues ## 0.2.4 diff --git a/Resources/Build.py b/Resources/Build.py index e55bc8c45..b3095da7e 100644 --- a/Resources/Build.py +++ b/Resources/Build.py @@ -14,7 +14,7 @@ import ast from pathlib import Path from datetime import date -from Resources import Constants, ModelArray, Utilities, device_probe +from Resources import Constants, ModelArray, Utilities, device_probe, SMBIOSData def rmtree_handler(func, path, exc_info): @@ -78,6 +78,19 @@ class BuildOpenCore: fw_mask = b"\xff\x3f\x08\xc0\x00\x00\x00\x00" return fw_feature, fw_mask + def patch_firmware_feature(self): + if not self.constants.custom_model: + firmwarefeature = Utilities.get_rom("firmware-features") + if not firmwarefeature: + print("- Failed to find FirmwareFeatures, falling back on defaults") + firmwarefeature = int(SMBIOSData.FirmwareFeatures[self.model], 16) + else: + firmwarefeature = int(SMBIOSData.FirmwareFeatures[self.model], 16) + firmwarefeature = Utilities.enable_apfs(firmwarefeature) + firmwarefeature = Utilities.enable_apfs_extended(firmwarefeature) + firmwarefeature = Utilities.enable_large_basesystem(firmwarefeature) + return firmwarefeature + def disk_type(self): drive_host_info = plistlib.loads(subprocess.run(f"diskutil info -plist {self.constants.disk}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()) sd_type = drive_host_info["MediaName"] @@ -735,12 +748,14 @@ class BuildOpenCore: def minimal_serial_patch(self): if self.constants.custom_cpu_model == 0 or self.constants.custom_cpu_model == 1: self.config["PlatformInfo"]["SMBIOS"]["ProcessorType"] = 1537 - if self.model in ModelArray.NoAPFSsupport: - fw_feature, fw_mask = self.fw_feature_detect(self.model) - self.config["PlatformInfo"]["PlatformNVRAM"]["FirmwareFeatures"] = fw_feature - self.config["PlatformInfo"]["SMBIOS"]["FirmwareFeatures"] = fw_feature - self.config["PlatformInfo"]["PlatformNVRAM"]["FirmwareFeaturesMask"] = fw_mask - self.config["PlatformInfo"]["SMBIOS"]["FirmwareFeaturesMask"] = fw_mask + fw_feature = self.patch_firmware_feature() + fw_feature = hex(fw_feature).lstrip("0x").rstrip("L").strip() + print(f"- Setting Firmware Feature: {fw_feature}") + fw_feature = Utilities.string_to_hex(fw_feature) + self.config["PlatformInfo"]["PlatformNVRAM"]["FirmwareFeatures"] = fw_feature + self.config["PlatformInfo"]["SMBIOS"]["FirmwareFeatures"] = fw_feature + self.config["PlatformInfo"]["PlatformNVRAM"]["FirmwareFeaturesMask"] = fw_feature + self.config["PlatformInfo"]["SMBIOS"]["FirmwareFeaturesMask"] = fw_feature self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["run-efi-updater"] = "No" self.config["PlatformInfo"]["PlatformNVRAM"]["BID"] = self.spoofed_board self.config["PlatformInfo"]["SMBIOS"]["BoardProduct"] = self.spoofed_board diff --git a/Resources/SMBIOSData.py b/Resources/SMBIOSData.py new file mode 100644 index 000000000..2a96d99b5 --- /dev/null +++ b/Resources/SMBIOSData.py @@ -0,0 +1,110 @@ +FirmwareFeatures = { + "iMac7,1": "0xC0001407", + "iMac8,1": "0xC0001403", + "iMac9,1": "0xC0001403", + "iMac10,1": "0xE00DE137", + "iMac11,1": "0xE00DE137", + "iMac11,2": "0xC00C9423", + "iMac11,3": "0xE00DE137", + "iMac12,1": "0xE00DE137", + "iMac12,2": "0xE00DE137", + "iMac13,1": "0xE00DE137", + "iMac13,2": "0xE00DE137", + "iMac13,3": "0xE00DE137", + "iMac14,1": "0xFB0FF577", + "iMac14,2": "0xE00FE137", + "iMac14,3": "0xE00FE137", + "iMac14,4": "0xF00FE137", + "iMac15,1": "0xF80FE137", + "iMac16,1": "0xFC0FE137", + "iMac16,2": "0xFC0FE137", + "iMac17,1": "0xFC0FE137", + "iMac18,1": "0xFD0FF576", + "iMac18,2": "0xFD0FF576", + "iMac18,3": "0xFD0FF576", + "iMac19,1": "0xFD8FF576", + "iMac19,2": "0xFD8FF576", + "iMac20,1": "0xFD8FF576", + "iMac20,2": "0xFD8FF576", + "iMacPro1,1": "0xFD8FF53E", + "MacBook3,1": "0xC0001407", + "MacBook4,1": "0xC0001403", + "MacBook5,1": "0xC0001403", + "MacBook5,2": "0xC0001403", + "MacBook6,1": "0xFC0FE13F", + "MacBook7,1": "0xFC0FE13F", + "MacBook8,1": "0xFC0FE13F", + "MacBook9,1": "0xFC0FE13F", + "MacBook10,1": "0xFC0FE13F", + "MacBookAir1,1": "0xC0001403", + "MacBookAir2,1": "0xC0001403", + "MacBookAir3,1": "0xD00DE137", + "MacBookAir3,2": "0xD00DE137", + "MacBookAir4,1": "0xD00DE137", + "MacBookAir4,2": "0xD00DE137", + "MacBookAir5,1": "0xE00DE137", + "MacBookAir5,2": "0xE00DE137", + "MacBookAir6,1": "0xE00FE137", + "MacBookAir6,2": "0xE00FE137", + "MacBookAir7,1": "0xFF0FF576", + "MacBookAir7,2": "0xFF0FF576", + "MacBookAir8,1": "0xFD8FF42E", + "MacBookAir8,2": "0xFD8FF42E", + "MacBookAir9,1": "0xFFAFF06E", + "MacBookPro3,1": "0xC0001407", + "MacBookPro4,1": "0xC0001403", + "MacBookPro5,1": "0xC0001403", + "MacBookPro5,2": "0xC0001403", + "MacBookPro5,3": "0xC0001403", + "MacBookPro5,4": "0xC0001403", + "MacBookPro5,5": "0xC0001403", + "MacBookPro6,1": "0xC00DE137", + "MacBookPro6,2": "0xC00DE137", + "MacBookPro7,1": "0xC00DE137", + "MacBookPro8,1": "0xC00DE137", + "MacBookPro8,2": "0xC00DE137", + "MacBookPro8,3": "0xC00DE137", + "MacBookPro9,1": "0xC00DE137", + "MacBookPro9,2": "0xC10DF577", + "MacBookPro10,1": "0xE00DE137", + "MacBookPro10,2": "0xE00DE137", + "MacBookPro11,1": "0xEB0FF577", + "MacBookPro11,2": "0xEB0FF577", + "MacBookPro11,3": "0xEB0FF577", + "MacBookPro11,4": "0xEB0FF577", + "MacBookPro11,5": "0xEB0FF577", + "MacBookPro12,1": "0xFD0FF576", + "MacBookPro13,1": "0xFC0FE137", + "MacBookPro13,2": "0xFC0FE137", + "MacBookPro13,3": "0xFC0FE137", + "MacBookPro14,1": "0xFF0FF57E", + "MacBookPro14,2": "0xFF0FF57E", + "MacBookPro14,3": "0xFF0FF57E", + "MacBookPro15,1": "0xFD8FF426", + "MacBookPro15,2": "0xFD8FF426", + "MacBookPro15,3": "0xFD8FF426", + "MacBookPro15,4": "0xFD8FF426", + "MacBookPro16,1": "0xFDAFF066", + "MacBookPro16,2": "0xFFAFF06E", + "MacBookPro16,3": "0xFDAFF066", + "MacBookPro16,4": "0xFDAFF066", + "Macmini3,1": "0xC0001403", + "Macmini4,1": "0xC00C9423", + "Macmini5,1": "0xD00DE137", + "Macmini5,2": "0xD00DE137", + "Macmini5,3": "0xD00DE137", + "Macmini6,1": "0xE00DE137", + "Macmini6,2": "0xE00DE137", + "Macmini7,1": "0xE00DE137", + "Macmini8,1": "0xFD8FF466", + "MacPro1,1": "0x80000015", + "MacPro2,1": "0xC0000015", + "MacPro3,1": "0xC0001403", + "MacPro4,1": "0xE001F537", + "MacPro5,1": "0xE80FE137", + "MacPro6,1": "0xE90FF576", + "MacPro7,1": "0xFDAFF066", + "Xserve2,1": "0xC0001403", + "Xserve3,1": "0xE001F537", + "Dortania1,1": "0xFDAFF066", +}