Compare commits

..

58 Commits
2.1.2 ... 2.3.0

Author SHA1 Message Date
Mykola Grymalyuk
d1459344e4 Sync PatcherSupportPkg 2025-03-30 14:14:04 -06:00
neon ball
27b48c97f9 Minor additions 2025-03-28 16:58:23 +02:00
Mykola Grymalyuk
8098cc6520 sys_patch.py: Fix Metallib logic 2025-03-24 11:19:28 -06:00
Mykola Grymalyuk
d1bf5abd2b Sync CHANGELOG 2025-03-23 11:53:36 -06:00
Mykola Grymalyuk
28e57d5d00 Sync OpenCorePkg 2025-03-23 11:52:58 -06:00
Mykola Grymalyuk
33d1b294eb Sync kexts 2025-03-23 11:35:06 -06:00
Mykola Grymalyuk
3c91e6e9ed Sync copyright label 2025-02-15 11:08:04 -07:00
Mykola Grymalyuk
803cfcb255 Merge pull request #1155 from dortania/remove-shim
CI: Remove deprecated application
2025-02-15 11:04:18 -07:00
Mykola Grymalyuk
653f7cc56a CI: Remove deprecated application 2025-02-15 10:48:44 -07:00
neon ball
bb715537bc Fix typo 2025-01-04 10:41:10 +02:00
neon ball
16c0e880cd Update TROUBLESHOOTING.md 2025-01-04 10:39:28 +02:00
neon ball
3881fcfad1 Update TROUBLESHOOTING.md 2025-01-04 10:34:11 +02:00
neon ball
1f6bff465a Fix one more link 2025-01-02 09:36:36 +02:00
neon ball
664444edbc Fix couple links 2025-01-02 09:35:21 +02:00
Mykola Grymalyuk
bad8d24edd Merge branch 'main' of https://github.com/dortania/OpenCore-Legacy-Patcher 2025-01-01 11:10:12 -07:00
Mykola Grymalyuk
743076a411 Disable crash analytics client side 2025-01-01 11:10:02 -07:00
neon ball
10af52634f Fix typo 2024-12-31 00:18:08 +02:00
neon ball
87fad93941 Add note about High Sierra required for Sonoma installers 2024-12-29 11:04:40 +02:00
neon ball
df4e30a814 Update UNINSTALL.md 2024-12-25 19:18:50 +02:00
neon ball
041a291a14 Add link 2024-12-25 04:31:33 +02:00
neon ball
ff4a875704 Couple fixes 2024-12-22 10:24:53 +02:00
neon ball
0673714d5b Update FAQ.md 2024-12-22 10:03:16 +02:00
neon ball
12d0bbc155 Update FAQ.md 2024-12-22 10:01:54 +02:00
neon ball
12d57e0c66 Fix typo 2024-12-22 09:56:42 +02:00
neon ball
4437eaaf69 Update FAQ.md 2024-12-22 09:53:41 +02:00
neon ball
73babf41fd FAQ point about AVX/AVX2 and list of Macs supporting them 2024-12-22 09:38:06 +02:00
neon ball
77c53d393c Re-title 2024-12-18 21:51:03 +02:00
neon ball
fdc45f928d Restructure 2024-12-18 21:45:26 +02:00
neon ball
886e9a6341 Change formatting 2024-12-17 15:52:35 +02:00
neon ball
f8242874ab Add note about Big Sur not supporting reversion 2024-12-17 15:46:30 +02:00
neon ball
9c0b4f4ff2 Summary for patches included in root patching 2024-12-16 02:38:52 +02:00
neon ball
550686c88c Fix typo 2024-12-11 23:32:22 +02:00
neon ball
e39247960b Improve FeatureUnlock/mediaanalysisd doc 2024-12-11 23:07:52 +02:00
Mykola Grymalyuk
5f1e21eb09 Sync PatcherSupportPkg 2024-12-09 12:45:30 -07:00
neon ball
213e161458 Improve explanation 2024-12-04 18:40:56 +02:00
Amy
40841407c9 Squashed commit of the following:
commit 07c274ccd388e83d9054aed09a03c40384c3fad3
Author: Amy <asentientbot@gmail.com>
Date:   Fri Nov 29 12:05:29 2024 -0500

    fix typo

    vega is gcn 5 not 4

commit d929f044a585a24c8cd3c25e5776e009a02aa195
Author: Amy <asentientbot@gmail.com>
Date:   Thu Nov 28 21:45:31 2024 -0500

    split and update moraea credits

    address outdated credits in areas im personally familiar with; this isn't exhaustive and other people's need updates too
2024-11-29 12:09:21 -05:00
neon ball
5fc24214af Couple more fixes 2024-11-22 00:33:26 +02:00
neon ball
1383d6ac00 Fix Sequoia part saying "Sonoma" 2024-11-22 00:31:15 +02:00
neon ball
04bd4da742 Update POST-INSTALL.md 2024-11-22 00:14:16 +02:00
neon ball
67b44851fe Update POST-INSTALL.md 2024-11-22 00:09:53 +02:00
neon ball
38def456e0 Adjust images back 2024-11-22 00:03:18 +02:00
neon ball
ab864bd3c2 Move warning, adjust images 2024-11-22 00:00:31 +02:00
neon ball
29e75171f3 Add one more thing 2024-11-21 23:44:02 +02:00
neon ball
1bfeac3f09 Change text location 2024-11-21 23:42:48 +02:00
neon ball
82310eac1a Update INSTALLER.md 2024-11-21 23:37:21 +02:00
neon ball
46c350ba32 Fix a word 2024-11-21 23:21:29 +02:00
neon ball
6661089f89 Adjust image size and title 2024-11-21 22:58:38 +02:00
neon ball
069f191359 Add troubleshooting steps for missing EFI. 2024-11-21 22:53:34 +02:00
neon ball
01035019b2 Change note location 2024-11-21 22:32:28 +02:00
neon ball
0632d1ff7e Add note about new disk wiping and internal EFI 2024-11-21 22:28:14 +02:00
neon ball
028999f666 Link fix 2024-11-20 17:36:19 +02:00
neon ball
b686016222 Update FAQ.md 2024-11-20 17:33:07 +02:00
neon ball
9d9226cc83 Update README.md 2024-11-20 12:16:57 +02:00
neon ball
2d597501c4 Update OTA update info on front page 2024-11-20 12:13:15 +02:00
Mykola Grymalyuk
e9e681c272 Increment build 2024-11-17 10:39:22 -07:00
neon ball
4a9564fe4e Restructure 2024-11-09 13:25:29 +02:00
neon ball
66435494cc Add note about root patch 2nd run 2024-11-09 13:16:12 +02:00
neon ball
a863b5cd54 Remove random "to" 2024-11-07 16:32:02 +02:00
83 changed files with 366 additions and 245 deletions

View File

