diff --git a/CHANGELOG.md b/CHANGELOG.md index 49b5c548c..20b2a0957 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ - CPUFriend 1.2.5 - release - WhateverGreen 1.5.8 - release - AutoPkgInstaller 1.0.0 - release + - BlueToolFixup 2.6.2 - adjusted - Speed up loading available remote macOS Installers from Apple - Skips writing catalogs to disk, loads into memory directly - Implement Automatic Patch Detection/Installation @@ -53,6 +54,9 @@ - Simplify Binary options - Removes Online Patcher Variants - Offline variants are now new defaults, no longer retain `Offline` suffix +- Resolve legacy Bluetooth Support on 12.3 beta 3 + - Disables USB Address erroring on some pre-Bluetooth 4.0 chipsets + - ex. `ERROR -- Third Party Dongle has the same address as the internal module` ## 0.4.3 - Increment Binaries: diff --git a/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.1-DEBUG.zip b/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.1-DEBUG.zip deleted file mode 100644 index 269fc8696..000000000 Binary files a/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.1-DEBUG.zip and /dev/null differ diff --git a/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.1-RELEASE.zip b/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.1-RELEASE.zip deleted file mode 100644 index 1c9bd0f9c..000000000 Binary files a/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.1-RELEASE.zip and /dev/null differ diff --git a/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.2-DEBUG.zip b/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.2-DEBUG.zip new file mode 100644 index 000000000..88dfc307f Binary files /dev/null and b/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.2-DEBUG.zip differ diff --git a/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.2-RELEASE.zip b/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.2-RELEASE.zip new file mode 100644 index 000000000..a7d7617bc Binary files /dev/null and b/payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.2-RELEASE.zip differ diff --git a/payloads/Kexts/Acidanthera/BlueToolFixup.patch b/payloads/Kexts/Acidanthera/BlueToolFixup.patch new file mode 100644 index 000000000..a8cc702d1 --- /dev/null +++ b/payloads/Kexts/Acidanthera/BlueToolFixup.patch @@ -0,0 +1,48 @@ +diff --git a/BrcmPatchRAM/BlueToolFixup.cpp b/BrcmPatchRAM/BlueToolFixup.cpp +index a6e3c69..701a9ad 100644 +--- a/BrcmPatchRAM/BlueToolFixup.cpp ++++ b/BrcmPatchRAM/BlueToolFixup.cpp +@@ -48,6 +48,35 @@ bool BlueToolFixup::start(IOService *provider) { + static const uint8_t kSkipUpdateFilePathOriginal[] = "/etc/bluetool/SkipBluetoothAutomaticFirmwareUpdate"; + static const uint8_t kSkipUpdateFilePathPatched[] = "/System/Library/CoreServices/boot.efi"; + ++ ++// Workaround 12.3 Beta 3 bug where macOS will detect the Bluetooth chipset twice ++// Once and internal, and second as external dongle: ++// 'ERROR -- Third Party Dongle has the same address as the internal module' ++static const uint8_t kSkipAddressCheckOriginal[] = ++{ ++ 0x48, 0x8D, 0x05, 0xC5, 0x97, 0x65, 0x00, // lea rax ++ 0x8B, 0x48, 0x53, // mov ecx ++ 0x33, 0x0B, // xor ecx ++ 0x0F, 0xB7, 0x50, 0x57, // movzx edx ++ 0x66, 0x33, 0x53, 0x04, // xor dx ++ 0x0F, 0xB7, 0xD2, // movzx edx, dx ++ 0x09, 0xCA, // or edx, ecx ++ 0x74, 0x0E, // je ++}; ++ ++static const uint8_t kSkipAddressPatched[] = ++{ ++ 0x48, 0x8D, 0x05, 0xC5, 0x97, 0x65, 0x00, // lea rax ++ 0x8B, 0x48, 0x53, // mov ecx ++ 0x33, 0x0B, // xor ecx ++ 0x0F, 0xB7, 0x50, 0x57, // movzx edx ++ 0x66, 0x33, 0x53, 0x04, // xor dx ++ 0x0F, 0xB7, 0xD2, // movzx edx, dx ++ 0x09, 0xCA, // or edx, ecx ++ 0x75, 0x0E, // jne ++}; ++ ++ + static const uint8_t kVendorCheckOriginal[] = + { + 0x81, 0xFA, // cmp edx +@@ -131,6 +160,7 @@ static void patched_cs_validate_page(vnode_t vp, memory_object_t pager, memory_o + } + else if (strcmp(path + dirLength, "bluetoothd") == 0) { + searchAndPatch(data, PAGE_SIZE, path, kVendorCheckOriginal, kVendorCheckPatched); ++ searchAndPatch(data, PAGE_SIZE, path, kSkipAddressCheckOriginal, kSkipAddressPatched); + searchAndPatch(data, PAGE_SIZE, path, kBadChipsetCheckOriginal, kBadChipsetCheckPatched); + if (shouldPatchBoardId) + searchAndPatch(data, PAGE_SIZE, path, boardIdsWithUSBBluetooth[0], kBoardIdSize, BaseDeviceInfo::get().boardIdentifier, kBoardIdSize); diff --git a/resources/constants.py b/resources/constants.py index 6ae065c70..898535629 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -44,7 +44,7 @@ class Constants: self.featureunlock_version = "1.0.8" # FeatureUnlock self.debugenhancer_version = "1.0.4" # DebugEnhancer self.cpufriend_version = "1.2.5" # CPUFriend - self.bluetool_version = "2.6.1" # BlueToolFixup (BrcmPatchRAM) + self.bluetool_version = "2.6.2" # BlueToolFixup (BrcmPatchRAM) self.cslvfixup_version = "2.6.1" # CSLVFixup self.autopkg_version = "1.0.0" # AutoPkgInstaller