diff --git a/Scripts/acpi_guru.py b/Scripts/acpi_guru.py index f8aebd5..4f7a3c5 100644 --- a/Scripts/acpi_guru.py +++ b/Scripts/acpi_guru.py @@ -3041,15 +3041,7 @@ DefinitionBlock ("", "SSDT", 2, "ZPSS", "UsbReset", 0x00001000) else: selected_patches.append("PLUG") - ethernet_pci = None - for network_name, network_props in hardware_report.get("Network", {}).items(): - device_id = network_props.get("Device ID") - - if self.utils.contains_any(pci_data.NetworkIDs, device_id, start=108, end=219): - ethernet_pci = 108 - break - - if not ethernet_pci: + if not any(network_props.get("Device ID") in pci_data.NetworkIDs[108:270] for network_props in hardware_report.get("Network", {}).values()): selected_patches.append("RMNE") if hardware_report.get("Motherboard").get("Chipset") in ("C610/X99", "Wellsburg", "X299"): diff --git a/Scripts/compatibility_checker.py b/Scripts/compatibility_checker.py index c45b763..3b69e4e 100644 --- a/Scripts/compatibility_checker.py +++ b/Scripts/compatibility_checker.py @@ -225,32 +225,42 @@ class CompatibilityChecker: for device_name, device_props in self.hardware_report.get("Network", {}).items(): bus_type = device_props.get("Bus Type") device_id = device_props.get("Device ID") - is_device_supported = device_id in pci_data.NetworkIDs + + try: + device_index = pci_data.NetworkIDs.index(device_id) - max_version = os_data.get_latest_darwin_version() - min_version = os_data.get_lowest_darwin_version() - ocl_patched_max_version = max_version - ocl_patched_min_version = "23.0.0" + max_version = os_data.get_latest_darwin_version() + min_version = os_data.get_lowest_darwin_version() + ocl_patched_max_version = max_version + ocl_patched_min_version = "20.0.0" - if device_id in ("8086-15F2", "8086-15F3", "8086-15F8", "8086-125B", "8086-125C", "8086-125D", "8086-3102"): - min_version = "19.0.0" + if 109 < device_index < 115: + min_version = "19.0.0" + + if 262 < device_index < 270: + min_version = "21.0.0" - if not is_device_supported: - if bus_type.startswith("PCI"): - device_props["Compatibility"] = (None, None) - else: if pci_data.NetworkIDs.index(device_id) < 108: if device_id == primary_wifi_device: - if device_id in ("14E4-43A0", "14E4-43A3", "14E4-43BA"): + if device_index == 13 or 17 < device_index < 21: max_version = "22.99.99" + ocl_patched_min_version = "23.0.0" + elif device_index < 12: + max_version = "17.99.99" + + if device_index < 21: device_props["OCLP Compatibility"] = (ocl_patched_max_version, ocl_patched_min_version) self.ocl_patched_macos_version = (ocl_patched_max_version, self.ocl_patched_macos_version[-1] if self.ocl_patched_macos_version and self.utils.parse_darwin_version(self.ocl_patched_macos_version[-1]) < self.utils.parse_darwin_version(device_props.get("OCLP Compatibility")[-1]) else device_props.get("OCLP Compatibility")[-1]) device_props["Compatibility"] = (max_version, min_version) primary_wifi_device = None - else: - device_props["Compatibility"] = (None, None) else: device_props["Compatibility"] = (max_version, min_version) + except: + pass + + if bus_type.startswith("PCI") and not device_props.get("Compatibility"): + device_props["Compatibility"] = (None, None) + print("{}- {}: {}".format(" "*3, device_name, self.show_macos_compatibility(device_props.get("Compatibility")))) def check_storage_compatibility(self): diff --git a/Scripts/config_prodigy.py b/Scripts/config_prodigy.py index 407617b..23a7785 100644 --- a/Scripts/config_prodigy.py +++ b/Scripts/config_prodigy.py @@ -381,11 +381,14 @@ class ConfigProdigy: return None - def load_kernel_patch(self, motherboard_chipset, cpu_manufacturer, cpu_codename, cpu_cores, gpu_manufacturer, kexts): + def load_kernel_patch(self, motherboard_chipset, cpu_manufacturer, cpu_codename, cpu_cores, gpu_manufacturer, networks, kexts): kernel_patch = [] if "AMD" in cpu_manufacturer: - kernel_patch.extend(self.g.get_amd_kernel_patches()) + kernel_patch.extend(self.g.get_kernel_patches("AMD Vanilla Patches", self.g.amd_vanilla_patches_url)) + + if any(network_props.get("Device ID") in pci_data.NetworkIDs[263:270] for network_props in networks.values()): + kernel_patch.extend(self.g.get_kernel_patches("Aquantia macOS Patches", self.g.aquantia_macos_patches_url)) for kext in kexts: if kext.checked: @@ -408,7 +411,7 @@ class ConfigProdigy: }) elif kext.name == "ForgedInvariant": if not "AMD" in cpu_manufacturer: - kernel_patch.extend(self.g.get_amd_kernel_patches()[-6:-4]) + kernel_patch.extend(self.g.get_kernel_patches("AMD Vanilla Patches", self.g.amd_vanilla_patches_url)[-6:-4]) elif kext.name == "CatalinaBCM5701Ethernet": kernel_patch.append({ "Arch": "Any", @@ -428,13 +431,15 @@ class ConfigProdigy: }) for patch in kernel_patch: - if "cpuid_cores_per_package" in patch["Comment"]: + if "AppleEthernetAquantiaAqtion" in patch["Identifier"]: + patch["Enabled"] = patch["Base"] != "" + elif "cpuid_cores_per_package" in patch["Comment"]: patch["Replace"] = patch["Replace"].hex() patch["Replace"] = self.utils.hex_to_bytes(patch["Replace"][:2] + self.utils.int_to_hex(int(cpu_cores)) + patch["Replace"][4:]) elif "IOPCIIsHotplugPort" in patch["Comment"]: if motherboard_chipset in chipset_data.AMDChipsets[17:] or cpu_codename in ("Raphael", "Storm Peak", "Phoenix", "Granite Ridge"): patch["Enabled"] = True - if "_mtrr_update_action" in patch["Comment"]: + elif "_mtrr_update_action" in patch["Comment"]: if "TRX" in motherboard_chipset.upper(): patch["Enabled"] = False elif "AMD" in gpu_manufacturer: @@ -593,6 +598,7 @@ class ConfigProdigy: hardware_report.get("CPU").get("Codename"), hardware_report.get("CPU").get("Core Count"), list(hardware_report.get("GPU").items())[0][-1].get("Manufacturer"), + hardware_report.get("Network", {}), kexts ) config["Kernel"]["Quirks"]["AppleCpuPmCfgLock"] = bool(self.utils.contains_any(cpu_data.IntelCPUGenerations, hardware_report.get("CPU").get("Codename"), start=38)) @@ -601,6 +607,7 @@ class ConfigProdigy: config["Kernel"]["Quirks"]["CustomSMBIOSGuid"] = True config["Kernel"]["Quirks"]["DisableIoMapper"] = not "AMD" in hardware_report.get("CPU").get("Manufacturer") config["Kernel"]["Quirks"]["DisableRtcChecksum"] = "ASUS" in hardware_report.get("Motherboard").get("Name") or "HP " in hardware_report.get("Motherboard").get("Name") + config["Kernel"]["Quirks"]["ForceAquantiaEthernet"] = any(network_props.get("Device ID") in pci_data.NetworkIDs[263:270] for network_props in hardware_report.get("Network", {}).values()) config["Kernel"]["Quirks"]["LapicKernelPanic"] = "HP " in hardware_report.get("Motherboard").get("Name") config["Kernel"]["Quirks"]["PanicNoKextDump"] = config["Kernel"]["Quirks"]["PowerTimeoutKernelPanic"] = True config["Kernel"]["Quirks"]["ProvideCurrentCpuInfo"] = "AMD" in hardware_report.get("CPU").get("Manufacturer") or hardware_report.get("CPU").get("Codename") in cpu_data.IntelCPUGenerations[:2] diff --git a/Scripts/datasets/pci_data.py b/Scripts/datasets/pci_data.py index b757e3f..a90e9ee 100644 --- a/Scripts/datasets/pci_data.py +++ b/Scripts/datasets/pci_data.py @@ -498,6 +498,15 @@ NetworkIDs = [ "14E4-1686", "14E4-16B0", "14E4-16B4", + # Aquantia AQC107 + "1D6A-0001", + "1D6A-07B1", + "1D6A-D107", + "1D6A-87B1", + # Aquantia AQC113 + "1D6A-14C0", + "1D6A-04C0", + "1D6A-94C0", # RtWlanU.kext, RtWlanU1827.kext and RT2870USBWirelessDriver.kext "0409-0408", "0411-0242", diff --git a/Scripts/gathering_files.py b/Scripts/gathering_files.py index e556c5b..4fc5a55 100644 --- a/Scripts/gathering_files.py +++ b/Scripts/gathering_files.py @@ -16,6 +16,7 @@ class gatheringFiles: self.dortania_builds_url = "https://raw.githubusercontent.com/dortania/build-repo/builds/latest.json" self.ocbinarydata_url = "https://github.com/acidanthera/OcBinaryData/archive/refs/heads/master.zip" self.amd_vanilla_patches_url = "https://raw.githubusercontent.com/AMD-OSX/AMD_Vanilla/beta/patches.plist" + self.aquantia_macos_patches_url = "https://raw.githubusercontent.com/CaseySJ/Aquantia-macOS-Patches/refs/heads/main/CaseySJ-Aquantia-Patch-Sets-1-and-2.plist" self.temporary_dir = tempfile.mkdtemp() self.ock_files_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "OCK_Files") self.bootloader_kexts_data_path = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "bootloader_kexts_data.json") @@ -210,15 +211,15 @@ class gatheringFiles: shutil.rmtree(self.temporary_dir, ignore_errors=True) - def get_amd_kernel_patches(self): + def get_kernel_patches(self, patches_name, patches_url): try: - response = self.fetcher.fetch_and_parse_content(self.amd_vanilla_patches_url, "plist") + response = self.fetcher.fetch_and_parse_content(patches_url, "plist") return response["Kernel"]["Patch"] except: print("\n") - print("Unable to download AMD Vanilla Patches at this time") - print("from " + self.amd_vanilla_patches_url) + print("Unable to download {} at this time".format(patches_name)) + print("from " + patches_url) print("") print("Please try again later or apply them manually. ", end="") self.utils.request_input() diff --git a/Scripts/kext_maestro.py b/Scripts/kext_maestro.py index 652c9a7..4bbc7c0 100644 --- a/Scripts/kext_maestro.py +++ b/Scripts/kext_maestro.py @@ -159,7 +159,7 @@ class KextMaestro: except: continue - ethernet_device = 107 < device_index < 263 + ethernet_device = 107 < device_index < 270 if device_index < 21 and self.utils.parse_darwin_version(macos_version) >= self.utils.parse_darwin_version("23.0.0"): selected_kexts.append("IOSkywalkFamily")