@@ -2,7 +2,7 @@ name: CI - Build wxPython
on:
push:
paths-ignore:
paths-ignore:
- 'docs/**'
workflow_dispatch:
release:
@@ -84,23 +84,6 @@ jobs:
--run-as-individual-steps
--prepare-package
- name: Prepare Update Shim (--prepare-shim)
run: >
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Project.command
--application-signing-identity "${{ env.ORG_MAC_DEVELOPER_ID_APPLICATION_IDENTITY }}"
--notarization-apple-id "${{ env.ORG_MAC_NOTARIZATION_APPLE_ID }}" --notarization-password "${{ env.ORG_MAC_NOTARIZATION_PASSWORD }}" --notarization-team-id "${{ env.ORG_MAC_NOTARIZATION_TEAM_ID }}"
--run-as-individual-steps
--prepare-shim
- name: Prepare App for Upload
run: /bin/mv ./dist/OpenCore-Patcher.app.zip ./OpenCore-Patcher-GUI.app.zip
- name: Upload App to Artifacts
uses: actions/upload-artifact@v4
with:
name: OpenCore-Patcher.app (GUI)
path: OpenCore-Patcher-GUI.app.zip
- name: Upload AutoPkg Package to Artifacts
uses: actions/upload-artifact@v4
with:
@@ -119,15 +102,6 @@ jobs:
name: OpenCore-Patcher-Uninstaller.pkg
path: ./dist/OpenCore-Patcher-Uninstaller.pkg
- name: Upload Binary to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: OpenCore-Patcher-GUI.app.zip
tag: ${{ github.ref }}
file_glob: true
- name: Upload AutoPkg Package to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d

View File

