diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c506b9b50..e26681bcbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ## 1.4.0 - Refactor subprocess invocations - Resolve RecoveryOS support (Regression resolved in OpenCorePkg) +- Restore SPI Keyboard and Trackpad support for macOS 14.4 and newer + - Applicable for MacBook8,1, MacBookPro13,x and MacBookPro14,x - Increment binaries: - OpenCorePkg 0.9.7 - release diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist index 4b4c131470..1753894170 100644 --- a/payloads/Config/config.plist +++ b/payloads/Config/config.plist @@ -1799,6 +1799,42 @@ PlistPath Contents/Info.plist + + Arch + x86_64 + Comment + AppleHSSPISupport - SPI Top Case Support + Enabled + + MaxKernel + + MinKernel + 23.4.0 + BundlePath + AppleHSSPISupport.kext + ExecutablePath + Contents/MacOS/AppleHSSPISupport + PlistPath + Contents/Info.plist + + + Arch + x86_64 + Comment + AppleHSSPIHIDDriver - SPI Top Case Support + Enabled + + MaxKernel + + MinKernel + 23.4.0 + BundlePath + AppleHSSPIHIDDriver.kext + ExecutablePath + Contents/MacOS/AppleHSSPIHIDDriver + PlistPath + Contents/Info.plist + Block diff --git a/payloads/Kexts/Misc/AppleHSSPIHIDDriver-v1.0.0.zip b/payloads/Kexts/Misc/AppleHSSPIHIDDriver-v1.0.0.zip new file mode 100644 index 0000000000..a2976878c5 Binary files /dev/null and b/payloads/Kexts/Misc/AppleHSSPIHIDDriver-v1.0.0.zip differ diff --git a/payloads/Kexts/Misc/AppleHSSPISupport-v1.0.0.zip b/payloads/Kexts/Misc/AppleHSSPISupport-v1.0.0.zip new file mode 100644 index 0000000000..cfb3b79ba2 Binary files /dev/null and b/payloads/Kexts/Misc/AppleHSSPISupport-v1.0.0.zip differ diff --git a/resources/build/misc.py b/resources/build/misc.py index eddfbb53a1..2adc375665 100644 --- a/resources/build/misc.py +++ b/resources/build/misc.py @@ -180,9 +180,17 @@ def _firewire_handling(self) -> None: def _topcase_handling(self) -> None: """ - USB Top Case Handler + USB/SPI Top Case Handler """ + # macOS 14.4 Beta 1 strips SPI-based top case support for USB-C Macs pre-T2 + if self.model.startswith("MacBook") and self.model in smbios_data.smbios_dictionary: + if self.model == "MacBook8,1" or (cpu_data.CPUGen.skylake <= smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.CPUGen.kaby_lake): + logging.info("- Enabling SPI-based top case support") + support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleHSSPISupport.kext", self.constants.apple_spi_version, self.constants.apple_spi_path) + support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleHSSPIHIDDriver.kext", self.constants.apple_spi_hid_version, self.constants.apple_spi_hid_path) + + #On-device probing if not self.constants.custom_model and self.computer.internal_keyboard_type and self.computer.trackpad_type: diff --git a/resources/constants.py b/resources/constants.py index 1703a9043c..7164b737d9 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -70,6 +70,8 @@ def __init__(self) -> None: self.t1_sse_version: str = "1.1.0" # AppleSSE (13.6 - T1 support) self.t1_key_store_version: str = "1.1.0" # AppleKeyStore (13.6 - T1 support) self.t1_corecrypto_version: str = "1.0.1" # corecrypto (13.6 - T1 support) + self.apple_spi_version: str = "1.0.0" # AppleHSSPISupport (14.4 Beta 1) + self.apple_spi_hid_version: str = "1.0.0" # AppleHSSPIHIDDriver (14.4 Beta 1) ## Apple - Dortania Modified self.bcm570_version: str = "1.0.2" # CatalinaBCM5701Ethernet @@ -459,6 +461,14 @@ def t1_sse_path(self): def t1_corecrypto_path(self): return self.payload_kexts_path / Path(f"Misc/corecrypto_T1-v{self.t1_corecrypto_version}.zip") + @property + def apple_spi_path(self): + return self.payload_kexts_path / Path(f"Misc/AppleHSSPISupport-v{self.apple_spi_version}.zip") + + @property + def apple_spi_hid_path(self): + return self.payload_kexts_path / Path(f"Misc/AppleHSSPIHIDDriver-v{self.apple_spi_hid_version}.zip") + @property def mousse_path(self): return self.payload_kexts_path / Path(f"SSE/AAAMouSSE-v{self.mousse_version}.zip")