diff --git a/CHANGELOG.md b/CHANGELOG.md
index 956820730..3cf29c74c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -22,6 +22,7 @@
- Resolve Ethernet support on MacPro3,1-5,1
- Fix VMM patch set
- Allow dyld shared cache swapping on pre-Haswell
+ - Add USB1.1 injection for pre-Ivy bridge units
## 0.4.6
- Fix Bluetooth support in 12.4 Release
diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist
index 9f948cec9..a31cab6da 100644
--- a/payloads/Config/config.plist
+++ b/payloads/Config/config.plist
@@ -1365,6 +1365,78 @@
PlistPath
Contents/Info.plist
+
+ Arch
+ x86_64
+ BundlePath
+ USB1.1-Injector.kext/Contents/PlugIns/AppleUSBOHCI.kext
+ Comment
+ USB1.1 - AppleUSBOHCI
+ Enabled
+
+ ExecutablePath
+ Contents/MacOS/AppleUSBOHCI
+ MaxKernel
+
+ MinKernel
+ 22.0.0
+ PlistPath
+ Contents/Info.plist
+
+
+ Arch
+ x86_64
+ BundlePath
+ USB1.1-Injector.kext/Contents/PlugIns/AppleUSBOHCIPCI.kext
+ Comment
+ USB1.1 - AppleUSBOHCIPCI
+ Enabled
+
+ ExecutablePath
+ Contents/MacOS/AppleUSBOHCIPCI
+ MaxKernel
+
+ MinKernel
+ 22.0.0
+ PlistPath
+ Contents/Info.plist
+
+
+ Arch
+ x86_64
+ BundlePath
+ USB1.1-Injector.kext/Contents/PlugIns/AppleUSBUHCI.kext
+ Comment
+ USB1.1 - AppleUSBUHCI
+ Enabled
+
+ ExecutablePath
+ Contents/MacOS/AppleUSBUHCI
+ MaxKernel
+
+ MinKernel
+ 22.0.0
+ PlistPath
+ Contents/Info.plist
+
+
+ Arch
+ x86_64
+ BundlePath
+ USB1.1-Injector.kext/Contents/PlugIns/AppleUSBUHCIPCI.kext
+ Comment
+ USB1.1 - AppleUSBUHCIPCI
+ Enabled
+
+ ExecutablePath
+ Contents/MacOS/AppleUSBUHCIPCI
+ MaxKernel
+
+ MinKernel
+ 22.0.0
+ PlistPath
+ Contents/Info.plist
+
Block
diff --git a/payloads/Kexts/USB/USB1.1-Injector-v1.0.0.zip b/payloads/Kexts/USB/USB1.1-Injector-v1.0.0.zip
new file mode 100644
index 000000000..f53397830
Binary files /dev/null and b/payloads/Kexts/USB/USB1.1-Injector-v1.0.0.zip differ
diff --git a/resources/build.py b/resources/build.py
index 7fade8bda..89d090788 100644
--- a/resources/build.py
+++ b/resources/build.py
@@ -886,6 +886,26 @@ class BuildOpenCore:
self.get_efi_binary_by_path("XhciDxe.efi", "UEFI", "Drivers")["Enabled"] = True
self.get_efi_binary_by_path("UsbBusDxe.efi", "UEFI", "Drivers")["Enabled"] = True
+ # Add UHCI/OHCI drivers
+ if not self.constants.custom_model:
+ if self.constants.computer.usb_controllers:
+ for controller in self.constants.computer.usb_controllers:
+ if isinstance(controller, device_probe.UHCIController) or isinstance(controller, device_probe.OHCIController):
+ print("- Adding UHCI/OHCI USB support")
+ shutil.copy(self.constants.apple_usb_11_injector_path, self.constants.kexts_path)
+ self.get_kext_by_bundle_path("USB1.1-Injector.kext/Contents/PlugIns/AppleUSBOHCI.kext")["Enabled"] = True
+ self.get_kext_by_bundle_path("USB1.1-Injector.kext/Contents/PlugIns/AppleUSBOHCIPCI.kext")["Enabled"] = True
+ self.get_kext_by_bundle_path("USB1.1-Injector.kext/Contents/PlugIns/AppleUSBUHCI.kext")["Enabled"] = True
+ self.get_kext_by_bundle_path("USB1.1-Injector.kext/Contents/PlugIns/AppleUSBUHCIPCI.kext")["Enabled"] = True
+ else:
+ if smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.cpu_data.sandy_bridge.value:
+ print("- Adding UHCI/OHCI USB support")
+ shutil.copy(self.constants.apple_usb_11_injector_path, self.constants.kexts_path)
+ self.get_kext_by_bundle_path("USB1.1-Injector.kext/Contents/PlugIns/AppleUSBOHCI.kext")["Enabled"] = True
+ self.get_kext_by_bundle_path("USB1.1-Injector.kext/Contents/PlugIns/AppleUSBOHCIPCI.kext")["Enabled"] = True
+ self.get_kext_by_bundle_path("USB1.1-Injector.kext/Contents/PlugIns/AppleUSBUHCI.kext")["Enabled"] = True
+ self.get_kext_by_bundle_path("USB1.1-Injector.kext/Contents/PlugIns/AppleUSBUHCIPCI.kext")["Enabled"] = True
+
# ThirdPartDrives Check
if self.constants.allow_3rd_party_drives is True:
for drive in ["SATA 2.5", "SATA 3.5", "mSATA"]:
diff --git a/resources/constants.py b/resources/constants.py
index caae8f0e9..3656552e0 100644
--- a/resources/constants.py
+++ b/resources/constants.py
@@ -60,6 +60,7 @@ class Constants:
self.topcase_version = "1.0.0" # AppleUSBTopCase
self.intel_82574l_version = "1.0.0" # Intel82574L
self.intel_8254x_version = "1.0.0" # AppleIntel8254XEthernet
+ self.apple_usb_11_injector = "1.0.0" # AppleUSBUHCI/OHCI
## Apple - Dortania Modified
self.bcm570_version = "1.0.2" # CatalinaBCM5701Ethernet
@@ -313,6 +314,10 @@ class Constants:
def intel_8254x_path(self):
return self.payload_kexts_path / Path(f"Ethernet/AppleIntel8254XEthernet-v{self.intel_8254x_version}.zip")
+ @property
+ def apple_usb_11_injector_path(self):
+ return self.payload_kexts_path / Path(f"USB/USB1.1-Injector-v{self.apple_usb_11_injector}.zip")
+
@property
def mce_path(self):
return self.payload_kexts_path / Path(f"Misc/AppleMCEReporterDisabler-v{self.mce_version}.zip")