@@ -7,7 +7,6 @@ import os
import sys
import time
import argparse
import plistlib
from pathlib import Path
@@ -15,12 +14,9 @@ from ci_tooling.build_modules import (
application,
disk_images,
package,
sign_notarize,
shim
sign_notarize
)
from opencore_legacy_patcher import constants
def main() -> None:
"""
@@ -55,10 +51,6 @@ def main() -> None:
parser.add_argument("--prepare-package", action="store_true", help="CI: Prepare Package", default=False)
parser.add_argument("--prepare-assets", action="store_true", help="CI: Prepare Assets", default=False)
# CI/CD Parameters for additional steps
# If not specified, will not run additional steps
parser.add_argument("--prepare-shim", action="store_true", help="CI: Prepare Update Shim", default=False)
# Analytics Parameters
parser.add_argument("--analytics-key", type=str, help="Analytics Key", default=None)
parser.add_argument("--analytics-endpoint", type=str, help="Analytics Endpoint", default=None)
@@ -136,31 +128,6 @@ def main() -> None:
notarization_team_id=args.notarization_team_id,
).sign_and_notarize()
# Create Update Shim
if args.prepare_shim:
shim.GenerateShim().generate()
if Path("dist/OpenCore-Patcher.app").exists():
if Path("dist/OpenCore-Patcher (Original).app").exists():
Path("dist/OpenCore-Patcher (Original).app").unlink()
Path("dist/OpenCore-Patcher.app").rename("dist/OpenCore-Patcher (Original).app")
Path("dist/OpenCore-Patcher (Shim).app").rename("dist/OpenCore-Patcher.app")
# Update app version in Info.plist
plist_path = Path("dist/OpenCore-Patcher.app/Contents/Info.plist")
contents = plistlib.load(plist_path.open("rb"))
contents["CFBundleVersion"] = constants.Constants().patcher_version
contents["CFBundleShortVersionString"] = constants.Constants().patcher_version
plistlib.dump(contents, plist_path.open("wb"))
sign_notarize.SignAndNotarize(
path=Path("dist/OpenCore-Patcher.app"),
signing_identity=args.application_signing_identity,
notarization_apple_id=args.notarization_apple_id,
notarization_password=args.notarization_password,
notarization_team_id=args.notarization_team_id,
entitlements=Path("./ci_tooling/entitlements/entitlements.plist"),
).sign_and_notarize()
if __name__ == '__main__':
_start = time.time()

View File

@@ -1,5 +1,47 @@
# OpenCore Legacy Patcher changelog
## 2.3.0
- Disable crash analytics
- Disabled server side for years, removing client side
- `OpenCore-Patcher-GUI.app.zip` removed from release
- Deprecated in 1.5.0, use `OpenCore-Patcher.pkg` for installation
- Sync copyright label to 2025
- Resolve MetallibSupportPkg failing to be cached on units without Kernel Debug Kit requirements
- Resolve Broadwell widget rendering on macOS Sequoia
- Resolve non-Metal crashing on macOS Big Sur and Sequoia (15.4)
- Resolve T1 erroring on macOS Sequoia (15.4)
- Enabled non-metal beta menubar styling globally
- No changes to GUI settings
- Increment binaries:
- OpenCorePkg 1.0.4 - release
- Lilu 1.7.0 - release
- WhateverGreen 1.6.9 - release
- AirPortBrcmFixup 2.1.9 - release
- NVMeFix 1.1.2 - release
- RestrictEvents 1.1.5 - release
- FeatureUnlock 1.1.7 - release
- DebugEnhancer 1.1.0 - release
- CPUFriend 1.2.9 - release
- BlueToolFixup 2.6.9 - release
- CryptexFixup 1.0.4 - release
- PatcherSupportPkg 1.9.2 - release
## 2.2.0
- Resolved non-metal accessibility zoom on macOS Sonoma/Sequoia
- Resolved non-metal photos app on macOS Sequoia
- Resolved non-metal Screen Sharing on macOS Sequoia
- Resolved non-metal inverted screenshots on macOS Sequoia
- Improved non-metal beta menubar reliability
- Disabled non-metal broken weather background animations on macOS Sequoia
- Resolved non-metal safari hide distracting items crash on macOS Sequoia
- Resolved non-metal full screen transition on macOS Sonoma/Sequoia
- Resolved T1 Apple Pay on macOS Sequoia
- Resolved T1 TouchID support on macOS Sequoia 15.2
- Resolved iCloud sync problems
- Resolved JavaScriptCore on pre-AVX Macs on macOS Sequoia 15.2/Safari 18.2
- Increment binaries:
- PatcherSupportPkg 1.9.1 - release
## 2.1.2
- Add additional error handling for when building OpenCore errors out
- Prevents broken EFI from being installed to disk

View File

@@ -1,4 +1,4 @@
Copyright (c) 2020-2024 Dhinak G, Mykola Grymalyuk, and individual contributors.
Copyright (c) 2020-2025 Dhinak G, Mykola Grymalyuk, and individual contributors.
All rights reserved.

View File

@@ -67,8 +67,22 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m
* Great amounts of help with debugging, and code suggestions
* [vit9696](https://github.com/vit9696)
* Endless amount of help troubleshooting, determining fixes and writing patches
* [ASentientBot](https://github.com/ASentientBot), [EduCovas](https://github.com/educovas) and [ASentientHedgehog](https://github.com/moosethegoose2213)
* Legacy Acceleration Patch set and documentation, [Moraea Organization](https://github.com/moraea)
* [EduCovas](https://github.com/covasedu)
* [non-Metal patch set](https://github.com/moraea/non-metal-frameworks) for nVidia Tesla/Fermi/Maxwell/Pascal, AMD TeraScale 1/2, and Intel Core 1st/2nd Generation GPUs
* [3802 Metal patch set](https://github.com/moraea/misc-patches/tree/main/3802-Metal-15) and [MetallibSupportPkg](https://github.com/dortania/MetallibSupportPkg) for nVidia Kepler and Intel Core 3rd/4th Generation GPUs
* Metal bundle patches and shims for [nVidia Kepler](https://github.com/moraea/misc-patches/tree/main/Kepler%2013%2B), [AMD GCN 1 - 4](https://github.com/moraea/misc-patches/tree/main/GCN%2013%2B), and [AMD GCN 5 (Vega)](https://github.com/moraea/misc-patches/tree/main/vega%2013%2B)
* [IOSurface offset patches](https://github.com/moraea/misc-patches/tree/main/Sonoma%2014.4%20IOSurface) for nVidia Kepler, AMD GCN 1 - 5, and Intel Core 3rd - 6th Generation GPUs
* [legacy Wi-Fi patch set](https://github.com/moraea/unsupported-wifi-patches) restores functionality for Wi-Fi cards in all 2007 - 2017 models
* [T1 patch set](https://github.com/moraea/misc-patches/tree/main/T1-Patch) restores Touch ID, Apple Pay, and other secure functionality in 2016 - 2017 models
* AppleGVA downgrade for accelerated video decoding on 2012 - 2016 models
* OpenCL and OpenGL downgrade for AMD GCN
* [USB 1 patch](https://github.com/moraea/misc-patches/tree/main/IOUSBHostFamily-14.4)
* [ASentientHedgehog](https://github.com/moosethegoose2213)
* [non-Metal patch set](https://github.com/moraea/non-metal-frameworks) for nVidia Tesla/Fermi/Maxwell/Pascal, AMD TeraScale 1/2, and Intel Core 1st/2nd Generation GPUs
* [ASentientBot](https://github.com/ASentientBot)
* [non-Metal patch set](https://github.com/moraea/non-metal-frameworks) for nVidia Tesla/Fermi/Maxwell/Pascal, AMD TeraScale 1/2, and Intel Core 1st/2nd Generation GPUs
* [Metal bundle interposer](https://github.com/moraea/misc-patches/tree/main/sequoia%2031001%20interposer) for AMD GCN 1 - 5 and Intel Core 5th/6th Generation GPUs
* [dsce](https://github.com/moraea/dsce) and [shared code](https://github.com/moraea/moraea-common) used by some other patches
* [cdf](https://github.com/cdf)
* Mac Pro on OpenCore Patch set and documentation
* [Innie](https://github.com/cdf/Innie) and [NightShiftEnabler](https://github.com/cdf/NightShiftEnabler)
@@ -89,6 +103,9 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m
* Endless hours helping architect and troubleshoot many portions of the project
* [flagers](https://github.com/flagersgit)
* Aid with Nvidia Web Driver research and development
* [non-Metal patch set](https://github.com/moraea/non-metal-frameworks) for nVidia Tesla/Fermi/Maxwell/Pascal, AMD TeraScale 1/2, and Intel Core 1st/2nd Generation GPUs
* [Metal bundle interposer](https://github.com/moraea/misc-patches/tree/main/sequoia%2031001%20interposer) for AMD GCN 1 - 5 and Intel Core 5th/6th Generation GPUs
* LegacyRVPL, SnapshotIsKill, etc. to aid in rapid testing and development
* [joevt](https://github.com/joevt)
* [FixPCIeLinkrate](https://github.com/joevt/joevtApps)
* [Jazzzny](https://github.com/Jazzzny)

View File

@@ -1,34 +0,0 @@
"""
shim.py: Generate Update Shim
"""
from pathlib import Path
from opencore_legacy_patcher.volume import generate_copy_arguments
from opencore_legacy_patcher.support import subprocess_wrapper
class GenerateShim:
def __init__(self) -> None:
self._shim_path = "./ci_tooling/update_shim/OpenCore-Patcher.app"
self._shim_pkg = f"{self._shim_path}/Contents/Resources/OpenCore-Patcher.pkg"
self._build_pkg = "./dist/OpenCore-Patcher.pkg"
self._output_shim = "./dist/OpenCore-Patcher (Shim).app"
def generate(self) -> None:
"""
Generate Update Shim
"""
print("Generating Update Shim")
if Path(self._shim_pkg).exists():
Path(self._shim_pkg).unlink()
subprocess_wrapper.run_and_verify(generate_copy_arguments(self._build_pkg, self._shim_pkg))
if Path(self._output_shim).exists():
Path(self._output_shim).unlink()
subprocess_wrapper.run_and_verify(generate_copy_arguments(self._shim_path, self._output_shim))

View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>OpenCore-Patcher</string>
<key>CFBundleExecutable</key>
<string>OpenCore-Patcher</string>
<key>CFBundleIconFile</key>
<string>AppIcon.icns</string>
<key>CFBundleIdentifier</key>
<string>com.dortania.opencore-legacy-patcher</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>OpenCore Legacy Patcher</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>LSMinimumSystemVersion</key>
<string>10.10.0</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2020-2024 Dortania</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSRequiresAquaSystemAppearance</key>
<false/>
</dict>
</plist>

View File

@@ -1,8 +0,0 @@
# OpenCore-Patcher Update Shim
To handle the new PKG installation method, old versions of OpenCore Legacy Patcher updating to newer versions will still require 'OpenCore-Patcher.app' to be available for download.
Thus the goal of this app is to install an embedded PKG under ./OpenCore-Patcher.app/Contents/Resources/OpenCore-Patcher.pkg to handle the update process.
Source is available at:
* https://github.com/dortania/OCLP-Helper

View File

@@ -78,6 +78,26 @@ You will soon reach the installer screen! If you enabled verbose mode when build
* [OpenCore Legacy Patcher Boot Process](https://www.youtube.com/watch?v=AN3zsbQV_n4)
**Important:** If you're using a brand new disk that has not been used before, choose "View -> Show all devices" in Disk Utility and format the entire disk by choosing the topmost option in the sidebar to avoid a missing internal EFI later when trying to boot OpenCore to internal disk.
<div align="left">
<img src="./images/wipe-disk.png" alt="Wipe disk" width="800" />
</div>
::: warning Warning for T1 Macs
When installing macOS Sonoma or newer on a T1 system (2016-2017), full disk wipe will remove T1 functionality (touchbar etc). Therefore when installing, only wipe the volume containing the operating system.
<div align="left">
<img src="./images/wipe-volume.png" alt="WipeVolume" width="800" />
</div>
[More info here](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#no-t1-functionality-after-installing-sonoma-or-newer)
:::
If your Mac is looping back into the beginning of the setup after the first reboot, turn it off, start it again and hold Option. This time (after choosing `EFI Boot` first) select the option with a grey hard disk icon in the OpenCore picker. It can either say `macOS Installer` or the name you gave the disk during the installer process. Keep repeating this step after every reboot if necessary.
<div align="left">
@@ -91,18 +111,6 @@ If your Mac is looping back into the beginning of the setup after the first rebo
:::
::: warning
**T1 Macs**: When installing macOS Sonoma or newer on a T1 system, full disk wipe will remove T1 functionality (touchbar etc). Therefore when installing, only wipe the volume containing the operating system.
<div align="left">
<img src="./images/wipe-volume.png" alt="WipeVolume" width="800" />
</div>
[More info here](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#no-t1-functionality-after-installing-sonoma-or-newer)
:::
# Once installed and booting, head to [Post-Installation](./POST-INSTALL.md)

View File

@@ -7,9 +7,11 @@
* [Can I use the same USB install media as a universal installer?](#can-i-use-the-same-usb-install-media-as-a-universal-installer)
* [Can I use OTA updates?](#can-i-use-ota-updates)
* [Can I use automatic updates?](#can-i-use-automatic-updates)
* [Why are macOS updates so large?](#why-are-macos-updates-so-large)
* [Can I update to macOS betas?](#can-i-update-to-macos-betas)
* [Can I downgrade macOS while keeping data?](#can-i-downgrade-macos-while-keeping-data)
* [Why is my system slow?](#why-is-my-system-slow)
* [Applications crashing with "illegal instruction"](#applications-crashing-with-illegal-instruction)
* [What is Metal and non-Metal?](#what-is-metal-and-non-metal)
* [What are FeatureUnlock and mediaanalysisd?](#what-are-featureunlock-and-mediaanalysisd)
* [Why isn't iPhone Mirroring working?](#why-isn-t-iphone-mirroring-working)
@@ -19,7 +21,8 @@
## Application requirements
The patcher application requires **OS X Yosemite 10.10** or later to run.
* **OS X El Capitan 10.11** or later is required to make installers for macOS Ventura and later.
* **El Capitan 10.11** or later is required to make installers for macOS Ventura
* **High Sierra 10.13** or later is required to make installers for macOS Sonoma and newer.
The patcher is designed to target **macOS Big Sur 11.x to macOS Sequoia 15.x**.
* Other versions may work, albeit in a broken state. No support is provided for any version outside of the above.
@@ -66,7 +69,9 @@ General updates are usually fine, though it is always a good idea to wait few da
## Can I use automatic updates?
It is extremely recommended to disable automatic updates (even downloading) when using OCLP, as Apple has recently changed the way automatic updates work. You can still manually initiate an update when you're ready to do so. For a related "System version mismatch" error while root patching, refer to [System version mismatch error when root patching](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#system-version-mismatch-error-when-root-patching) for troubleshooting.
It is extremely recommended to disable automatic updates (even downloading) when using OCLP, as Apple has recently changed the way automatic updates work. Updates are now getting staged during the download process and are already modifying the system volume, which can lead to broken system out of nowhere since the operating system gets into a liminal state between two versions. You can still manually initiate an update when you're ready to do so.
For a related "System version mismatch" error while root patching and more information, refer to [System version mismatch error when root patching](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#system-version-mismatch-error-when-root-patching) for troubleshooting.
### Disabling updates
@@ -78,11 +83,15 @@ System Settings -> General -> Software Update -> (i) button next to Automatic Up
System Preferences -> Software Update -> Advanced -> Disable "Download new updates when available".
## Why are macOS updates so large?
macOS by default uses a sealed system volume that is unwritable. When the seal is broken, macOS thinks the volume is broken and downloads a full copy of macOS for every update to "repair" it to a known state. In order for root patching to work, this seal has to be broken since root patching by design requires on-disk file manipulation. This is also why root patches have to be reinstalled after each update.
## Can I update to macOS betas?
If you are feeling brave and don't mind having to possibly recover your system. However, be advised that no help will be given in situations where a beta was installed.
OCLP patch development and testing happens at the beta phase in order to target a stable release, as such it is impossible for OCLP to support betas properly and previous versions may be incompatible. Only install a beta if you know what you're doing, have your expectations in check and don't mind having to fully reset to recover your system.
Be advised that no help will be given in situations where a beta was installed.
## Can I downgrade macOS while keeping data?
@@ -92,12 +101,39 @@ macOS doesn't allow direct downgrades, as such you will have to wipe the disk in
This can mean many things. Firstly, newer operating systems are harder to run and can appear more slow.
Additionally if your macOS installation is recent, Spotlight starts creating a full disk index which can cause high CPU load, high temps and general slowness. It's recommended to keep the system running for few hours, once Spotlight has indexed the load will ease. A way to check whether it's caused by Spotlight is to open Activity Monitor, choosing "All Processes" from the "View" menu item to, then sorting by the CPU value to see if a process called ```mds_stores``` is using a lot of CPU resources.
Additionally if your macOS installation is recent, Spotlight starts creating a full disk index which can cause high CPU load, high temps and general slowness. It's recommended to keep the system running for few hours, once Spotlight has indexed the load will ease. A way to check whether it's caused by Spotlight is to open Activity Monitor, choosing "All Processes" from the "View" menu item, then sorting by the CPU value to see if a process called ```mds_stores``` is using a lot of CPU resources.
However, if your system is being **really** slow and you have no transparency in Dock and menubar, this typically indicates that root patches are not installed and as such there is no acceleration. Make sure to install root patches to get proper drivers and functionality. Refer to [Applying post install volume patches](https://dortania.github.io/OpenCore-Legacy-Patcher/POST-INSTALL.html#applying-post-install-volume-patches) and the [Troubleshooting](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html) section for more information.
Patches can also break if automatic updates are enabled and an update modifies the system volume, refer to [System version mismatch error when root patching](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#system-version-mismatch-error-when-root-patching) for more information.
## Applications crashing with "illegal instruction"
If the crash log includes a string saying "illegal instruction", this typically means the application requires AVX or AVX2 CPU instructions.
Since macOS Ventura, AVX2 is required from all Macs supported by it. While OCLP is able to patch macOS to boot without it, many applications are beginning to utilize AVX and AVX2 as well in newer versions because all supported Macs are expected to have them. This creates an issue for older systems where some applications cannot be ran on CPUs lacking such instructions. Some older Macs may need older versions of applications and cannot update to newer versions. AVX was introduced in Sandy Bridge CPU generation and AVX2 in Haswell generation.
In essence, this means that some models are now aging rapidly and newer OS won't always provide support for newer applications because of hardware requirements. If an application still supports macOS versions older than Ventura, it may have a chance of running on an older OS version on the old system, since some Macs running them natively don't support AVX2 and the app takes a different path.
Earliest Mac models supporting AVX instruction:
- Macmini5,x (2011)
- iMac12,x (2011)
- MacBookPro8,x (2011)
- MacBookAir4,x (2011)
- MacBook8,x (2015)
- MacPro6,1 (2013)
Earliest Mac models supporting AVX2 instruction:
- Macmini7,x (2014)
- iMac14,x (2013)
- MacBookPro11,x (2013)
- MacBookAir6,x (2013)
- MacBook8,x (2015)
- MacPro7,1 (2019)
## What is Metal and Non-Metal?
Metal is Apple's proprietary graphics API which fully superseded OpenGL rendering of the operating system starting from macOS Mojave. When the word "Non-Metal" is used, it describes GPUs that are not Metal supported and require using OpenGL instead.
@@ -117,9 +153,20 @@ Due to deprecation of OpenGL, many newer applications may require Metal renderin
## What are FeatureUnlock and mediaanalysisd?
FeatureUnlock is an extension to enable some macOS features, such as Sidecar or Universal Control. All features enabled by FeatureUnlock are listed [here](https://github.com/acidanthera/FeatureUnlock). Medianalysisd is utilized for face detection in Photos, as well as the Live Text feature.
**Important:** These features have the potential to cause instability in many places and as such a decision has been made to disable them by default (mediaanalysisd only on 3802-based* systems) starting from OpenCore Legacy Patcher version 2.1.0. If you want to enable these features at the risk of additional instability, you can do so in the OCLP settings and rebuilding OpenCore.
These features have the potential to cause instability in many places and as such a decision has been made to disable them by default (mediaanalysisd only on 3802-based* systems) starting from OpenCore Legacy Patcher version 2.1.0. If you want to enable these features at the risk of additional instability, you can do so in the OCLP settings and rebuilding OpenCore.
FeatureUnlock is an extension to enable some macOS features, including:
- Sidecar
- Universal Control
- AirPlay to Mac
- Continuity Camera
- NightShift (non-Metal)
Further information, requirements and the models affected for FeatureUnlock features can be found [here](https://github.com/acidanthera/FeatureUnlock).
Medianalysisd is utilized for
- Face detection in Photos
- Live Text
| FeatureUnlock | mediaanalysisd |
| :--- | :--- |

View File

@@ -1,9 +1,10 @@
# Creating macOS Installers
This document is centered around downloading and writing the macOS installer to a USB drive. If you're already familiar with how to do this, you can skip this section.
This document is centered around downloading and writing the macOS installer to a USB drive. If you're planning to install macOS on other system than you're currently running, it is recommended to choose the Mac model in Settings now before proceeding, so that automatic root patching works correctly later on.
* Note: A 32GB drive is recommended, later versions of Sonoma and Sequoia cannot fit installer and patches to a 16GB disk. 16GB drive may work for older versions.
## Downloading the installer
To start off, you'll want to grab the app:

View File

@@ -48,7 +48,7 @@ The below tables can be used to reference issues with a particular model, and se
| MacBook Air (13-inch, Mid 2013)<br>MacBook Air (13-inch, Early 2014) | `MacBookAir6,2` | ^^ |
| MacBook Air (11-inch, Early 2015) | `MacBookAir7,1` | ^^ |
| MacBook Air (13-inch, Early 2015)<br>MacBook Air (13-inch, 2017) | `MacBookAir7,2` | ^^ |
| MacBook Air (Retina, 13-inch, 2018) | `MacBookAir8,1` | - Supported natively up to Sonoma<br>- Currently not supported on Sequoia due to T2 issues<br> |
| MacBook Air (Retina, 13-inch, 2018) | `MacBookAir8,1` | - Supported natively up to Sonoma<br>- [Currently not supported with OpenCore due to T2 issues](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1136)<br> |
| MacBook Air (Retina, 13-inch, 2019) | `MacBookAir8,2` | ^^ |
| MacBook Air (Retina, 13-inch, 2020) | `MacBookAir9,1` | Supported by Apple |

View File

@@ -17,6 +17,8 @@ Once you've installed macOS through OpenCore, you can boot up and go through the
And voila! No more USB drive required.
If you're having issues with undetected internal disk, refer to [Internal disk missing when building OpenCore](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#internal-disk-missing-when-building-opencore) for troubleshooting.
## Booting seamlessly without Boot Picker
To do this, run the OpenCore Patcher and head to Patcher Settings, then uncheck "Show OpenCore Bootpicker" on the Build tab:
@@ -77,10 +79,25 @@ Non-Metal systems still require lowered SIP.
Post Install Volume Patches, sometimes also called root patches, are patches that have to be installed to disk for some older Macs to gain back functionality.
OCLP will automatically root patch your system during a first time install **if the USB install media was created within OCLP.** Users will also be prompted to install these patches after macOS updates or whenever patches are not detected on the system. We recommend rebuilding OpenCore with the latest version of OCLP to take advantage of these new features.
These patches include things such as:
- Graphics drivers
- WiFi drivers
- Bluetooth drivers
- Touchbar / T1 drivers
- Built-in camera (iSight) drivers
- USB 1.1 drivers
- Other patches for compatibility with older drivers
OCLP will automatically root patch your system during a first time install **if the USB install media was created within OCLP and the proper model was selected before installer creation.** Users will also be prompted to install these patches after macOS updates or whenever patches are not detected on the system. We recommend rebuilding OpenCore with the latest version of OCLP to take advantage of these new features.
Users can also see whether applicable patches have been installed, date and version the system was root patched with in the Post-Install Menu.
- **Note:** In some cases OCLP may require packages to be obtained from the internet, such as KDK or MetallibSupprtPkg if they do not already exist on the system. In these cases OCLP may only install the WiFi driver on first patch run to ensure you can connect to the internet, which means no graphics acceleration
after reboot. Root patching has to be ran again manually to install the rest of the required patches after internet connection is established to obtain the required packages.
Check the affected systems and GPUs from the warnings below.
:::warning
If you need to use Migration Assistant to bring over data to your new macOS install, it is **highly recommended** to avoid restoring from inside Setup Assistant and waiting to install root patches until after the transfer is complete. If root patches were automatically installed, you can use the options available in the OCLP app to remove them.
@@ -95,24 +112,19 @@ For more information on how to restore a Time Machine backup, [refer to the guid
| :--- | :--- |
| ![](./images/OCLP-GUI-root-patch-update.png) | ![](./images/OCLP-GUI-Root-Patch-Status.png) |
### Running Post Install patches manually
If you're using OCLP v0.4.3 or earlier, or need to run the patcher manually, you can do so with the app. There is no harm in trying to run the Patcher, as without compatible hardware, nothing will be done. You can see below on whether your hardware needs root volume patching or not.
There is also an option to remove root patches, which may be required in some situations, such as switching GPUs in Mac Pros or using Migration Assistant.
You can install and revert Root Patching manually from the app.
| Listing Patches | Patching Finished |
| :--- | :--- |
| ![](./images/OCLP-GUI-Root-Patch.png) | ![](./images/OCLP-GUI-Root-Patch-Finished.png) |
:::warning
With macOS Sequoia, MetallibSupportPkg is required to be downloaded for all 3802 systems. OCLP will handle this as long as you're connected to the internet.
With macOS Sequoia, MetallibSupportPkg is required to be downloaded for all 3802-based systems. OCLP will handle this as long as you're connected to the internet.
Such systems include:
3802 based GPUs:
* NVIDIA
* Kepler (GTX 600 - 700 series)

View File

@@ -12,8 +12,8 @@ meta:
features:
# - title: Built with security in mind
# details: Supporting System Integrity Protection(SIP), FileVault 2, .im4m Secure Boot and Vaulting. We make an effort to ensure your system is as secure as possible.
- title: Native OTA updates
details: Install updates the moment they come out, with native System Preferences support, just like a supported Mac.
- title: Near-native OTA updates.
details: Install updates from System Settings, with just couple more additional steps compared to native.
- title: Zero firmware patching
details: Using the capabilities of the OpenCore boot manager, our protocol upgrades are done in memory and are never permanent.
- title: Supporting more hardware
@@ -22,5 +22,5 @@ features:
details: Unlock Sidecar, AirPlay to Mac, Night Shift, and Universal Control, even on natively supported models!
- title: A helpful community
details: Whether it's getting started or learning the specifics, you can always find answers with our amazing community of tinkerers, developers, and dreamers.
footer: Copyright © Dortania 2020-2024
---
footer: Copyright © Dortania 2020-2025
---

View File

@@ -7,7 +7,8 @@ Here are some common errors that users may experience while using this patcher:
* [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)
* [Stuck on hard disk selection with greyed out buttons in installer](#stuck-on-hard-disk-selection-with-greyed-out-buttons-in-installer)
* [Cannot boot macOS without the USB](#cannot-boot-macos-without-the-usb)
* [Infinite Recovery OS Booting](#infinite-recovery-os-reboot)
* [Infinite Recovery OS Booting](#infinite-recovery-os-booting)
* [Internal disk missing when building OpenCore](#internal-disk-missing-when-building-opencore)
* [System version mismatch error when root patching](#system-version-mismatch-error-when-root-patching)
* [Stuck on boot after root patching](#stuck-on-boot-after-root-patching)
* ["Unable to resolve dependencies, error code 71" when root patching](#unable-to-resolve-dependencies-error-code-71-when-root-patching)
@@ -17,8 +18,8 @@ Here are some common errors that users may experience while using this patcher:
* [No Brightness Control](#no-brightness-control)
* [Cannot connect Wi-Fi on Monterey with legacy cards](#cannot-connect-Wi-Fi-on-Monterey-with-legacy-cards)
* [No Graphics Acceleration](#no-graphics-acceleration)
* [Black Screen on MacBookPro11,3 in macOS Monterey](#black-screen-on-macbookpro113-in-macos-monterey)
* [No DisplayPort Output on Mac Pros with NVIDIA Kepler](#no-displayport-output-on-mac-pros-with-NVIDIA-kepler)
* [Black Screen on MacBookPro11,3 in macOS Monterey](#black-screen-on-macbookpro11-3-in-macos-monterey)
* [No DisplayPort Output on Mac Pros with NVIDIA Kepler](#no-displayport-output-on-mac-pros-with-nvidia-kepler)
* [Volume Hash Mismatch Error in macOS Monterey](#volume-hash-mismatch-error-in-macos-monterey)
* [Cannot Disable SIP in recoveryOS](#cannot-disable-sip-in-recoveryos)
* [Stuck on "Less than a minute remaining..."](#stuck-on-less-than-a-minute-remaining)
@@ -86,6 +87,25 @@ With OpenCore Legacy Patcher, we rely on Apple Secure Boot to ensure OS updates
* Note: Machines with modified root volumes will also result in an infinite recovery loop until integrity is restored.
## Internal disk missing when building OpenCore
If you're using a brand new disk that has not been used before or was never formatted in any macOS type, you may face the following error in OCLP when trying to build on the internal disk.
<div align="left">
<img src="./images/OCLP_Failed_to_find_applicable_disks.png" alt="Failed to find applicable disks" width="600" />
</div>
There are two ways to to try and resolve this.
1. Create a new FAT32 partition using Disk Utility, sized at around 100MB, naming does not matter. OpenCore will detect it and you will be able to build your EFI there.
2. When installing macOS, choose "View -> Show all devices" in Disk Utility and format the entire disk by choosing the topmost option in the sidebar.
<div align="left">
<img src="./images/wipe-disk.png" alt="Wipe disk" width="800" />
</div>
## System version mismatch error when root patching
Updates from now on modify the system volume already while downloading, which can lead to broken patches out of a sudden as well as a "version mismatch" error while root patching, since the operating system gets into a liminal state between two versions. The "version mismatch" error is a safeguard preventing OCLP from patching on a system that is in a weird liminal state, to avoid leading to a very likely boot failure.
@@ -104,6 +124,8 @@ System Preferences -> Software Update -> Advanced -> Disable "Download new updat
## Stuck on boot after root patching
**Applies to macOS Monterey and newer. Big Sur does not support snapshot reversion.**
Boot into recovery by pressing space when your disk is selected on the OCLP bootpicker (if you have it hidden, hold ESC while starting up)
* **Note:** If your disk name is something else than "Macintosh HD", make sure to change the path accordingly. You can figure out your disk name by typing `ls /Volumes`.
@@ -297,4 +319,11 @@ Applicable models include:
If you notice your Touchbar etc not working, this means loss of T1 functionality.
Wiping the entire disk using Disk Utility with Sonoma or newer causes the T1 firmware to be removed, which due to removed support, the macOS Sonoma+ installer will not restore. To restore T1 functionality, Ventura or older has to be reinstalled. This can be done in another volume or external disk as well, as long as the OS is booted once. After this you can wipe the old OS or unplug the external disk.
Wiping the entire disk using Disk Utility with Sonoma or newer causes the T1 firmware to be removed, which due to removed support, the macOS Sonoma+ installer will not restore. If the firmware is missing from EFI, T1 will not work regardless whether OCLP reinstates the driver during root patching. To restore T1 functionality, Ventura or older has to be reinstalled. This can be done in another volume or external disk as well, as long as the OS is booted once. After this you can wipe the old OS or unplug the external disk.
To prevent this from happening in the future, with T1 systems only wipe the volume containing the operating system.
<div align="left">
<img src="./images/wipe-volume.png" alt="WipeVolume" width="800" />
</div>

View File

@@ -8,23 +8,17 @@ Boot a native macOS installer, go to Disk Utility and choose View -> Show All De
[Reset NVRAM](https://support.apple.com/HT204063) afterwards.
## Uninstalling the application
## Manual methods
### Version 1.5.0 and newer
### Uninstalling the application
Version 1.5.0 and newer use a Privileged Helper Tool that requires more thorough uninstallation than previous versions. Download the uninstaller package from [the releases page.](https://github.com/dortania/OpenCore-Legacy-Patcher/releases)
To fully uninstall the OCLP application including LaunchAgent and PrivilegedHelperTool, download the uninstaller package from [the releases page.](https://github.com/dortania/OpenCore-Legacy-Patcher/releases)
### Version 1.4.3 and older.
Navigate to `/Library/Application Support/` and delete the Dortania folder.
## Reverting root patches
### Reverting root patches
Open the OCLP application and go into the Post Install Root Patch menu, choose Revert Root Patches.
If you're planning to revert back to native version, you don't have to do this. Root patches get wiped when you wipe the disk.
## Uninstalling the bootloader
### Uninstalling the bootloader
1. Remove OpenCore either from the USB or internal drive

View File

@@ -223,9 +223,9 @@ Notice that "Allow native models" and "Allow Native Spoofs" **are NOT** enabled
::: details Table for spoofed models (click to expand)
Spoofing to any model with native Sonoma support should work, but these are the earliest Macs natively supported by Sonoma and thus chosen for the sake of simplicity.
Spoofing to any model with native Sequoia support should work, but these are the earliest Macs natively supported by Sequoia and thus chosen for the sake of simplicity.
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Ventura as long as the other requirements are met, since they aren't blacklisted.
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Sequoia as long as the other requirements are met, since they aren't blacklisted.
| Mac by name | Native SMBIOS | Spoof SMBIOS |
@@ -257,7 +257,7 @@ Notice that "Allow native models" and "Allow Native Spoofs" **are NOT** enabled
Spoofing to any model with native Sonoma support should work, but these are the earliest Macs natively supported by Sonoma and thus chosen for the sake of simplicity.
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Ventura as long as the other requirements are met, since they aren't blacklisted.
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Sonoma as long as the other requirements are met, since they aren't blacklisted.
| Mac by name | Native SMBIOS | Spoof SMBIOS |

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

BIN
docs/images/wipe-disk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 KiB

View File

@@ -13,9 +13,9 @@ from .detections import device_probe
class Constants:
def __init__(self) -> None:
# Patcher Versioning
self.patcher_version: str = "2.1.2" # OpenCore-Legacy-Patcher
self.patcher_support_pkg_version: str = "1.8.4" # PatcherSupportPkg
self.copyright_date: str = "Copyright © 2020-2024 Dortania"
self.patcher_version: str = "2.3.0" # OpenCore-Legacy-Patcher
self.patcher_support_pkg_version: str = "1.9.2" # PatcherSupportPkg
self.copyright_date: str = "Copyright © 2020-2025 Dortania"
self.patcher_name: str = "OpenCore Legacy Patcher"
# URLs
@@ -28,25 +28,25 @@ class Constants:
# OpenCore Versioning
# https://github.com/acidanthera/OpenCorePkg
self.opencore_version: str = "1.0.1"
self.opencore_version: str = "1.0.4"
# Kext Versioning
## Acidanthera
## https://github.com/acidanthera
self.lilu_version: str = "1.6.8" # Lilu
self.whatevergreen_version: str = "1.6.7" # WhateverGreen
self.whatevergreen_navi_version: str = "1.6.7-Navi" # WhateverGreen (Navi Patch)
self.airportbcrmfixup_version: str = "2.1.8" # AirPortBrcmFixup
self.nvmefix_version: str = "1.1.1" # NVMeFix
self.lilu_version: str = "1.7.0" # Lilu
self.whatevergreen_version: str = "1.6.9" # WhateverGreen
self.whatevergreen_navi_version: str = "1.6.9-Navi" # WhateverGreen (Navi Patch)
self.airportbcrmfixup_version: str = "2.1.9" # AirPortBrcmFixup
self.nvmefix_version: str = "1.1.2" # NVMeFix
self.applealc_version: str = "1.6.3" # AppleALC
self.restrictevents_version: str = "1.1.4" # RestrictEvents
self.featureunlock_version: str = "1.1.6" # FeatureUnlock
self.debugenhancer_version: str = "1.0.9" # DebugEnhancer
self.cpufriend_version: str = "1.2.8" # CPUFriend
self.bluetool_version: str = "2.6.8" # BlueToolFixup (BrcmPatchRAM)
self.restrictevents_version: str = "1.1.5" # RestrictEvents
self.featureunlock_version: str = "1.1.7" # FeatureUnlock
self.debugenhancer_version: str = "1.1.0" # DebugEnhancer
self.cpufriend_version: str = "1.2.9" # CPUFriend
self.bluetool_version: str = "2.6.9" # BlueToolFixup (BrcmPatchRAM)
self.cslvfixup_version: str = "2.6.1" # CSLVFixup
self.autopkg_version: str = "1.0.4" # AutoPkgInstaller
self.cryptexfixup_version: str = "1.0.3" # CryptexFixup
self.cryptexfixup_version: str = "1.0.4" # CryptexFixup
## Apple
## https://www.apple.com

View File

@@ -200,7 +200,6 @@ class InitializeLoggingSupport:
return
if self.constants.cli_mode is True:
threading.Thread(target=analytics_handler.Analytics(self.constants).send_crash_report, args=(self.log_filepath,)).start()
return
error_msg = f"OpenCore Legacy Patcher encountered the following internal error:\n\n"
@@ -208,17 +207,7 @@ class InitializeLoggingSupport:
if tb:
error_msg += f"\n\n{traceback.extract_tb(tb)[-1]}"
cant_log: bool = global_settings.GlobalEnviromentSettings().read_property("DisableCrashAndAnalyticsReporting")
if not isinstance(cant_log, bool):
cant_log = False
if self.constants.commit_info[0].startswith("refs/tags"):
cant_log = True
if cant_log is True:
error_msg += "\n\nReveal log file?"
else:
error_msg += "\n\nSend crash report to Dortania?"
error_msg += "\n\nReveal log file?"
# Ask user if they want to send crash report
try:
@@ -230,11 +219,7 @@ class InitializeLoggingSupport:
if result[applescript.AEType(b'bhit')] != "Yes":
return
if cant_log is True:
subprocess.run(["/usr/bin/open", "--reveal", self.log_filepath])
return
threading.Thread(target=analytics_handler.Analytics(self.constants).send_crash_report, args=(self.log_filepath,)).start()
subprocess.run(["/usr/bin/open", "--reveal", self.log_filepath])
def custom_thread_excepthook(args) -> None:

View File

@@ -124,7 +124,7 @@ class PatcherValidation:
minor_kernel (int): Minor kernel version
"""
patch_type_merge_exempt = ["MechanismPlugins"]
patch_type_merge_exempt = ["MechanismPlugins", "ModulePlugins"]
patch_type_overwrite_exempt = []
patchset = HardwarePatchsetDetection(self.constants, xnu_major=major_kernel, xnu_minor=minor_kernel, validation=True).patches

