From 9ac40ec63cc6d0fdb8af8e0407e9ed22805cf01c Mon Sep 17 00:00:00 2001 From: Hoang Hong Quan Date: Thu, 12 Dec 2024 22:09:58 +0700 Subject: [PATCH] Improve SMBIOS model handling to preserve user settings --- OpCore-Simplify.py | 12 +++++++----- Scripts/acpi_guru.py | 9 +++------ Scripts/kext_maestro.py | 7 ++----- Scripts/smbios.py | 17 +++++++++++++++++ 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/OpCore-Simplify.py b/OpCore-Simplify.py index 1b669db..77c56e0 100644 --- a/OpCore-Simplify.py +++ b/OpCore-Simplify.py @@ -312,8 +312,9 @@ class OCPE: smbios_model = self.s.select_smbios_model(hardware_report, macos_version) if not self.ac.ensure_dsdt(): self.ac.select_acpi_tables() - self.ac.select_acpi_patches(hardware_report, unsupported_devices, smbios_model) - self.k.select_required_kexts(hardware_report, smbios_model, macos_version, needs_oclp, self.ac.patches) + self.ac.select_acpi_patches(hardware_report, unsupported_devices) + self.k.select_required_kexts(hardware_report, macos_version, needs_oclp, self.ac.patches) + self.s.smbios_specific_options(hardware_report, smbios_model, macos_version, self.ac.patches, self.k) elif option < 7: try: hardware_report @@ -325,14 +326,15 @@ class OCPE: macos_version = self.select_macos_version(native_macos_version, ocl_patched_macos_version) hardware_report, unsupported_devices, needs_oclp = self.c.get_unsupported_devices(macos_version) smbios_model = self.s.select_smbios_model(hardware_report, macos_version) - self.k.select_required_kexts(hardware_report, smbios_model, macos_version, needs_oclp, self.ac.patches) + self.k.select_required_kexts(hardware_report, macos_version, needs_oclp, self.ac.patches) + self.s.smbios_specific_options(hardware_report, smbios_model, macos_version, self.ac.patches, self.k) elif option == 3: - self.ac.customize_patch_selection(hardware_report, unsupported_devices, smbios_model) + self.ac.customize_patch_selection(hardware_report, unsupported_devices) elif option == 4: self.k.kext_configuration_menu(hardware_report, smbios_model, macos_version, self.ac.patches) elif option == 5: smbios_model = self.s.customize_smbios_model(hardware_report, smbios_model, macos_version) - self.k.select_required_kexts(hardware_report, smbios_model, macos_version, needs_oclp, self.ac.patches) + self.s.smbios_specific_options(hardware_report, smbios_model, macos_version, self.ac.patches, self.k) elif option == 6: self.gathering_files(macos_version) self.build_opencore_efi(hardware_report, unsupported_devices, smbios_model, macos_version, needs_oclp) diff --git a/Scripts/acpi_guru.py b/Scripts/acpi_guru.py index 8336ef5..5b407af 100644 --- a/Scripts/acpi_guru.py +++ b/Scripts/acpi_guru.py @@ -3001,7 +3001,7 @@ DefinitionBlock ("", "SSDT", 2, "ZPSS", "UsbReset", 0x00001000) return index return None - def select_acpi_patches(self, hardware_report, unsupported_devices, smbios_model): + def select_acpi_patches(self, hardware_report, unsupported_devices): selected_patches = [] if "Laptop" in hardware_report.get("Motherboard").get("Platform") and \ @@ -3033,9 +3033,6 @@ DefinitionBlock ("", "SSDT", 2, "ZPSS", "UsbReset", 0x00001000) "Ivy Bridge" in hardware_report.get("CPU").get("Codename") and hardware_report.get("Intel MEI").get("Device ID") in "8086-1C3A": selected_patches.append("IMEI") - if "Intel" in hardware_report.get("CPU").get("Manufacturer") or not "MacPro" in smbios_model: - selected_patches.append("MCHC") - if self.utils.contains_any(chipset_data.IntelChipsets, hardware_report.get("Motherboard").get("Chipset"), start=89, end=101): selected_patches.append("PMC") @@ -3084,7 +3081,7 @@ DefinitionBlock ("", "SSDT", 2, "ZPSS", "UsbReset", 0x00001000) for patch in self.patches: patch.checked = patch.name in selected_patches - def customize_patch_selection(self, hardware_report, unsupported_devices, smbios_model): + def customize_patch_selection(self, hardware_report, unsupported_devices): while True: contents = [] contents.append("") @@ -3117,7 +3114,7 @@ DefinitionBlock ("", "SSDT", 2, "ZPSS", "UsbReset", 0x00001000) return if option.lower() == "r": - self.select_acpi_patches(hardware_report, unsupported_devices, smbios_model) + self.select_acpi_patches(hardware_report, unsupported_devices) else: indices = [int(i.strip()) -1 for i in option.split(",") if i.strip().isdigit()] diff --git a/Scripts/kext_maestro.py b/Scripts/kext_maestro.py index 24bacd9..0521e20 100644 --- a/Scripts/kext_maestro.py +++ b/Scripts/kext_maestro.py @@ -97,7 +97,7 @@ class KextMaestro: if other_kext.conflict_group_id == kext.conflict_group_id and other_kext.name != kext.name: other_kext.checked = False - def select_required_kexts(self, hardware_report, smbios_model, macos_version, needs_oclp, acpi_patches): + def select_required_kexts(self, hardware_report, macos_version, needs_oclp, acpi_patches): for kext in self.kexts: kext.checked = kext.required @@ -117,7 +117,7 @@ class KextMaestro: if not (" Core" in hardware_report.get("CPU").get("Processor Name") and \ self.utils.contains_any(cpu_data.IntelCPUGenerations, hardware_report.get("CPU").get("Codename"), start=4)) or \ - self.utils.parse_darwin_version(macos_version) >= self.utils.parse_darwin_version("23.0.0") or "MacPro7,1" in smbios_model: + self.utils.parse_darwin_version(macos_version) >= self.utils.parse_darwin_version("23.0.0"): selected_kexts.append("RestrictEvents") if hardware_report.get("Sound"): @@ -248,9 +248,6 @@ class KextMaestro: else: selected_kexts.append("XHCI-unsupported") - if smbios_model in (device.name for device in mac_model_data.mac_devices[31:34] + mac_model_data.mac_devices[48:50] + mac_model_data.mac_devices[51:61]): - selected_kexts.append("NoTouchID") - if "Sandy Bridge" in hardware_report.get("CPU").get("Codename"): selected_kexts.append("ASPP-Override") diff --git a/Scripts/smbios.py b/Scripts/smbios.py index d0fb277..fe0761a 100644 --- a/Scripts/smbios.py +++ b/Scripts/smbios.py @@ -1,4 +1,5 @@ from Scripts.datasets.mac_model_data import mac_devices +from Scripts.datasets import os_data from Scripts import gathering_files from Scripts import run from Scripts import utils @@ -58,6 +59,22 @@ class SMBIOS: "SystemUUID": str(uuid.uuid4()).upper(), } + def smbios_specific_options(self, hardware_report, smbios_model, macos_version, acpi_patches, kext_maestro): + for patch in acpi_patches: + if patch.name == "MCHC": + patch.checked = "Intel" in hardware_report.get("CPU").get("Manufacturer") and not "MacPro" in smbios_model + + selected_kexts = [] + + if "MacPro7,1" in smbios_model: + selected_kexts.append("RestrictEvents") + + if smbios_model in (device.name for device in mac_devices[31:34] + mac_devices[48:50] + mac_devices[51:61]): + selected_kexts.append("NoTouchID") + + for name in selected_kexts: + kext_maestro.check_kext(kext_maestro.get_kext_index(name), macos_version, "Beta" in os_data.get_macos_name_by_darwin(macos_version)) + def select_smbios_model(self, hardware_report, macos_version): platform = "NUC" if "NUC" in hardware_report.get("Motherboard").get("Name") else hardware_report.get("Motherboard").get("Platform") codename = hardware_report.get("CPU").get("Codename")