Merge branch 'main' into sonoma-development
1
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -12,7 +12,6 @@ body:
|
||||
label: Machine Model
|
||||
description: What model was being patched?
|
||||
options:
|
||||
- MacBook4,1
|
||||
- MacBook5,1
|
||||
- MacBook5,2
|
||||
- MacBook6,1
|
||||
|
||||
20
CHANGELOG.md
@@ -8,6 +8,24 @@
|
||||
- Drops ColorSync downgrade configuration option
|
||||
- Resolve app not updating in `/Applications` after an update
|
||||
- Work-around users manually copying app to `/Applications` instead of allowing Root Volume Patcher to create a proper alias
|
||||
- Add configuration for mediaanalysisd usage
|
||||
- For systems that are the primary iCloud Photo Library host, mediaanalysisd may be unstable on large amounts of unprocessed faces
|
||||
- Applicable to 3802-based GPUs (ie. Intel Ivy Bridge and Haswell iGPUs, Nvidia Kepler dGPUs)
|
||||
- Remove MacBook4,1 references
|
||||
- Machine was never properly supported by OCLP
|
||||
- Restore support for Aquantia Aqtion 10GBe Ethernet for Pre-VT-d systems on 12.3 and newer
|
||||
- i.e. MacPro5,1 with AQC107 expansion card running macOS Ventura/Monterey 12.6.x
|
||||
- Thanks [@jazzzny](https://github.com/jazzzny)
|
||||
- Resolve AMD Vega support on pre-AVX2 Macs in macOS Ventura
|
||||
- Originally caused by regression from 0.6.2
|
||||
- Backend Changes:
|
||||
- device_probe.py:
|
||||
- Add USB device parsing via `IOUSBDevice` class
|
||||
- Streamline Bluetooth device detection
|
||||
- Add Probing for Top Case hardware (Jazzzny)
|
||||
- Improves handling for altered hardware scenarios (i.e. MacBookPro4,1 with MacBookPro3,1 topcase)
|
||||
- utilities.py:
|
||||
- Fix indexing error on Device Paths (thx [@Ausdauersportler](https://github.com/Ausdauersportler))
|
||||
- Increment Binaries:
|
||||
- PatcherSupportPkg 1.1.4 - release
|
||||
|
||||
@@ -15,7 +33,7 @@
|
||||
- Resolve partition buttons overlapping in Install OpenCore UI
|
||||
- ex. "EFI" and additional FAT32 partitions on a single drive
|
||||
- Re-enable mediaanalysisd on Ventura
|
||||
- Allows for Live Text support on systems with3802 GPUs
|
||||
- Allows for Live Text support on systems with 3802 GPUs
|
||||
- ie. Intel Ivy Bridge and Haswell, Nvidia Kepler
|
||||
- Previously disabled due to high instability in Photos with Face Scanning, now resolved
|
||||
- Work-around crashing after patching with MenuBar2 implementation enabled
|
||||
|
||||
@@ -93,6 +93,7 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m
|
||||
* [FixPCIeLinkrate](https://github.com/joevt/joevtApps)
|
||||
* [Jazzzny](https://github.com/Jazzzny)
|
||||
* Research and various contributions to the project
|
||||
* Aquantia Ethernet Patch
|
||||
* Amazing users who've graciously donate hardware:
|
||||
* [JohnD](https://forums.macrumors.com/members/johnd.53633/) - 2013 Mac Pro
|
||||
* [SpiGAndromeda](https://github.com/SpiGAndromeda) - AMD Vega 64
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
# Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk
|
||||
SupportedSMBIOS = [
|
||||
# MacBook
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
@@ -97,7 +96,6 @@ SupportedSMBIOS = [
|
||||
# Audio
|
||||
|
||||
LegacyAudio = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
@@ -182,7 +180,6 @@ ModernGPU = [
|
||||
]
|
||||
|
||||
LegacyGPU = [
|
||||
"MacBook4,1", # GMA X3100
|
||||
"MacBook5,1", # Nvidia 9000
|
||||
"MacBook5,2", # Nvidia 9000
|
||||
"MacBook6,1", # Nvidia 9000
|
||||
@@ -259,7 +256,7 @@ MacPro = ["MacPro3,1", "MacPro4,1", "MacPro5,1", "Xserve2,1", "Xserve3,1", "Dort
|
||||
# MXM iMac
|
||||
MXMiMac = ["iMac11,1", "iMac11,2", "iMac11,3", "iMac10,1", "iMac12,1", "iMac12,2", "Dortania1,1"]
|
||||
|
||||
NoAGPMSupport = ["MacBook4,1", "MacBookPro4,1", "iMac7,1", "iMac8,1", "MacPro3,1", "Xserve2,1", "Dortania1,1"]
|
||||
NoAGPMSupport = ["MacBookPro4,1", "iMac7,1", "iMac8,1", "MacPro3,1", "Xserve2,1", "Dortania1,1"]
|
||||
|
||||
AGDPSupport = [
|
||||
"MacBookPro9,1",
|
||||
@@ -284,7 +281,6 @@ AGDPSupport = [
|
||||
]
|
||||
|
||||
Missing_USB_Map = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
|
||||
@@ -818,7 +818,6 @@ class SystemPatchDictionary():
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AMDRadeonX5000.kext": "12.5",
|
||||
"AMDRadeonX5000HWServices.kext": "12.5",
|
||||
|
||||
"AMDRadeonVADriver2.bundle": "12.5",
|
||||
"AMDRadeonX5000GLDriver.bundle": "12.5",
|
||||
|
||||
111
data/usb_data.py
Normal file
@@ -0,0 +1,111 @@
|
||||
class AppleIDs:
|
||||
# All top case devices use Vendor ID 05ac
|
||||
Modern_AppleUSBTCKeyboard = [
|
||||
0x223,
|
||||
0x224,
|
||||
0x225,
|
||||
0x230,
|
||||
0x231,
|
||||
0x232,
|
||||
0x236,
|
||||
0x237,
|
||||
0x238,
|
||||
0x23f,
|
||||
0x240,
|
||||
0x241,
|
||||
0x242,
|
||||
0x243,
|
||||
0x244,
|
||||
0x245,
|
||||
0x246,
|
||||
0x247,
|
||||
0x249,
|
||||
0x24a,
|
||||
0x24b,
|
||||
0x259,
|
||||
0x25a,
|
||||
0x25b,
|
||||
0x262,
|
||||
0x263,
|
||||
0x264,
|
||||
0x24c,
|
||||
0x24d,
|
||||
0x24e,
|
||||
0x252,
|
||||
0x253,
|
||||
0x254
|
||||
]
|
||||
|
||||
Legacy_AppleUSBTCKeyboard = [
|
||||
0x20e,
|
||||
0x20f,
|
||||
0x210,
|
||||
0x214,
|
||||
0x215,
|
||||
0x216,
|
||||
0x20d,
|
||||
0x218,
|
||||
0x219,
|
||||
0x21a,
|
||||
0x21b,
|
||||
0x21c,
|
||||
0x229,
|
||||
0x22a,
|
||||
0x22b
|
||||
]
|
||||
|
||||
AppleUSBTrackpad = [
|
||||
0x20e,
|
||||
0x20f,
|
||||
0x210,
|
||||
0x30a,
|
||||
0x30b,
|
||||
0x214,
|
||||
0x215,
|
||||
0x216,
|
||||
0x217,
|
||||
0x218,
|
||||
0x219,
|
||||
0x21a,
|
||||
0x21b,
|
||||
0x21c,
|
||||
0x229,
|
||||
0x22a,
|
||||
0x22b
|
||||
]
|
||||
|
||||
AppleUSBMultiTouch = [
|
||||
0x223,
|
||||
0x224,
|
||||
0x225,
|
||||
0x230,
|
||||
0x231,
|
||||
0x232,
|
||||
0x236,
|
||||
0x237,
|
||||
0x238,
|
||||
0x23f,
|
||||
0x240,
|
||||
0x241,
|
||||
0x242,
|
||||
0x243,
|
||||
0x244,
|
||||
0x245,
|
||||
0x246,
|
||||
0x247,
|
||||
0x249,
|
||||
0x24a,
|
||||
0x24b,
|
||||
0x259,
|
||||
0x25a,
|
||||
0x25b,
|
||||
0x262,
|
||||
0x263,
|
||||
0x264,
|
||||
0x24c,
|
||||
0x24d,
|
||||
0x24e,
|
||||
0x252,
|
||||
0x253,
|
||||
0x254
|
||||
]
|
||||
@@ -64,12 +64,15 @@ Currently Zoom relies partially on Metal and so needs a small binary patch. Dosd
|
||||
* [Zoom Non-Metal Fix](http://dosdude1.com/catalina/zoomnonmetal-new.command.zip)
|
||||
|
||||
## Unable to grant special permissions to apps (ie. Camera Access to Zoom)
|
||||
Currently for Ventura 13.3 and newer, due to new patches required, permissions are yet again broken. Use TCCPlus in the Workaround dropdown to work around the issue.
|
||||
|
||||
With version 0.2.5, this issue should be full resolved
|
||||
This issue is fully resolved for 13.2.1 and lower starting from 0.2.5.
|
||||
|
||||
::: details 0.2.4 and older Work-Around
|
||||
::: details Workaround for 0.2.4, Ventura 13.3+
|
||||
|
||||
Due to the usage of `amfi_get_out_of_my_way=1`, macOS will fail to prompt users for special permissions upon application start as well as omit the entires in System Preferences. To work around this, we recommend users install [tccplus](https://github.com/jslegendre/tccplus) to manage permissions.
|
||||
Due to the usage of amfi_get_out_of_my_way=1, macOS will fail to prompt users for special permissions upon application start as well as omit the entires in System Preferences. To work around this, we recommend users install tccplus to manage permissions.
|
||||
|
||||
[Download TCCPlus](https://github.com/jslegendre/tccplus)
|
||||
|
||||
Example usage with Discord and microphone permissions:
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ Regarding OS support, see below:
|
||||
| MacPro3,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)) <br/>- Potential boot issues with stock Bluetooth card, recommend removing to avoid kernel panics |
|
||||
| MacPro4,1 | Early 2009 | ^^ | - Everything is supported as long as GPU is Metal capable <br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| MacPro5,1 | Mid 2010, Mid 2012 | ^^ | ^^ |
|
||||
| MacPro6,1 | Late 2013 | ^^ | - CPU Power Management currently unsupported<br/> - No DRM support |
|
||||
| MacPro6,1 | Late 2013 | ^^ | - DRM support is flaky |
|
||||
|
||||
### Xserve
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ Below is a rundown of the main logic that OpenCore Legacy Patcher uses to gain n
|
||||
* GopPassThrough
|
||||
* Reason: Used for proper output on machines with UGA firmware but GOP GPU
|
||||
* Logic: Provide GOP protocol instances on top of UGA protocol instances
|
||||
* Models: MacPro3,1, MacBook4,1 iMac7,1-8,1
|
||||
* Models: MacPro3,1, iMac7,1-8,1
|
||||
|
||||
:::
|
||||
|
||||
@@ -299,7 +299,7 @@ Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into m
|
||||
* SimpleMSR
|
||||
* Reason: Disables BD PROCHOT to prevent firmware throttling on Nehalem+ MacBooks
|
||||
* LegacyKeyboardInjector
|
||||
* Reason: Fixes function keys on MacBook4,1/MacBook5,2
|
||||
* Reason: Fixes function keys on MacBook5,2
|
||||
|
||||
|
||||
:::
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
Here are some common errors that users may experience while using this patcher:
|
||||
|
||||
* [OpenCore Legacy Patcher not launching](#opencore-legacy-patcher-not-launching)
|
||||
* [Stuck on `This version of Mac OS X is not supported on this platform`](#stuck-on-this-version-of-mac-os-x-is-not-supported-on-this-platform)
|
||||
* [Stuck on `This version of Mac OS X is not supported on this platform` or (🚫) Prohibited Symbol](#stuck-on-this-version-of-mac-os-x-is-not-supported-on-this-platform-or-(🚫)-prohibited-symbol)
|
||||
* [Cannot boot macOS without the USB](#cannot-boot-macos-without-the-usb)
|
||||
* [Infinite Recovery OS Booting](#infinite-recovery-os-reboot)
|
||||
* [Reboot when entering Hibernation (`Sleep Wake Failure`)](#reboot-when-entering-hibernation-sleep-wake-failure)
|
||||
* [How to Boot Big Sur Recovery](#how-to-boot-big-sur-recovery)
|
||||
* [How to Boot Recovery through OpenCore Legacy Patcher](#how-to-boot-recovery-through-opencore-legacy-patcher)
|
||||
* [Stuck on "Your Mac needs a firmware update"](#stuck-on-your-mac-needs-a-firmware-update)
|
||||
* [No Brightness Control](#no-brightness-control)
|
||||
* [Cannot connect Wi-Fi on Monterey with legacy cards](#cannot-connect-Wi-Fi-on-Monterey-with-legacy-cards)
|
||||
@@ -29,15 +29,19 @@ If the application won't launch (e.g. icon will bounce in the Dock), try launchi
|
||||
/Applications/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher
|
||||
```
|
||||
|
||||
## Stuck on `This version of Mac OS X is not supported on this platform`
|
||||
## Stuck on `This version of Mac OS X is not supported on this platform` or (🚫) Prohibited Symbol
|
||||
|
||||
This means macOS has detected an SMBIOS it does not support. To resolve this, ensure you're booting OpenCore **before** the macOS installer in the boot picker. Reminder that the option will be called `EFI Boot`.
|
||||
|
||||
Once you've booted OpenCore at least once, your hardware should now auto-boot it until either an NVRAM reset occurs, or you remove the drive with OpenCore installed.
|
||||
|
||||
However, if the 🚫 Symbol only appears after the boot process has already started (the bootscreen appears/verbose boot starts), it could mean that your USB drive has failed to pass macOS' integrity checks. To resolve this, create a new installer using a different USB drive (preferably of a different model.)
|
||||
|
||||
## Cannot boot macOS without the USB
|
||||
|
||||
By default, the OpenCore Patcher won't install OpenCore onto the internal drive itself during installs. Instead, you'll need to either [manually transfer](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html) OpenCore to the internal drive's EFI or run this patcher's Option 2 again and select your internal drive.
|
||||
By default, the OpenCore Patcher won't install OpenCore onto the internal drive itself during installs.
|
||||
|
||||
After installing macOS, OpenCore Legacy Patcher should automatically prompt you to install OpenCore onto the internal drive. However, if it doesn't show the prompt, you'll need to either [manually transfer](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html) OpenCore to the internal drive's EFI or Build and Install again and select your internal drive.
|
||||
|
||||
Reminder that once this is done, you'll need to select OpenCore in the boot picker again for your hardware to remember this entry and auto boot from then on.
|
||||
|
||||
@@ -55,7 +59,7 @@ With OpenCore Legacy Patcher, we rely on Apple Secure Boot to ensure OS updates
|
||||
sudo pmset -a hibernatemode 0
|
||||
```
|
||||
|
||||
## How to Boot Big Sur Recovery
|
||||
## How to Boot Recovery through OpenCore Legacy Patcher
|
||||
|
||||
By default, the patcher will try to hide extra boot options such as recovery from the user. To make them appear, simply press the `Spacebar` key while inside OpenCore's Picker to list all boot options.
|
||||
|
||||
@@ -160,7 +164,7 @@ Applicable models include:
|
||||
|
||||
| Family | Year | Model | Notes |
|
||||
| :---------- | :--------------------| :---------------------------- | :----------------------------------------------- |
|
||||
| MacBook | Mid 2010 and older | MacBook4,1 - MacBook7,1 | |
|
||||
| MacBook | Mid 2010 and older | MacBook5,1 - MacBook7,1 | |
|
||||
| MacBook Air | Late 2010 and older | MacBookAir2,1 - MacBookAir3,x | |
|
||||
| MacBook Pro | Mid 2010 and older | MacBookPro4,1 - MacBookPro7,x | Excludes Mid 2010 15" and 17" (MacBookPro6,x) |
|
||||
| iMac | Late 2009 and older | iMac7,1 - iMac10,x | Excludes Core i5/7 27" late 2009 iMac (iMac11,1) |
|
||||
|
||||
@@ -51,8 +51,7 @@ Note: For AirPort upgrades, only the best/newest cards are listed.
|
||||
|
||||
| SMBIOS | WiFi/BT version | UC OOB | Comment |
|
||||
|------------|-----------------|------------|---------|
|
||||
| MacBook4,1 | Wi-Fi 4 / BT 2.0 EDR | <span style="color:red"> NO </span> | Replace stock AirPort card with an mPCIE + USB Connector Adapter board with a BCM94360CS2 card |
|
||||
| MacBook5,1 | ^^ | ^^ | Use a Broadcom USB Bluetooth 4.0+ Dongle </span> |
|
||||
| MacBook5,1 | Wi-Fi 4 / BT 2.0 EDR | <span style="color:red"> NO </span> | Use a Broadcom USB Bluetooth 4.0+ Dongle </span> |
|
||||
| MacBook5,2 | WiFi 4 / BT 2.1 EDR | ^^ | Replace stock AirPort card with an mPCIE + USB Connector Adapter board with a BCM94360CS2 card |
|
||||
| MacBook6,1 | ^^ | ^^ | Replace stock AirPort card with a BCM94331PCIEBT4CAX/BCM94331PCIEBT4 card |
|
||||
| MacBook7,1 | ^^ | ^^ | ^^ |
|
||||
|
||||
@@ -127,7 +127,7 @@ The following GPUs are applicable:
|
||||
The following machines shipped stock with an unsupported GPU:
|
||||
|
||||
* iMac7,1 - iMac12,x
|
||||
* MacBook4,1 - MacBook7,1
|
||||
* MacBook5,1 - MacBook7,1
|
||||
* MacBookAir2,1 - MacBookAir4,x
|
||||
* MacBookPro4,1 - MacBookPro8,x
|
||||
* Macmini3,1 - Macmini5,x
|
||||
|
||||
BIN
images/BOOTCAMP-1.png
Executable file → Normal file
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 178 KiB |
BIN
images/BOOTCAMP-2.png
Executable file → Normal file
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 312 KiB |
|
Before Width: | Height: | Size: 542 KiB After Width: | Height: | Size: 504 KiB |
|
Before Width: | Height: | Size: 427 KiB After Width: | Height: | Size: 382 KiB |
|
Before Width: | Height: | Size: 307 KiB After Width: | Height: | Size: 446 KiB |
|
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 368 KiB |
|
Before Width: | Height: | Size: 206 KiB After Width: | Height: | Size: 268 KiB |
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 257 KiB After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 251 KiB After Width: | Height: | Size: 384 KiB |
|
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 387 KiB |
|
Before Width: | Height: | Size: 452 KiB After Width: | Height: | Size: 473 KiB |
|
Before Width: | Height: | Size: 450 KiB After Width: | Height: | Size: 492 KiB |
|
Before Width: | Height: | Size: 526 KiB After Width: | Height: | Size: 554 KiB |
|
Before Width: | Height: | Size: 530 KiB After Width: | Height: | Size: 548 KiB |
|
Before Width: | Height: | Size: 533 KiB After Width: | Height: | Size: 551 KiB |
|
Before Width: | Height: | Size: 530 KiB After Width: | Height: | Size: 536 KiB |
|
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 273 KiB |
|
Before Width: | Height: | Size: 451 KiB After Width: | Height: | Size: 476 KiB |
|
Before Width: | Height: | Size: 298 KiB |
|
Before Width: | Height: | Size: 297 KiB |
|
Before Width: | Height: | Size: 309 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 451 KiB After Width: | Height: | Size: 476 KiB |
|
Before Width: | Height: | Size: 370 KiB |
|
Before Width: | Height: | Size: 292 KiB |
|
Before Width: | Height: | Size: 435 KiB |
|
Before Width: | Height: | Size: 404 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 251 KiB |
|
Before Width: | Height: | Size: 304 KiB |
|
Before Width: | Height: | Size: 706 KiB |
|
Before Width: | Height: | Size: 374 KiB After Width: | Height: | Size: 654 KiB |
|
Before Width: | Height: | Size: 349 KiB |
|
Before Width: | Height: | Size: 392 KiB |
|
Before Width: | Height: | Size: 791 KiB |
BIN
images/munki.png
|
Before Width: | Height: | Size: 291 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 209 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 316 KiB After Width: | Height: | Size: 536 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 332 KiB After Width: | Height: | Size: 447 KiB |
|
Before Width: | Height: | Size: 445 KiB After Width: | Height: | Size: 474 KiB |
|
Before Width: | Height: | Size: 446 KiB After Width: | Height: | Size: 476 KiB |
@@ -1653,6 +1653,42 @@
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>Aquantia Ethernet Patch - Core</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>21.4.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AppleEthernetAbuantiaAqtion.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AppleEthernetAbuantiaAqtion</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>Aquantia Ethernet Patch - Firmware</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>21.4.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AppleEthernetAbuantiaAqtionFirmware.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AppleEthernetAbuantiaAqtionFirmware</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>Block</key>
|
||||
<array>
|
||||
|
||||
BIN
payloads/Kexts/Ethernet/AppleEthernetAbuantiaAqtion-v1.0.0.zip
Normal file
@@ -1,346 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IOPlatformThermalProfile</key>
|
||||
<dict>
|
||||
<key>ConfigArray</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>WWEN</key>
|
||||
<true/>
|
||||
<key>model</key>
|
||||
<string>MacBook4,1</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CStateDict</key>
|
||||
<dict>
|
||||
<key>MacBook4,1</key>
|
||||
<string>CSD3</string>
|
||||
<key>CSD3</key>
|
||||
<dict>
|
||||
<key>C6</key>
|
||||
<dict>
|
||||
<key>enable</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>ControlArray</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Desc-Key</key>
|
||||
<string>CPU_PLIMIT</string>
|
||||
<key>IOClass</key>
|
||||
<string>AppleSMCControl</string>
|
||||
<key>control-flags</key>
|
||||
<integer>2</integer>
|
||||
<key>control-id</key>
|
||||
<integer>10</integer>
|
||||
<key>location</key>
|
||||
<string>cpu plimit</string>
|
||||
<key>type</key>
|
||||
<string>smc</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Desc-Key</key>
|
||||
<string>CPU_STATE</string>
|
||||
<key>IOClass</key>
|
||||
<string>AppleSMCControl</string>
|
||||
<key>control-flags</key>
|
||||
<integer>2</integer>
|
||||
<key>control-id</key>
|
||||
<integer>13</integer>
|
||||
<key>location</key>
|
||||
<string>cpu state</string>
|
||||
<key>type</key>
|
||||
<string>smc</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Desc-Key</key>
|
||||
<string>GPU_PLIMIT</string>
|
||||
<key>IOClass</key>
|
||||
<string>AppleSMCControl</string>
|
||||
<key>control-flags</key>
|
||||
<integer>2</integer>
|
||||
<key>control-id</key>
|
||||
<integer>11</integer>
|
||||
<key>location</key>
|
||||
<string>gpu plimit</string>
|
||||
<key>type</key>
|
||||
<string>smc</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Desc-Key</key>
|
||||
<string>GPU_STATE</string>
|
||||
<key>IOClass</key>
|
||||
<string>AppleSMCControl</string>
|
||||
<key>control-flags</key>
|
||||
<integer>2</integer>
|
||||
<key>control-id</key>
|
||||
<integer>14</integer>
|
||||
<key>location</key>
|
||||
<string>gpu state</string>
|
||||
<key>type</key>
|
||||
<string>smc</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Desc-Key</key>
|
||||
<string>MEM_PLIMIT</string>
|
||||
<key>IOClass</key>
|
||||
<string>AppleSMCControl</string>
|
||||
<key>control-flags</key>
|
||||
<integer>2</integer>
|
||||
<key>control-id</key>
|
||||
<integer>12</integer>
|
||||
<key>location</key>
|
||||
<string>mem plimit</string>
|
||||
<key>type</key>
|
||||
<string>smc</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CreationDate</key>
|
||||
<string>Tue May 26 15:26:07 PDT 2009</string>
|
||||
<key>CtrlLoopArray</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>SMC_CPU_Control_Loop</string>
|
||||
<key>IOClass</key>
|
||||
<string>ACPI_SMC_CtrlLoop</string>
|
||||
<key>PLimitClass</key>
|
||||
<array>
|
||||
<string>CPU</string>
|
||||
</array>
|
||||
<key>MetaStateArray</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>Normal</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>Reduced Power</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>User Low Power</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>User High Power</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>StepDataDict</key>
|
||||
<dict>
|
||||
<key>MacBook4,1</key>
|
||||
<string>SP1</string>
|
||||
<key>SP1</key>
|
||||
<data>
|
||||
xgYAAAAAAQIEAAACAgAAVQBuAHMAcABlAGMAaQBmAGkAZQBkDAAH/wcAACEAAAACAAAB//8A/wD/
|
||||
AP8A/wD/AAYAAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wAL
|
||||
DwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD
|
||||
/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/
|
||||
AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsP
|
||||
AAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/
|
||||
AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8B
|
||||
AAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8A
|
||||
AP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8A
|
||||
Cw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEA
|
||||
A/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA
|
||||
/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wALDwAA/wEAA/8ACw8AAP8BAAP/AAsPAAD/AQAD/wAL
|
||||
DwAA/wEAA/8ACw8AAP8BAAP/AAsKAAABCgAAAQAAAAEAAAD1AAEFAAABAAAF/wABAAAAAQAAAAEG
|
||||
AAACAAAABAEAAIAAwwC3AC4ANAALAAAAAgAAAAEAAAABAAAAAgAAAAICAAACBgAAAQAAAAEAAAD1
|
||||
AAEFAAADAAAF/wADAgAAAwYAAAkAAAAEAAAATAAEBQAABAAABf8AAwAAAAEAAAAEBAAAgAAAAAoK
|
||||
AAAIAAAABQAAAAgAAAAFAAAAAwAAAAIAAAAFBgAABwAAAAEAAAD1AAEFAAAGAAAF/wADAAAAAwAA
|
||||
AAYGAAACAAAABAAAAKAADwUAAAcEAAAHAAAAAwAAAAQAAAAHBgAACAoAAAMAAAX/AAQCAAAIBgAA
|
||||
AQAAAAEAAADoAAMFAAAJAAAF/wAFAgAACQYAAAIAAAAEAAAA6AADBQAADQAAAAoAAAANAAAACgAA
|
||||
AAUAAAABAAAACgYAAAcAAAABAAAA9QABBQAACwAABf8ABQAAAAIAAAALBgAAAgAAAAQAAACgAA8F
|
||||
AAAMBAAADAAAAAUAAAADAAAADAYAAAgKAAAJAAAF/wAGAgAADQYAAAEAAAABAAAA6AADBQAADgAA
|
||||
Bf8ABwIAAA4GAAACAAAABAAAAFgAGwUAABIAAAAPAAAAEgAAAA8AAAAHAAAAAQAAAA8GAAAHAAAA
|
||||
AQAAAPUAAQUAABAAAAX/AAcAAAACAAAAEAYAAAIAAAAEAAAAoAAPBQAAEQQAABEAAAAHAAAAAwAA
|
||||
ABEGAAAICgAADgAABf8ACAIAABIGAAABAAAAAQAAAOgAAwUAABMAAAX/AAkCAAATBgAAAgAAAAQA
|
||||
AAD8AAgFAAAXAAAAFAAAABcAAAAUAAAACQAAAAEAAAAUBgAABwAAAAEAAAD1AAEFAAAVAAAF/wAJ
|
||||
AAAAAgAAABUGAAACAAAABAAAAKAADwUAABYEAAAWAAAACQAAAAMAAAAWBgAACAoAABMAAAX/AAoC
|
||||
AAAXBgAAAQAAAAEAAADoAAMFAAAYAAAF/wALAgAAGAYAAAIAAAAEAAAAKAAKBQAAHAAAABkAAAAc
|
||||
AAAAGQAAAAsAAAABAAAAGQYAAAcAAAABAAAA9QABBQAAGgAABf8ACwAAAAIAAAAaBgAAAgAAAAQA
|
||||
AACgAA8FAAAbBAAAGwAAAAsAAAADAAAAGwYAAAgKAAAYAAAF/wAMAgAAHAYAAAEAAAABAAAA9AAB
|
||||
BQAAHQAABf8ADQIAAB0GAAACAAAABAEAAIAAwwC3AC4ANAALAAAAHQAAAB4AAAAdAAAAHgAAAA0A
|
||||
AAABAAAAHgYAAAcAAAABAAAA9QABBQAAHwAABf8ADQAAAAIAAAAfBgAAAgAAAAQAAACgAA8FAAAg
|
||||
BAAAIAAAAA0AAAADAAAAIAYAAAgKAAAdAAAF/w==
|
||||
</data>
|
||||
</dict>
|
||||
<key>ctrlloop-id</key>
|
||||
<integer>0</integer>
|
||||
<key>is-state-driven</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>SMC_GPU_sensor_Control_Loop</string>
|
||||
<key>GPUPowerMgmtFloorArray</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
</array>
|
||||
<key>GPUThresholdDict</key>
|
||||
<dict>
|
||||
<key>MacBook4,1</key>
|
||||
<string>TA3</string>
|
||||
<key>TA3</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>high-threshold</key>
|
||||
<integer>25</integer>
|
||||
<key>low-threshold</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>high-threshold</key>
|
||||
<integer>33</integer>
|
||||
<key>low-threshold</key>
|
||||
<integer>25</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>high-threshold</key>
|
||||
<integer>99</integer>
|
||||
<key>low-threshold</key>
|
||||
<integer>33</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>high-threshold</key>
|
||||
<integer>100</integer>
|
||||
<key>low-threshold</key>
|
||||
<integer>99</integer>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<key>IOClass</key>
|
||||
<string>ACPI_SMC_CtrlLoop</string>
|
||||
<key>PLimitClass</key>
|
||||
<array>
|
||||
<string>GPU</string>
|
||||
</array>
|
||||
<key>MetaStateArray</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>Normal</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>Reduced Power</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>User Low Power</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>User High Power</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>SensorIDArray</key>
|
||||
<array>
|
||||
<integer>6</integer>
|
||||
</array>
|
||||
<key>ctrlloop-id</key>
|
||||
<integer>1</integer>
|
||||
<key>is-state-driven</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>SMC_Memory_Control_Loop</string>
|
||||
<key>IOClass</key>
|
||||
<string>ACPI_SMC_CtrlLoop</string>
|
||||
<key>PLimitClass</key>
|
||||
<array>
|
||||
<string>Mem</string>
|
||||
</array>
|
||||
<key>MCHThrottleDict</key>
|
||||
<dict>
|
||||
<key>MacBook4,1</key>
|
||||
<string>MT3</string>
|
||||
<key>MT3</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>DTC_WAB</key>
|
||||
<integer>32</integer>
|
||||
<key>DTC_WAT</key>
|
||||
<integer>0</integer>
|
||||
<key>GTC_WAB</key>
|
||||
<integer>0</integer>
|
||||
<key>GTC_WAT</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>DTC_WAB</key>
|
||||
<integer>32</integer>
|
||||
<key>DTC_WAT</key>
|
||||
<integer>0</integer>
|
||||
<key>GTC_WAB</key>
|
||||
<integer>0</integer>
|
||||
<key>GTC_WAT</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>DTC_WAB</key>
|
||||
<integer>32</integer>
|
||||
<key>DTC_WAT</key>
|
||||
<integer>0</integer>
|
||||
<key>GTC_WAB</key>
|
||||
<integer>0</integer>
|
||||
<key>GTC_WAT</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>DTC_WAB</key>
|
||||
<integer>32</integer>
|
||||
<key>DTC_WAT</key>
|
||||
<integer>0</integer>
|
||||
<key>GTC_WAB</key>
|
||||
<integer>0</integer>
|
||||
<key>GTC_WAT</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<key>MetaStateArray</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>Normal</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>Reduced Power</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>User Low Power</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Description</key>
|
||||
<string>User High Power</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>ctrlloop-id</key>
|
||||
<integer>2</integer>
|
||||
<key>is-state-driven</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>SensorArray</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Desc-Key</key>
|
||||
<string>GPU</string>
|
||||
<key>IOClass</key>
|
||||
<string>IOPlatformSensor</string>
|
||||
<key>sensor-id</key>
|
||||
<integer>6</integer>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -36,7 +36,7 @@ class BuildMiscellaneous:
|
||||
self._feature_unlock_handling()
|
||||
self._restrict_events_handling()
|
||||
self._firewire_handling()
|
||||
self._trackpad_handling()
|
||||
self._topcase_handling()
|
||||
self._thunderbolt_handling()
|
||||
self._webcam_handling()
|
||||
self._usb_handling()
|
||||
@@ -106,6 +106,12 @@ class BuildMiscellaneous:
|
||||
logging.info("- Disabling memory error reporting")
|
||||
re_block_args.append("pcie")
|
||||
|
||||
# Resolve mediaanalysisd crashing on 3802 GPUs
|
||||
# Applicable for systems that are the primary iCloud Photos library host, with large amounts of unprocessed faces
|
||||
if self.constants.disable_mediaanalysisd is True:
|
||||
logging.info("- Disabling mediaanalysisd")
|
||||
re_block_args.append("media")
|
||||
|
||||
return re_block_args
|
||||
|
||||
|
||||
@@ -171,25 +177,43 @@ class BuildMiscellaneous:
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("IOFireWireFamily.kext/Contents/PlugIns/AppleFWOHCI.kext")["Enabled"] = True
|
||||
|
||||
|
||||
def _trackpad_handling(self) -> None:
|
||||
def _topcase_handling(self) -> None:
|
||||
"""
|
||||
Trackpad Handler
|
||||
USB Top Case Handler
|
||||
"""
|
||||
|
||||
# Pre-Force Touch trackpad & keyboard support for macOS Ventura
|
||||
if smbios_data.smbios_dictionary[self.model]["CPU Generation"] < cpu_data.CPUGen.skylake.value:
|
||||
if self.model.startswith("MacBook"):
|
||||
# These units got force touch & the new keyboard mapping early, so ignore them
|
||||
if self.model not in ["MacBookPro11,4", "MacBookPro11,5", "MacBookPro12,1", "MacBook8,1"]:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTopCase.kext", self.constants.topcase_version, self.constants.top_case_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCButtons.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyEventDriver.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBMultitouch.kext", self.constants.multitouch_version, self.constants.multitouch_path)
|
||||
# Legacy Trackpad & Keyboard support
|
||||
if self.model in ["MacBook4,1", "MacBook5,2"]:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTrackpad.kext", self.constants.apple_trackpad, self.constants.apple_trackpad_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyKeyboardInjector.kext", self.constants.legacy_keyboard, self.constants.legacy_keyboard_path) # Inject legacy personalities into AppleUSBTCKeyboard and AppleUSBTCKeyEventDriver
|
||||
#On-device probing
|
||||
if not self.constants.custom_model and self.computer.internal_keyboard_type and self.computer.trackpad_type:
|
||||
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTopCase.kext", self.constants.topcase_version, self.constants.top_case_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCButtons.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyEventDriver.kext")["Enabled"] = True
|
||||
|
||||
if self.computer.internal_keyboard_type == "Legacy":
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyKeyboardInjector.kext", self.constants.legacy_keyboard, self.constants.legacy_keyboard_path)
|
||||
if self.computer.trackpad_type == "Legacy":
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTrackpad.kext", self.constants.apple_trackpad, self.constants.apple_trackpad_path)
|
||||
elif self.computer.trackpad_type == "Modern":
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBMultitouch.kext", self.constants.multitouch_version, self.constants.multitouch_path)
|
||||
|
||||
#Predefined fallback
|
||||
else:
|
||||
# Multi Touch Top Case support for macOS Ventura+
|
||||
if smbios_data.smbios_dictionary[self.model]["CPU Generation"] < cpu_data.CPUGen.skylake.value:
|
||||
if self.model.startswith("MacBook"):
|
||||
# These units got the Force Touch top case, so ignore them
|
||||
if self.model not in ["MacBookPro11,4", "MacBookPro11,5", "MacBookPro12,1", "MacBook8,1"]:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTopCase.kext", self.constants.topcase_version, self.constants.top_case_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCButtons.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyEventDriver.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBMultitouch.kext", self.constants.multitouch_version, self.constants.multitouch_path)
|
||||
|
||||
# Two-finger Top Case support for macOS High Sierra+
|
||||
if self.model == "MacBook5,2":
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTrackpad.kext", self.constants.apple_trackpad, self.constants.apple_trackpad_path) # Also requires AppleUSBTopCase.kext
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyKeyboardInjector.kext", self.constants.legacy_keyboard, self.constants.legacy_keyboard_path) # Inject legacy personalities into AppleUSBTCKeyboard and AppleUSBTCKeyEventDriver
|
||||
|
||||
|
||||
def _thunderbolt_handling(self) -> None:
|
||||
|
||||
@@ -63,6 +63,14 @@ class BuildWiredNetworking:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("nForceEthernet.kext", self.constants.nforce_version, self.constants.nforce_path)
|
||||
elif isinstance(controller, device_probe.Marvell) or isinstance(controller, device_probe.SysKonnect):
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("MarvelYukonEthernet.kext", self.constants.marvel_version, self.constants.marvel_path)
|
||||
|
||||
# Pre-Ivy Bridge Aquantia Ethernet Patch
|
||||
if isinstance(controller, device_probe.Aquantia) and controller.chipset == device_probe.Aquantia.Chipsets.AppleEthernetAquantiaAqtion:
|
||||
if not self.model in smbios_data.smbios_dictionary:
|
||||
continue
|
||||
if smbios_data.smbios_dictionary[self.model]["CPU Generation"] < cpu_data.CPUGen.ivy_bridge.value:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleEthernetAbuantiaAqtion.kext", self.constants.aquantia_version, self.constants.aquantia_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleEthernetAbuantiaAqtionFirmware.kext", self.constants.aquantiafirmware_version, self.constants.aquantiafirmware_path)
|
||||
|
||||
|
||||
def _prebuilt_assumption(self) -> None:
|
||||
|
||||
@@ -76,6 +76,10 @@ class Constants:
|
||||
self.bigsursdxc_version: str = "1.0.0" # BigSurSDXC
|
||||
self.monterey_ahci_version: str = "1.0.0" # CatalinaAHCI
|
||||
|
||||
## Apple - Jazzzny Modified
|
||||
self.aquantia_version: str = "1.0.0" # AppleEthernetAbuantiaAqtion
|
||||
self.aquantiafirmware_version: str = "1.0.0" # AppleEthernetAbuantiaAqtionFirmware
|
||||
|
||||
## Dortania
|
||||
## https://github.com/dortania
|
||||
self.backlight_injector_version: str = "1.1.0" # BacklightInjector
|
||||
@@ -217,6 +221,7 @@ class Constants:
|
||||
self.force_vmm: bool = False # Force VMM patch
|
||||
self.disable_connectdrivers: bool = False # Disable ConnectDrivers (hibernation)
|
||||
self.set_vmm_cpuid: bool = False # Set VMM bit inside CPUID
|
||||
self.disable_mediaanalysisd: bool = False # Set mediaanalysisd to spawn
|
||||
self.set_alc_usage: bool = True # Set AppleALC usage
|
||||
self.allow_3rd_party_drives: bool = True # Allow ThridPartyDrives quirk
|
||||
self.allow_nvme_fixing: bool = True # Allow NVMe Kernel Space Patches
|
||||
@@ -346,6 +351,14 @@ class Constants:
|
||||
@property
|
||||
def bcm570_path(self):
|
||||
return self.payload_kexts_path / Path(f"Ethernet/CatalinaBCM5701Ethernet-v{self.bcm570_version}.zip")
|
||||
|
||||
@property
|
||||
def aquantia_path(self):
|
||||
return self.payload_kexts_path / Path(f"Ethernet/AppleEthernetAbuantiaAqtion-v{self.aquantia_version}.zip")
|
||||
|
||||
@property
|
||||
def aquantiafirmware_path(self):
|
||||
return self.payload_kexts_path / Path(f"Ethernet/AppleEthernetAbuantiaAqtionFirmware-v{self.aquantiafirmware_version}.zip")
|
||||
|
||||
@property
|
||||
def i210_path(self):
|
||||
|
||||
@@ -12,7 +12,7 @@ from dataclasses import dataclass, field
|
||||
from typing import Any, ClassVar, Optional, Type, Union
|
||||
|
||||
from resources import utilities, ioreg
|
||||
from data import pci_data
|
||||
from data import pci_data, usb_data
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -22,6 +22,94 @@ class CPU:
|
||||
leafs: list[str]
|
||||
|
||||
|
||||
@dataclass
|
||||
class USBDevice:
|
||||
vendor_id: int
|
||||
device_id: int
|
||||
device_class: int
|
||||
device_speed: int
|
||||
product_name: str
|
||||
vendor_name: Optional[str] = None
|
||||
|
||||
@classmethod
|
||||
def from_ioregistry(cls, entry: ioreg.io_registry_entry_t):
|
||||
properties: dict = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperties(entry, None, ioreg.kCFAllocatorDefault, ioreg.kNilOptions)[1])
|
||||
|
||||
vendor_id = None
|
||||
device_id = None
|
||||
device_class = None
|
||||
device_speed = None
|
||||
vendor_name = None
|
||||
product_name = "N/A"
|
||||
|
||||
if "idVendor" in properties:
|
||||
vendor_id = properties["idVendor"]
|
||||
if "idProduct" in properties:
|
||||
device_id = properties["idProduct"]
|
||||
if "bDeviceClass" in properties:
|
||||
device_class = properties["bDeviceClass"]
|
||||
if "kUSBProductString" in properties:
|
||||
product_name = properties["kUSBProductString"].strip()
|
||||
if "kUSBVendorString" in properties:
|
||||
vendor_name = properties["kUSBVendorString"].strip()
|
||||
if "USBSpeed" in properties:
|
||||
device_speed = properties["USBSpeed"]
|
||||
|
||||
return cls(vendor_id, device_id, device_class, device_speed, product_name, vendor_name)
|
||||
|
||||
|
||||
def detect(self):
|
||||
self.detect_class()
|
||||
self.detect_speed()
|
||||
|
||||
|
||||
def detect_class(self) -> None:
|
||||
for device_class in self.ClassCode:
|
||||
if self.device_class == device_class.value:
|
||||
self.device_class = device_class
|
||||
|
||||
|
||||
def detect_speed(self) -> None:
|
||||
for speed in self.Speed:
|
||||
if self.device_speed == speed.value:
|
||||
self.device_speed = speed
|
||||
|
||||
class Speed(enum.Enum):
|
||||
LOW_SPEED = 0x01
|
||||
FULL_SPEED = 0x02
|
||||
HIGH_SPEED = 0x03
|
||||
SUPER_SPEED = 0x04
|
||||
SUPER_SPEED_PLUS = 0x05
|
||||
|
||||
|
||||
class ClassCode(enum.Enum):
|
||||
# https://www.usb.org/defined-class-codes
|
||||
GENERIC = 0x00
|
||||
AUDIO = 0x01
|
||||
CDC_CONTROL = 0x02
|
||||
HID = 0x03
|
||||
PHYSICAL = 0x05
|
||||
IMAGE = 0x06
|
||||
PRINTER = 0x07
|
||||
MASS_STORAGE = 0x08
|
||||
HUB = 0x09
|
||||
CDC_DATA = 0x0A
|
||||
SMART_CARD = 0x0B
|
||||
CONTENT_SEC = 0x0D
|
||||
VIDEO = 0x0E
|
||||
PERSONAL_HEALTH = 0x0F
|
||||
AUDIO_VIDEO = 0x10
|
||||
BILLBOARD = 0x11
|
||||
USB_TYPE_C_BRIDGE = 0x12
|
||||
DISPLAY_BDP = 0x13
|
||||
I3C = 0x3C
|
||||
DIAGNOSTIC = 0xDC
|
||||
WIRELESS = 0xE0
|
||||
MISCELLANEOUS = 0xEF
|
||||
APPLICATION = 0xFE
|
||||
VENDOR_SPEC = 0xFF
|
||||
|
||||
|
||||
@dataclass
|
||||
class PCIDevice:
|
||||
VENDOR_ID: ClassVar[int] # Default vendor id, for subclasses.
|
||||
@@ -502,10 +590,13 @@ class Computer:
|
||||
ethernet: Optional[EthernetController] = field(default_factory=list)
|
||||
wifi: Optional[WirelessCard] = None
|
||||
cpu: Optional[CPU] = None
|
||||
usb_devices: list[USBDevice] = field(default_factory=list)
|
||||
oclp_version: Optional[str] = None
|
||||
opencore_version: Optional[str] = None
|
||||
opencore_path: Optional[str] = None
|
||||
bluetooth_chipset: Optional[str] = None
|
||||
internal_keyboard_type: Optional[str] = None
|
||||
trackpad_type: Optional[str] = None
|
||||
ambient_light_sensor: Optional[bool] = False
|
||||
third_party_sata_ssd: Optional[bool] = False
|
||||
secure_boot_model: Optional[str] = None
|
||||
@@ -528,14 +619,31 @@ class Computer:
|
||||
computer.sdxc_controller_probe()
|
||||
computer.ethernet_probe()
|
||||
computer.smbios_probe()
|
||||
computer.usb_device_probe()
|
||||
computer.cpu_probe()
|
||||
computer.bluetooth_probe()
|
||||
computer.topcase_probe()
|
||||
computer.ambient_light_sensor_probe()
|
||||
computer.sata_disk_probe()
|
||||
computer.oclp_sys_patch_probe()
|
||||
computer.check_rosetta()
|
||||
return computer
|
||||
|
||||
|
||||
def usb_device_probe(self):
|
||||
devices = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault, {"IOProviderClass": "IOUSBDevice"}, None
|
||||
)[1]
|
||||
)
|
||||
for device in devices:
|
||||
properties = USBDevice.from_ioregistry(device)
|
||||
if properties:
|
||||
properties.detect()
|
||||
self.usb_devices.append(properties)
|
||||
ioreg.IOObjectRelease(device)
|
||||
|
||||
|
||||
def gpu_probe(self):
|
||||
# Chain together two iterators: one for class code 00000300, the other for class code 00800300
|
||||
devices = ioreg.ioiterator_to_list(
|
||||
@@ -758,18 +866,41 @@ class Computer:
|
||||
return leafs
|
||||
|
||||
def bluetooth_probe(self):
|
||||
usb_data: str = subprocess.run("system_profiler SPUSBDataType".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||
if "BRCM20702 Hub" in usb_data:
|
||||
if not self.usb_devices:
|
||||
return
|
||||
|
||||
# Ensure we get the "best" bluetooth chipset (if multiple are present)
|
||||
if any("BRCM20702" in usb_device.product_name for usb_device in self.usb_devices):
|
||||
self.bluetooth_chipset = "BRCM20702 Hub"
|
||||
elif "BCM20702A0" in usb_data or "BCM2045A0" in usb_data:
|
||||
elif any("BCM20702A0" in usb_device.product_name or "BCM2045A0" in usb_device.product_name for usb_device in self.usb_devices):
|
||||
self.bluetooth_chipset = "3rd Party Bluetooth 4.0 Hub"
|
||||
elif "BRCM2070 Hub" in usb_data:
|
||||
elif any("BRCM2070 Hub" in usb_device.product_name for usb_device in self.usb_devices):
|
||||
self.bluetooth_chipset = "BRCM2070 Hub"
|
||||
elif "BRCM2046 Hub" in usb_data:
|
||||
elif any("BRCM2046 Hub" in usb_device.product_name for usb_device in self.usb_devices):
|
||||
self.bluetooth_chipset = "BRCM2046 Hub"
|
||||
elif "Bluetooth" in usb_data:
|
||||
elif any("Bluetooth" in usb_device.product_name for usb_device in self.usb_devices):
|
||||
self.bluetooth_chipset = "Generic"
|
||||
|
||||
def topcase_probe(self):
|
||||
if not self.usb_devices:
|
||||
return
|
||||
|
||||
for usb_device in self.usb_devices:
|
||||
if self.internal_keyboard_type and self.trackpad_type:
|
||||
break
|
||||
if usb_device.vendor_id != 0x5ac:
|
||||
continue
|
||||
|
||||
if usb_device.device_id in usb_data.AppleIDs.Legacy_AppleUSBTCKeyboard:
|
||||
self.internal_keyboard_type = "Legacy"
|
||||
elif usb_device.device_id in usb_data.AppleIDs.Modern_AppleUSBTCKeyboard:
|
||||
self.internal_keyboard_type = "Modern"
|
||||
|
||||
if usb_device.device_id in usb_data.AppleIDs.AppleUSBTrackpad:
|
||||
self.trackpad_type = "Legacy"
|
||||
elif usb_device.device_id in usb_data.AppleIDs.AppleUSBMultiTouch:
|
||||
self.trackpad_type = "Modern"
|
||||
|
||||
def sata_disk_probe(self):
|
||||
# Get all SATA Controllers/Disks from 'system_profiler SPSerialATADataType'
|
||||
# Determine whether SATA SSD is present and Apple-made
|
||||
|
||||
@@ -437,7 +437,7 @@ def clean_device_path(device_path: str):
|
||||
if len(device_path_array) >= 2:
|
||||
device_path_stripped = device_path_array[-2]
|
||||
device_path_root_array = device_path_stripped.split(",")
|
||||
if len(device_path_root_array) >= 2:
|
||||
if len(device_path_root_array) > 2:
|
||||
return device_path_root_array[2]
|
||||
return None
|
||||
|
||||
|
||||
@@ -386,6 +386,17 @@ class SettingsFrame(wx.Frame):
|
||||
"for unsupported models.",
|
||||
],
|
||||
},
|
||||
"Disable mediaanalysisd service": {
|
||||
"type": "checkbox",
|
||||
"value": self.constants.disable_mediaanalysisd,
|
||||
"variable": "disable_mediaanalysisd",
|
||||
"description": [
|
||||
"For systems that are the primary iCloud",
|
||||
"Photo Library host with a 3802-based GPU,",
|
||||
"this may aid in prolonged idle stability.",
|
||||
],
|
||||
"condition": gui_support.CheckProperties(self.constants).host_has_3802_gpu()
|
||||
},
|
||||
"wrap_around 1": {
|
||||
"type": "wrap_around",
|
||||
},
|
||||
@@ -1003,7 +1014,7 @@ Hardware Information:
|
||||
if self.constants.computer.real_model in smbios_data.smbios_dictionary:
|
||||
if self.constants.detected_os > smbios_data.smbios_dictionary[self.constants.computer.real_model]["Max OS Supported"]:
|
||||
chassis_type = "aluminum"
|
||||
if self.constants.computer.real_model in ["MacBook4,1", "MacBook5,2", "MacBook6,1", "MacBook7,1"]:
|
||||
if self.constants.computer.real_model in ["MacBook5,2", "MacBook6,1", "MacBook7,1"]:
|
||||
chassis_type = "plastic"
|
||||
dlg = wx.MessageDialog(self.frame_modal, f"This model, {self.constants.computer.real_model}, does not natively support macOS {os_data.os_conversion.kernel_to_os(self.constants.detected_os)}, {os_data.os_conversion.convert_kernel_to_marketing_name(self.constants.detected_os)}. The last native OS was macOS {os_data.os_conversion.kernel_to_os(smbios_data.smbios_dictionary[self.constants.computer.real_model]['Max OS Supported'])}, {os_data.os_conversion.convert_kernel_to_marketing_name(smbios_data.smbios_dictionary[self.constants.computer.real_model]['Max OS Supported'])}\n\nToggling this option will break booting on this OS. Are you absolutely certain this is desired?\n\nYou may end up with a nice {chassis_type} brick 🧱", "Are you certain?", wx.YES_NO | wx.ICON_WARNING | wx.NO_DEFAULT)
|
||||
if dlg.ShowModal() == wx.ID_NO:
|
||||
|
||||
@@ -13,7 +13,7 @@ import packaging.version
|
||||
from pathlib import Path
|
||||
|
||||
from resources.wx_gui import gui_about
|
||||
from resources import constants
|
||||
from resources import constants, device_probe
|
||||
from data import model_array, os_data, smbios_data
|
||||
|
||||
|
||||
@@ -179,6 +179,26 @@ class CheckProperties:
|
||||
|
||||
return packaging.version.parse(oclp_plist["PatcherSupportPkg"])
|
||||
|
||||
def host_has_3802_gpu(self) -> bool:
|
||||
"""
|
||||
Check if either host, or override model, has a 3802 GPU
|
||||
"""
|
||||
gpu_dict = [] if self.constants.custom_model else self.constants.computer.gpus
|
||||
model = self.constants.custom_model if self.constants.custom_model else self.constants.computer.real_model
|
||||
if gpu_dict == []:
|
||||
gpu_dict = smbios_data.smbios_dictionary[model]["Stock GPUs"] if model in smbios_data.smbios_dictionary else []
|
||||
|
||||
for gpu in gpu_dict:
|
||||
if not self.constants.custom_model:
|
||||
gpu = gpu.arch
|
||||
if gpu in [
|
||||
device_probe.Intel.Archs.Ivy_Bridge,
|
||||
device_probe.Intel.Archs.Haswell,
|
||||
device_probe.NVIDIA.Archs.Kepler,
|
||||
]:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
class PayloadMount:
|
||||
|
||||
|
||||