View File

@@ -32,4 +32,5 @@ class BasePatchset:
self.macOS_13_3: float = 22.4
self.macOS_14_1: float = 23.1
self.macOS_14_2: float = 23.2
self.macOS_14_4: float = 23.4
self.macOS_14_4: float = 23.4
self.macOS_15_2: float = 24.2

View File

@@ -44,6 +44,7 @@ from .hardware.misc import (
pcie_webcam,
t1_security,
usb11,
cpu_missing_avx,
)
from ... import constants
@@ -133,6 +134,7 @@ class HardwarePatchsetDetection:
pcie_webcam.PCIeFaceTimeCamera,
t1_security.T1SecurityChip,
usb11.USB11Controller,
cpu_missing_avx.CPUMissingAVX,
]
self.device_properties = None

View File

@@ -6,6 +6,7 @@ from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclas
from ...base import PatchType
from ...shared_patches.monterey_gva import MontereyGVA
from ...shared_patches.monterey_opencl import MontereyOpenCL
from ...shared_patches.amd_opencl import AMDOpenCL
@@ -74,15 +75,17 @@ class AMDNavi(BaseHardware):
return {
"AMD Navi": {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"AMDRadeonX6000.kext": self._resolve_monterey_framebuffers(),
"AMDRadeonX6000Framebuffer.kext": "12.5",
"/System/Library/Extensions": {
"AMDRadeonX6000.kext": self._resolve_monterey_framebuffers(),
"AMDRadeonX6000Framebuffer.kext": "12.5",
"AMDRadeonVADriver2.bundle": "12.5",
"AMDRadeonX6000GLDriver.bundle": "12.5",
"AMDRadeonX6000MTLDriver.bundle": "12.5" if self._xnu_major < os_data.sequoia else "12.5-24",
"AMDRadeonX6000Shared.bundle": "12.5",
"AMDRadeonVADriver2.bundle": "12.5",
"AMDRadeonX6000GLDriver.bundle": "12.5",
"AMDRadeonX6000MTLDriver.bundle": "12.5" if self._xnu_major < os_data.sequoia else "12.5-24",
"AMDRadeonX6000Shared.bundle": "12.5",
"AMDShared.bundle": "12.5",
"AMDShared.bundle": "12.5",
},
}
}
}
@@ -120,6 +123,7 @@ class AMDNavi(BaseHardware):
return {}
return {
**MontereyGVA(self._xnu_major, self._xnu_minor, self._constants.detected_os_version).revert_patches(),
**MontereyOpenCL(self._xnu_major, self._xnu_minor, self._constants.detected_os_version).patches(),
**AMDOpenCL(self._xnu_major, self._xnu_minor, self._constants.detected_os_version).patches(),
**self._model_specific_patches(),

View File

@@ -0,0 +1,86 @@
"""
cpu_missing_avx.py: Legacy CPUs (Lacking AVX) Detection
Note that this system is implemented only for macOS Ventura and
machines not using the legacy/modern wireless patches (AVX patch integrated into WiFi patches).
This commit implemented unconditional AVX usage, thus Safari 18.2 and later will crash:
https://github.com/WebKit/WebKit/commit/c15e741266db8ff9df309ce9971eda1cfd9021cc
"""
from ..base import BaseHardware, HardwareVariant
from ..networking.legacy_wireless import LegacyWireless
from ..networking.modern_wireless import ModernWireless
from ...base import PatchType
from .....constants import Constants
from .....datasets.os_data import os_data
class CPUMissingAVX(BaseHardware):
def __init__(self, xnu_major, xnu_minor, os_build, global_constants: Constants) -> None:
super().__init__(xnu_major, xnu_minor, os_build, global_constants)
def name(self) -> str:
"""
Display name for end users
"""
return f"{self.hardware_variant()}: Legacy CPUs (Lacking AVX)"
def present(self) -> bool:
"""
Targeting CPUs without AVX support
"""
if self._constants.computer.rosetta_active is True:
return False
if "AVX1.0" in self._constants.computer.cpu.flags:
return False
return True
def native_os(self) -> bool:
"""
Only install this patch on macOS Ventura.
This is because we integrated the patch into the WiFi patches which all Macs use in Sonoma+.
"""
if self._xnu_major != os_data.ventura.value:
return True
if LegacyWireless(self._xnu_major, self._xnu_minor, self._os_build, self._constants).present() is True:
return True
if ModernWireless(self._xnu_major, self._xnu_minor, self._os_build, self._constants).present() is True:
return True
return False
def hardware_variant(self) -> HardwareVariant:
"""
Type of hardware variant
"""
return HardwareVariant.MISCELLANEOUS
def patches(self) -> dict:
"""
Patches for Legacy CPUs (Lacking AVX)
"""
if self.native_os() is True:
return {}
return {
"CPU Missing AVX": {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/PrivateFrameworks": {
"IO80211.framework": "13.7.2-22",
},
}
},
}

