Files
OpCore-Simplify/Scripts/kext_maestro.py

777 lines
30 KiB
Python

from Scripts.datasets import cpu_data
from Scripts.datasets import os_data
from Scripts.datasets import pci_data
from Scripts import utils
import os
import shutil
class KextMaestro:
def __init__(self):
self.utils = utils.Utils()
self.matching_keys = [
"IOPCIMatch",
"IONameMatch",
"IOPCIPrimaryMatch",
"idProduct",
"idVendor",
"HDAConfigDefault"
]
self.ock_files_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "OCK_Files")
self.kext_loading_sequence = [
{
"MainKext": "Lilu",
"BundlePath": "Lilu.kext",
"ExecutablePath": "Contents/MacOS/Lilu",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VirtualSMC",
"BundlePath": "VirtualSMC.kext",
"ExecutablePath": "Contents/MacOS/VirtualSMC",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "ECEnabler",
"BundlePath": "ECEnabler.kext",
"ExecutablePath": "Contents/MacOS/ECEnabler",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VirtualSMC",
"BundlePath": "SMCBatteryManager.kext",
"ExecutablePath": "Contents/MacOS/SMCBatteryManager",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VirtualSMC",
"BundlePath": "SMCDellSensors.kext",
"ExecutablePath": "Contents/MacOS/SMCDellSensors",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VirtualSMC",
"BundlePath": "SMCLightSensor.kext",
"ExecutablePath": "Contents/MacOS/SMCLightSensor",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VirtualSMC",
"BundlePath": "SMCProcessor.kext",
"ExecutablePath": "Contents/MacOS/SMCProcessor",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VirtualSMC",
"BundlePath": "SMCSuperIO.kext",
"ExecutablePath": "Contents/MacOS/SMCSuperIO",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "WhateverGreen",
"BundlePath": "WhateverGreen.kext",
"ExecutablePath": "Contents/MacOS/WhateverGreen",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "NootedRed",
"BundlePath": "NootedRed.kext",
"ExecutablePath": "Contents/MacOS/NootedRed",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "NootRX",
"BundlePath": "NootRX.kext",
"ExecutablePath": "Contents/MacOS/NootRX",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "AppleALC",
"BundlePath": "AppleALC.kext",
"ExecutablePath": "Contents/MacOS/AppleALC",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "AirportItlwm",
"BundlePath": "AirportItlwm.kext",
"ExecutablePath": "Contents/MacOS/AirportItlwm",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "itlwm",
"BundlePath": "itlwm.kext",
"ExecutablePath": "Contents/MacOS/itlwm",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "IOSkywalkFamily",
"BundlePath": "IOSkywalkFamily.kext",
"ExecutablePath": "Contents/MacOS/IOSkywalkFamily",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "IO80211FamilyLegacy",
"BundlePath": "IO80211FamilyLegacy.kext",
"ExecutablePath": "Contents/MacOS/IO80211FamilyLegacy",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "IO80211FamilyLegacy",
"BundlePath": "IO80211FamilyLegacy.kext/Contents/PlugIns/AirPortBrcmNIC.kext",
"ExecutablePath": "Contents/MacOS/AirPortBrcmNIC",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "AirportBrcmFixup",
"BundlePath": "AirportBrcmFixup.kext",
"ExecutablePath": "Contents/MacOS/AirportBrcmFixup",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "AirportBrcmFixup",
"BundlePath": "AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcm4360_Injector.kext",
"ExecutablePath": "",
"MaxKernel": "19.99.99",
"MinKernel": ""
},
{
"MainKext": "AirportBrcmFixup",
"BundlePath": "AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcmNIC_Injector.kext",
"ExecutablePath": "",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "IntelBluetoothFirmware",
"BundlePath": "IntelBluetoothFirmware.kext",
"ExecutablePath": "Contents/MacOS/IntelBluetoothFirmware",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "IntelBluetoothFirmware",
"BundlePath": "IntelBTPatcher.kext",
"ExecutablePath": "Contents/MacOS/IntelBTPatcher",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "IntelBluetoothFirmware",
"BundlePath": "IntelBluetoothInjector.kext",
"ExecutablePath": "",
"MaxKernel": "20.99.99",
"MinKernel": ""
},
{
"MainKext": "BlueToolFixup",
"BundlePath": "BlueToolFixup.kext",
"ExecutablePath": "Contents/MacOS/BlueToolFixup",
"MaxKernel": "",
"MinKernel": "21.0.0"
},
{
"MainKext": "BrcmPatchRAM",
"BundlePath": "BrcmBluetoothInjector.kext",
"ExecutablePath": "",
"MaxKernel": "20.99.99",
"MinKernel": ""
},
{
"MainKext": "BrcmPatchRAM",
"BundlePath": "BrcmFirmwareData.kext",
"ExecutablePath": "Contents/MacOS/BrcmFirmwareData",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "BrcmPatchRAM",
"BundlePath": "BrcmPatchRAM2.kext",
"ExecutablePath": "Contents/MacOS/BrcmPatchRAM2",
"MaxKernel": "18.99.99",
"MinKernel": ""
},
{
"MainKext": "BrcmPatchRAM",
"BundlePath": "BrcmPatchRAM3.kext",
"ExecutablePath": "Contents/MacOS/BrcmPatchRAM3",
"MaxKernel": "",
"MinKernel": "19.0.0"
},
{
"MainKext": "AppleIGC",
"BundlePath": "AppleIGC.kext",
"ExecutablePath": "Contents/MacOS/AppleIGC",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "AtherosE2200Ethernet",
"BundlePath": "AtherosE2200Ethernet.kext",
"ExecutablePath": "Contents/MacOS/AtherosE2200Ethernet",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "IntelMausi",
"BundlePath": "IntelMausi.kext",
"ExecutablePath": "Contents/MacOS/IntelMausi",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "LucyRTL8125Ethernet",
"BundlePath": "LucyRTL8125Ethernet.kext",
"ExecutablePath": "Contents/MacOS/LucyRTL8125Ethernet",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "NullEthernet",
"BundlePath": "NullEthernet.kext",
"ExecutablePath": "Contents/MacOS/NullEthernet",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "RealtekRTL8100",
"BundlePath": "RealtekRTL8100.kext",
"ExecutablePath": "Contents/MacOS/RealtekRTL8100",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "RealtekRTL8111",
"BundlePath": "RealtekRTL8111.kext",
"ExecutablePath": "Contents/MacOS/RealtekRTL8111",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "BrightnessKeys",
"BundlePath": "BrightnessKeys.kext",
"ExecutablePath": "Contents/MacOS/BrightnessKeys",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "AsusSMC",
"BundlePath": "AsusSMC.kext",
"ExecutablePath": "Contents/MacOS/AsusSMC",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooInput",
"BundlePath": "VoodooInput.kext",
"ExecutablePath": "Contents/MacOS/VoodooInput",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooPS2",
"BundlePath": "VoodooPS2Controller.kext",
"ExecutablePath": "Contents/MacOS/VoodooPS2Controller",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooPS2",
"BundlePath": "VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext",
"ExecutablePath": "Contents/MacOS/VoodooPS2Keyboard",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooPS2",
"BundlePath": "VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Mouse.kext",
"ExecutablePath": "Contents/MacOS/VoodooPS2Mouse",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooPS2",
"BundlePath": "VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext",
"ExecutablePath": "Contents/MacOS/VoodooPS2Trackpad",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooRMI",
"BundlePath": "VoodooRMI.kext",
"ExecutablePath": "Contents/MacOS/VoodooRMI",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooRMI",
"BundlePath": "VoodooSMBus.kext",
"ExecutablePath": "Contents/MacOS/VoodooSMBus",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooSMBus",
"BundlePath": "VoodooSMBus.kext",
"ExecutablePath": "Contents/MacOS/VoodooSMBus",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooRMI",
"BundlePath": "VoodooRMI.kext/Contents/PlugIns/RMISMBus.kext",
"ExecutablePath": "Contents/MacOS/RMISMBus",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooI2C",
"BundlePath": "VoodooI2C.kext/Contents/PlugIns/VoodooI2CServices.kext",
"ExecutablePath": "Contents/MacOS/VoodooI2CServices",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooI2C",
"BundlePath": "VoodooI2C.kext/Contents/PlugIns/VoodooGPIO.kext",
"ExecutablePath": "Contents/MacOS/VoodooGPIO",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooI2C",
"BundlePath": "VoodooI2C.kext",
"ExecutablePath": "Contents/MacOS/VoodooI2C",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "BigSurface",
"BundlePath": "BigSurface.kext/Contents/PlugIns/VoodooInput.kext",
"ExecutablePath": "Contents/MacOS/VoodooInput",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "BigSurface",
"BundlePath": "BigSurface.kext/Contents/PlugIns/VoodooGPIO.kext",
"ExecutablePath": "Contents/MacOS/VoodooGPIO",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "BigSurface",
"BundlePath": "BigSurface.kext/Contents/PlugIns/VoodooSerial.kext",
"ExecutablePath": "Contents/MacOS/VoodooSerial",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "BigSurface",
"BundlePath": "BigSurface.kext",
"ExecutablePath": "Contents/MacOS/BigSurface",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "BigSurface",
"BundlePath": "BigSurface.kext/Contents/PlugIns/BigSurfaceHIDDriver.kext",
"ExecutablePath": "Contents/MacOS/BigSurfaceHIDDriver",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooRMI",
"BundlePath": "VoodooRMI.kext/Contents/PlugIns/RMII2C.kext",
"ExecutablePath": "Contents/MacOS/RMII2C",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "lzh",
"BundlePath": "VoodooI2CELAN.kext",
"ExecutablePath": "Contents/MacOS/VoodooI2CELAN",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "VoodooI2C",
"BundlePath": "VoodooI2CHID.kext",
"ExecutablePath": "Contents/MacOS/VoodooI2CHID",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "AlpsHID",
"BundlePath": "AlpsHID.kext",
"ExecutablePath": "Contents/MacOS/AlpsHID",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "lzh",
"BundlePath": "VoodooI2CSynaptics.kext",
"ExecutablePath": "Contents/MacOS/VoodooI2CSynaptics",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "AppleMCEReporterDisabler",
"BundlePath": "AppleMCEReporterDisabler.kext",
"ExecutablePath": "",
"MaxKernel": "",
"MinKernel": "21.0.0"
},
{
"MainKext": "AMFIPass",
"BundlePath": "AMFIPass.kext",
"ExecutablePath": "Contents/MacOS/AMFIPass",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "CpuTopologyRebuild",
"BundlePath": "CpuTopologyRebuild.kext",
"ExecutablePath": "Contents/MacOS/CpuTopologyRebuild",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "CtlnaAHCIPort",
"BundlePath": "CtlnaAHCIPort.kext",
"ExecutablePath": "Contents/MacOS/CtlnaAHCIPort",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "RealtekCardReader",
"BundlePath": "RealtekCardReader.kext",
"ExecutablePath": "Contents/MacOS/RealtekCardReader",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "RealtekCardReaderFriend",
"BundlePath": "RealtekCardReaderFriend.kext",
"ExecutablePath": "Contents/MacOS/RealtekCardReaderFriend",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "ForgedInvariant",
"BundlePath": "ForgedInvariant.kext",
"ExecutablePath": "Contents/MacOS/ForgedInvariant",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "RestrictEvents",
"BundlePath": "RestrictEvents.kext",
"ExecutablePath": "Contents/MacOS/RestrictEvents",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "HibernationFixup",
"BundlePath": "HibernationFixup.kext",
"ExecutablePath": "Contents/MacOS/HibernationFixup",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "RTCMemoryFixup",
"BundlePath": "RTCMemoryFixup.kext",
"ExecutablePath": "Contents/MacOS/RTCMemoryFixup",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "NVMeFix",
"BundlePath": "NVMeFix.kext",
"ExecutablePath": "Contents/MacOS/NVMeFix",
"MaxKernel": "",
"MinKernel": "18.0.0"
},
{
"MainKext": "CryptexFixup",
"BundlePath": "CryptexFixup.kext",
"ExecutablePath": "Contents/MacOS/CryptexFixup",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "GenericUSBXHCI",
"BundlePath": "GenericUSBXHCI.kext",
"ExecutablePath": "Contents/MacOS/GenericUSBXHCI",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "XHCI-unsupported",
"BundlePath": "XHCI-unsupported.kext",
"ExecutablePath": "",
"MaxKernel": "",
"MinKernel": ""
},
{
"MainKext": "USBMap",
"BundlePath": "USBMap.kext",
"ExecutablePath": "",
"MaxKernel": "",
"MinKernel": ""
}
]
def extract_pci_id(self, kext_path):
if not os.path.exists(kext_path):
return []
plist_path = os.path.join(kext_path, "Contents", "Info.plist")
plist_data = self.utils.read_file(plist_path)
pci_ids = []
for personality_name, properties in plist_data.get("IOKitPersonalities", {}).items():
matching_keys = [key for key in self.matching_keys if key in properties]
if not matching_keys:
continue
match_key = matching_keys[0]
if match_key in ["IOPCIMatch", "IOPCIPrimaryMatch"]:
pci_list = properties[match_key].split(" ")
for pci_id in pci_list:
vendor_id = pci_id[-4:]
device_id = pci_id[2:6]
pci_ids.append("{}-{}".format(vendor_id, device_id).upper())
elif match_key == "IONameMatch":
for pci_id in properties[match_key]:
vendor_id = pci_id[3:7]
device_id = pci_id[-4:]
pci_ids.append("{}-{}".format(vendor_id, device_id).upper())
elif match_key == "idProduct":
vendor_id = self.utils.int_to_hex(properties["idVendor"]).zfill(4)
device_id = self.utils.int_to_hex(properties["idProduct"]).zfill(4)
pci_ids.append("{}-{}".format(vendor_id, device_id).upper())
elif match_key == "HDAConfigDefault":
for codec_layout in properties[match_key]:
codec_id = self.utils.int_to_hex(codec_layout.get("CodecID")).zfill(8)
pci_ids.append("{}-{}".format(codec_id[:4], codec_id[-4:]))
pci_ids = sorted(list(set(pci_ids)))
return pci_ids
def gathering_kexts(self, motherboard_name, platform, cpu_configuration, cpu_manufacturer, cpu_codename, cpu_cores, simd_features, discrete_gpu_codename, integrated_gpu, network, bluetooth, codec_id, input, sd_controller, storage_controllers, usb_controllers, smbios, custom_cpu_name, tsc_sync, acpi, macos_version):
kexts = [
"Lilu",
"VirtualSMC",
"USBMap"
]
if macos_version > (22, 0, 0) or custom_cpu_name or "MacPro7,1" in smbios:
kexts.append("RestrictEvents")
if codec_id in pci_data.CodecIDs and not ("AMD" in cpu_manufacturer and macos_version > (23, 0, 0)):
kexts.append("AppleALC")
if "AMD" in cpu_manufacturer and macos_version > (21, 0, 0) or int(cpu_configuration) > 1 and macos_version > (18, 0, 0):
kexts.append("AppleMCEReporterDisabler")
if macos_version > (21, 0, 0) and not "AVX2" in simd_features:
kexts.append("CryptexFixup")
if self.utils.contains_any(cpu_data.IntelCPUGenerations, cpu_codename, start=13) and int(cpu_cores) > 6:
kexts.append("CpuTopologyRebuild")
if tsc_sync:
kexts.append("ForgedInvariant")
if "AMD" in cpu_manufacturer and integrated_gpu and not discrete_gpu_codename:
kexts.append("NootedRed")
else:
kexts.append("NootRX" if "Navi 2" in discrete_gpu_codename else "WhateverGreen")
if "SSDT-RMNE" in ", ".join(acpi_table.get("Path") for acpi_table in acpi.get("Add")):
kexts.append("NullEthernet")
wifi_pci = None
for network_name, network_props in network.items():
device_id = network_props.get("Device ID")
if self.utils.contains_any(pci_data.NetworkIDs, device_id, end=21):
wifi_pci = device_id
if device_id in ["14E4-43A0", "14E4-43A3", "14E4-43BA"]:
if macos_version > (22, 0, 0):
kexts.extend(["AirportBrcmFixup", "IOSkywalkFamily", "IO80211FamilyLegacy", "AMFIPass"])
elif device_id in pci_data.NetworkIDs:
kexts.append("AirportBrcmFixup")
elif self.utils.contains_any(pci_data.NetworkIDs, device_id, start=21, end=108):
kexts.append("AirportItlwm" if macos_version < (23, 0, 0) else "itlwm")
elif self.utils.contains_any(pci_data.NetworkIDs, device_id, start=108, end=115):
kexts.append("AppleIGC")
elif self.utils.contains_any(pci_data.NetworkIDs, device_id, start=115, end=122):
kexts.append("AtherosE2200Ethernet")
elif self.utils.contains_any(pci_data.NetworkIDs, device_id, start=122, end=173):
kexts.append("IntelMausi")
elif self.utils.contains_any(pci_data.NetworkIDs, device_id, start=173, end=176):
kexts.append("LucyRTL8125Ethernet")
elif self.utils.contains_any(pci_data.NetworkIDs, device_id, start=176, end=177):
kexts.append("RealtekRTL8100")
elif self.utils.contains_any(pci_data.NetworkIDs, device_id, start=177, end=181):
kexts.append("RealtekRTL8111")
elif self.utils.contains_any(pci_data.NetworkIDs, device_id, start=181, end=219):
kexts.append("AppleIGB")
if bluetooth and macos_version > (20, 0, 0) and not wifi_pci in ["14E4-43A0", "14E4-43A3", "14E4-43BA"]:
kexts.append("BlueToolFixup")
for usb_id in bluetooth:
if usb_id in pci_data.BluetoothIDs:
idx = pci_data.BluetoothIDs.index(usb_id)
if idx < 99:
kexts.append("BrcmPatchRAM")
if bluetooth and macos_version > (20, 0, 0):
kexts.append("BlueToolFixup")
else:
kexts.append("IntelBluetoothFirmware")
if "Laptop" in platform:
if "SURFACE" in motherboard_name:
kexts.append("BigSurface")
else:
if "ASUS" in motherboard_name:
kexts.append("AsusSMC")
kexts.append("BrightnessKeys")
for device_name, device_props in input.items():
if not device_props.get("Bus Type", "").startswith("ACPI"):
continue
device_id = device_props.get("Device ID")
idx = None
if device_id in pci_data.InputIDs:
idx = pci_data.InputIDs.index(device_id)
if "PS/2" in device_name:
kexts.extend(["VoodooInput", "VoodooPS2"])
if device_id.startswith("SYN"):
kexts.append("VoodooRMI")
elif idx and 76 < idx < 80:
kexts.append("VoodooSMBus")
if "I2C" in device_name:
kexts.extend(["VoodooInput", "VoodooI2C"])
if idx:
if idx < 77:
kexts.append("AlpsHID")
elif 79 < idx:
kexts.append("VoodooRMI")
if "Laptop" in platform and "SURFACE" not in motherboard_name and acpi.get("Battery Status Patch Needed"):
kexts.append("ECEnabler")
if sd_controller and sd_controller.get("Device ID") in pci_data.RealtekCardReaderIDs:
kexts.extend(["RealtekCardReader", "RealtekCardReaderFriend"])
for controller_name, controller_props in storage_controllers.items():
if "NVMe" in controller_name or "NVM Express" in controller_name:
kexts.append("NVMeFix")
else:
if controller_props.get("Device ID") in pci_data.UnsupportedSATAControllerIDs and not "AHCI" in controller_name:
kexts.append("CtlnaAHCIPort")
for controller_name, controller_props in usb_controllers.items():
device_id = controller_props.get("Device ID")
if device_id in pci_data.UnsupportedUSBControllerIDs:
idx = pci_data.UnsupportedUSBControllerIDs.index(device_id)
if idx == 0:
kexts.append("GenericUSBXHCI")
else:
kexts.append("XHCI-unsupported")
return sorted(list(set(kexts)))[::-1]
def install_kexts_to_efi(self, kexts, macos_version, kexts_directory):
for kext_name in kexts:
if "AirportItlwm" in kext_name:
kext_name = "{}{}".format(kext_name, macos_version[0])
elif "BlueToolFixup" in kext_name or "BrcmPatchRAM" in kext_name:
kext_name = "BrcmPatchRAM"
source_kext_dir = os.path.join(self.ock_files_dir, kext_name)
if os.path.exists(source_kext_dir):
shutil.copytree(source_kext_dir, kexts_directory, dirs_exist_ok=True)
def load_kexts(self, kexts, motherboard_name, platform, cpu_manufacturer, discrete_gpu_codename, macos_version):
kernel_add = []
unload_kext = []
if not "DELL" in motherboard_name:
unload_kext.append("SMCDellSensors")
if "Desktop" in platform:
unload_kext.extend([
"SMCBatteryManager",
"SMCLightSensor"
])
if "AMD" in cpu_manufacturer:
unload_kext.extend(["SMCProcessor", "SMCSuperIO"])
if "Navi 2" in discrete_gpu_codename:
unload_kext.append("SMCSuperIO")
elif "Laptop" in platform and not "SURFACE" in motherboard_name:
if "AMD" in cpu_manufacturer:
unload_kext.extend([
"SMCProcessor",
"SMCSuperIO"
])
if "VoodooSMBus" in kexts:
unload_kext.append("VoodooPS2Mouse")
elif "VoodooRMI" in kexts:
if not "VoodooI2C" in kexts:
unload_kext.append("RMII2C")
else:
unload_kext.extend([
"VoodooSMBus",
"RMISMBus",
"VoodooI2CServices",
"VoodooGPIO",
"VoodooI2CHID"
])
for kext in self.kext_loading_sequence:
if not kext.get("MainKext") in kexts or os.path.splitext(os.path.basename(kext.get("BundlePath")))[0] in unload_kext:
continue
max_kernel = self.utils.parse_darwin_version(kext.get("MaxKernel") or os_data.get_latest_darwin_version())
min_kernel = self.utils.parse_darwin_version(kext.get("MinKernel") or os_data.get_lowest_darwin_version())
if not min_kernel <= macos_version <= max_kernel:
continue
kernel_add.append({
"Arch": "x86_64",
"BundlePath": kext.get("BundlePath"),
"Comment": "",
"Enabled": True,
"ExecutablePath": kext.get("ExecutablePath") or "",
"MaxKernel": "",
"MinKernel": "",
"PlistPath": "Contents/Info.plist"
})
return kernel_add