diff --git a/data/sys_patch_dict.py b/data/sys_patch_dict.py index 166469eb7..472ecf5cd 100644 --- a/data/sys_patch_dict.py +++ b/data/sys_patch_dict.py @@ -1159,11 +1159,6 @@ class SystemPatchDictionary(): }, }, "Install Reference": { - "/System/Library/Extensions": { - "IO80211FamilyLegacy.kext": "13.5 Beta 2", - "IONetworkFamily.kext": "13.5 Beta 2", - "IOSkywalkFamily.kext": "13.5 Beta 2", - }, "/usr/libexec": { "airportd": "13.5 Beta 2", "wifianalyticsd": "13.5 Beta 2", @@ -1179,15 +1174,6 @@ class SystemPatchDictionary(): "WiFiPolicy.framework": "13.5 Beta 2", }, }, - "Remove Reference": { - "/System/Library/Extensions": [ - "AppleBCMWLANBusInterfacePCIe.kext", - "AppleBCMWLANBusInterfacePCIeMac.kext", - "AppleBCMWLANCore.kext", - "AppleBCMWLANCoreMac.kext", - "IO80211Family.kext", - ], - }, }, }, "Brightness": { diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist index 4811944e6..2e9343f9c 100644 --- a/payloads/Config/config.plist +++ b/payloads/Config/config.plist @@ -1581,9 +1581,80 @@ PlistPath Contents/Info.plist + + Arch + x86_64 + BundlePath + IOSkywalkFamily.kext + Comment + IOSkywalkFamily + Enabled + + ExecutablePath + Contents/MacOS/IOSkywalkFamily + MaxKernel + + MinKernel + 23.0.0 + PlistPath + Contents/Info.plist + + + Arch + x86_64 + BundlePath + IO80211FamilyLegacy.kext + Comment + IO80211FamilyLegacy + Enabled + + ExecutablePath + Contents/MacOS/IO80211FamilyLegacy + MaxKernel + + MinKernel + 23.0.0 + PlistPath + Contents/Info.plist + + + Arch + x86_64 + BundlePath + IO80211FamilyLegacy.kext/Contents/PlugIns/AirPortBrcmNIC.kext + Comment + AirPortBrcmNIC + Enabled + + ExecutablePath + Contents/MacOS/AirPortBrcmNIC + MaxKernel + + MinKernel + 23.0.0 + PlistPath + Contents/Info.plist + Block - + + + Arch + Any + Comment + Allow IOSkywalk Downgrade + Enabled + + Identifier + com.apple.iokit.IOSkywalkFamily + MaxKernel + + MinKernel + 23.0.0 + Strategy + Exclude + + Emulate DummyPowerManagement diff --git a/payloads/Kexts/Wifi/IO80211FamilyLegacy-v1.0.0.zip b/payloads/Kexts/Wifi/IO80211FamilyLegacy-v1.0.0.zip new file mode 100644 index 000000000..1e3452819 Binary files /dev/null and b/payloads/Kexts/Wifi/IO80211FamilyLegacy-v1.0.0.zip differ diff --git a/payloads/Kexts/Wifi/IOSkywalkFamily-v1.0.0.zip b/payloads/Kexts/Wifi/IOSkywalkFamily-v1.0.0.zip new file mode 100644 index 000000000..ee8308fa9 Binary files /dev/null and b/payloads/Kexts/Wifi/IOSkywalkFamily-v1.0.0.zip differ diff --git a/resources/build/networking/wireless.py b/resources/build/networking/wireless.py index 4ee971fae..0d6001d95 100644 --- a/resources/build/networking/wireless.py +++ b/resources/build/networking/wireless.py @@ -45,6 +45,11 @@ class BuildWirelessNetworking: self.config["#Revision"]["Hardware-Wifi"] = f"{utilities.friendly_hex(self.computer.wifi.vendor_id)}:{utilities.friendly_hex(self.computer.wifi.device_id)}" if isinstance(self.computer.wifi, device_probe.Broadcom): + if self.computer.wifi.chipset == device_probe.Broadcom.Chipsets.AirportBrcmNIC: + support.BuildSupport(self.model, self.constants, self.config).enable_kext("IOSkywalkFamily.kext", self.constants.ioskywalk_version, self.constants.ioskywalk_path) + support.BuildSupport(self.model, self.constants, self.config).enable_kext("IO80211FamilyLegacy.kext", self.constants.io80211legacy_version, self.constants.io80211legacy_path) + support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("IO80211FamilyLegacy.kext/Contents/PlugIns/AirPortBrcmNIC.kext")["Enabled"] = True + support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Block"], "Identifier", "com.apple.iokit.IOSkywalkFamily")["Enabled"] = True # This works around OCLP spoofing the Wifi card and therefore unable to actually detect the correct device if self.computer.wifi.chipset == device_probe.Broadcom.Chipsets.AirportBrcmNIC and self.constants.validate is False and self.computer.wifi.country_code: support.BuildSupport(self.model, self.constants, self.config).enable_kext("AirportBrcmFixup.kext", self.constants.airportbcrmfixup_version, self.constants.airportbcrmfixup_path) @@ -102,6 +107,10 @@ class BuildWirelessNetworking: support.BuildSupport(self.model, self.constants, self.config).enable_kext("IO80211ElCap.kext", self.constants.io80211elcap_version, self.constants.io80211elcap_path) support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("IO80211ElCap.kext/Contents/PlugIns/AirPortAtheros40.kext")["Enabled"] = True elif smbios_data.smbios_dictionary[self.model]["Wireless Model"] == device_probe.Broadcom.Chipsets.AirportBrcmNIC: + support.BuildSupport(self.model, self.constants, self.config).enable_kext("IOSkywalkFamily.kext", self.constants.ioskywalk_version, self.constants.ioskywalk_path) + support.BuildSupport(self.model, self.constants, self.config).enable_kext("IO80211FamilyLegacy.kext", self.constants.io80211legacy_version, self.constants.io80211legacy_path) + support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("IO80211FamilyLegacy.kext/Contents/PlugIns/AirPortBrcmNIC.kext")["Enabled"] = True + support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Block"], "Identifier", "com.apple.iokit.IOSkywalkFamily")["Enabled"] = True support.BuildSupport(self.model, self.constants, self.config).enable_kext("AirportBrcmFixup.kext", self.constants.airportbcrmfixup_version, self.constants.airportbcrmfixup_path) diff --git a/resources/constants.py b/resources/constants.py index ce4312b10..94702ad41 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -70,6 +70,8 @@ class Constants: self.i210_version: str = "1.0.0" # CatalinaIntelI210Ethernet self.corecaptureelcap_version: str = "1.0.1" # corecaptureElCap self.io80211elcap_version: str = "2.0.0" # IO80211ElCap + self.io80211legacy_version: str = "1.0.0" # IO80211FamilyLegacy (Ventura) + self.ioskywalk_version: str = "1.0.0" # IOSkywalkFamily (Ventura) self.bigsursdxc_version: str = "1.0.0" # BigSurSDXC self.monterey_ahci_version: str = "1.0.0" # CatalinaAHCI @@ -418,6 +420,14 @@ class Constants: def io80211elcap_path(self): return self.payload_kexts_path / Path(f"Wifi/IO80211ElCap-v{self.io80211elcap_version}.zip") + @property + def io80211legacy_path(self): + return self.payload_kexts_path / Path(f"Wifi/IO80211FamilyLegacy-v{self.io80211legacy_version}.zip") + + @property + def ioskywalk_path(self): + return self.payload_kexts_path / Path(f"Wifi/IOSkywalkFamily-v{self.ioskywalk_version}.zip") + @property def applealc_path(self): return self.payload_kexts_path / Path(f"Acidanthera/AppleALC-v{self.applealc_version}-{self.kext_variant}.zip") diff --git a/resources/sys_patch/sys_patch.py b/resources/sys_patch/sys_patch.py index 6dcf7749c..818285140 100644 --- a/resources/sys_patch/sys_patch.py +++ b/resources/sys_patch/sys_patch.py @@ -33,7 +33,6 @@ # 'sudo ditto /Library/Developer/KDKs//System /System/Volumes/Update/mnt1/System' import plistlib -import shutil import subprocess from pathlib import Path from datetime import datetime diff --git a/resources/sys_patch/sys_patch_detect.py b/resources/sys_patch/sys_patch_detect.py index 48a9dd62f..251b19936 100644 --- a/resources/sys_patch/sys_patch_detect.py +++ b/resources/sys_patch/sys_patch_detect.py @@ -258,7 +258,6 @@ class DetectRootPatch: if self.requires_root_kc is True: self.missing_kdk = not self._check_kdk() - self._check_networking_support() def _check_networking_support(self): @@ -272,9 +271,10 @@ class DetectRootPatch: On subsequent runs, we'll require networking to be enabled. """ - if self.constants.detected_os < os_data.os_data.ventura: + # Increase OS check if modern wifi is detected + if self.constants.detected_os < os_data.os_data.ventura if self.legacy_wifi is True else os_data.os_data.sonoma: return - if self.legacy_wifi is False: + if self.legacy_wifi is False and self.modern_wifi is False: return if self.requires_root_kc is False: return @@ -543,13 +543,13 @@ class DetectRootPatch: # Due to extracted frameworks for IO80211.framework and co, check library validation self.amfi_must_disable = True - if ( - isinstance(self.constants.computer.wifi, device_probe.Broadcom) - and self.constants.computer.wifi.chipset in [device_probe.Broadcom.Chipsets.AirPortBrcm4360, device_probe.Broadcom.Chipsets.AirportBrcmNIC]): - if self.constants.detected_os > os_data.os_data.ventura: - self.modern_wifi = True - self.amfi_must_disable = True - self.requires_root_kc = True + # if ( + # isinstance(self.constants.computer.wifi, device_probe.Broadcom) + # and self.constants.computer.wifi.chipset in [device_probe.Broadcom.Chipsets.AirPortBrcm4360, device_probe.Broadcom.Chipsets.AirportBrcmNIC]): + # if self.constants.detected_os > os_data.os_data.ventura: + # self.modern_wifi = True + # self.amfi_must_disable = True + # self.requires_root_kc = True # if self.model in ["MacBookPro5,1", "MacBookPro5,2", "MacBookPro5,3", "MacBookPro8,2", "MacBookPro8,3"]: if self.model in ["MacBookPro8,2", "MacBookPro8,3"]: @@ -566,6 +566,9 @@ class DetectRootPatch: self.legacy_gmux = True self._detect_gpus() + # This must be performed last, as it may override previous decisions + # Namely, whether we allow patches requiring KDKs + self._check_networking_support() self.root_patch_dict = { "Graphics: Nvidia Tesla": self.nvidia_tesla,