View File

@@ -81,12 +81,13 @@ class T1SecurityChip(BaseHardware):
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks/LocalAuthentication.framework/Support": {
"SharedUtils.framework": f"13.6-{self._xnu_major}", # Required for Password Authentication (SharedUtils.framework)
"SharedUtils.framework": f"13.6-{self._xnu_major}" if self._xnu_major < os_data.sequoia else f"13.7.1-{self._xnu_major}", # Required for Password Authentication (SharedUtils.framework)
**({ "MechanismPlugins": "15.0 Beta 4" } if self._xnu_major >= os_data.sequoia else {}), # Required to add a TouchID fingerprint
**({ "ModulePlugins": "15.1" } if self._xnu_float >= self.macOS_15_2 else {}),
},
"/System/Library/PrivateFrameworks": {
"EmbeddedOSInstall.framework": "13.6", # Required for biometrickitd
**({ "NearField.framework": "14.5" } if self._xnu_major >= os_data.sequoia else {}),
**({ "NearField.framework": "14.7.2" } if self._xnu_major >= os_data.sequoia else {}),
},
}
},

View File

@@ -118,18 +118,18 @@ class LegacyWireless(BaseHardware):
"Legacy Wireless Extended": {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/usr/libexec": {
"wps": "12.7.2",
"wifip2pd": "12.7.2",
"wps": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
"wifip2pd": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"CoreWLAN.framework": "12.7.2",
"CoreWLAN.framework": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
},
"/System/Library/PrivateFrameworks": {
"CoreWiFi.framework": "12.7.2",
"IO80211.framework": "12.7.2",
"WiFiPeerToPeer.framework": "12.7.2",
"CoreWiFi.framework": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
"IO80211.framework": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
"WiFiPeerToPeer.framework": "12.7.2" if self._xnu_major < os_data.sequoia else f"12.7.2-{self._xnu_major}",
},
}
},

