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,