mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-14 20:58:21 +10:00
Update BlueToolFixup
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
- Lilu 1.6.2 - release
|
||||
- FeatureUnlock 1.0.9 release
|
||||
- PatcherSupportPkg 0.6.1 - release
|
||||
- BrcmPatchRAM 2.6.3 - release
|
||||
|
||||
## 0.4.10
|
||||
- Resolve Nvidia Kepler support in macOS 12.5 Beta 3 and newer
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.3-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.3-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.3-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.3-RELEASE.zip
Normal file
Binary file not shown.
@@ -1,40 +0,0 @@
|
||||
diff --git a/BrcmPatchRAM/BlueToolFixup.cpp b/BrcmPatchRAM/BlueToolFixup.cpp
|
||||
index a6e3c69..5e8a424 100644
|
||||
--- a/BrcmPatchRAM/BlueToolFixup.cpp
|
||||
+++ b/BrcmPatchRAM/BlueToolFixup.cpp
|
||||
@@ -48,6 +48,27 @@ 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.4 Beta 3+ bug where macOS may detect the Bluetooth chipset twice
|
||||
+// Once as internal, and second as an external dongle:
|
||||
+// 'ERROR -- Third Party Dongle has the same address as the internal module'
|
||||
+// Applicable for BCM2046 and BCM2070 chipsets (BT2.1)
|
||||
+static const uint8_t kSkipAddressCheckOriginal[] =
|
||||
+{
|
||||
+ 0x48, 0x89, 0xF3, // mov rbx, rsi
|
||||
+ 0xE8, 0xE3, 0xF3, 0xFE, 0xFF, // call sub_1000c5bc6
|
||||
+ 0x85, 0xC0, // test eax, eax
|
||||
+ 0x74, 0x1D, // je loc_1000d6804
|
||||
+};
|
||||
+
|
||||
+static const uint8_t kSkipAddressCheckPatched[] =
|
||||
+{
|
||||
+ 0x48, 0x89, 0xF3, // mov rbx, rsi
|
||||
+ 0xE8, 0xE3, 0xF3, 0xFE, 0xFF, // call sub_1000c5bc6
|
||||
+ 0x85, 0xC0, // test eax, eax
|
||||
+ 0x72, 0x1D, // jb short loc_1000d6804
|
||||
+};
|
||||
+
|
||||
static const uint8_t kVendorCheckOriginal[] =
|
||||
{
|
||||
0x81, 0xFA, // cmp edx
|
||||
@@ -131,6 +152,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, kSkipAddressCheckPatched);
|
||||
searchAndPatch(data, PAGE_SIZE, path, kBadChipsetCheckOriginal, kBadChipsetCheckPatched);
|
||||
if (shouldPatchBoardId)
|
||||
searchAndPatch(data, PAGE_SIZE, path, boardIdsWithUSBBluetooth[0], kBoardIdSize, BaseDeviceInfo::get().boardIdentifier, kBoardIdSize);
|
||||
Reference in New Issue
Block a user