View File

@@ -64,21 +64,21 @@ class ModernWireless(BaseHardware):
"Modern Wireless": {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/usr/libexec": {
"airportd": "13.6.5",
"wifip2pd": "13.6.5",
"airportd": f"13.7.2-{self._xnu_major}",
"wifip2pd": f"13.7.2-{self._xnu_major}",
},
"/System/Library/CoreServices": {
**({ "WiFiAgent.app": "14.5" } if self._xnu_major >= os_data.sequoia else {}),
**({ "WiFiAgent.app": "14.7.2" } if self._xnu_major >= os_data.sequoia else {}),
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"CoreWLAN.framework": f"13.6.5-{self._xnu_major}",
"CoreWLAN.framework": f"13.7.2-{self._xnu_major}",
},
"/System/Library/PrivateFrameworks": {
"CoreWiFi.framework": f"13.6.5-{self._xnu_major}",
"IO80211.framework": f"13.6.5-{self._xnu_major}",
"WiFiPeerToPeer.framework": f"13.6.5-{self._xnu_major}",
"CoreWiFi.framework": f"13.7.2-{self._xnu_major}",
"IO80211.framework": f"13.7.2-{self._xnu_major}",
"WiFiPeerToPeer.framework": f"13.7.2-{self._xnu_major}",
},
}
},

