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")