Improve SMBIOS model handling to preserve user settings

This commit is contained in:
Hoang Hong Quan
2024-12-12 22:09:58 +07:00
parent 2cecb4782d
commit 9ac40ec63c
4 changed files with 29 additions and 16 deletions

View File

@@ -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)

View File

@@ -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()]

View File

@@ -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")

View File

@@ -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")