View File

@@ -41,6 +41,11 @@ class NonMetal(BaseSharedPatchSet):
"/usr/sbin": {
**({ "screencapture": "14.7"} if self._xnu_major >= os_data.sequoia else {}),
},
"/System/Library/CoreServices/RemoteManagement": {
**({"ScreensharingAgent.bundle": "14.7.2"} if self._xnu_major >= os_data.sequoia else {}),
**({"screensharingd.bundle": "14.7.2"} if self._xnu_major >= os_data.sequoia else {}),
**({"SSMenuAgent.app": "14.7.2"} if self._xnu_major >= os_data.sequoia else {}),
},
},
PatchType.REMOVE_SYSTEM_VOLUME: {
"/System/Library/Extensions": [

View File

@@ -100,6 +100,9 @@ class PatchSysVolume:
self.skip_root_kmutil_requirement = not self.hardware_details[HardwarePatchsetSettings.KERNEL_DEBUG_KIT_REQUIRED] if self.constants.detected_os >= os_data.os_data.ventura else False
self.requires_kdk_caching = self.hardware_details[HardwarePatchsetSettings.KERNEL_DEBUG_KIT_REQUIRED] and self.constants.detected_os >= os_data.os_data.ventura
self.requires_metallib_caching = self.hardware_details[HardwarePatchsetSettings.METALLIB_SUPPORT_PKG_REQUIRED] and self.constants.detected_os >= os_data.os_data.sequoia
self.mount_obj = RootVolumeMount(self.constants.detected_os)
@@ -345,7 +348,7 @@ class PatchSysVolume:
if self.constants.wxpython_variant is True and self.constants.detected_os >= os_data.os_data.big_sur:
needs_daemon = False
if self.constants.detected_os >= os_data.os_data.ventura and self.skip_root_kmutil_requirement is False:
if self.requires_kdk_caching is True or self.requires_metallib_caching is True:
needs_daemon = True
InstallAutomaticPatchingServices(self.constants).install_auto_patcher_launch_agent(kdk_caching_needed=needs_daemon)

View File

@@ -296,6 +296,8 @@
<false/>
<key>AvoidRuntimeDefrag</key>
<false/>
<key>ClearTaskSwitchBit</key>
<false/>
<key>DevirtualiseMmio</key>
<false/>
<key>DisableSingleUser</key>
@@ -3191,6 +3193,8 @@
</dict>
<key>ReservedMemory</key>
<array/>
<key>Unload</key>
<array/>
</dict>
</dict>
</plist>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -49,6 +49,17 @@ UNUSED_DRIVERS = [
"Dhcp4Dxe.efi",
"ArpDxe.efi",
"FirmwareSettingsEntry.efi",
"UefiPxeBcDxe.efi",
"RngDxe.efi",
"TlsDxe.efi",
"Udp6Dxe.efi",
"Hash2DxeCrypto.efi",
"Dhcp6Dxe.efi",
"Ip6Dxe.efi",
"Mtftp4Dxe.efi",
"RamDiskDxe.efi",
"Mtftp6Dxe.efi",
"OpenNetworkBoot.efi",
]
UNUSED_TOOLS = [

Binary file not shown.

Binary file not shown.