Compare commits

...

210 Commits
2.2.0 ... main

Author SHA1 Message Date
Dhinak G
b9df76ebdf detect.py: Fix missing import 2026-03-19 12:31:54 -04:00
Dhinak G
703acc9c19 Sync CHANGELOG 2026-03-19 12:23:34 -04:00
Dhinak G
46404c07ef Sync kexts 2026-03-19 12:23:07 -04:00
Dhinak G
aec949a17c Move JavaScriptCore AVX patch to RestrictEvents 2026-03-19 12:22:40 -04:00
Dhinak G
6d97152078 Sync OpenCorePkg 2026-03-19 12:13:50 -04:00
neon ball
b372a3f73e Fix link 2025-12-30 18:48:52 +02:00
neon ball
896c0fef58 Clarify a little 2025-12-29 14:55:03 +02:00
Dhinak G
7c626eb185 Sync PatcherSupportPkg 2025-12-23 22:38:40 -05:00
Eva Isabella Luna
a9795b7b5f Implement new modern wireless patchset (#1178) 2025-12-23 22:36:03 -05:00
neon ball
7b371e07f1 Fix links 2025-12-23 20:42:51 +02:00
neon ball
e60a53052e Add "This page has moved" for old troubleshooting 2025-12-23 20:42:01 +02:00
Dhinak G
f71c8ddeaa Update changelog & increment build 2025-12-19 16:23:24 -05:00
Eva Isabella Luna
806d47f413 Disable repatching a dirty root volume (#1179)
Co-authored-by: Dhinak G <17605561+dhinakg@users.noreply.github.com>
2025-12-19 16:06:11 -05:00
neon ball
b5da41c030 Restructure steps and add IR option 2025-12-14 23:22:59 +02:00
neon ball
31539dc0a6 Fix Discord server link 2025-11-24 16:14:17 +02:00
neon ball
0db0ab00f5 Add affected models to Firefox troubleshooting 2025-11-23 18:48:59 +02:00
neon ball
950d189bfe Tiny thing 2025-11-23 15:17:48 +02:00
neon ball
cd461b0239 Fix typo and add more clarity 2025-11-23 15:17:09 +02:00
neon ball
084b77e0ab Fix typo 2025-11-22 23:04:07 +02:00
neon ball
97369bf6e6 Add non-Metal troubleshoot note about Mozilla products 2025-11-22 23:01:39 +02:00
neon ball
b8aaeac614 Swap link 2025-11-22 11:03:11 +02:00
neon ball
72a1e0c103 Rewording 2025-11-19 00:46:09 +02:00
neon ball
c6a187401c Tiny addition 2025-11-15 06:07:35 +02:00
neon ball
eeec1fd2dd Typo fix 2025-11-05 04:56:23 +02:00
neon ball
77085548fa Merge pull request #1175 from ParaDoX1994/main
Tiny reorderings
2025-11-05 04:54:02 +02:00
neon ball
978ef88a9b Update VENTURA-DROP.md 2025-11-05 04:49:33 +02:00
neon ball
5a8cc14286 Update SEQUOIA-DROP.md 2025-11-05 04:47:25 +02:00
neon ball
240ebb33ee Update VENTURA-DROP.md 2025-11-05 04:45:34 +02:00
neon ball
504d16f57f Update SONOMA-DROP.md 2025-11-05 04:38:41 +02:00
neon ball
09ebe821cb Update SONOMA-DROP.md 2025-11-05 04:34:32 +02:00
neon ball
115339e3a4 Merge pull request #1174 from ParaDoX1994/main
Add model list images for Sonoma and Sequoia
2025-11-05 04:20:42 +02:00
neon ball
8c835a25b9 Add images 2025-11-05 04:18:08 +02:00
neon ball
87fb4fb34d Add doc updates 2025-11-05 04:16:57 +02:00
neon ball
af197f56b3 Update/fix link 2025-10-19 20:03:57 +03:00
neon ball
5376ab7819 Update outdated path 2025-10-09 01:54:18 +03:00
neon ball
c70b18b01e Minor changes and additions 2025-09-27 20:08:23 +03:00
neon ball
a2ae2fbb38 Fix ordering 2025-09-06 04:29:15 +03:00
neon ball
879edfd2db Small edits 2025-09-06 04:28:37 +03:00
neon ball
c5a3d657da Increase image size 2025-09-06 04:19:25 +03:00
neon ball
2031ee40dc Merge pull request #1173 from ParaDoX1994/main
Update image, add image, few text edits
2025-09-06 04:15:04 +03:00
neon ball
9f8367f070 Small text addition 2025-09-06 04:13:57 +03:00
neon ball
7df5add2ff Add root patch version image and small changes 2025-09-06 04:11:11 +03:00
neon ball
d47d1def94 Add images
Add root patch version image and replace booted version image with better one
2025-09-06 04:03:08 +03:00
neon ball
3c01fb7de6 Fix link and typo 2025-09-02 23:40:32 +03:00
neon ball
fc428b3cc2 Link in FAQ to update prepare guide 2025-09-02 23:31:43 +03:00
neon ball
e49b1d0f90 "Preparing OCLP for macOS" update segment and app ver check 2025-09-02 23:28:09 +03:00
neon ball
e4838d3803 Swap bold to h4 2025-09-01 22:03:26 +03:00
neon ball
05e237c7bd Swap bold text to h4 2025-09-01 22:02:23 +03:00
neon ball
1868ce4117 Slightly reduce font size and remove padding from 4th header 2025-09-01 21:58:57 +03:00
Dhinak G
978ce9ea0b Enable blank issues 2025-09-01 14:21:23 -04:00
neon ball
fd66f87f00 Merge pull request #1172 from ParaDoX1994/main
Introduce a 4th header and swap bold text headers to real 4th header
2025-09-01 21:19:52 +03:00
neon ball
85c6a0d682 Change bold text to 4th header 2025-09-01 21:18:38 +03:00
neon ball
3ba9fdc8e1 Change small headers from bold to new 4th header 2025-09-01 21:17:55 +03:00
neon ball
56b9d8ec93 Add a 4th header 2025-09-01 21:08:29 +03:00
neon ball
380b914877 Add Quadro K to GPU model list for Metallibs 2025-09-01 20:58:40 +03:00
neon ball
01f1dd0d81 Fix mistakenly nested dropdowns 2025-09-01 00:55:19 +03:00
Dhinak G
7ca65ddbaa Increment build 2025-08-30 02:07:05 -04:00
Dhinak G
779fa8d9ad Sync CHANGELOG 2025-08-30 01:59:22 -04:00
Dhinak G
cea721a33a GUI: Update messages for installer download 2025-08-29 20:16:57 -04:00
Dhinak G
2383966234 products_appledb.py: Add AppleDB as InstallAssistant source 2025-08-28 17:37:37 -04:00
Dhinak G
960376aebb network_handler.py: Use raise_for_status to detect error 2025-08-28 17:37:37 -04:00
Dhinak G
6e4064887c network_handler.py: Fix checksum support 2025-08-28 17:37:37 -04:00
Dhinak G
aec0e8c6d2 products.py: Improve wording of latest products mechanism 2025-08-28 17:37:37 -04:00
neon ball
f682f33d57 Put images to same row to avoid a bloated look 2025-08-27 17:34:40 +03:00
neon ball
f9ab6e9c6c Fix header 2025-08-26 16:37:31 +03:00
neon ball
713c5ad9e4 Add Intel Power Gadget web archive link 2025-08-24 17:17:21 +03:00
neon ball
440952a25a Add more info 2025-08-24 17:04:47 +03:00
neon ball
3070802ce4 Add some more explanation 2025-08-14 11:27:08 +03:00
neon ball
0c12901974 Reduce repetition with list 2025-08-11 07:37:24 +03:00
neon ball
c80abe2766 Merge pull request #1170 from ParaDoX1994/main
Fix more links
2025-08-10 01:19:44 +03:00
neon ball
37225a65ad Fix link 2025-08-10 01:18:33 +03:00
neon ball
cbeb5b8d5b Fix link 2025-08-10 01:18:01 +03:00
neon ball
1c9156b1ef Fix link 2025-08-10 01:17:49 +03:00
neon ball
1390e54867 Fix linking 2025-08-08 02:07:15 +03:00
neon ball
5aca7e8bef Revert details box, adjust order 2025-08-08 02:05:03 +03:00
neon ball
dd84946dea Small touchups 2025-08-08 01:59:43 +03:00
neon ball
1dffdc00c0 Convert links to not open in new tab 2025-08-08 01:18:22 +03:00
neon ball
e610e14fae Add new links 2025-08-08 01:14:27 +03:00
neon ball
4f43785f81 Fix couple more link issues 2025-08-08 01:07:00 +03:00
neon ball
dadf737e1f Fix linking issue 2025-08-08 01:04:45 +03:00
neon ball
04e8a4709c Remove duplicated text
Damnit
2025-08-07 23:59:50 +03:00
neon ball
87a8cc62a3 Add back app download part 2025-08-07 23:57:54 +03:00
neon ball
89351b34d7 Merge pull request #1169 from ParaDoX1994/main
Some additional fixes
2025-08-07 23:45:24 +03:00
neon ball
b7ff0a39dc Fix linking to new pages 2025-08-07 23:42:54 +03:00
neon ball
4329ddd215 Add back a missing piece 2025-08-07 23:40:31 +03:00
neon ball
80f3bd48d0 Update TROUBLESHOOT-APP.md 2025-08-07 23:39:13 +03:00
neon ball
63e6bb1a9b Fix wrong type of header 2025-08-07 23:28:57 +03:00
neon ball
a801feac6e Remove text not in context 2025-08-07 23:25:34 +03:00
neon ball
d70a232f1d Replace another duplication with link to FAQ 2025-08-07 23:24:49 +03:00
neon ball
7874291a60 Replace duplication with link to FAQ 2025-08-07 23:24:08 +03:00
neon ball
01993d6da2 Copy better existing GPU chart from Troubleshooting to FAQ 2025-08-07 23:20:34 +03:00
neon ball
d213e87e45 Merge pull request #1168 from ParaDoX1994/main
Delete outdated site entires
2025-08-07 23:13:12 +03:00
neon ball
1bcf18c853 Delete 2025-08-07 23:09:23 +03:00
neon ball
ca0d0203c2 Delete outdated Troubleshooting sites 2025-08-07 23:09:16 +03:00
neon ball
562a83ba3b Delete outdated Troubleshooting sites 2025-08-07 23:09:02 +03:00
neon ball
4e52143ac4 Add new site entries to sidebar 2025-08-07 23:01:31 +03:00
neon ball
2d6d1f0235 Overhaul Troubleshooting categorization
Separate hardware issues to own section as well and rename sites with better consistency.
2025-08-07 23:01:10 +03:00
neon ball
1cfce86564 One more order fix 2025-08-07 21:28:58 +03:00
neon ball
60f896b65a Change ordering 2025-08-07 21:24:08 +03:00
neon ball
e34477ff32 Segment links 2025-08-07 21:21:30 +03:00
neon ball
43bb1321f8 Fix image formatting 2025-08-07 21:08:45 +03:00
neon ball
83e7d39ef3 Fix one mishap 2025-08-07 21:06:07 +03:00
neon ball
f056c43c53 Reorder and segment links based on type of issue 2025-08-07 21:02:32 +03:00
neon ball
505dba706b Fix typo 2025-08-07 20:41:23 +03:00
neon ball
bdb5794718 Add alternative methods if lacking WiFi 2025-08-07 20:41:03 +03:00
neon ball
950f22d93d Fix formatting and small fix to text 2025-08-07 20:34:09 +03:00
neon ball
1f9e991f84 Add new sidebar entry to new section 2025-08-07 20:29:19 +03:00
neon ball
fd74c987c9 Split troubleshooting into two sections
Splits troubleshooting section into app specific and other issues sections in hopes to prevent big overwhelming accumulation. Some fixes to links in other sections as well. 
Adding a new step about PrivilegedHelperTool into APPTROUBLESHOOT.
2025-08-07 20:28:51 +03:00
neon ball
85b45f7829 Add error occurred preparing software update troubleshooting step 2025-08-02 05:15:17 +03:00
neon ball
a37df19245 Fix typo (again) 2025-08-02 02:01:09 +03:00
neon ball
bcbc9890fc Tiny fixes 2025-08-02 00:26:06 +03:00
neon ball
cf66bbc243 Fix typo and prettify 2025-08-02 00:24:09 +03:00
neon ball
64f576b11d Tiny additions 2025-07-31 01:19:42 +03:00
neon ball
26b9d30eda Fix typo and small change 2025-07-31 01:05:04 +03:00
neon ball
daa2a5acba Restructuring and rewording 2025-07-31 01:02:00 +03:00
neon ball
d988204731 Remove useless text 2025-07-31 00:25:28 +03:00
neon ball
689fffb578 From header to bold text 2025-07-31 00:20:10 +03:00
neon ball
cba3bd1aad Restructure and reword 2025-07-31 00:17:37 +03:00
neon ball
9da0c88c09 Add latest T2 info 2025-07-27 10:46:39 +03:00
neon ball
854beea8ab Fix linking 2025-07-25 21:31:06 +03:00
neon ball
4196a8458b Add Sequoia CPU note and fix one link 2025-07-25 21:22:15 +03:00
neon ball
16690db6c1 Add chmod +x note to PurgePendingUpdate guide 2025-07-15 06:45:27 +03:00
neon ball
49f4889708 Change wording 2025-07-05 18:11:45 +03:00
neon ball
c0c4f88694 Change formatting 2025-06-29 20:28:41 +03:00
neon ball
dc337a1d25 Note about Big Sur snapshot reversion 2025-06-29 20:23:42 +03:00
neon ball
c5fb325c26 Add a note about Big Sur 2025-05-28 20:22:59 +03:00
neon ball
31664bc571 Update MODELS.md 2025-05-28 20:11:38 +03:00
neon ball
c30b69f7b2 Change macOS Sonoma note from 14.5+ to general 2025-05-28 20:03:37 +03:00
ROSeaboyer
20428a9e6b Add missing MacBookPro15,3 identifier (#1164) 2025-05-18 11:10:45 -04:00
Mykola Grymalyuk
342177b092 Sync CHANGELOG 2025-05-12 09:58:57 -06:00
neon ball
b5698d4a14 Small adjustments 2025-05-12 12:12:50 +03:00
neon ball
a665baaed5 Move Sequoia warning higher 2025-05-12 12:06:59 +03:00
neon ball
c73a86d07f Small wording change 2025-05-12 12:02:34 +03:00
neon ball
2215d8ea67 Change headline layouts 2025-05-12 11:58:03 +03:00
neon ball
b877fc0f45 Add new method to Time Machine with root patches 2025-05-12 11:51:28 +03:00
Mykola Grymalyuk
b8200ad262 usb11.py: Add USB webcam test patch 2025-05-11 20:36:45 -06:00
Mykola Grymalyuk
09cd863752 Sync CHANGELOG 2025-05-10 21:46:23 -06:00
Mykola Grymalyuk
9bc816f353 Sync PatcherSupportPkg 2025-05-10 21:37:56 -06:00
Mykola Grymalyuk
b19543cac0 Add credit to CHANGELOG 2025-05-10 21:26:56 -06:00
neon ball
26e917b2b0 Tiny addition 2025-05-02 02:14:01 +03:00
neon ball
ac615959a1 Add a minor headline 2025-05-02 02:09:15 +03:00
neon ball
99f5dbd01f Improve USB 1.1 troubleshoot explainers 2025-05-02 02:03:42 +03:00
neon ball
ff20aab2e8 Small adjustments plus one new method 2025-04-30 13:04:16 +03:00
neon ball
4435c469a2 Add macOS Sequoia auto update note to FAQ 2025-04-28 16:12:44 +03:00
neon ball
9cae696255 Small layout adjustment 2025-04-28 16:11:59 +03:00
neon ball
cad87ba6c0 Add a more thorough explainer for version mismatch err 2025-04-28 16:07:01 +03:00
neon ball
20fdd25444 Remove outdated link leading nowhere 2025-04-26 12:38:41 +03:00
neon ball
0dc904c21e Add link 2025-04-25 15:32:50 +03:00
neon ball
c822fc0fd7 Move app versioning explainer to FAQ
Was previously in SONOMA-DROP.
2025-04-25 15:30:45 +03:00
neon ball
7f9e36e086 A bit more shrinking 2025-04-25 15:11:57 +03:00
neon ball
f35d8495d4 Layout fix 2025-04-25 15:08:16 +03:00
neon ball
6f2353d874 Reduce repetition of USB 1.1 issue explanation
Replace OS specific explainers with a link to general troubleshooting section
2025-04-25 15:04:28 +03:00
neon ball
17899778d2 Small change 2025-04-24 14:00:50 +03:00
neon ball
790a932574 Add note about FeatureUnlock race condition possibility 2025-04-24 13:58:13 +03:00
neon ball
3678b72888 Models to collapsible list, other small changes 2025-04-24 13:49:25 +03:00
neon ball
c83658b891 Small layout change 2025-04-24 13:43:43 +03:00
neon ball
6ed2c04ae1 Put the GPUs into collapsible list 2025-04-24 13:38:10 +03:00
neon ball
7491de6b4a Fix link 2025-04-19 04:38:47 +03:00
neon ball
f6cebfff03 Add Maps note to non-Metal troubleshooting 2025-04-19 04:34:44 +03:00
neon ball
153b3a3823 Add a link to requirements FAQ before installer creation guide 2025-04-19 04:21:54 +03:00
neon ball
77c19e32a0 Restructure and add a note about Maps non-Metal 2025-04-19 04:08:25 +03:00
neon ball
a1d267e7c9 Remove outdated text 2025-04-15 07:18:49 +03:00
neon ball
d43ab53682 Fix outdated OCLP app path 2025-04-15 07:18:10 +03:00
neon ball
91c9aaec1e Fix sorting and small change 2025-04-15 07:08:19 +03:00
neon ball
4b60389653 Small enhancements 2025-04-15 07:06:16 +03:00
Mykola Grymalyuk
2be8934e9b Merge pull request #1163 from goneng/fix_high_cpu
GUI: Reduce CPU usage II - have smoother UX with faster refresh rate
2025-04-12 18:30:30 -06:00
Gonen
9ac02b0f6b GUI: Reduce CPU usage II - have smoother UX with faster refresh rate
* Set thread_sleep_interval to 0.01s for better UI responsiveness
* Improve thread waiting with thread.join() where applicable (thanks to @sbytnar)
2025-04-05 20:29:07 +03:00
Mykola Grymalyuk
d41d19b3e1 Merge pull request #1157 from goneng/fix_high_cpu
GUI: Reduce CPU usage by adding sleep intervals to UI wait loops
2025-04-04 06:58:43 -06:00
neon ball
da8299db27 Add warning about 2GB RAM for newer OS 2025-04-04 02:19:35 +03:00
Gonen
4ce91cad3d [WIP] GUI: Reduce CPU usage by adding sleep intervals to UI wait loops
Fix issue where the GUI main thread was consuming excessive CPU while
waiting for background tasks to complete.
By adding a configurable sleep interval between UI updates,
CPU usage is significantly reduced while maintaining responsiveness.

- Add thread_sleep_interval constant to global Constants class
- Implement wait_for_thread utility function in gui_support
- Update all wxPython event loops to use the new helper
- Test shows approximately 60% CPU usage reduction during waits
2025-04-03 23:18:48 +03:00
Mykola Grymalyuk
95bf012438 CHANGELOG: Fix versioning 2025-04-03 14:03:46 -06:00
Mykola Grymalyuk
f87f803cf2 Sync PatcherSupportPkg 2025-04-03 13:59:13 -06:00
Mykola Grymalyuk
7f80c6ba3b Increment build 2025-04-02 11:24:23 -06:00
Mykola Grymalyuk
1a871fd93c Sync CHANGELOG
Ref: 35bcb134f1
2025-04-01 19:31:31 -06:00
Mykola Grymalyuk
c2f773aa6e Merge pull request #1156 from dortania/jazzzny-vault-2
Fix vaulting
2025-04-01 19:26:47 -06:00
Jazzzny
3635fc1d0c Update sign.command 2025-04-01 18:35:16 -04:00
Mykola Grymalyuk
67bf7c5095 Increment build 2025-04-01 08:37:55 -06:00
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
115 changed files with 1624 additions and 1172 deletions

View File

@@ -1 +1 @@
blank_issues_enabled: false
blank_issues_enabled: true

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,67 @@
# OpenCore Legacy Patcher changelog
## 2.5.0
- Disable repatching a dirty root volume
- Prevents issues if existing patches are partially overwritten
- Thanks @crystall1nedev!
- Add slimmed down patchset for Modern Wireless for macOS Sequoia
- Move JavaScriptCore patch for pre-AVX Macs to RestrictEvents
- Additionally fixes machines without WiFi cards on Sonoma+ as the patch was not applied before
- Increment binaries:
- OpenCorePkg 1.0.4 - release
- Lilu 1.7.1 - release
- RestrictEvents 1.1.7 - (rolling - b70aaa4)
- PatcherSupportPkg 1.9.6 - release
## 2.4.1
- Switch installer source to AppleDB
- Resolves missing or incorrect installers showing up when downloading an installer
## 2.4.0
- Reduce CPU usage on main UI thread
- Thanks [goneng](https://github.com/goneng) for the implementation!
- Resolve T1 issues:
- coreautha crashes on macOS 14.4 or later
- ApplePay on macOS 15.5
- Resolve USB Camera support on USB 1.1 Macs in macOS Sequoia
- Increment binaries:
- PatcherSupportPkg 1.9.5 - release
## 2.3.2
- Resolve erroring in Passwords app and Safari Autofill on T1 Macs running 15.4 or later
- Increment binaries:
- PatcherSupportPkg 1.9.3 - release
## 2.3.1
- Resolve error on OpenCore Vaulted configs
- Regression from 2.3.0
## 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

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

@@ -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

@@ -111,8 +111,10 @@ module.exports = {
collapsable: false,
sidebarDepth: 1,
children: [
'TROUBLESHOOTING',
'ACCEL',
'TROUBLESHOOT-APP',
'TROUBLESHOOT-MISC',
'TROUBLESHOOT-NONMETAL',
'TROUBLESHOOT-HARDWARE',
'DEBUG',
]

View File

@@ -40,6 +40,9 @@ tr
&:nth-child(2n)
background-color var(--sideBgColor)
h4
font-size 1.08rem
.dropdown-wrapper .nav-dropdown
@@ -65,4 +68,4 @@ tr
color: var(--accentColor) !important
.search-box .suggestion.focused a
color: var(--navItemHoverColor) !important
color: var(--navItemHoverColor) !important

View File

@@ -1,207 +1,10 @@
# Working Around Non-Metal Issues
* [Broken Background Blurs](#broken-background-blurs)
* [Downloading older non-Metal Apps](#downloading-older-non-metal-apps)
* [Unable to run Zoom](#unable-to-run-zoom)
* [Unable to grant special permissions to apps (ie. Camera Access to Zoom)](#unable-to-grant-special-permissions-to-apps-ie-camera-access-to-zoom)
* [Keyboard Backlight broken](#keyboard-backlight-broken)
* [Photos and Maps Apps Heavily Distorted](#photos-and-maps-apps-heavily-distorted)
* [Cannot press "Done" when editing a Sidebar Widget](#cannot-press-done-when-editing-a-sidebar-widget)
* [Wake from sleep heavily distorted on AMD/ATI from macOS 11.3 to Monterey](#wake-from-sleep-heavily-distorted-on-amd-ati-from-macos-11-3-to-monterey)
* [Unable to switch GPUs on 2011 15" and 17" MacBook Pros](#unable-to-switch-gpus-on-2011-15-and-17-macbook-pros)
* [Erratic Colours on ATI TeraScale 2 GPUs (HD5000/HD6000)](#erratic-colours-on-ati-terascale-2-gpus-hd5000-hd6000)
* [Unable to allow Safari Extensions](#unable-to-allow-Safari-Extensions)
* [Cannot Login on 2011 15" and 17" MacBook Pros](#cannot-login-on-2011-15-and-17-macbook-pros)
* [Black Boxes on HD3000 iGPUs](#black-boxes-on-hd3000-igpus)
* [Cannot Pair Bluetooth Devices](#cannot-pair-bluetooth-devices)
The below page is for users experiencing issues with their overall usage of macOS Big Sur / Monterey / Ventura and the Legacy Graphics Acceleration patches. Note that the following GPUs currently do not have acceleration support in Big Sur / Monterey / Ventura:
* Intel 3rd and 4th Gen - GMA series
For those unfamiliar with what is considered a non-Metal GPU, see the chart below:
::: details macOS GPU Chart
Metal is Apple's in-house graphics API that acts as a replacement for OpenGL/OpenCL, introduced in 2015. With the release of macOS Mojave, every system without a Metal-capable GPU was dropped.
| Graphics Vendor | Architecture | Series | Supports Metal |
| :--- | :--- | :--- | :--- |
| ATI | TeraScale 1 | HD 2XXX - HD 4XXX | <span style="color:red">No</span> |
| ^^ | TeraScale 2 | HD 5XXX - HD 6XXX | ^^ |
| AMD | GCN (and newer) | HD 7XXX+ | <span style="color:green">Yes</span> |
| NVIDIA | Tesla | 8XXX - 3XX | <span style="color:red">No</span> |
| ^^ | Fermi | 4XX - 5XX | ^^ |
| ^^ | Kepler | 6XX - 7XX | <span style="color:green">Yes</span> |
| ^^ | Maxwell | 8XX - 9XX | <span style="color:red">No (on 10.14 and newer)</span> |
| ^^ | Pascal | 10XX | ^^ |
| Intel | GMA | GMA 900 - GMA X3000 | <span style="color:red">No</span> |
| ^^ | Iron Lake | HD series | ^^ |
| ^^ | Sandy Bridge | HD 3000 | ^^ |
| ^^ | Ivy Bridge (and newer) | HD 4000 | <span style="color:green">Yes</span> |
:::
## Broken Background Blurs
By default with the non-Metal acceleration patches, many background blur menus may act distorted when moving a cursor over it. With 0.4.1 and newer, users can enable a new Beta Blur feature to try and resolve the issue:
![]()
<div align="left">
<img src="./images/OCLP-GUI-Settings-Beta-Blur.png" alt="Beta Blur settings" width="600" />
</div>
Do note that enabling beta blurs can be more demanding on slower hardware
## Downloading older non-Metal Apps
Many Apple apps now have direct reliance on Metal for proper functioning, however legacy builds of these apps still do work in Big Sur. See below for archive of many apps such as Pages, iMovie, GarageBand.
* [Apple Apps for Non-Metal Macs](https://archive.org/details/apple-apps-for-non-metal-macs)
Note: This archive assumes that you own these copies of these apps through the Mac App Store, Dortania does not condone piracy
## Unable to run Zoom
Currently Zoom relies partially on Metal and so needs a small binary patch. Dosdude1 has provided a nice script for this:
* [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.
This issue is fully resolved for 13.2.1 and lower starting from 0.2.5.
::: 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 entries 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:
```sh
# Open Terminal and run the following commands
cd ~/Downloads/
chmod +x tccplus
./tccplus add Microphone com.hnc.Discord
```
For those who may experience issues with `tccplus`, you can manually patch `com.apple.TCC` to add permissions:
```sh
# get app id (Zoom.us used in example):
$ osascript -e 'id of app "zoom.us"'
# output: us.zoom.xos
$ sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceMicrophone','us.zoom.xos',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);"
$ sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceCamera','us.zoom.xos',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);"
```
:::
## Keyboard Backlight broken
Due to forcing `hidd` into spinning up with the fallback mode enabled, this can break the OS's recognition of backlight keyboards. Thankfully the drivers themselves still do operate so applications such as [LabTick](https://www.macupdate.com/app/mac/22151/lab-tick) are able to set the brightness manually.
## Photos and Maps Apps Heavily Distorted
Due to the Metal Backend, the enhanced color output of these apps seems to heavily break overall UI usage. To work around this, [users reported](https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/post-29870324) forcing the color output of their monitor from Billions to Millions of colors helped greatly. Apps easily allowing this customization are [SwitchResX](https://www.madrau.com), [ResXreme](https://macdownload.informer.com/resxtreme/) and [EasyRes](http://easyresapp.com).
## Cannot press "Done" when editing a Sidebar Widget
Workaround: Press some combination of Tab, or Tab and then Shift-Tab, or just Shift-Tab until the "Done" button is highlighted. Then press spacebar to activate the button, the same as in any other dialog with a highlighted button halo.
## Wake from sleep heavily distorted on AMD/ATI from macOS 11.3 to Monterey
**Fixed for macOS Ventura starting from 0.6.6. Big Sur and Monterey will continue to exhibit the issue.**
For older versions, only known solution is to downgrade to macOS 11.2.3 or older. Additionally, logging out and logging back in can resolve the issue without requiring a reboot.
* Note, this issue should be exclusive to TeraScale 1 GPUs (ie. HD2000-4000). TeraScale 2 GPUs should not exhibit this issue.
In the event Apple removes 11.2.3 from their catalogue, we've provided a mirror below:
* [Install macOS 11.2.3 20D91](https://archive.org/details/install-mac-os-11.2.3-20-d-91)
## Unable to switch GPUs on 2011 15" and 17" MacBook Pros
Currently, with OpenCore Legacy Patcher, GPU switching between the iGPU and dGPU is broken. The simplest way to set a specific GPU is to disable the dGPU when you wish to remain on the more power efficient iGPU.
The best way to achieve this is to boot to Recovery (or Single User Mode if the dGPU refuses to function at all) and run the following command:
```sh
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%01%00%00%00
```
This will disable the dGPU and allow the iGPU to function in Big Sur. Note that external display outputs are directly routed to the dGPU and therefore can no longer be used. Solutions such as [DisplayLink Adapters](https://www.displaylink.com/products/usb-adapters) can work around this limitation, however, note that you'll need to use older drivers (5.2.6):
* [DisplayLink USB Graphics Software for macOS - For Mojave and Catalina - 5.2.6](https://www.synaptics.com/products/displaylink-graphics/downloads/macos-5.2.6)
Note: This driver only provides partial support in macOS, full graphics acceleration is not currently available on displays driven by DisplayLink.
## Erratic Colours on ATI TeraScale 2 GPUs (HD5000/HD6000)
Resolved with OpenCore Legacy Patcher v0.4.2
::: details Legacy Fix (prior to 0.4.2)
Due to an odd bug with ATI's TeraScale 2 GPUs, many users will experience erratic/strobing colours once finished installing accelerated patches and rebooting into macOS. The issue stems from an incorrect assumption in the GPU drivers where it will enforce the Billion Colour space on your display. To fix, simply force your Display into a lower color depth such as Million Colours.
Applications that can set color depth are:
* [SwitchResX](https://www.madrau.com)
* [ResXtreme](https://macdownload.informer.com/resxtreme/)
:::
## Unable to allow Safari Extensions
Due to a bug in the legacy acceleration patches, users won't be able to enable Safari Extensions.
The following tool can be used to work-around this issue:
* [Non-Metal Safari Extensions](https://github.com/moosethegoose2213/Non-Metal-Safari-Extensions/)
## Cannot Login on 2011 15" and 17" MacBook Pros
By default, OpenCore Legacy Patcher will assume MacBookPro8,2/3 have a faulty dGPU and disable acceleration. This is the safest option for most users as enabling dGPU acceleration on faulty Macs will result in failed booting.
However, if your machine does not have the dGPU disabled via NVRAM, you'll experience a login loop. To work around this is quite simple:
1. Boot macOS in Single User Mode
* Press Cmd+S in OpenCore's menu when you turn the Mac on
2. When the command line prompt appears, enter the dGPU disabler argument (at the bottom)
3. Reboot and patched macOS should work normally
4. If you still want to use the dGPU, run OpenCore Legacy Patcher and enable TS2 Acceleration from settings. Go to `Patcher Settings -> Developer Settings -> Set TeraScale 2 Accel`, then root patch again.
5. Either Reset NVRAM or set `gpu-power-prefs` to zeros to re-enable the dGPU
```sh
# Forces GMUX to use iGPU only (ie. disable dGPU)
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%01%00%00%00
# To reset, simply write zeros or NVRAM Reset your Mac
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%00%00%00%00
```
## Black Boxes on HD3000 iGPUs
A somewhat strange issue on Intel HD3000-based Macs, on 3rd party displays sometimes UI elements may become black and unreadable. To resolve, select either the generic `Display` or `Display P3` Color Profiles in Display Settings.
* Mainly applicable for HDMI Displays, DVI and DisplayPort are generally unaffected.
* If you're inside Setup Assistant, press `Cmd` + `Option` + `Control` + `T` to launch Terminal. From there, run `open /System/Applications/System\ Preferences.app`
* Issue has spread to more Macs with macOS Ventura, including MacBook Airs and MacBook Pros
| Default Color Profile | Display/Display P3 Profile |
| :--- | :--- |
| ![](./images/HD3000-Default-Colors.png) | ![](./images/HD3000-Display-Colors.png) |
## Cannot Pair Bluetooth Devices
In macOS Ventura, hover states may not function correctly which results in the "Connect" button not appearing in System Settings. To resolve:
1. Enable Keyboard Navigation in System Settings -> Keyboard
2. Tab + space over Bluetooth devices in System Settings -> Bluetooth
3. Pair button should appear
For more information, see [ASentientBot's post](https://forums.macrumors.com/threads/macos-13-ventura-on-unsupported-macs-thread.2346881/page-116?post=31858759#post-31858759).
This page has moved.
* [Application troubleshooting](./TROUBLESHOOT-APP.md)
* [Booting, installer and other troubleshooting](./TROUBLESHOOT-MISC.md)
* [Non-Metal troubleshooting](./TROUBLESHOOT-NONMETAL.md)
* [Hardware troubleshooting](./TROUBLESHOOT-HARDWARE.md)

View File

@@ -93,7 +93,7 @@ When installing macOS Sonoma or newer on a T1 system (2016-2017), full disk wipe
<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)
[More info here](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOT-HARDWARE.html#no-t1-functionality-after-installing-sonoma-or-newer)
:::

View File

@@ -1,9 +1,9 @@
# FAQ
* [Application requirements](#application-requirements)
* [Application versioning](#application-versioning)
* [How do I make sure I'm all up to date?](#how-do-i-make-sure-i-m-all-up-to-date)
* [Why are the settings "not saving"?](#why-are-the-settings-not-saving)
* [Where are the GUI settings saved?](#where-are-the-gui-settings-saved)
* [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)
@@ -11,6 +11,7 @@
* [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)
@@ -20,38 +21,44 @@
## 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.
Due to limitations with Apple's `createinstallmedia` tool used for installer creation, the following are required:
* **El Capitan 10.11** to make installers for macOS Ventura.
* **High Sierra 10.13** 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.
## Application versioning
Since 1.0.0, OCLP adheres to a proper versioning scheme with major, minor and bug fix system ([Semantic Versioning](https://semver.org/)).
- First digit: Major changes, including new OS support, API changes, and significant patch set changes, etc
- Second digit: Minor changes, including incoming OS update fixes, minor patch set changes, etc
- Third digit: Bug fixes, primarily hot fixes either due to a regression in prior release or resolving issues in already released OS updates
## How do I make sure I'm all up to date?
Updating the OCLP installation is a three step process, first the application, second the bootloader and finally root patches.
Refer to [Updating OpenCore and patches](https://dortania.github.io/OpenCore-Legacy-Patcher/UPDATE.html) for how to update the application and patches.
## Why are the settings "not saving"?
## Where are the GUI settings saved?
Starting with OpenCore Legacy Patcher 2.1.0, the status of settings in the GUI will now be saved under ```/Users/Shared/.com.dortania.opencore-legacy-patcher.plist```. The application will utilize this file to keep track of and retain settings for relaunches and application updates, no longer requiring a reconfiguring each time. The user interface will reset if any model other than "Host Model" is selected, as building for a different model will require different settings.
In OpenCore Legacy Patcher 2.1.0 and newer, the status of settings are saved under ```/Users/Shared/.com.dortania.opencore-legacy-patcher.plist```. The application will utilize this file to keep track of and retain settings for relaunches and application updates, no longer requiring a reconfiguring each time. The user interface will reset if any model other than "Host Model" is selected, as building for a different model will require different settings.
In case of issues, delete the file and restart the application to revert the GUI to default settings, then rebuild OpenCore with newly configured settings.
**Ticking the options in Settings alone will not apply the settings until the "Build and Install OpenCore" process has been redone**, which rebuilds a new OpenCore with the selected settings. Applied settings are saved to a config.plist file inside your EFI partition by the building process.
::: warning
Only settings made within OCLP are accounted for, modifications made directly into the ```config.plist``` file in the EFI partition outside of OCLP **will continue to reset**. Additionally, modifying ```config.plist``` manually may lead to a state where settings showed in the GUI are not in sync compared to settings in use, due to the application not knowing whether the file has been manually modified.
:::
::: details Explainer for older versions (click to expand)
OpenCore Legacy Patcher is a config build tool and as such the user interface always reverts to safe defaults, the user interface therefore **does not** reflect the status of settings. Settings are accounted for and saved by the OpenCore building process and you will always have to build OpenCore again after settings change.
Settings are saved to a config.plist file inside your EFI partition.
In SIP settings, booted SIP is reported in text form e.g. "0x803" but the checkboxes **do not** reflect the applied settings. Refer to [SIP Settings](https://dortania.github.io/OpenCore-Legacy-Patcher/POST-INSTALL.html#sip-settings) for more information.
:::
In versions older than 2.1.0, the status of settings was not tracked. Therefore in these versions GUI will continue to reset to defaults after every launch, requiring settings to be reconfigured each time.
## Can I use the same USB install media as a universal installer?
@@ -61,17 +68,19 @@ When building OpenCore on a different system, OCLP cannot be aware of all the ha
## Can I use OTA updates?
You can. However it is extremely recommended to use USB drive for major OS upgrades (such as 13 -> 14) to avoid larger issues from potentially occurring.
You can. However it is extremely recommended to use USB drive for major OS upgrades (such as 13 -> 14) to avoid larger issues from potentially occurring. General updates are usually fine, though it is always a good idea to wait few days to see whether patches break and have to be fixed.
General updates are usually fine, though it is always a good idea to wait few days to see whether patches break and have to be fixed.
See more information about updating in [Preparing OCLP for macOS update.](https://dortania.github.io/OpenCore-Legacy-Patcher/UPDATE.html#preparing-oclp-for-macos-update)
## 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. 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.
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/TROUBLESHOOT-APP.html#system-version-mismatch-error-when-root-patching) for troubleshooting.
### Disabling updates
* Note: macOS Sequoia has begun prompting to enable automatic updates from 15.4 onward after an update install has finished and isn't giving a choice to fully decline, this means you may have to keep doing it again after updating to newer versions.
::: details How to disable updates (click to expand)
**macOS Ventura and newer:**
@@ -81,14 +90,17 @@ 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?
@@ -96,36 +108,114 @@ macOS doesn't allow direct downgrades, as such you will have to wipe the disk in
## Why is my system slow?
This can mean many things. Firstly, newer operating systems are harder to run and can appear more slow.
#### Lacking or broken root patches
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.
If your system is being **really** slow and macOS is lacking wallpaper and transparency in Dock and menubar, 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) section for more information.
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.
**Root patches will be wiped by macOS updates and have to be reinstalled after an update finishes.**
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.
Patches can also break if automatic updates are enabled and an update prematurely modifies the system volume, refer to [System version mismatch error when root patching](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOT-APP.html#system-version-mismatch-error-when-root-patching) for more information.
#### Spotlight
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.
#### Heavier macOS versions
Newer operating systems are harder to run and can appear more slow. If this is the case, there is not a whole lot to do about it.
#### Thermal issues or bad/missing battery
If you see ```kernel_task``` hogging a lot of CPU resources in Activity Monitor (this also requires View -> All Processes), this means the system is being throttled mostly due to the following reasons:
In laptops, if the battery is either missing or in bad condition, macOS will throttle the CPU quite hard in order to stay running as the charger cannot provide enough power for peak performance. You may try disabling throttling in OCLP settings but this usually leads to unexpected shutdowns during load, when the charger runs out of power to provide. Additionally, trackpad settings will be unavailable on laptops if battery is not present.
Thermal issues can also throttle the CPU, in this case it may be recommended to repaste the system.
You can use [Intel Power Gadget (Web Archive)](https://web.archive.org/web/20220701164200/https://www.intel.com/content/dam/develop/external/us/en/documents/downloads/intel-power-gadget.dmg) to monitor CPU frequency, AVG and REQ should mostly match each other.
## 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.
::: details Earliest Mac models supporting AVX instruction (click to expand)
- Macmini5,x (2011)
- iMac12,x (2011)
- MacBookPro8,x (2011)
- MacBookAir4,x (2011)
- MacBook8,x (2015)
- MacPro6,1 (2013)
:::
::: details Earliest Mac models supporting AVX2 instruction (click to expand)
- 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.
Metal is Apple's proprietary graphics API that acts as a replacement for OpenGL/OpenCL 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. Due to deprecation of OpenGL, many newer applications may require Metal rendering and as such will fail to run on systems with Non-Metal GPUs. Some built-in apps like Maps and everything relying on it (such as Find My) will fail to render as well on versions later than Big Sur.
GPUs that support Metal are as follows:
A great rule of thumb is that Macs older than 2012 are non-Metal, with the exception of systems having upgradable GPUs.
* Intel HD 4000 series (Ivy Bridge/3rd gen) and newer
* AMD HD 7000 series and newer (GCN 1)
* NVIDIA GTX 600 and 700 series (Kepler)
::: details macOS GPU Chart
Everything older than mentioned are Non-Metal and therefore only support OpenGL. A great rule of thumb is that Macs older than 2012 are non-Metal, with the exception of systems with upgradable GPUs. Non-Metal also includes NVIDIA Maxwell (GTX 900 series) and Pascal (GTX 1000 series) when used with patched Web Drivers on newer than macOS High Sierra.
Intel GMA series is completely unsupported, even when using OpenCore Legacy Patcher.
Refer to [Supported models](https://dortania.github.io/OpenCore-Legacy-Patcher/MODELS.html) and [Working Around Non-Metal Issues](https://dortania.github.io/OpenCore-Legacy-Patcher/ACCEL.html) pages for more information.
AMD Navi (RX 5000 - 6000 series) GPUs are non-functional in Mac Pro 2008 to 2012 using Ventura and newer due to lack of AVX2 support.
Due to deprecation of OpenGL, many newer applications may require Metal rendering and as such will fail to run on systems with Non-Metal GPUs.
| Graphics Vendor | Architecture | Series | Supports Metal |
| :--- | :--- | :--- | :--- |
| ATI | TeraScale 1 | HD 2XXX - HD 4XXX | <span style="color:red">No</span> |
| ^^ | TeraScale 2 | HD 5XXX - HD 6XXX | ^^ |
| AMD | GCN (and newer) | HD 7XXX+ | <span style="color:green">Yes</span> |
| NVIDIA | Tesla | 8XXX - 3XX | <span style="color:red">No</span> |
| ^^ | Fermi | 4XX - 5XX | ^^ |
| ^^ | Kepler | 6XX - 7XX | <span style="color:green">Yes</span> |
| ^^ | Maxwell | 8XX - 9XX | <span style="color:red">No (on 10.14 and newer)</span> |
| ^^ | Pascal | 10XX | ^^ |
| Intel | GMA | GMA 900 - GMA X3000 | <span style="color:red">No</span> |
| ^^ | Iron Lake | HD series | ^^ |
| ^^ | Sandy Bridge | HD 3000 | ^^ |
| ^^ | Ivy Bridge (and newer) | HD 4000 | <span style="color:green">Yes</span> |
:::
Refer to the following pages for more information
- [Supported models](https://dortania.github.io/OpenCore-Legacy-Patcher/MODELS.html)
- [Non-Metal GitHub issue](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)
- [Non-Metal Issues](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOT-NONMETAL.html)
- [Hardware troubleshooting](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOT-HARDWARE)
## 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 may also have issues functioning with some OS versions and systems due to race condition during system bootup. If this happens to you, try rebooting multiple times or different (older) OS versions to see if it will remedy the issue.
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 |
| :--- | :--- |
@@ -152,3 +242,12 @@ iPhone Mirroring requires a T2 chip, which means it will not be available on OCL
Apple Intelligence requires Neural Engine, which is only found in Apple Silicon chips.

View File

@@ -4,6 +4,8 @@ This document is centered around downloading and writing the macOS installer to
* 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.
Before proceeding, please read the application and macOS installer creation requirements [from the FAQ.](https://dortania.github.io/OpenCore-Legacy-Patcher/FAQ.html#application-requirements) Newer macOS versions require you to be on a newer base OS before you can create an installer, due to requirements of Apple's `createinstallmedia` tool OCLP uses as its backbone.
## Downloading the installer

View File

@@ -9,7 +9,9 @@ Any Intel-based Mac listed below can install and make use of OpenCore Legacy Pat
It is **extremely recommended** to update your Mac to its latest native version before using OpenCore Legacy Patcher, to ensure you're on the highest firmware.
:::
::: warning 3GB+ RAM required for installing macOS Sonoma and newer
Models with 2GB RAM will not be able to install macOS Sonoma or macOS Sequoia, additionally macOS Sequoia may be unable to boot. These versions may be installed using a disk swap method where installation is done on another system but your mileage may vary and this is not recommended.
:::
The below tables can be used to reference issues with a particular model, and see which OS would work best on your machine.
* [MacBook](#macbook)
@@ -48,7 +50,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 |
@@ -82,7 +84,7 @@ The below tables can be used to reference issues with a particular model, and se
| MacBook Pro (13-inch, 2017, 4 Thunderbolt 3 ports) | `MacBookPro14,2` | ^^ |
| MacBook Pro (15-inch, 2017) | `MacBookPro14,3` | - [Legacy Metal (macOS 14+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
| MacBook Pro (13-inch, 2018, 4 Thunderbolt 3 ports)<br>MacBook Pro (13-inch, 2019, 4 Thunderbolt 3 ports) | `MacBookPro15,2` | - Supported by Apple |
| MacBook Pro (15-inch, 2018)<br>MacBook Pro (15-inch, 2019) | `MacBookPro15,1` | ^^ |
| MacBook Pro (15-inch, 2018)<br>MacBook Pro (15-inch, 2019) | `MacBookPro15,1`<br>`MacBookPro15,3` | ^^ |
| MacBook Pro (13-inch, 2019, 2 Thunderbolt 3 ports) | `MacBookPro15,4` | ^^ |
| MacBook Pro (16-inch, 2019) | `MacBookPro16,1`<br>`MacBookPro16,4` | ^^ |
| MacBook Pro (13-inch, 2020, 4 Thunderbolt 3 ports) | `MacBookPro16,2` | ^^ |

View File

@@ -496,12 +496,13 @@ Applicable for BCM94328, BCM94322 and Atheros Wifi cards
* AMDMTLBronzeDriver.bundle
* AMDShared.bundle
:::
::: details non-Metal Graphics Acceleration Patches (11.0+)
#### General Patches
### General Patches
* IOSurface.kext
* Reason: Fixes immediate logout on login
@@ -509,7 +510,7 @@ Applicable for BCM94328, BCM94322 and Atheros Wifi cards
* Note: For AMD and Intel, additional `addMemoryRegion/removeMemoryRegion` patch added changing the first conditional jump to non conditional jump
* At Offset `0xdb52` and `0xdbc6`, replace following bytes with `0xeb`
#### Dropped Acceleration Binaries
### Dropped Acceleration Binaries
* NVIDIA Binaries
* GeForceGA.bundle

View File

@@ -17,7 +17,7 @@ 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.
If you're having issues with undetected internal disk, refer to [Internal disk missing when building OpenCore](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOT-APP.html#internal-disk-missing-when-building-opencore) for troubleshooting.
## Booting seamlessly without Boot Picker
@@ -79,65 +79,92 @@ 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 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.
These patches include things such as:
Users can also see whether applicable patches have been installed, date and version the system was root patched with in the Post-Install Menu.
- 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
- **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.
OCLP will automatically root patch your system if the USB install media was created within OCLP and the proper model was selected before installer creation. If you did not use OCLP to create the USB drive or autopatching failed, you will need to download OCLP manually and install root patches, since the application will be missing if autopatching wasn't successful.
Check the affected systems and GPUs from the warnings below.
**Root patches will be wiped by macOS updates and have to be reinstalled after each update.** OCLP will prompt to install these patches after macOS updates or whenever patches are not detected on the system. The USB installer method can also be used to install future updates, utilizing the autopatching process and avoiding the manual patching which is required when updating through System Settings.
:::warning
In the Post-Install Menu, you can see whether applicable patches have been installed, including the date and version the system was root patched with.
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.
::: warning Important
Using Migration Assistant while patches are installed can lead to an unbootable system, requiring a reinstall of macOS.
In some cases OCLP may require packages to be obtained from the internet, such as KDK or MetallibSupportPkg 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.
For more information on how to restore a Time Machine backup, [refer to the guide here.](https://dortania.github.io/OpenCore-Legacy-Patcher/TIMEMACHINE.html)
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. You can also utilize Ethernet, which should ensure that all patches will be installed at once.
[Check the affected systems and GPUs from below.](#packages-requiring-networking)
:::
| Automatic install prompt | Status |
| :--- | :--- |
| ![](./images/OCLP-GUI-root-patch-update.png) | ![](./images/OCLP-GUI-Root-Patch-Status.png) |
:::warning
If you need to use Migration Assistant to bring over data to your new macOS install, [refer to the guide to do so here.](https://dortania.github.io/OpenCore-Legacy-Patcher/TIMEMACHINE.html)
:::
| Automatic install prompt | Status | Listing Patches | Patching Finished |
| :--- | :--- | :--- | :--- |
| ![](./images/OCLP-GUI-root-patch-update.png) | ![](./images/OCLP-GUI-Root-Patch-Status.png) | ![](./images/OCLP-GUI-Root-Patch.png) | ![](./images/OCLP-GUI-Root-Patch-Finished.png) |
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) |
### Packages requiring networking
#### MetallibSupportPkg
Required for Ivy Bridge, Haswell and NVIDIA Kepler based systems (3802) running Sequoia or newer. You can download it manually from the following link:
:::warning
* [MetallibSupportPkg](https://github.com/dortania/MetallibSupportPkg/releases)
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.
**Make sure the build matches exactly the OS version you're using.**
3802 based GPUs:
::: details Full GPU model list requiring MetallibSupportPkg (click to expand)
* NVIDIA
* Kepler (GTX 600 - 700 series)
* Kepler (GTX 600 - 700 series, Quadro K-series)
* Intel
* Ivy Bridge (HD 4000 series)
* Haswell (Iris/HD 4000-5000 series)
:::
#### KDK / Kernel Debug Kit
Macs with AMD Legacy GCN GPUs (ie. Metal) running Ventura or newer require Apple's Kernel Debug Kit to start root patching. You can manually download the KDK from the following link:
* [KDKSupportPkg](https://github.com/dortania/KdkSupportPkg/releases)
Grab the Kernel Debug Kit whose version is closest to the OS you installed and install it to the machine.
:::details Macs and GPUs requiring KDK (click to expand)
GPUs:
* Radeon HD 7000 series
* Radeon R9 series
* FirePro D300/D500/D700
Mac models with GCN GPUs:
* iMac 2014 - 2015 (iMac15,1 - 17,1)
* Mac Pro 2013 (MacPro6,1)
* MacBook Pro 2015 15", dGPU version (MacBookPro11,5)
Upgraded Macs:
* Mac Pro 2008 - 2012 (MacPro3,1 - 5,1) if upgraded with AMD GCN GPU.
* iMac 2009 - 2011 (iMac10,1 - 12,1) if upgraded with AMD GCN GPU.
:::
:::warning
With macOS Ventura and Macs with AMD Legacy GCN GPUs (ie. Metal), Root Patching requires a network connection to grab Apple's Kernel Debug Kit to start root patching. If your system is unable to connect to the internet, you can manually download a KDK from Apple's site:
* [Apple's Developer Download Page](https://developer.apple.com/download/all/?q=Kernel%20Debug%20Kit)
Grab the Kernel Debug Kit whose version is closest to the OS you installed, and install it to the machine running Ventura.
Machines that require this are those with AMD Metal dGPUs:
* 2008 - 2013 Mac Pros (MacPro3,1 - 6,1)
* 2009 - 2016 iMacs (iMac10,1 - 17,1)
* 2015 15" MacBook Pro with a dGPU (MacBookPro11,5)
:::
### Other information
Below entries represent GPUs no longer natively supported, ie. requiring root volume patching with OpenCore Legacy Patcher:
@@ -145,41 +172,7 @@ Below entries represent GPUs no longer natively supported, ie. requiring root vo
AMD Navi (RX 5000 - 6000 series) GPUs are non-functional in Mac Pro 2008 to 2012 using Ventura and newer due to lack of AVX2 support.
**Sequoia**
* NVIDIA:
* Tesla (8000 - 300 series)
* Kepler (600 - 800 series)
* AMD:
* TeraScale (2000 - 6000 series)
* GCN 1-3 (7000 - R9 series)
* Polaris (RX 4xx/5xx series, if CPU lacks AVX2)
* Intel:
* Iron Lake
* Sandy Bridge (2000 - 3000 series)
* Ivy Bridge (4000 series)
* Haswell (4400, 4600, 5000 series)
* Broadwell (6000 series)
* Skylake (500 series)
**Sonoma**
* NVIDIA:
* Tesla (8000 - 300 series)
* Kepler (600 - 800 series)
* AMD:
* TeraScale (2000 - 6000 series)
* GCN 1-3 (7000 - R9 series)
* Polaris (RX 4xx/5xx series, if CPU lacks AVX2)
* Intel:
* Iron Lake
* Sandy Bridge (2000 - 3000 series)
* Ivy Bridge (4000 series)
* Haswell (4400, 4600, 5000 series)
* Broadwell (6000 series)
* Skylake (500 series)
**Ventura**
**Ventura/Sonoma/Sequoia**
* NVIDIA:
* Tesla (8000 - 300 series)

View File

@@ -12,15 +12,15 @@ 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: Near-native OTA updates.
- 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
details: New life is breathed into your decade-old graphics card, WiFi, and Bluetooth chipsets. Even your upgraded hardware receives benefits by unlocking exciting features like Hardware Acceleration, AirDrop, Apple Watch Unlock, Sidecar, and much more!
- title: The newest features
details: Unlock Sidecar, AirPlay to Mac, Night Shift, and Universal Control, even on natively supported models!
- title: Unlock newer features
details: Unlock some newer features such as 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

@@ -14,11 +14,13 @@ This time Apple dropped surprisingly few amount of Macs. With the release of Ope
## Current status
OpenCore Legacy Patcher 2.0.0 will support Sequoia for most models normally supported by the Patcher, however some challenges remain. You can find information about them below.
OpenCore Legacy Patcher 2.0.0 supports Sequoia for the models below, however some challenges remain. You can find information about them further down this page.
Unfortunately due to T2 related problems, the recently dropped MacBookAir8,x models cannot be supported at this time.
<img width="625" alt="" src="./images/OCLP-200-Initial-Support.png">
[More information here](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1136)
Unfortunately due to T2 related problems, the recently dropped MacBookAir8,x models cannot be supported at this time. We have made some progress on this issue, but panics are still occurring and there is still a significant amount of development work to do before T2 machines may even get to the install screen. We cannot provide any estimate on when T2 machines will be supported.
[More information here.](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1136)
## Non-functional features
@@ -63,11 +65,11 @@ panic(cpu 0 caller 0xffffff801cd12509): "AppleSEPManager panic for "AppleKeyStor
This affects not only macOS Sequoia, but macOS Ventura and Sonoma are confirmed to have the same issue. Thus an underlying problem with the MacBookAir8,x's firmware where it is not happy with OpenCorePkg.
We currently do not have any leads on what exactly breaks the T2.
* MacBookPro15,2, MacBookPro16,2 and Macmini8,1 do not exhibit these issues in local testing
* MacPro7,1 does seem to surprisingly based on reports: [MacPro7,1 - OpenCorePkg](https://forums.macrumors.com/threads/manually-configured-opencore-on-the-mac-pro.2207814/post-29418464)
* Notes from this report were unsuccessful locally: [Cannot boot MacPro7,1 #1487](https://github.com/acidanthera/bugtracker/issues/1487)
We have made some progress on this issue, but panics are still occurring and there is still a significant amount of development work to do before T2 machines may even get to the install screen. We cannot provide any estimate on when T2 machines will be supported.
### USB 1.1 (OHCI/UHCI) Support
@@ -78,29 +80,8 @@ While USB 1.1 may seem unimportant, it handles many important devices on your sy
* IR Receivers
* Bluetooth
Users will need to use a USB hub for installation and post-OS updates when patches are cleaned:
Refer to [the troubleshooting page](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOT-HARDWARE.html#keyboard-mouse-and-trackpad-not-working-in-installer-or-after-update) on how to workaround this issue.
However, the driver has recently been weakened starting from Sonoma, which means even some USB hubs may not work properly.
An alternative way is making sure to enable "Remote Login" in General -> Sharing before updating, which will enable SSH.
That means you can take control using Terminal in another system by typing `ssh username@lan-ip-address` and your password.
After that run Post Install Volume Patching by typing `/Applications/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher --patch_sys_vol` and finally `sudo reboot`.
![](./images/usb11-chart.png)
::: warning The following systems rely on USB 1.1
* iMac10,x and older
* Macmini4,1 and older
* MacBook7,1 and older
* MacBookAir3,1 and older
* MacPro5,1 and older
* Xserve 3,1 and older
:::
[More information here](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)
### Graphics support and issues
This build includes both Legacy Metal and non-Metal patches for macOS Sequoia. Refer to the following links for more information about Legacy Metal and non-Metal support and their respective issues.

View File

@@ -6,15 +6,6 @@
Apple has yet again dropped a bunch of models, continuing their journey on discontinuing Intel Macs. With the release of OpenCore Legacy Patcher 1.0.0, early support for macOS Sonoma has been implemented.
## Versioning
With 1.0.0, we'll be switching to a proper major, minor and bug fix system ([Semantic Versioning](https://semver.org/)). This means the coming release will be version 1.0.0, and future releases plan to follow this scheme:
- First digit: Major changes, including new OS support, API changes, and significant patch set changes, etc
- Second digit: Minor changes, including incoming OS update fixes, minor patch set changes, etc
- Third digit: Bug fixes, primarily hot fixes either due to a regression in prior release or resolving issues in already released OS updates
## Newly dropped hardware
* MacBook10,1: MacBook (Retina, 12-inch, 2017)
@@ -27,7 +18,9 @@ With 1.0.0, we'll be switching to a proper major, minor and bug fix system ([Sem
## Current status
OpenCore Legacy Patcher 1.0.0 will support Sonoma for all models normally supported by the Patcher, however some challenges remain. You can find information about them below.
OpenCore Legacy Patcher 1.0.0 supports Sonoma for all models below, however some challenges remain. You can find information about them further down on this page.
<img width="625" alt="" src="./images/OCLP-100-Initial-Support.png">
## Issues
@@ -45,7 +38,9 @@ Dual boots may also bring the issue back even after the reset.
### T1 Security chip
::: details Support for the T1 Security chip (Resolved in 1.1.0 and newer)
**Resolved in 1.1.0 and newer, original explainer below**
::: details Support for the T1 Security chip
Sonoma has removed support for T1 chips found in most 2016 and 2017 Macs. Therefore on these systems, the following will not function:
@@ -59,7 +54,7 @@ Sonoma has removed support for T1 chips found in most 2016 and 2017 Macs. Theref
:::
::: warning
Note that erasing the entire drive will remove the T1 firmware and it won't be reinstalled.
Note that erasing the entire drive will remove the T1 firmware and it won't be reinstalled. Refer to [troubleshooting](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOT-HARDWARE.html#no-t1-functionality-after-installing-sonoma-or-newer) for more information.
:::
### USB 1.1 (OHCI/UHCI) Support
@@ -71,21 +66,7 @@ While USB 1.1 may seem unimportant, it handles many important devices on your sy
* IR Receivers
* Bluetooth
With OpenCore Legacy Patcher v0.6.0+, basic support has been implemented via Root Volume patching. However due to this, users will need to use a USB hub for installation and post-OS updates when patches are cleaned:
![](./images/usb11-chart.png)
::: warning The following systems rely on USB 1.1
* iMac10,x and older
* Macmini4,1 and older
* MacBook7,1 and older
* MacBookAir3,1 and older
* MacPro5,1 and older
* Xserve 3,1 and older
:::
[More information here](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)
Refer to [the troubleshooting page](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOT-HARDWARE.html#keyboard-mouse-and-trackpad-not-working-in-installer-or-after-update) on how to workaround this issue.
### Graphics support and issues
This build includes both Legacy Metal and non-Metal patches for macOS Sonoma. Refer to the following links for more information about Legacy Metal and non-Metal support and their respective issues.

View File

@@ -2,8 +2,14 @@
OpenCore is a sophisticated boot loader used to inject and patch data in memory, instead of on disk. This means that we're able to achieve a near-native experience on many unsupported Macs.
* We recommend viewing the [OpenCore Patcher Terminology Page](./TERMS.md) if you have questions.
* For troubleshooting, join the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN) and see our [Troubleshooting Page](./TROUBLESHOOTING.md).
We recommend viewing the [OpenCore Patcher Terminology Page](./TERMS.md) if you have questions.
For troubleshooting, see our troubleshooting pages below or join the [OpenCore Patcher Paradise Discord Server.](https://discord.gg/rqdPgH8xSN)
- [Application troubleshooting](./TROUBLESHOOT-APP.md)
- [Booting, installer and other troubleshooting](./TROUBLESHOOT-MISC.md)
- [Non-Metal troubleshooting](./TROUBLESHOOT-NONMETAL.md)
- [Hardware troubleshooting](./TROUBLESHOOT-HARDWARE.md)
## How do I get started?

View File

@@ -1,10 +1,33 @@
# Restoring Time Machine backup
OCLP automatically installs root patches when installing from the USB drive for the first time to ensure smooth operation of the first time settings.
OCLP automatically installs root patches when installing from the USB drive for the first time to ensure smooth operation of the first time settings. However, as an unfortunate side effect, doing a full restore via Time Machine breaks while root patches are installed and restoring requires a few tricks to avoid a kernel panic. Below are two different methods to restore.
However, as an unfortunate side effect, restoring via Time Machine breaks while root patches are installed and restoring a root patched machine requires a few tricks to avoid a kernel panic.
**Method 2 is only supported on Monterey and newer. Big Sur does not support snapshot reversion.**
::: warning Warning for Sequoia
Time Machine on Sequoia may not function even after uninstalling root patches, leading to a loop with "Migration Finished" window. If you encounter this issue, restore on older OS and then upgrade to Sequoia.
:::
## Method 1 - Restore with root patches installed (partial)
**Warning:** Be advised that with this method, folders **other than** "Desktop", "Documents", "Applications" etc (main folders under profile) may not be restored. If you want a full restore, use method 2 below.
1. Start Time Machine restore either in Setup Assistant (first time settings) or Migration Assistant.
2. When asked to select information to transfer, **uncheck** "Other files and folders" as seen in the image below.
3. Start transfer.
<div align="left">
<img src="./images/TimeMachine-Transfer-Uncheck.png" alt="Uncheck other files and folders" width="600" />
</div>
Now you should be restored with your user profile, applications and settings.
## Method 2 - Restore without root patches (full)
To ensure a smooth Time Machine restore, follow the steps listed under:
1. In first time settings (Setup Assistant), do not restore the backup. Instead do all settings like you would want to start fresh.
2. Once you reach desktop, open the OCLP application and revert root patches in the Post Install Volume Patches section.
@@ -16,10 +39,3 @@ To ensure a smooth Time Machine restore, follow the steps listed under:
Now you should be fully restored with Time Machine and also running with all patches.
::: warning Sequoia Note
Time Machine restoring seems to be currently broken on Sequoia even after uninstalling root patches, leading to a loop with "Migration Finished" window. Currently the only way is to restore on older OS and then upgrade to Sequoia.
:::

131
docs/TROUBLESHOOT-APP.md Normal file
View File

@@ -0,0 +1,131 @@
# Application issues
* [OpenCore Legacy Patcher not launching](#opencore-legacy-patcher-not-launching)
* [Privileged Helper Tool not found](#privileged-helper-tool-not-found)
* ["You don't have permission to save..." error when creating USB installer](#you-don-t-have-permission-to-save-error-when-creating-usb-installer)
* [Internal disk missing when building OpenCore](#internal-disk-missing-when-building-opencore)
* ["Unable to resolve dependencies, error code 71" when root patching](#unable-to-resolve-dependencies-error-code-71-when-root-patching)
* [System version mismatch error when root patching](#system-version-mismatch-error-when-root-patching)
## OpenCore Legacy Patcher not launching
If the application won't launch (e.g. icon will bounce in the Dock), try launching OCLP via Terminal by typing the following command.
```sh
/Library/Application Support/Dortania/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher
```
## Privileged Helper Tool not found
OCLP needs a Privileged Helper Tool to run parts of the application as root. If you encounter this error, reinstall OCLP using the PKG installer to fix Privileged Helper Tool. If your system lacks WiFi connection due to lack of patches, use Ethernet. You can also use another computer to download the app and move it to a USB drive.
* In OCLP 2.3.0 and newer, using PKG is the only way to install and app.zip method has been discontinued.
## "You don't have permission to save..." error when creating USB installer
In some cases, a following error saying "The bless of the installer disk failed" stating the reason as "You don't have permission to save..." may appear.
<div align="left">
<img src="./images/Error-No-Permission-To-Save.png" alt="NoPermissionToSave" width="600" />
</div>
To resolve this, you may try adding Full Disk Access permission for OpenCore Legacy Patcher. To add it, first go to the settings
* Ventura and Sonoma: Go to System Settings -> Privacy and Security -> Full Disk Access
* Big Sur and Monterey: Go to System Preferences -> Security and Privacy -> Full Disk Access
Enable OpenCore-Patcher in the list. If not found on the list, press the + sign to add a new entity and find OpenCore Legacy Patcher from Applications.
Restart OpenCore Legacy Patcher and try creating your USB drive again.
Optional: After you've created your USB drive, you can remove OpenCore Legacy Patcher from Full Disk Access again.
## 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>
## "Unable to resolve dependencies, error code 71" when root patching
If you're getting this error, it typically means you have some offending kernel extensions, to fix this you will have to clear them.
Semi-automated way:
1. Open Terminal
2. Type `sudo zsh`
3. Type `cd "/Volumes/Macintosh HD/Library/Extensions" && ls | grep -v "HighPoint*\|SoftRAID*" | xargs rm -rf`
* Make sure to rename "Macintosh HD" to what your drive name is
4. Run OCLP root patcher again
Manual way:
1. Navigate to /Library/Extensions
2. Delete everything **except** HighPointIOP.kext, HighPointRR.kext and SoftRAID.kext
3. Run OCLP root patcher again
If there is no success, navigate to "/Library/Developer/KDKs" and delete everything.
If still no success, type `sudo bless --mount "/Volumes/Macintosh HD/" --bootefi --last-sealed-snapshot`
* Make sure again to rename "Macintosh HD" to what your drive name is
Run OCLP root patcher again.
## System version mismatch error when root patching
Due to a change by Apple, updates now modify the system volume **already while downloading**, which can lead to broken patches out of a sudden, since the operating system gets into a liminal state between two versions. Hence while root patching, you may get an error that looks like the following:
`SystemVersion.plist build version mismatch: found 15.4 (24E247), expected 13.7.5 (22H527)`
In this example, it is telling that a version 13.7.5 (Ventura) is expected which is currently running but macOS has already staged an update to version 15.4 (Sequoia) and has already modified the filesystem to prepare for an update, including writing the new version in SystemVersion.plist where OCLP is able to read it from. 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.
There are few options to resolve it:
1. Update/upgrade to the version already staged.
* This option works only if the newer version is currently supported by OCLP.
2. Reinstall macOS.
* You can try doing an in-place install without wiping the disk to keep your data but this may not be possible due to the OS being partially on newer version and it will complain about downgrade.
3. Use an experimental "PurgePendingUpdate" tool [from the Discord server](https://discord.gg/rqdPgH8xSN).
* Navigate to `support-forum` and then to the `Information and known issues` post to find the link to the tool.
* Download it and then run it in Terminal to get rid of a pending update, then repatch again. If "purge failed" appears, you can ignore it.
* Sometimes you may have to give the file an execution permission with `chmod +x` and putting the application path after the command (type or drag the file) before the tool can be ran.
* This may be integrated into OCLP later on, however there is currently no ETA.
**Disabling automatic macOS updates is extremely recommended once recovered, to prevent it from happening again.**
* Note: macOS Sequoia has begun prompting to enable automatic updates from 15.4 onward after an update install has finished and isn't giving a choice to fully decline, this means you may have to keep doing it again after updating to newer versions.
::: details How to disable updates (click to expand)
**macOS Ventura and newer:**
System Settings -> General -> Software Update -> (i) button next to Automatic Updates -> Disable "Download new updates when available".
**macOS Big Sur and Monterey:**
System Preferences -> Software Update -> Advanced -> Disable "Download new updates when available".
:::

View File

@@ -0,0 +1,336 @@
# Hardware issues
#### General
* [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)
* [No DisplayPort Output on Mac Pros with NVIDIA Kepler](#no-displayport-output-on-mac-pros-with-nvidia-kepler)
* [Secondary CPU not visible on MacPro3,1/Xserve2,1](#secondary-cpu-not-visible-on-macpro3-1-xserve2-1)
* [No acceleration after a Metal GPU swap on Mac Pro](#no-acceleration-after-a-metal-gpu-swap-on-mac-pro)
* [Keyboard, Mouse and Trackpad not working in installer or after update](#keyboard-mouse-and-trackpad-not-working-in-installer-or-after-update)
* [No T1 functionality after installing Sonoma or newer](#no-t1-functionality-after-installing-sonoma-or-newer)
#### Non-Metal
* [Keyboard Backlight broken](#keyboard-backlight-broken)
* [Wake from sleep heavily distorted on AMD/ATI from macOS 11.3 to Monterey](#wake-from-sleep-heavily-distorted-on-ati-amd-terascale-1-from-macos-11-3-to-monterey)
* [Unable to switch GPUs on 2011 15" and 17" MacBook Pros](#unable-to-switch-gpus-on-2011-15-and-17-macbook-pros)
* [Erratic Colours on ATI TeraScale 2 GPUs (HD5000/HD6000)](#erratic-colours-on-ati-terascale-2-gpus-hd5000-hd6000)
* [Cannot Login on 2011 15" and 17" MacBook Pros](#cannot-login-on-2011-15-and-17-macbook-pros)
* [Black Boxes on HD3000 iGPUs](#black-boxes-on-hd3000-igpus)
* [Cannot Pair Bluetooth Devices](#cannot-pair-bluetooth-devices)
For those unfamiliar with what is considered a non-Metal GPU, see the chart in [FAQ](https://dortania.github.io/OpenCore-Legacy-Patcher/FAQ.html#what-is-metal-and-non-metal)
## No Brightness Control
With OCLP v0.0.22, we've added support for brightness control on many models. However, some users may have noticed that their brightness keys do not work.
As a work-around, we recommend users try out the below app:
* [Brightness Slider](https://actproductions.net/free-apps/brightness-slider/)
## Cannot connect Wi-Fi on Monterey with legacy cards
With OCLP v0.2.5, we've added support for legacy Wi-Fi on Monterey. However, some users may have noticed that they can't connect to wireless networks.
To work-around this, we recommend that users manually connect using the "Other" option in the Wi-Fi menu bar or manually adding the network in the "Network" preference pane.
## No Graphics Acceleration
In macOS, GPU drivers are often dropped from the OS with each major release of it. If you're using OCLP v0.4.4 or newer, you should have been prompted to install Root Volume patches after the first boot from installation of macOS. If you need to do this manually, you can do so within the patcher app. Once rebooted, acceleration will be re-enabled as well as brightness control for laptops.
See [Applying Post Install Volume Patches](https://dortania.github.io/OpenCore-Legacy-Patcher/POST-INSTALL.html#applying-post-install-volume-patches) for more information.
If you swapped a GPU from stock to a Metal GPU in a Mac Pro after installing OS, see [No acceleration after a Metal GPU swap on Mac Pro](#no-acceleration-after-a-metal-gpu-swap-on-mac-pro) for instructions.
Check the list below to see what GPUs require patching in which OS versions.
:::details GPUs requiring patching in different macOS versions
AMD Navi (RX 5000 - 6000 series) GPUs are non-functional in Mac Pro 2008 to 2012 using Ventura and newer due to lack of AVX2 support.
**Sequoia**
* NVIDIA:
* Tesla (8000 - 300 series)
* Kepler (600 - 800 series)
* AMD:
* TeraScale (2000 - 6000 series)
* GCN 1-3 (7000 - R9 series)
* Polaris (RX 4xx/5xx series, if CPU lacks AVX2)
* Intel:
* Iron Lake
* Sandy Bridge (2000 - 3000 series)
* Ivy Bridge (4000 series)
* Haswell (4400, 4600, 5000 series)
* Broadwell (6000 series)
* Skylake (500 series)
**Sonoma**
* NVIDIA:
* Tesla (8000 - 300 series)
* Kepler (600 - 800 series)
* AMD:
* TeraScale (2000 - 6000 series)
* GCN 1-3 (7000 - R9 series)
* Polaris (RX 4xx/5xx series, if CPU lacks AVX2)
* Intel:
* Iron Lake
* Sandy Bridge (2000 - 3000 series)
* Ivy Bridge (4000 series)
* Haswell (4400, 4600, 5000 series)
* Broadwell (6000 series)
* Skylake (500 series)
**Ventura**
* NVIDIA:
* Tesla (8000 - 300 series)
* Kepler (600 - 800 series)
* AMD:
* TeraScale (2000 - 6000 series)
* GCN 1-3 (7000 - R9 series)
* Polaris (RX 4xx/5xx series, if CPU lacks AVX2)
* Intel:
* Iron Lake
* Sandy Bridge (2000 - 3000 series)
* Ivy Bridge (4000 series)
* Haswell (4400, 4600, 5000 series)
* Broadwell (6000 series)
* Skylake (500 series)
**Monterey**
* NVIDIA:
* Tesla (8000 - 300 series)
* Kepler (600 - 800 series)
* AMD:
* TeraScale (2000 - 6000 series)
* Intel:
* Iron Lake
* Sandy Bridge (2000 - 3000 series)
* Ivy Bridge (4000 series)
**Big Sur**
* NVIDIA:
* Tesla (8000 - 300 series)
* AMD:
* TeraScale (2000 - 6000 series)
* Intel:
* Iron Lake
* Sandy Bridge (2000 - 3000 series)
:::
## No DisplayPort Output on Mac Pros with NVIDIA Kepler
If you're having trouble with DisplayPort output on Mac Pros, try enabling Minimal Spoofing in Settings -> SMBIOS Settings and rebuild/install OpenCore. This will trick macOS drivers into thinking you have a newer MacPro7,1 and resolve the issue.
<div align="left">
<img src="./images/OCLP-GUI-SMBIOS-Minimal.png" alt="GUI SMBIOS minimal" width="800" />
</div>
## Intermediate issues with USB 1.1 and Bluetooth on MacPro3,1 - MacPro5,1
For those experiencing issues with USB 1.1 devices (such as mice, keyboards and bluetooth chipsets), macOS Big Sur and newer have weakened OS-side reliability for the UHCI controller in older Mac Pros.
* UHCI is a USB 1.1 controller that is hooked together with the USB 2.0 ports in your system. Whenever a USB 1.1 device is detected, the UHCI controller is given ownership of the device at a hardware/firmware level.
* EHCI is the USB 2.0 controller in older Mac Pros
Because of this, we recommend placing a USB 2.0/3.0 hub between your devices and the port on the Mac Pro. UHCI and EHCI cannot both be used at once, so using a USB hub will always force the EHCI controller on.
* Alternatively, you can try cold-starting the hardware and see if macOS recognizes the UHCI controller properly.
## Secondary CPU not visible on MacPro3,1/Xserve2,1
Starting with macOS Sequoia, OCLP has to disable the secondary CPU in these systems to avoid a panic. This also means by default, only single CPU will be usable even on older versions. To re-enable both CPUs on older versions, do the following:
1. Open Settings -> `Build` tab.
2. Untick `MacPro3,1/Xserve2,1 Workaround`.
3. Rebuild OpenCore.
4. Reboot.
**Dual CPUs cannot be enabled in any circumstance if Sequoia or newer is installed, even in multiboot scenarios. Doing so will make Sequoia unbootable.**
[More information here](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1136#:~:text=we%20cannot%20verify.-,MacPro3%2C1%20Dual%20Socket%20Support,-Currently%20on%20macOS)
## No acceleration after a Metal GPU swap on Mac Pro
If you finished installing macOS with the original card installed (to see bootpicker for example) and swapped your GPU to a Metal supported one, you may notice that you're missing acceleration.
To fix this, open OCLP and revert root patches to get your Metal-supported GPU work again. In macOS Ventura and newer, repatching is needed for most configurations after reversion. Reason why this happens is automatic root patching during USB install and the autopatcher assuming you will be using the original graphics card and therefore doing non-Metal patching. **Metal and non-Metal GPUs cannot be used at the same time** as Non-Metal patching completely bypasses Metal and requires removing some parts such as drivers for other cards, which causes Metal cards to not accelerate after swapping.
Alternatively, you can remove "AutoPkg-Assets.pkg" from /Library/Packages on the USB drive before proceeding with the installation. This package includes the assets for root patching and the system won't be autopatched if they aren't present. To see the folder, enable hidden files with `Command` + `Shift` + `.`
## Keyboard, Mouse and Trackpad not working in installer or after update
Starting from macOS Ventura, USB 1.1 drivers are no longer provided in the operating system. For Macs using legacy USB 1.1 controllers, OpenCore Legacy Patcher can only restore support once it has performed root volume patches which restore the drivers. Thus when installing macOS or after an update, you need to hook up a USB hub between your Mac and keyboard/mouse, forcing USB 2.0 mode in order to install the root patches.
* For MacBook users, you'll need to find an external keyboard/mouse in addition to the USB hub
Applicable models include:
| Family | Year | Model | Notes |
| :---------- | :--------------------| :---------------------------- | :----------------------------------------------- |
| 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) |
| Mac mini | Mid 2011 and older | Macmini3,1 - Macmini5,x | |
| Mac Pro | Mid 2010 and older | MacPro3,1 - MacPro5,1 | |
<div align="left">
<img src="./images/usb11-chart.png" alt="USB1.1 chart" width="800" />
</div>
::: warning Note
In macOS Sonoma, this seems to have been further weakened and some hubs may not be functional. If you encounter this issue, try another hub.
:::
### Alternative method for Software Update
Alternative way for updates is making sure to enable "Remote Login" in General -> Sharing before updating, which will enable SSH. That means you can take control using Terminal in another system and run Post Install Volume Patching.
**This only applies to updates via Software Update and is not applicable when booting to installer via USB drive.**
Use the following commands:
1. `ssh username@lan-ip-address` - Connects via SSH, change username and IP address to the system's
2. `/Applications/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher --patch_sys_vol` - Installs root patches via CLI
3. `sudo reboot`.
More information can be found here:
* [Legacy UHCI/OHCI support in Ventura #1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)
## No T1 functionality after installing Sonoma or newer
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. 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>
## Keyboard Backlight broken
Due to forcing `hidd` into spinning up with the fallback mode enabled, this can break the OS's recognition of backlight keyboards. Thankfully the drivers themselves still do operate so applications such as [LabTick](https://www.macupdate.com/app/mac/22151/lab-tick) are able to set the brightness manually.
::: details For Big Sur (click to expand)
Due to the Metal Backend, the enhanced color output of these apps seems to heavily break overall UI usage. To work around this, [users reported](https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/post-29870324) forcing the color output of their monitor from Billions to Millions of colors helped greatly. Apps easily allowing this customization are [SwitchResX](https://www.madrau.com), [ResXreme](https://macdownload.informer.com/resxtreme/) and [EasyRes](http://easyresapp.com).
:::
## Wake from sleep heavily distorted on ATI/AMD TeraScale 1 from macOS 11.3 to Monterey
**Fixed for macOS Ventura starting from 0.6.6. Big Sur and Monterey will continue to exhibit the issue.**
This issue affects TeraScale 1 GPUs (ie. ATI/AMD Radeon HD2000-4000). Only known solution is to downgrade to macOS 11.2.3 or older. Additionally, logging out and logging back in can resolve the issue without requiring a reboot.
In the event Apple removes 11.2.3 from their catalogue, we've provided a mirror below:
* [Install macOS 11.2.3 20D91](https://archive.org/details/install-mac-os-11.2.3-20-d-91)
## Unable to switch GPUs on 2011 15" and 17" MacBook Pros
Currently, with OpenCore Legacy Patcher, GPU switching between the iGPU and dGPU is broken. The simplest way to set a specific GPU is to disable the dGPU when you wish to remain on the more power efficient iGPU.
The best way to achieve this is to boot to Recovery (or Single User Mode if the dGPU refuses to function at all) and run the following command:
```sh
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%01%00%00%00
```
This will disable the dGPU and allow the iGPU to function in Big Sur. Note that external display outputs are directly routed to the dGPU and therefore can no longer be used. Solutions such as [DisplayLink Adapters](https://www.displaylink.com/products/usb-adapters) can work around this limitation, however, note that you'll need to use older drivers (5.2.6):
* [DisplayLink USB Graphics Software for macOS - For Mojave and Catalina - 5.2.6](https://www.synaptics.com/products/displaylink-graphics/downloads/macos-5.2.6)
Note: This driver only provides partial support in macOS, full graphics acceleration is not currently available on displays driven by DisplayLink.
## Erratic Colours on ATI TeraScale 2 GPUs (HD5000/HD6000)
Resolved with OpenCore Legacy Patcher v0.4.2
::: details Legacy Fix (prior to 0.4.2)
Due to an odd bug with ATI's TeraScale 2 GPUs, many users will experience erratic/strobing colours once finished installing accelerated patches and rebooting into macOS. The issue stems from an incorrect assumption in the GPU drivers where it will enforce the Billion Colour space on your display. To fix, simply force your Display into a lower color depth such as Million Colours.
Applications that can set color depth are:
* [SwitchResX](https://www.madrau.com)
* [ResXtreme](https://macdownload.informer.com/resxtreme/)
:::
## Cannot Login on 2011 15" and 17" MacBook Pros
By default, OpenCore Legacy Patcher will assume MacBookPro8,2/3 have a faulty dGPU and disable acceleration. This is the safest option for most users as enabling dGPU acceleration on faulty Macs will result in failed booting.
However, if your machine does not have the dGPU disabled via NVRAM, you'll experience a login loop. To work around this is quite simple:
1. Boot macOS in Single User Mode
* Press Cmd+S in OpenCore's menu when you turn the Mac on
2. When the command line prompt appears, enter the dGPU disabler argument (at the bottom)
3. Reboot and patched macOS should work normally
4. If you still want to use the dGPU, run OpenCore Legacy Patcher and enable TS2 Acceleration from settings. Go to `Settings -> Root Patching -> TeraScale 2 Acceleration`, then root patch again.
5. Either Reset NVRAM or set `gpu-power-prefs` to zeros to re-enable the dGPU
```sh
# Forces GMUX to use iGPU only (ie. disable dGPU)
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%01%00%00%00
# To reset, simply write zeros or NVRAM Reset your Mac
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%00%00%00%00
```
## Black Boxes on HD3000 iGPUs
A somewhat strange issue on Intel HD3000-based Macs, on 3rd party displays sometimes UI elements may become black and unreadable. To resolve, select either the generic `Display` or `Display P3` Color Profiles in Display Settings.
* Mainly applicable for HDMI Displays, DVI and DisplayPort are generally unaffected.
* If you're inside Setup Assistant, press `Cmd` + `Option` + `Control` + `T` to launch Terminal. From there, run `open /System/Applications/System\ Preferences.app`
* Issue has spread to more Macs with macOS Ventura, including MacBook Airs and MacBook Pros
| Default Color Profile | Display/Display P3 Profile |
| :--- | :--- |
| ![](./images/HD3000-Default-Colors.png) | ![](./images/HD3000-Display-Colors.png) |
## Cannot Pair Bluetooth Devices
In macOS Ventura, hover states may not function correctly which results in the "Connect" button not appearing in System Settings. To resolve:
1. Enable Keyboard Navigation in System Settings -> Keyboard
2. Tab + space over Bluetooth devices in System Settings -> Bluetooth
3. Pair button should appear
For more information, see [ASentientBot's post](https://forums.macrumors.com/threads/macos-13-ventura-on-unsupported-macs-thread.2346881/page-116?post=31858759#post-31858759).

147
docs/TROUBLESHOOT-MISC.md Normal file
View File

@@ -0,0 +1,147 @@
# Booting, installer and other issues
#### Booting
* [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-booting)
* [Stuck on boot after root patching](#stuck-on-boot-after-root-patching)
* [Booting Recovery through OpenCore Legacy Patcher](#booting-recovery-through-opencore-legacy-patcher)
* [Black Screen on MacBookPro11,3 in macOS Monterey](#black-screen-on-macbookpro11-3-in-macos-monterey)
#### Installer
* [Stuck on hard disk selection with greyed out buttons in installer](#stuck-on-hard-disk-selection-with-greyed-out-buttons-in-installer)
* [Installer fails with "an error occurred preparing the software update"](#installer-fails-with-an-error-occurred-preparing-the-software-update)
* [Stuck on "Less than a minute remaining..."](#stuck-on-less-than-a-minute-remaining)
* [Stuck on "Your Mac needs a firmware update"](#stuck-on-your-mac-needs-a-firmware-update)
#### Other
* [Reboot when entering Hibernation (`Sleep Wake Failure`)](#reboot-when-entering-hibernation-sleep-wake-failure)
* [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 `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.
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.
## Infinite Recovery OS Booting
With OpenCore Legacy Patcher, we rely on Apple Secure Boot to ensure OS updates work correctly and reliably with Big Sur. However this installs NVRAM variables that will confuse your Mac if not running with OpenCore. To resolve this, simply uninstall OpenCore and [reset NVRAM](https://support.apple.com/en-mide/HT201255).
* Note: Machines with modified root volumes will also result in an infinite recovery loop until integrity is restored.
## 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`.
Go into terminal and first mount the disk by typing
```sh
mount -uw "/Volumes/Macintosh HD"
```
Then revert the snapshot
```sh
bless --mount "/Volumes/Macintosh HD" --bootefi --last-sealed-snapshot
```
Now we're going to clean the /Library/Extensions folder from offending kexts while keeping needed ones.
Run the following and **make sure to type it carefully**
::: warning
If you have **FileVault 2 enabled**, you will need to mount the Data volume first. This can be done in Disk Utility by locating your macOS volume name, selecting its Data volume, and selecting the Mount option in the toolbar.
:::
```sh
cd "/Volumes/Macintosh HD - Data/Library/Extensions" && ls | grep -v "HighPoint*\|SoftRAID*" | xargs rm -rf
```
Then restart and now your system should be restored to the unpatched snapshot and should be able to boot again.
## Booting Recovery through OpenCore Legacy Patcher
Booting into Recovery through the regular key combination (cmd+r) will result in a "no entry" screen, due to the checks detecting an unsupported Mac.
To access Recovery, you will have to boot it through OpenCore using the bootpicker. By default, the patcher will try to hide extra boot options such as recovery from the user. To make them appear, press the `Spacebar` key while inside OpenCore's bootpicker to list all boot options and select recovery for the corresponding OS version.
## Black Screen on MacBookPro11,3 in macOS Monterey
Due to Apple dropping NVIDIA Kepler support in macOS Monterey, [MacBookPro11,3's GMUX has difficulties switching back to the iGPU to display macOS correctly.](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/522) To work-around this issue, boot the MacBookPro11,3 in Safe Mode and once macOS is installed, run OCLP's Post Install Root Patches to enable GPU Acceleration for the NVIDIA dGPU.
* Safe Mode can be started by holding `Shift` + `Enter` when selecting macOS Monterey in OCLP's Boot Menu.
## Stuck on hard disk selection with greyed out buttons in installer
Switch installer language to English. If the language selector doesn't show up, [reset NVRAM](https://support.apple.com/en-mide/102603) and boot into the installer again.
You can switch back to different language once macOS has installed.
## Installer fails with "an error occurred preparing the software update"
This issue can be faced in the second phase of the installer with black background and Apple logo, cause of this issue is unknown. To possibly resolve this issue, keep rebooting into 'macOS Installer' (the second phase) multiple times until it ultimately goes through.
## Stuck on "Less than a minute remaining..."
A common area for systems to get "stuck", namely for units that are missing the `AES` CPU instruction/older mobile hardware. During this stage, a lot of heavy cryptography is performed, which can make systems appear to be stuck. In reality they are working quite hard to finish up the installation.
Because this step can take a few hours or more depending on drive speeds, be patient at this stage and do not manually power off or reboot your machine as this will break the installation and require you to reinstall. If you think your system has stalled, press the Caps Lock key. If the light turns on, your system is busy and not actually frozen.
## Stuck on "Your Mac needs a firmware update"
Full error: "Your Mac needs a firmware update in order to install to this Volume. Please select a Mac OS Extended (Journaled) volume instead."
This error occurs when macOS determines that the current firmware does not have full APFS support. To resolve this, when installing OpenCore, head to "Patcher Settings" and enable "Moderate SMBIOS Patching" or higher. This will ensure that the firmware reported will show support for full APFS capabilities.
## Reboot when entering Hibernation (`Sleep Wake Failure`)
[Known issue on some models](https://github.com/dortania/Opencore-Legacy-Patcher/issues/72), a temporary fix is to disable Hibernation by executing the following command in the terminal:
```
sudo pmset -a hibernatemode 0
```
## Volume Hash Mismatch Error in macOS Monterey
A semi-common popup some users face is the "Volume Hash Mismatch" error:
<p align="left">
<img src="./images/Hash-Mismatch.png">
</p>
What this error signifies is that the OS detects that the boot volume's hash does not match what the OS is expecting, this error is generally cosmetic and can be ignored. However if your system starts to crash spontaneously shortly after, you'll want to reinstall macOS fresh without importing any data at first.
* Note that this bug affects native Macs as well and is not due to issues with unsupported Macs: [OSX Daily: “Volume Hash Mismatch” Error in MacOS Monterey](https://osxdaily.com/2021/11/10/volume-hash-mismatch-error-in-macos-monterey/)
Additionally, it can help to disable FeatureUnlock in Settings -> Misc Settings as this tool can be strenuous on systems with weaker memory stability.
## Cannot Disable SIP in recoveryOS
With OCLP, the patcher will always overwrite the current SIP value on boot to ensure that users don't brick an installation after an NVRAM reset. However, for users wanting to disable SIP entirely, this can be done easily.
Head into the GUI, go to Patcher Settings, and toggle the bits you need disabled from SIP:
| SIP Enabled | SIP Lowered (Root Patching) | SIP Disabled |
| :--- | :--- | :--- |
| ![](./images/OCLP-GUI-Settings-SIP-Enabled.png) | ![](./images/OCLP-GUI-Settings-SIP-Root-Patch.png) | ![](./images/OCLP-GUI-Settings-SIP-Disabled.png) |

View File

@@ -0,0 +1,109 @@
# Non-Metal issues
The below page is for users experiencing issues with their overall usage of macOS Big Sur and newer and the Legacy Graphics Acceleration patches. For those unfamiliar with what is considered a non-Metal GPU, see the chart in [FAQ](https://dortania.github.io/OpenCore-Legacy-Patcher/FAQ.html#what-is-metal-and-non-metal)
* [Broken Firefox and Thunderbird (HD 3000)](#broken-firefox-and-thunderbird-hd-3000)
* [Broken Background Blurs](#broken-background-blurs)
* [Downloading older non-Metal Apps](#downloading-older-non-metal-apps)
* [Unable to run Zoom](#unable-to-run-zoom)
* [Unable to grant special permissions to apps (ie. Camera Access to Zoom)](#unable-to-grant-special-permissions-to-apps-ie-camera-access-to-zoom)
* [Photos and Maps app issues](#photos-and-maps-app-issues)
* [Cannot press "Done" when editing a Sidebar Widget](#cannot-press-done-when-editing-a-sidebar-widget)
* [Unable to allow Safari Extensions](#unable-to-allow-safari-extensions)
## Broken Firefox and Thunderbird (HD 3000)
Firefox and Thunderbird are now broken on HD 3000 [due to removal of HD 3000 support by Mozilla in v145.](https://hg-edge.mozilla.org/releases/mozilla-release/rev/32d4368e5a2a869bdc1f4556f020c1a6bea2a9c0) This may lead to system freezes and other erratic behavior on systems with this GPU, which is found in Mac models from 2011. As a workaround, hardware acceleration has to be disabled. If your system is locking up in normal mode, boot into Safe Mode by holding `Shift` on boot and disable hardware acceleration for Firefox and Thunderbird wherever applicable.
::: details Affected Mac models (click to expand)
* MacBook Pro 2011 13", 15" and 17"
* MacBook Air 2011 11" and 13"
* Mac mini 2011 models without Radeon dGPU
:::
## Broken Background Blurs
By default with the non-Metal acceleration patches, many background blur menus may act distorted when moving a cursor over it. With 0.4.1 and newer, users can enable a new Beta Blur feature to try and resolve the issue:
![]()
<div align="left">
<img src="./images/OCLP-GUI-Settings-Beta-Blur.png" alt="Beta Blur settings" width="600" />
</div>
Do note that enabling beta blurs can be more demanding on slower hardware
## Downloading older non-Metal Apps
Many Apple apps now have direct reliance on Metal for proper functioning, however legacy builds of these apps still do work in Big Sur. See below for archive of many apps such as Pages, iMovie, GarageBand.
* [Apple Apps for Non-Metal Macs](https://archive.org/details/apple-apps-for-non-metal-macs)
Note: This archive assumes that you own these copies of these apps through the Mac App Store, Dortania does not condone piracy
## Unable to run Zoom
Currently Zoom relies partially on Metal and so needs a small binary patch. Dosdude1 has provided a nice script for this:
* [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.
This issue is fully resolved for 13.2.1 and lower starting from 0.2.5.
::: 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 entries 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:
```sh
# Open Terminal and run the following commands
cd ~/Downloads/
chmod +x tccplus
./tccplus add Microphone com.hnc.Discord
```
For those who may experience issues with `tccplus`, you can manually patch `com.apple.TCC` to add permissions:
```sh
# get app id (Zoom.us used in example):
$ osascript -e 'id of app "zoom.us"'
# output: us.zoom.xos
$ sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceMicrophone','us.zoom.xos',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);"
$ sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceCamera','us.zoom.xos',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);"
```
:::
## Photos and Maps app issues
**Starting from macOS Monterey, Maps and everything relying on it (such as Find My or 'Places' in Photos) are non-functional on non-Metal due to Metal reliance.**
::: details For Big Sur (click to expand)
Due to the Metal Backend, the enhanced color output of these apps seems to heavily break overall UI usage. To work around this, [users reported](https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/post-29870324) forcing the color output of their monitor from Billions to Millions of colors helped greatly. Apps easily allowing this customization are [SwitchResX](https://www.madrau.com), [ResXreme](https://macdownload.informer.com/resxtreme/) and [EasyRes](http://easyresapp.com).
:::
## Cannot press "Done" when editing a Sidebar Widget
Workaround: Press some combination of Tab, or Tab and then Shift-Tab, or just Shift-Tab until the "Done" button is highlighted. Then press spacebar to activate the button, the same as in any other dialog with a highlighted button halo.
## Unable to allow Safari Extensions
Due to a bug in the legacy acceleration patches, users won't be able to enable Safari Extensions.
The following tool can be used to work-around this issue:
* [Non-Metal Safari Extensions](https://github.com/moosethegoose2213/Non-Metal-Safari-Extensions/)

View File

@@ -1,320 +1,6 @@
# General troubleshooting
This page has moved.
Here are some common errors that users may experience while using this patcher:
* [OpenCore Legacy Patcher not launching](#opencore-legacy-patcher-not-launching)
* ["You don't have permission to save..." error when creating USB installer](#you-don-t-have-permission-to-save-error-when-creating-usb-installer)
* [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)
* [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)
* [Reboot when entering Hibernation (`Sleep Wake Failure`)](#reboot-when-entering-hibernation-sleep-wake-failure)
* [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)
* [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)
* [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)
* [No acceleration after a Metal GPU swap on Mac Pro](#no-acceleration-after-a-metal-gpu-swap-on-mac-pro)
* [Keyboard, Mouse and Trackpad not working in installer or after update](#keyboard-mouse-and-trackpad-not-working-in-installer-or-after-update)
* [No T1 functionality after installing Sonoma or newer](#no-t1-functionality-after-installing-sonoma-or-newer)
## OpenCore Legacy Patcher not launching
If the application won't launch (e.g. icon will bounce in the Dock), try launching OCLP via Terminal by typing the following command, make sure you've moved the app to `/Applications` before this.
```sh
/Applications/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher
```
## "You don't have permission to save..." error when creating USB installer
In some cases, a following error saying "The bless of the installer disk failed" stating the reason as "You don't have permission to save..." may appear.
<div align="left">
<img src="./images/Error-No-Permission-To-Save.png" alt="NoPermissionToSave" width="600" />
</div>
To resolve this, you may try adding Full Disk Access permission for OpenCore Legacy Patcher. To add it, first go to the settings
* Ventura and Sonoma: Go to System Settings -> Privacy and Security -> Full Disk Access
* Big Sur and Monterey: Go to System Preferences -> Security and Privacy -> Full Disk Access
Enable OpenCore-Patcher in the list. If not found on the list, press the + sign to add a new entity and find OpenCore Legacy Patcher from Applications.
Restart OpenCore Legacy Patcher and try creating your USB drive again.
Optional: After you've created your USB drive, you can remove OpenCore Legacy Patcher from Full Disk Access again.
## 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.)
## Stuck on hard disk selection with greyed out buttons in installer
Switch installer language to English. If the language selector doesn't show up, [reset NVRAM](https://support.apple.com/en-mide/102603) and boot into the installer again.
You can switch back to different language once macOS has installed.
## Cannot boot macOS without the USB
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.
## Infinite Recovery OS Booting
With OpenCore Legacy Patcher, we rely on Apple Secure Boot to ensure OS updates work correctly and reliably with Big Sur. However this installs NVRAM variables that will confuse your Mac if not running with OpenCore. To resolve this, simply uninstall OpenCore and [reset NVRAM](https://support.apple.com/en-mide/HT201255).
* 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.
Currently there is a "PurgePendingUpdate" tool available [on the Discord server](https://discord.com/channels/417165963327176704/1037474131526029362/1255993208966742108) you can download and then run it in Terminal, to get rid of a pending update. This may be integrated into OCLP later on, however there is currently no ETA.
Disabling automatic macOS updates is extremely recommended once recovered, to prevent it from happening again.
**macOS Ventura and newer:**
System Settings -> General -> Software Update -> (i) button next to Automatic Updates -> Disable "Download new updates when available".
**macOS Big Sur and Monterey:**
System Preferences -> Software Update -> Advanced -> Disable "Download new updates when available".
## Stuck on boot after root patching
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`.
Go into terminal and first mount the disk by typing
```sh
mount -uw "/Volumes/Macintosh HD"
```
Then revert the snapshot
```sh
bless --mount "/Volumes/Macintosh HD" --bootefi --last-sealed-snapshot
```
Now we're going to clean the /Library/Extensions folder from offending kexts while keeping needed ones.
Run the following and **make sure to type it carefully**
::: warning
If you have **FileVault 2 enabled**, you will need to mount the Data volume first. This can be done in Disk Utility by locating your macOS volume name, selecting its Data volume, and selecting the Mount option in the toolbar.
:::
```sh
cd "/Volumes/Macintosh HD - Data/Library/Extensions" && ls | grep -v "HighPoint*\|SoftRAID*" | xargs rm -rf
```
Then restart and now your system should be restored to the unpatched snapshot and should be able to boot again.
## "Unable to resolve dependencies, error code 71" when root patching
If you're getting this error, it typically means you have some offending kernel extensions, to fix this you will have to clear them.
Semi-automated way:
1. Open Terminal
2. Type `sudo zsh`
3. Type `cd "/Volumes/Macintosh HD/Library/Extensions" && ls | grep -v "HighPoint*\|SoftRAID*" | xargs rm -rf`
* Make sure to rename "Macintosh HD" to what your drive name is
4. Run OCLP root patcher again
Manual way:
1. Navigate to /Library/Extensions
2. Delete everything **except** HighPointIOP.kext, HighPointRR.kext and SoftRAID.kext
3. Run OCLP root patcher again
If there is no success, navigate to "/Library/Developer/KDKs" and delete everything.
If still no success, type `sudo bless --mount "/Volumes/Macintosh HD/" --bootefi --last-sealed-snapshot`
* Make sure again to rename "Macintosh HD" to what your drive name is
Run OCLP root patcher again.
## Reboot when entering Hibernation (`Sleep Wake Failure`)
[Known issue on some models](https://github.com/dortania/Opencore-Legacy-Patcher/issues/72), a temporary fix is to disable Hibernation by executing the following command in the terminal:
```
sudo pmset -a hibernatemode 0
```
## 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.
## Stuck on "Your Mac needs a firmware update"
Full error: "Your Mac needs a firmware update in order to install to this Volume. Please select a Mac OS Extended (Journaled) volume instead."
This error occurs when macOS determines that the current firmware does not have full APFS support. To resolve this, when installing OpenCore, head to "Patcher Settings" and enable "Moderate SMBIOS Patching" or higher. This will ensure that the firmware reported will show support for full APFS capabilities.
## No Brightness Control
With OCLP v0.0.22, we've added support for brightness control on many models. However, some users may have noticed that their brightness keys do not work.
As a work-around, we recommend users try out the below app:
* [Brightness Slider](https://actproductions.net/free-apps/brightness-slider/)
## Cannot connect Wi-Fi on Monterey with legacy cards
With OCLP v0.2.5, we've added support for legacy Wi-Fi on Monterey. However, some users may have noticed that they can't connect to wireless networks.
To work-around this, we recommend that users manually connect using the "Other" option in the Wi-Fi menu bar or manually adding the network in the "Network" preference pane.
## No Graphics Acceleration
In macOS, GPU drivers are often dropped from the OS with each major release of it. With macOS Big Sur, currently, all non-Metal GPUs require additional patches to gain acceleration. In addition, macOS Monterey removed Graphics Drivers for both Intel Ivy Bridge and NVIDIA Kepler graphics processors.
If you're using OCLP v0.4.4, you should have been prompted to install Root Volume patches after the first boot from installation of macOS. If you need to do this manually, you can do so within the patcher app. Once rebooted, acceleration will be re-enabled as well as brightness control for laptops.
## Black Screen on MacBookPro11,3 in macOS Monterey
Due to Apple dropping NVIDIA Kepler support in macOS Monterey, [MacBookPro11,3's GMUX has difficulties switching back to the iGPU to display macOS correctly.](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/522) To work-around this issue, boot the MacBookPro11,3 in Safe Mode and once macOS is installed, run OCLP's Post Install Root Patches to enable GPU Acceleration for the NVIDIA dGPU.
* Safe Mode can be started by holding `Shift` + `Enter` when selecting macOS Monterey in OCLP's Boot Menu.
## No DisplayPort Output on Mac Pros with NVIDIA Kepler
If you're having trouble with DisplayPort output on Mac Pros, try enabling Minimal Spoofing in Settings -> SMBIOS Settings and rebuild/install OpenCore. This will trick macOS drivers into thinking you have a newer MacPro7,1 and resolve the issue.
<div align="left">
<img src="./images/OCLP-GUI-SMBIOS-Minimal.png" alt="GUI SMBIOS minimal" width="800" />
</div>
## Volume Hash Mismatch Error in macOS Monterey
A semi-common popup some users face is the "Volume Hash Mismatch" error:
<p align="left">
<img src="./images/Hash-Mismatch.png">
</p>
What this error signifies is that the OS detects that the boot volume's hash does not match what the OS is expecting, this error is generally cosmetic and can be ignored. However if your system starts to crash spontaneously shortly after, you'll want to reinstall macOS fresh without importing any data at first.
* Note that this bug affects native Macs as well and is not due to issues with unsupported Macs: [OSX Daily: “Volume Hash Mismatch” Error in MacOS Monterey](https://osxdaily.com/2021/11/10/volume-hash-mismatch-error-in-macos-monterey/)
Additionally, it can help to disable FeatureUnlock in Settings -> Misc Settings as this tool can be strenuous on systems with weaker memory stability.
## Cannot Disable SIP in recoveryOS
With OCLP, the patcher will always overwrite the current SIP value on boot to ensure that users don't brick an installation after an NVRAM reset. However, for users wanting to disable SIP entirely, this can be done easily.
Head into the GUI, go to Patcher Settings, and toggle the bits you need disabled from SIP:
| SIP Enabled | SIP Lowered (Root Patching) | SIP Disabled |
| :--- | :--- | :--- |
| ![](./images/OCLP-GUI-Settings-SIP-Enabled.png) | ![](./images/OCLP-GUI-Settings-SIP-Root-Patch.png) | ![](./images/OCLP-GUI-Settings-SIP-Disabled.png) |
## Intermediate issues with USB 1.1 and Bluetooth on MacPro3,1 - MacPro5,1
For those experiencing issues with USB 1.1 devices (such as mice, keyboards and bluetooth chipsets), macOS Big Sur and newer have weakened OS-side reliability for the UHCI controller in older Mac Pros.
* UHCI is a USB 1.1 controller that is hooked together with the USB 2.0 ports in your system. Whenever a USB 1.1 device is detected, the UHCI controller is given ownership of the device at a hardware/firmware level.
* EHCI is the USB 2.0 controller in older Mac Pros
Because of this, we recommend placing a USB 2.0/3.0 hub between your devices and the port on the Mac Pro. UHCI and EHCI cannot both be used at once, so using a USB hub will always force the EHCI controller on.
* Alternatively, you can try cold-starting the hardware and see if macOS recognizes the UHCI controller properly.
## Stuck on "Less than a minute remaining..."
A common area for systems to get "stuck", namely for units that are missing the `AES` CPU instruction/older mobile hardware. During this stage, a lot of heavy cryptography is performed, which can make systems appear to be stuck. In reality they are working quite hard to finish up the installation.
Because this step can take a few hours or more depending on drive speeds, be patient at this stage and do not manually power off or reboot your machine as this will break the installation and require you to reinstall. If you think your system has stalled, press the Caps Lock key. If the light turns on, your system is busy and not actually frozen.
## No acceleration after a Metal GPU swap on Mac Pro
If you finished installing macOS with the original card installed (to see bootpicker for example) and swapped your GPU to a Metal supported one, you may notice that you're missing acceleration. To fix this, open OCLP and revert root patches to get your Metal-supported GPU work again. In macOS Ventura and newer, repatching is needed after reversion.
Alternatively, you can remove "AutoPkg-Assets.pkg" from /Library/Packages on the USB drive before proceeding with the installation. To see the folder, enable hidden files with `Command` + `Shift` + `.`
The reason for this is that the autopatcher will assume that you will be using the original graphics card and therefore does non-metal patching, which includes removing some drivers for other cards. This causes Metal cards to not accelerate after swapping.
## Keyboard, Mouse and Trackpad not working in installer or after update
For Macs using legacy USB 1.1 controllers, OpenCore Legacy Patcher can only restore support once it has performed root volume patches. Thus to install macOS, you need to hook up a USB hub between your Mac and Keyboard/Mouse.
::: warning Note
In macOS Sonoma, this seems to have been further weakened and some hubs may not be functional.
Alternative way is making sure to enable "Remote Login" in General -> Sharing before updating, which will enable SSH. That means you can take control using Terminal in another system by typing `ssh username@lan-ip-address` and your password. After that run Post Install Volume Patching by typing `/Applications/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher --patch_sys_vol` and finally `sudo reboot`.
:::
* For MacBook users, you'll need to find an external keyboard/mouse in addition to the USB hub
More information can be found here:
* [Legacy UHCI/OHCI support in Ventura #1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)
Applicable models include:
| Family | Year | Model | Notes |
| :---------- | :--------------------| :---------------------------- | :----------------------------------------------- |
| 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) |
| Mac mini | Mid 2011 and older | Macmini3,1 - Macmini5,x | |
| Mac Pro | Mid 2010 and older | MacPro3,1 - MacPro5,1 | |
<div align="left">
<img src="./images/usb11-chart.png" alt="USB1.1 chart" width="800" />
</div>
## No T1 functionality after installing Sonoma or newer
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.
- [Application troubleshooting](./TROUBLESHOOT-APP.md)
- [Booting, installer and other troubleshooting](./TROUBLESHOOT-MISC.md)
- [Non-Metal troubleshooting](./TROUBLESHOOT-NONMETAL.md)
- [Hardware troubleshooting](./TROUBLESHOOT-HARDWARE.md)

View File

@@ -4,34 +4,39 @@ This guide tells you different ways to uninstall OCLP and/or patches.
## Delete everything and revert back to native macOS
Boot a native macOS installer, go to Disk Utility and choose View -> Show All Devices. Wipe the full disk by choosing the top option on the left sidebar and start macOS installation.
1. Create a USB drive with the latest officially supported macOS installer or alternatively [on most Macs](https://apple.stackexchange.com/questions/383985/which-macs-support-macos-internet-recovery) use Internet Recovery.
* Hold `cmd` + `Option (Alt)` + `R` for Internet Recovery.
* If doing Internet Recovery, skip step 2.
* Caution: Internet Recovery may not always install the latest officially supported OS version.
3. Restart and boot the computer using the installer USB drive by holding `Option (Alt)`.
4. Go to Disk Utility and choose View -> Show All Devices.
5. Wipe the full disk by choosing the top disk option on the left sidebar and selecting "Erase".
6. Start macOS installation.
7. Once finished, restart once more and [Reset NVRAM](https://support.apple.com/HT204063) to ensure a fully clean and stock system.
[Reset NVRAM](https://support.apple.com/HT204063) afterwards.
## Uninstalling the application
## Manual methods
### Version 1.5.0 and newer
Uninstalling OCLP manually is a three part process which includes the application, OpenCore and the root patches. If you want to remove OCLP and patches entirely, go through all three in succession. Otherwise do the part(s) you need.
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)
### Reverting root patches
### Version 1.4.3 and older.
Open the OCLP application and go into the Post Install Root Patch menu, choose Revert Root Patches.
Navigate to `/Library/Application Support/` and delete the Dortania folder.
* **Supported on Monterey and later. Big Sur does not support snapshot reversion and requires a reinstall. Reinstall can be done without a wipe if the macOS installer version used is the same or newer.**
## Reverting root patches
### Uninstalling the application
Open the OCLP application and go into the Post Install Root Patch menu, choose Revert Root Patches.
To uninstall the OCLP application including LaunchAgent and PrivilegedHelperTool, download the uninstaller package from [the releases page.](https://github.com/dortania/OpenCore-Legacy-Patcher/releases)
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
* You'll need to mount the drive's EFI partition, and delete the `EFI/OC` and `System` folders
* Mount the drive's EFI partition, and delete the `EFI/OC` and `System` folders
* Note: **Do not** delete the entire EFI folder, this will likely break any existing Windows and Linux installations.
* [See here for an example on how to mount](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html)
* For 5K iMac users, you will also need to delete `boot.efi` on the root of the EFI partition.
* 5K iMac users, also delete `boot.efi` on the root of the EFI partition.
2. [Reset NVRAM](https://support.apple.com/HT204063)
@@ -43,3 +48,4 @@ Note that after you remove OpenCore, your Mac will no longer boot and show the "
:::

View File

@@ -1,35 +1,30 @@
# Updating OpenCore and Patches
# Updating
This guide explains how to get fully up to date application, bootloader and patches.
## Updating the application
## Updating the application, OpenCore and patches
Latest versions of OCLP can download updates by themselves, you will get notified of a new update with the changelog.
[You can also manually download the latest release here.](https://github.com/dortania/OpenCore-Legacy-Patcher/releases)
<div align="left">
<img src="./images/OCLP_Update_Available.png" alt="Update Avaialble" />
</div>
## Updating patches
After the update, the application asks if you want to update OpenCore and root patches.
If you do not need to change any settings, you can click "Yes" and follow the procedure. If you want to change settings, select "No" from here and do your settings, then manually build and install OpenCore to update to the latest version of the bootloader.
Finally install new root patches to ensure you're running on the latest fixes for on-disk patches.
* If you do not need to change any settings, click "Yes" on the patch update question and follow the procedure to update OpenCore and root patches automatically.
* If you do want to change settings, select "No" and do your settings.
* In case you selected "No", you will have to manually build and install OpenCore and then manually install new root patches to ensure you're running on the latest OpenCore with your settings and the fixes for on-disk patches.
<div align="left">
<img src="./images/OCLP_Update_Successful.png" alt="Update Successful" />
</div>
| Update available | App update success, patch update question |
| :--- | :--- |
| <img src="./images/OCLP_Update_Available.png" alt="Update Available" width="500" /> | <img src="./images/OCLP_Update_Successful.png" alt="Update Successful" width="400" /> |
## Checking OCLP and OpenCore versions
To check what version of OpenCore bootloader and the Patcher you're currently running, you can run the following in the terminal:
#### Checking OCLP and OpenCore versions
To check what version of OpenCore bootloader and the Patcher you're currently running, open the OCLP application and navigate to `Settings -> App` and look for "Booted Information". Alternatively you can check the version from Terminal using the following commands.
Check the status and version of root patches from `Post Install Volume Patch` section in the main menu.
```bash
# OpenCore Version
@@ -38,8 +33,47 @@ nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:OCLP-Version
```
<div align="left">
<img src="./images/oclp-version.png" alt="OCLP version" width="600" />
</div>
From this, we can see that we're running a RELEASE version of OpenCore 0.9.0 built on January 1st, 2023 with Patcher Version 0.6.0!
| Version in app | Version in Terminal | Root patch version |
| :--- | :--- | :--- |
| <img src="./images/OCLP_Booted_Version.png" alt="Build start" width="600" /> | <img src="./images/oclp-version.png" alt="OCLP version" width="900" /> | <img src="./images/OCLP_Root_Patch_Version.png" alt="Root Patch Version" width="900" /> |
## Preparing OCLP for macOS update
It is usually recommended to be on the latest OCLP version for macOS updates. This part details how to prepare OCLP for latest update.
### Major upgrades
This part is for major upgrades, such as `Sonoma (14)` -> `Sequoia (15)`
1. Make sure the OCLP app is up to date.
2. After app has updated, rebuild OpenCore to the internal disk to update the bootloader.
* You can also update root patches but this part is optional in this stage, as they will be wiped by the update.
2. Download the macOS version you want and create an installer USB drive using OCLP as detailed in the original [Creating macOS Installers](https://dortania.github.io/OpenCore-Legacy-Patcher/INSTALLER.html) guide, then follow the [Booting OpenCore and macOS](https://dortania.github.io/OpenCore-Legacy-Patcher/BOOT.html) guide boot to into the installer on your USB drive.
3. Start macOS installation and follow the process, do not use Disk Utility if you don't want to wipe your disk.
4. After installation, reinstall [root patches](https://dortania.github.io/OpenCore-Legacy-Patcher/POST-INSTALL.html#applying-post-install-volume-patches).
**Note:** Major upgrades may work using System Settings but this is not recommended.
### Minor updates
This part is for minor updates, which are also called the "dot updates". Such as `12.x`, `13.x` etc.
1. Make sure the OCLP app is up to date.
2. Rebuild OpenCore to the internal disk to update the bootloader.
* You can also update root patches but this part is optional in this stage, as they will be wiped by the update.
3. Start update from System Settings.
* If your system requires [KDKSupportPkg](https://dortania.github.io/OpenCore-Legacy-Patcher/POST-INSTALL.html#kdk-kernel-debug-kit), OCLP will start downloading it automatically as long as you are connected to the internet and have the [background process](https://dortania.github.io/OpenCore-Legacy-Patcher/PROCESS.html) enabled.
4. Once installed, go into OCLP app and reinstall [root patches](https://dortania.github.io/OpenCore-Legacy-Patcher/POST-INSTALL.html#applying-post-install-volume-patches).
::: warning Important
Some systems on Sequoia require [MetallibSupportPkg](https://dortania.github.io/OpenCore-Legacy-Patcher/POST-INSTALL.html#metallibsupportpkg) during root patching after an update, which requires internet connection to download. If OCLP doesn't see internet connection, it will first offer a patch for WiFi only. You will have to reboot, connect to the internet and rerun root patching for the rest of the patches.
:::

View File

@@ -26,18 +26,19 @@ Ventura's release dropped a large amount of Intel hardware, thus requiring the u
## Current status
OpenCore Legacy Patcher supports Ventura for the models below, however some challenges remain. You can find information about them further down on this page.
<img width="625" alt="" src="./images/OCLP-060-Initial-Support.png">
For older hardware, see below sections:
* [Currently Unsupported/Broken Hardware in Ventura](#currently-unsupportedbroken-hardware-in-ventura)
* [Current issues](#current-issues)
* [AMD Polaris, Vega and Navi support on pre-2019 Mac Pros and pre-2012 iMacs](#amd-polaris-vega-and-navi-support-on-pre-2019-mac-pros-and-pre-2012-imacs)
* [USB 1.1 (OHCI/UHCI) Support](#usb-11-ohciuhci-support)
* [Ethernet issue with Early 2008 Mac Pro](#ethernet-issue-with-early-2008-mac-pro)
The team is doing their best to investigate and fix the aforementioned issues, however no estimated time can be provided.
## Currently Unsupported/Broken Hardware in Ventura
## Current issues
### AMD Polaris, Vega and Navi support on pre-2019 Mac Pros and pre-2012 iMacs
@@ -64,27 +65,19 @@ For Penryn systems and pre-2013 Mac Pros, USB 1.1 support was outright removed i
* IR Receivers
* Bluetooth
With OpenCore Legacy Patcher v0.6.0, basic support has been implemented via Root Volume patching. However due to this, users will need to use a USB hub for installation and post-OS updates when patches are cleaned:
Refer to [the troubleshooting page](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOT-HARDWARE.html#keyboard-mouse-and-trackpad-not-working-in-installer-or-after-update) on how to workaround this issue.
![](./images/usb11-chart.png)
### Graphics support and issues
::: warning The following systems rely on USB 1.1
Refer to the following links for more information about Legacy Metal and non-Metal support and their respective issues.
* iMac10,x and older
* Macmini3,1 and older
* MacBook7,1 and older
* MacBookAir3,1 and older
* MacBookPro7,1 and older
* MacBookPro6,x is exempt
* MacPro5,1 and older
* [Legacy Metal](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008)
* [Non-Metal](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)
:::
### Resolved issues
::: details Legacy Wireless Support (Resolved in v0.6.0 and newer)
### Legacy Wireless Support
For systems that required Root Patches in macOS Monterey to achieve Wireless support, unfortunately macOS Ventura has broken the patch set. Currently the following Wifi cards are unsupported:
* Atheros: All models
@@ -108,9 +101,6 @@ Currently BCM943224, BCM94331, BCM94360 and BCM943602 are still fully supported
::: details Non-Metal Graphics Acceleration (Resolved in v0.6.0 and newer)
### Non-Metal Graphics Acceleration
Regarding non-Metal, the team is hard at work to get non-Metal working, however this is our greatest challenge since Big Sur.
Apple has made significant changes to the graphics stack in order to facilitate fancy effects, and in particularly, Stage Manager. We will update you as we work on development, however, now is not the best time to ask about ETAs.
@@ -136,5 +126,3 @@ The following machines shipped stock with an unsupported GPU:
* MacPro3,1 - MacPro5,1
* Xserve2,1 - Xserve3,1
:::

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

View File

@@ -130,7 +130,7 @@ class OpenCoreLegacyPatcher:
if not any(x in sys.argv for x in ignore_args):
while self.constants.unpack_thread.is_alive():
time.sleep(0.1)
time.sleep(self.constants.thread_sleep_interval)
arguments.arguments(self.constants)

View File

@@ -13,9 +13,9 @@ from .detections import device_probe
class Constants:
def __init__(self) -> None:
# Patcher Versioning
self.patcher_version: str = "2.2.0" # OpenCore-Legacy-Patcher
self.patcher_support_pkg_version: str = "1.9.1" # PatcherSupportPkg
self.copyright_date: str = "Copyright © 2020-2024 Dortania"
self.patcher_version: str = "2.5.0" # OpenCore-Legacy-Patcher
self.patcher_support_pkg_version: str = "1.9.6" # 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.1" # 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.7" # 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
@@ -155,6 +155,7 @@ class Constants:
self.unpack_thread = None # Determine if unpack thread finished (threading.Thread)
self.update_stage: int = 0 # Determine update stage (see gui_support.py)
self.log_filepath: Path = None # Path to log file
self.thread_sleep_interval: float = 0.01 # Sleep interval between UI updates (seconds) - balance between UI responsiveness and CPU usage
self.commit_info: tuple = (None, None, None) # Commit info (Branch, Commit Date, Commit URL)

View File

@@ -30,6 +30,7 @@ class os_data(enum.IntEnum):
ventura = 22
sonoma = 23
sequoia = 24
tahoe = 25
max_os = 99

View File

@@ -155,6 +155,11 @@ xw
logging.info("- Fixing CoreGraphics support on Ivy Bridge")
re_patch_args.append("f16c")
# Patch AVX hardcoding in JavaScriptCore
if smbios_data.smbios_dictionary[self.model]["CPU Generation"] < cpu_data.CPUGen.sandy_bridge.value:
logging.info("- Fixing AVX hardcoding in JavaScriptCore")
re_patch_args.append("jsc")
return re_patch_args

View File

@@ -108,4 +108,5 @@ By default, `CatalogProducts` will only return InstallAssistants. To get all pro
from .url import CatalogURL
from .constants import CatalogVersion, SeedType
from .products import CatalogProducts
from .products import CatalogProducts
from .products_appledb import AppleDBProducts

View File

@@ -27,6 +27,7 @@ class CatalogVersion(StrEnum):
Used for generating sucatalog URLs
"""
TAHOE: str = "26"
SEQUOIA: str = "15"
SONOMA: str = "14"
VENTURA: str = "13"

View File

@@ -214,9 +214,9 @@ class CatalogProducts:
# Remove all but the newest version
for version in supported_versions:
_newest_version = packaging.version.parse("0.0.0")
_latest_stable_version = packaging.version.parse("0.0.0")
# First, determine largest version
# First, determine largest stable version
for installer in products:
if installer["Version"] is None:
continue
@@ -225,26 +225,28 @@ class CatalogProducts:
if installer["Catalog"] in [SeedType.CustomerSeed, SeedType.DeveloperSeed, SeedType.PublicSeed]:
continue
try:
if packaging.version.parse(installer["Version"]) > _newest_version:
_newest_version = packaging.version.parse(installer["Version"])
if packaging.version.parse(installer["Version"]) > _latest_stable_version:
_latest_stable_version = packaging.version.parse(installer["Version"])
except packaging.version.InvalidVersion:
pass
# Next, remove all installers that are not the newest version
# Next, remove all installers that are older than the largest stable version
for installer in products:
if installer["Version"] is None:
continue
if not installer["Version"].startswith(version.value):
continue
try:
if packaging.version.parse(installer["Version"]) < _newest_version:
if packaging.version.parse(installer["Version"]) < _latest_stable_version:
if installer in products_copy:
products_copy.pop(products_copy.index(installer))
except packaging.version.InvalidVersion:
pass
# Remove beta versions if a public release is available
if _newest_version != packaging.version.parse("0.0.0"):
# If there is a largest stable version, remove all betas
# This is to ensure that we only keep the latest stable version where it is available
# but ensure we have a beta if it is the only version available (ie. macOS X.0 betas)
if _latest_stable_version != packaging.version.parse("0.0.0"):
if installer["Catalog"] in [SeedType.CustomerSeed, SeedType.DeveloperSeed, SeedType.PublicSeed]:
if installer in products_copy:
products_copy.pop(products_copy.index(installer))

View File

@@ -0,0 +1,182 @@
"""
products.py: Parse products from Software Update Catalog
"""
import datetime
import hashlib
import logging
import zoneinfo
import packaging.version
from functools import cached_property
from opencore_legacy_patcher import constants
from opencore_legacy_patcher.datasets.os_data import os_data
from ..support import network_handler
APPLEDB_API_URL = "https://api.appledb.dev/ios/macOS/main.json"
class AppleDBProducts:
"""
Fetch InstallAssistants from AppleDB
"""
def __init__(
self,
global_constants: constants.Constants,
max_install_assistant_version: os_data = os_data.sequoia,
) -> None:
self.constants: constants.Constants = global_constants
try:
self.data = (
network_handler.NetworkUtilities()
.get(APPLEDB_API_URL, headers={"User-Agent": f"OCLP/{self.constants.patcher_version}"})
.json()
)
except Exception as e:
self.data = []
logging.error(f"Failed to fetch AppleDB API response: {e}")
return
self.max_ia: os_data = max_install_assistant_version
def _build_installer_name(self, xnu_major: int, beta: bool) -> str:
"""
Builds the installer name based on the version and catalog
"""
try:
return f"macOS {os_data(xnu_major).name.replace('_', ' ').title()}{' Beta' if beta else ''}"
except ValueError:
return f"macOS{' Beta' if beta else ''}"
def _list_latest_installers_only(self, products: list) -> list:
"""
List only the latest installers per macOS version
macOS versions capped at n-3 (n being the latest macOS version)
"""
supported_versions = {
os_data(i): [v for v in products if v["InstallAssistant"]["XNUMajor"] == i] for i in range(self.max_ia - 3, self.max_ia + 1)
}
for versions in supported_versions.values():
versions.sort(key=lambda v: (not v["Beta"], packaging.version.parse(v["RawVersion"])), reverse=True)
return [next(iter(versions)) for versions in supported_versions.values() if versions]
@cached_property
def products(self) -> None:
"""
Returns a list of products from the sucatalog
"""
_products = []
for firmware in self.data:
if firmware.get("internal") or firmware.get("sdk") or firmware.get("rsr"):
continue
# AppleDB does not track whether an installer supports the VMM pseudo-identifier,
# so we will use MacPro7,1, which supports all macOS versions that we care about.
if "MacPro7,1" not in firmware["deviceMap"]:
continue
firmware["raw_version"] = firmware["version"].partition(" ")[0]
xnu_major = int(firmware["build"][:2])
beta = firmware.get("beta") or firmware.get("rc")
details = {
# Dates in AppleDB are in Cupertino time. There are no times, so pin to 10 AM
"PostDate": datetime.datetime.fromisoformat(firmware["released"]).replace(
# hour=10,
# minute=0,
# second=0,
tzinfo=zoneinfo.ZoneInfo("America/Los_Angeles"),
),
"Title": f"{self._build_installer_name(xnu_major, beta)}",
"Build": firmware["build"],
"RawVersion": firmware["raw_version"],
"Version": firmware["version"],
"Beta": beta,
"InstallAssistant": {"XNUMajor": xnu_major},
}
if xnu_major > self.max_ia:
continue
for source in firmware.get("sources", []):
if source["type"] != "installassistant":
continue
if "MacPro7,1" not in source["deviceMap"]:
continue
for link in source["links"]:
if not link["active"]:
continue
if not network_handler.NetworkUtilities(link["url"]).validate_link():
continue
details["InstallAssistant"] |= {
"URL": link["url"],
"Size": source.get("size", 0),
"Checksum": source.get("hashes"),
}
break
else:
continue
break
else:
# No applicable InstallAssistants, or no active sources
continue
_products.append(details)
_products = sorted(_products, key=lambda x: x["Beta"])
_deduplicated_products = []
_seen_builds = set()
# Prevent RCs that were the final release from showing up
for product in _products:
if product["Beta"] and product["Build"] in _seen_builds:
continue
_deduplicated_products.append(product)
_seen_builds.add(product["Build"])
_deduplicated_products = sorted(
_deduplicated_products, key=lambda x: (packaging.version.parse(x["RawVersion"]), x["Build"], not x["Beta"])
)
return _deduplicated_products
@cached_property
def latest_products(self) -> list:
"""
Returns a list of the latest products from the sucatalog
"""
return self._list_latest_installers_only(self.products)
def checksum_for_product(self, product: dict):
"""
Returns the checksum and algorithm for a given product
"""
HASH_TO_ALGO = {"md5": hashlib.md5, "sha1": hashlib.sha1, "sha2-256": hashlib.sha256, "sha2-512": hashlib.sha512}
if not product.get("InstallAssistant", {}).get("Checksum"):
return None, None
for algo, hash_func in HASH_TO_ALGO.items():
if algo in product["InstallAssistant"]["Checksum"]:
return product["InstallAssistant"]["Checksum"][algo], hash_func()
return None, None

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

@@ -13,7 +13,7 @@ import enum
import hashlib
import atexit
from typing import Union
from typing import Optional, Union
from pathlib import Path
from . import utilities
@@ -65,17 +65,15 @@ class NetworkUtilities:
def validate_link(self) -> bool:
"""
Check for 404 error
Check for error
Returns:
bool: True if link is valid, False otherwise
"""
try:
response = SESSION.head(self.url, timeout=5, allow_redirects=True)
if response.status_code == 404:
return False
else:
return True
response.raise_for_status()
return True
except (
requests.exceptions.Timeout,
requests.exceptions.TooManyRedirects,
@@ -162,7 +160,7 @@ class DownloadObject:
"""
def __init__(self, url: str, path: str) -> None:
def __init__(self, url: str, path: str, checksum_algo: Optional["hashlib._Hash"] = None) -> None:
self.url: str = url
self.status: str = DownloadStatus.INACTIVE
self.error_msg: str = ""
@@ -181,10 +179,8 @@ class DownloadObject:
self.active_thread: threading.Thread = None
self.should_checksum: bool = False
self.checksum = None
self._checksum_storage: hash = None
self._checksum_storage: Optional[hashlib._Hash] = checksum_algo
if self.has_network:
self._populate_file_size()
@@ -194,7 +190,7 @@ class DownloadObject:
self.stop()
def download(self, display_progress: bool = False, spawn_thread: bool = True, verify_checksum: bool = False) -> None:
def download(self, display_progress: bool = False, spawn_thread: bool = True) -> None:
"""
Download the file
@@ -204,7 +200,7 @@ class DownloadObject:
Parameters:
display_progress (bool): Display progress in console
spawn_thread (bool): Spawn a thread to download the file, otherwise download in the current thread
verify_checksum (bool): Calculate checksum of downloaded file if True
verify_checksum (Optional[hashlib._Hash]): Checksum algorithm to use for verifying the download, optional
"""
self.status = DownloadStatus.DOWNLOADING
@@ -213,12 +209,10 @@ class DownloadObject:
if self.active_thread:
logging.error("Download already in progress")
return
self.should_checksum = verify_checksum
self.active_thread = threading.Thread(target=self._download, args=(display_progress,))
self.active_thread.start()
return
self.should_checksum = verify_checksum
self._download(display_progress)
@@ -235,15 +229,14 @@ class DownloadObject:
"""
if verify_checksum:
self.should_checksum = True
self.checksum = hashlib.sha256()
self._checksum_storage = hashlib.sha256()
self.download(spawn_thread=False)
if not self.download_complete:
return False
return self.checksum.hexdigest() if self.checksum else True
return self._checksum_storage.hexdigest() if self._checksum_storage else True
def _get_filename(self) -> str:
@@ -283,7 +276,8 @@ class DownloadObject:
Parameters:
chunk (bytes): Chunk to update checksum with
"""
self._checksum_storage.update(chunk)
if self._checksum_storage:
self._checksum_storage.update(chunk)
def _prepare_working_directory(self, path: Path) -> bool:
@@ -353,7 +347,7 @@ class DownloadObject:
if chunk:
file.write(chunk)
self.downloaded_file_size += len(chunk)
if self.should_checksum:
if self._checksum_storage:
self._update_checksum(chunk)
if display_progress and i % 100:
# Don't use logging here, as we'll be spamming the log file
@@ -368,6 +362,9 @@ class DownloadObject:
logging.info(f"- Time elapsed: {(time.time() - self.start_time):.2f} seconds")
logging.info(f"- Speed: {utilities.human_fmt(self.downloaded_file_size / (time.time() - self.start_time))}/s")
logging.info(f"- Location: {self.filepath}")
if self._checksum_storage:
self.checksum = self._checksum_storage.hexdigest()
logging.info(f"Checksum: {self.checksum}")
except Exception as e:
self.error = True
self.error_msg = str(e)

View File

@@ -33,4 +33,5 @@ class BasePatchset:
self.macOS_14_1: float = 23.1
self.macOS_14_2: float = 23.2
self.macOS_14_4: float = 23.4
self.macOS_15_2: float = 24.2
self.macOS_15_2: float = 24.2
self.macOS_15_3: float = 24.3

View File

@@ -44,7 +44,6 @@ from .hardware.misc import (
pcie_webcam,
t1_security,
usb11,
cpu_missing_avx,
)
from ... import constants
@@ -89,6 +88,7 @@ class HardwarePatchsetValidation(StrEnum):
NVDA_DRV_MISSING = "Validation: nvda_drv(_vrl) variable missing"
PATCHING_NOT_POSSIBLE = "Validation: Patching not possible"
UNPATCHING_NOT_POSSIBLE = "Validation: Unpatching not possible"
REPATCHING_NOT_SUPPORTED = "Validation: Root volume dirty, unpatch to continue"
class HardwarePatchsetDetection:
@@ -134,7 +134,6 @@ class HardwarePatchsetDetection:
pcie_webcam.PCIeFaceTimeCamera,
t1_security.T1SecurityChip,
usb11.USB11Controller,
cpu_missing_avx.CPUMissingAVX,
]
self.device_properties = None
@@ -184,6 +183,42 @@ class HardwarePatchsetDetection:
return "FileVault is Off" not in subprocess.run(["/usr/bin/fdesetup", "status"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
def _validation_check_repatching_is_possible(self) -> bool:
"""
Determine if repatching is not allowed
"""
oclp_patch_path = "/System/Library/CoreServices/OpenCore-Legacy-Patcher.plist"
if not Path(oclp_patch_path).exists():
return self._is_root_volume_dirty()
oclp_plist = plistlib.load(open(oclp_patch_path, "rb"))
if self._constants.computer.oclp_sys_url != self._constants.commit_info[2]:
logging.error("Installed patches are from different commit, unpatching is required")
return True
wireless_keys = {"Legacy Wireless", "Modern Wireless Common"}
# Keep in sync with generate_patchset_plist
metadata_keys = {
"OpenCore Legacy Patcher",
"PatcherSupportPkg",
"Time Patched",
"Commit URL",
"Kernel Debug Kit Used",
"Metal Library Used",
"OS Version",
"Custom Signature",
}
existing_patches = set(oclp_plist) - wireless_keys - metadata_keys
if existing_patches:
logging.error(f"Patch(es) already installed: {', '.join(existing_patches)}, unpatching is required")
return True
return False
def _validation_check_system_integrity_protection_enabled(self, configs: list[str]) -> bool:
"""
@@ -307,6 +342,28 @@ class HardwarePatchsetDetection:
"""
return metallib_handler.MetalLibraryObject(self._constants, self._os_build, self._os_version).metallib_already_installed
def _is_root_volume_dirty(self) -> bool:
"""
Determine if system volume is not sealed
"""
# macOS 11.0 introduced sealed system volumes
if self._xnu_major < os_data.big_sur.value:
return False
try:
content = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", "/"], capture_output=True).stdout)
except plistlib.InvalidFileException:
raise RuntimeError("Failed to parse diskutil output.")
seal = content["Sealed"]
if "Broken" in seal:
logging.error(f"System volume is tainted, unpatching is required")
return True
return False
def _can_patch(self, requirements: dict, ignore_keys: list[str] = []) -> bool:
"""
@@ -500,6 +557,7 @@ class HardwarePatchsetDetection:
HardwarePatchsetValidation.SIP_ENABLED: self._validation_check_system_integrity_protection_enabled(required_sip_configs),
HardwarePatchsetValidation.SECURE_BOOT_MODEL_ENABLED: self._validation_check_secure_boot_model_enabled(),
HardwarePatchsetValidation.AMFI_ENABLED: self._validation_check_amfi_enabled(highest_amfi_level),
HardwarePatchsetValidation.REPATCHING_NOT_SUPPORTED: self._validation_check_repatching_is_possible(),
HardwarePatchsetValidation.WHATEVERGREEN_MISSING: self._validation_check_whatevergreen_missing() if has_nvidia_web_drivers is True else False,
HardwarePatchsetValidation.FORCE_OPENGL_MISSING: self._validation_check_force_opengl_missing() if has_nvidia_web_drivers is True else False,
HardwarePatchsetValidation.FORCE_COMPAT_MISSING: self._validation_check_force_compat_missing() if has_nvidia_web_drivers is True else False,

View File

@@ -1,86 +0,0 @@
"""
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

@@ -84,6 +84,7 @@ class T1SecurityChip(BaseHardware):
"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 {}),
**({ "ModuleBase.framework": "15.2" } if self._xnu_float >= self.macOS_15_3 else {}),
},
"/System/Library/PrivateFrameworks": {
"EmbeddedOSInstall.framework": "13.6", # Required for biometrickitd

View File

@@ -112,6 +112,24 @@ class USB11Controller(BaseHardware):
}
def _usb_webcam_patches(self) -> dict:
"""
Patches for USB 1.1 Webcam
"""
if self._xnu_major < os_data.sequoia.value:
return {}
return {
"Legacy USB 1.1 Webcam": {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"IOUSBHost.framework": "14.6.1",
},
},
},
}
def patches(self) -> dict:
"""
Patches for USB 1.1 Controller
@@ -122,4 +140,5 @@ class USB11Controller(BaseHardware):
return {
**self._base_patches(),
**self._extended_patches(),
**self._usb_webcam_patches(),
}

View File

@@ -52,23 +52,18 @@ class ModernWireless(BaseHardware):
"""
return HardwareVariant.NETWORKING
def patches(self) -> dict:
def _patches_modern_wireless_common_extended(self) -> dict:
"""
Patches for Modern Wireless
Extended modern wireless patches
"""
if self.native_os() is True:
if self._xnu_major > os_data.sonoma:
return {}
return {
"Modern Wireless": {
"Modern Wireless Extended": {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/usr/libexec": {
"airportd": f"13.7.2-{self._xnu_major}",
"wifip2pd": f"13.7.2-{self._xnu_major}",
},
"/System/Library/CoreServices": {
**({ "WiFiAgent.app": "14.7.2" } if self._xnu_major >= os_data.sequoia else {}),
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
@@ -76,10 +71,43 @@ class ModernWireless(BaseHardware):
"CoreWLAN.framework": f"13.7.2-{self._xnu_major}",
},
"/System/Library/PrivateFrameworks": {
"CoreWiFi.framework": f"13.7.2-{self._xnu_major}",
"CoreWiFi.framework": f"13.7.2-{self._xnu_major}",
},
},
},
}
def _patches_modern_wireless_common(self) -> dict:
"""
Common modern wireless patches
"""
return {
"Modern Wireless Common": {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/usr/libexec": {
"wifip2pd": f"13.7.2-{self._xnu_major}",
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/PrivateFrameworks": {
"IO80211.framework": f"13.7.2-{self._xnu_major}",
"WiFiPeerToPeer.framework": f"13.7.2-{self._xnu_major}",
},
}
},
},
}
}
def patches(self) -> dict:
"""
Dictionary of patches
"""
if self.native_os() is True:
return {}
return {
**self._patches_modern_wireless_common(),
**self._patches_modern_wireless_common_extended(),
}
return _base

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

@@ -6,6 +6,7 @@ import wx
import logging
import threading
import traceback
import time
from .. import constants
@@ -101,12 +102,12 @@ class BuildFrame(wx.Frame):
"""
while gui_support.PayloadMount(self.constants, self).is_unpack_finished() is False:
wx.Yield()
time.sleep(self.constants.thread_sleep_interval)
thread = threading.Thread(target=self._build)
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
self.return_button.Enable()

View File

@@ -76,13 +76,11 @@ class OSUpdateFrame(wx.Frame):
if results[HardwarePatchsetSettings.KERNEL_DEBUG_KIT_REQUIRED] is True:
kdk_thread = threading.Thread(target=_kdk_thread_spawn)
kdk_thread.start()
while kdk_thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(kdk_thread)
if results[HardwarePatchsetSettings.METALLIB_SUPPORT_PKG_REQUIRED] is True:
metallib_thread = threading.Thread(target=_metallib_thread_spawn)
metallib_thread.start()
while metallib_thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(metallib_thread)
download_objects = {
@@ -149,8 +147,7 @@ class OSUpdateFrame(wx.Frame):
kdk_checksum_thread = threading.Thread(target=_validate_kdk_checksum_thread)
kdk_checksum_thread.start()
while kdk_checksum_thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(kdk_checksum_thread)
if self.kdk_checksum_result is False:
logging.error("KDK checksum validation failed")
@@ -172,8 +169,7 @@ class OSUpdateFrame(wx.Frame):
kdk_install_thread = threading.Thread(target=_install_kdk_thread)
kdk_install_thread.start()
while kdk_install_thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(kdk_install_thread)
if self.kdk_install_result is False:
logging.info("Failed to install KDK")
@@ -194,8 +190,7 @@ class OSUpdateFrame(wx.Frame):
metallib_install_thread = threading.Thread(target=_install_metallib_thread)
metallib_install_thread.start()
while metallib_install_thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(metallib_install_thread)
if self.metallib_install_result is False:
logging.info("Failed to install Metallib")

View File

@@ -4,6 +4,7 @@ gui_download.py: Generate UI for downloading files
import wx
import logging
import time
from .. import constants
@@ -86,6 +87,7 @@ class DownloadFrame(wx.Frame):
label_amount.Centre(wx.HORIZONTAL)
wx.Yield()
time.sleep(self.constants.thread_sleep_interval)
if self.download_obj.download_complete is False and self.user_cancelled is False:
wx.MessageBox(f"Download failed: \n{self.download_obj.error_msg}", "Error", wx.OK | wx.ICON_ERROR)

View File

@@ -103,9 +103,7 @@ class InstallOCFrame(wx.Frame):
thread = threading.Thread(target=self._fetch_disks)
thread.start()
while thread.is_alive():
wx.Yield()
continue
gui_support.wait_for_thread(thread)
self.progress_bar_animation.stop_pulse()
self.progress_bar.Hide()
@@ -281,8 +279,7 @@ class InstallOCFrame(wx.Frame):
thread = threading.Thread(target=self._install_oc, args=(partition,))
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
if self.result is True:
if self.constants.update_stage != gui_support.AutoUpdateStages.INACTIVE and self.constants.detected_os >= os_data.os_data.big_sur:

View File

@@ -46,6 +46,7 @@ class macOSInstallerDownloadFrame(wx.Frame):
self.title: str = title
self.parent: wx.Frame = parent
self.catalog_products = None
self.available_installers = None
self.available_installers_latest = None
@@ -135,22 +136,21 @@ class macOSInstallerDownloadFrame(wx.Frame):
# Grab installer catalog
def _fetch_installers():
logging.info(f"Fetching installer catalog: {sucatalog.SeedType.DeveloperSeed.name}")
logging.info(f"Fetching AppleDB products")
sucatalog_contents = sucatalog.CatalogURL(seed=sucatalog.SeedType.DeveloperSeed).url_contents
if sucatalog_contents is None:
logging.error("Failed to download Installer Catalog from Apple")
self.catalog_products = sucatalog.AppleDBProducts(self.constants)
if self.catalog_products.data is None:
logging.error("Failed to fetch installers from AppleDB")
return
self.available_installers = sucatalog.CatalogProducts(sucatalog_contents).products
self.available_installers_latest = sucatalog.CatalogProducts(sucatalog_contents).latest_products
self.available_installers = self.catalog_products.products
self.available_installers_latest = self.catalog_products.latest_products
thread = threading.Thread(target=_fetch_installers)
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
progress_bar_animation.stop_pulse()
progress_bar.Hide()
@@ -166,7 +166,7 @@ class macOSInstallerDownloadFrame(wx.Frame):
bundles = [wx.BitmapBundle.FromBitmaps(icon) for icon in self.icons]
self.frame_modal.Destroy()
self.frame_modal = wx.Dialog(self, title="Select macOS Installer", size=(505, 500))
self.frame_modal = wx.Dialog(self, title="Select macOS Installer", size=(550, 500))
# Title: Select macOS Installer
title_label = wx.StaticText(self.frame_modal, label="Select macOS Installer", pos=(-1,-1))
@@ -178,19 +178,19 @@ class macOSInstallerDownloadFrame(wx.Frame):
self.list = wx.ListCtrl(self.frame_modal, id, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_NO_HEADER | wx.BORDER_SUNKEN)
self.list.SetSmallImages(bundles)
self.list.InsertColumn(0, "Title", width=175)
self.list.InsertColumn(1, "Version", width=50)
self.list.InsertColumn(0, "Title", width=190 if show_full else 150)
self.list.InsertColumn(1, "Version", width=80 if show_full else 50)
self.list.InsertColumn(2, "Build", width=75)
self.list.InsertColumn(3, "Size", width=75)
self.list.InsertColumn(4, "Release Date", width=100)
installers = self.available_installers_latest if show_full is False else self.available_installers
if show_full is False:
self.frame_modal.SetSize((490, 370))
self.frame_modal.SetSize((480, 370))
if installers:
locale.setlocale(locale.LC_TIME, '')
logging.info(f"Available installers on SUCatalog ({'All entries' if show_full else 'Latest only'}):")
logging.info(f"Available installers from AppleDB ({'All entries' if show_full else 'Latest only'}):")
for item in installers:
logging.info(f"- {item['Title']} ({item['Version']} - {item['Build']}):\n - Size: {utilities.human_fmt(item['InstallAssistant']['Size'])}\n - Link: {item['InstallAssistant']['URL']}\n")
index = self.list.InsertItem(self.list.GetItemCount(), f"{item['Title']}")
@@ -200,8 +200,8 @@ class macOSInstallerDownloadFrame(wx.Frame):
self.list.SetItem(index, 3, utilities.human_fmt(item['InstallAssistant']['Size']))
self.list.SetItem(index, 4, item['PostDate'].strftime("%x"))
else:
logging.error("No installers found on SUCatalog")
wx.MessageDialog(self.frame_modal, "Failed to download Installer Catalog from Apple", "Error", wx.OK | wx.ICON_ERROR).ShowModal()
logging.error("No installers found from AppleDB")
wx.MessageDialog(self.frame_modal, "Failed to fetch installers from AppleDB", "Error", wx.OK | wx.ICON_ERROR).ShowModal()
if show_full is False:
self.list.Select(-1)
@@ -320,7 +320,11 @@ class macOSInstallerDownloadFrame(wx.Frame):
self.frame_modal.Close()
download_obj = network_handler.DownloadObject(selected_installer['InstallAssistant']['URL'], self.constants.payload_path / "InstallAssistant.pkg")
expected_checksum, checksum_algo = self.catalog_products.checksum_for_product(selected_installer)
download_obj = network_handler.DownloadObject(
selected_installer["InstallAssistant"]["URL"], self.constants.payload_path / "InstallAssistant.pkg", checksum_algo=checksum_algo
)
gui_download.DownloadFrame(
self,
@@ -335,24 +339,31 @@ class macOSInstallerDownloadFrame(wx.Frame):
self.on_return_to_main_menu()
return
self._validate_installer(selected_installer['InstallAssistant']['IntegrityDataURL'])
self._validate_installer(expected_checksum, download_obj.checksum)
def _validate_installer(self, chunklist_link: str) -> None:
def _validate_installer(self, expected_checksum: str, calculated_checksum: str) -> None:
"""
Validate macOS installer
"""
if expected_checksum != calculated_checksum:
logging.error(f"Checksum validation failed: Expected {expected_checksum}, got {calculated_checksum}")
wx.MessageBox(f"Checksum validation failed!\n\nThis generally happens when downloading on unstable connections such as WiFi or cellular.\n\nPlease try redownloading again on a stable connection (ie. Ethernet)", "Corrupted Installer!", wx.OK | wx.ICON_ERROR)
self.on_return_to_main_menu()
return
self.SetSize((300, 200))
for child in self.GetChildren():
child.Destroy()
# Title: Validating macOS Installer
title_label = wx.StaticText(self, label="Validating macOS Installer", pos=(-1,5))
logging.info("macOS installer validated")
title_label = wx.StaticText(self, label="Extracting macOS Installer", pos=(-1,5))
title_label.SetFont(gui_support.font_factory(19, wx.FONTWEIGHT_BOLD))
title_label.Centre(wx.HORIZONTAL)
# Label: Validating chunk 0 of 0
chunk_label = wx.StaticText(self, label="Validating chunk 0 of 0", pos=(-1, title_label.GetPosition()[1] + title_label.GetSize()[1] + 5))
chunk_label = wx.StaticText(self, label="May take a few minutes...", pos=(-1, title_label.GetPosition()[1] + title_label.GetSize()[1] + 5))
chunk_label.SetFont(gui_support.font_factory(13, wx.FONTWEIGHT_NORMAL))
chunk_label.Centre(wx.HORIZONTAL)
@@ -364,39 +375,6 @@ class macOSInstallerDownloadFrame(wx.Frame):
self.SetSize((-1, progress_bar.GetPosition()[1] + progress_bar.GetSize()[1] + 40))
self.Show()
chunklist_stream = network_handler.NetworkUtilities().get(chunklist_link).content
if chunklist_stream:
logging.info("Validating macOS installer")
utilities.disable_sleep_while_running()
chunk_obj = integrity_verification.ChunklistVerification(self.constants.payload_path / Path("InstallAssistant.pkg"), chunklist_stream)
if chunk_obj.chunks:
progress_bar.SetValue(chunk_obj.current_chunk)
progress_bar.SetRange(chunk_obj.total_chunks)
wx.App.Get().Yield()
chunk_obj.validate()
while chunk_obj.status == integrity_verification.ChunklistStatus.IN_PROGRESS:
progress_bar.SetValue(chunk_obj.current_chunk)
chunk_label.SetLabel(f"Validating chunk {chunk_obj.current_chunk} of {chunk_obj.total_chunks}")
chunk_label.Centre(wx.HORIZONTAL)
wx.App.Get().Yield()
if chunk_obj.status == integrity_verification.ChunklistStatus.FAILURE:
logging.error(f"Chunklist validation failed: Hash mismatch on {chunk_obj.current_chunk}")
wx.MessageBox(f"Chunklist validation failed: Hash mismatch on {chunk_obj.current_chunk}\n\nThis generally happens when downloading on unstable connections such as WiFi or cellular.\n\nPlease try redownloading again on a stable connection (ie. Ethernet)", "Corrupted Installer!", wx.OK | wx.ICON_ERROR)
self.on_return_to_main_menu()
return
logging.info("macOS installer validated")
# Extract installer
title_label.SetLabel("Extracting macOS Installer")
title_label.Centre(wx.HORIZONTAL)
chunk_label.SetLabel("May take a few minutes...")
chunk_label.Centre(wx.HORIZONTAL)
progress_bar_animation = gui_support.GaugePulseCallback(self.constants, progress_bar)
progress_bar_animation.start_pulse()
@@ -412,8 +390,7 @@ class macOSInstallerDownloadFrame(wx.Frame):
self.Show()
# Wait for thread to finish
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
progress_bar_animation.stop_pulse()
progress_bar.Hide()

View File

@@ -3,7 +3,6 @@ gui_macos_installer_flash.py: macOS Installer Flash Frame
"""
import wx
import time
import logging
import plistlib
import tempfile
@@ -88,8 +87,7 @@ class macOSInstallerFlashFrame(wx.Frame):
thread = threading.Thread(target=fetch_installers)
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
frame_modal = wx.Dialog(self, title=self.title, size=(350, 200))
@@ -180,8 +178,7 @@ class macOSInstallerFlashFrame(wx.Frame):
thread = threading.Thread(target=_fetch_disks)
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
self.frame_modal = wx.Dialog(self, title=self.title, size=(350, 200))
@@ -317,7 +314,9 @@ class macOSInstallerFlashFrame(wx.Frame):
except:
bytes_written = 0
wx.CallAfter(progress_bar.SetValue, bytes_written)
wx.Yield()
thread.join(timeout=self.constants.thread_sleep_interval)
if self.result is False:
logging.error("Failed to flash installer, cannot continue.")
@@ -370,8 +369,7 @@ class macOSInstallerFlashFrame(wx.Frame):
thread = threading.Thread(target=prepare_script, args=(self, installer_path, disk, self.constants))
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
return self.prepare_result
@@ -399,10 +397,11 @@ class macOSInstallerFlashFrame(wx.Frame):
return False
logging.info("Successfully created macOS installer")
while thread.is_alive():
# wait for download_thread to finish
# though highly unlikely this thread is still alive (flashing an Installer will take a while)
time.sleep(0.1)
# wait for download_thread to finish
# though highly unlikely this thread is still alive (flashing an Installer will take a while)
gui_support.wait_for_thread(thread)
logging.info("Installing Root Patcher to drive")
self._install_installer_pkg(disk)
@@ -617,8 +616,7 @@ class macOSInstallerFlashFrame(wx.Frame):
thread = threading.Thread(target=_integrity_check)
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
if error_message == "":
logging.info("Installer pkg validated")

View File

@@ -263,6 +263,19 @@ class ThreadHandler(logging.Handler):
wx.CallAfter(self.text_box.AppendText, self.format(record) + '\n')
def wait_for_thread(thread: threading.Thread, sleep_interval=None):
"""
Waits for a thread to finish while processing UI events at regular intervals
to prevent UI freezing and excessive CPU usage.
"""
# Use the passed sleep_interval, or get from global_constants
interval = sleep_interval if sleep_interval is not None else constants.Constants().thread_sleep_interval
while thread.is_alive():
wx.Yield()
thread.join(timeout=interval)
class RestartHost:
"""
Restarts the host machine

View File

@@ -93,9 +93,7 @@ class SysPatchDisplayFrame(wx.Frame):
frame.ShowWindowModal()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
frame.Close()
@@ -231,7 +229,7 @@ class SysPatchDisplayFrame(wx.Frame):
start_button.Disable()
else:
self.available_patches = True
if patches[HardwarePatchsetValidation.PATCHING_NOT_POSSIBLE] is True:
if patches[HardwarePatchsetValidation.PATCHING_NOT_POSSIBLE] is True or no_new_patches is True:
start_button.Disable()
elif no_new_patches is False:
start_button.SetDefault()

View File

@@ -88,8 +88,7 @@ class SysPatchStartFrame(wx.Frame):
kdk_thread = threading.Thread(target=_kdk_thread_spawn)
kdk_thread.start()
while kdk_thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(kdk_thread)
if self.kdk_obj.success is False:
progress_bar_animation.stop_pulse()
@@ -170,8 +169,7 @@ class SysPatchStartFrame(wx.Frame):
metallib_thread = threading.Thread(target=_metallib_thread_spawn)
metallib_thread.start()
while metallib_thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(metallib_thread)
if self.metallib_obj.success is False:
progress_bar_animation.stop_pulse()
@@ -209,8 +207,7 @@ class SysPatchStartFrame(wx.Frame):
install_thread = threading.Thread(target=_install_metallib)
install_thread.start()
while install_thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(install_thread)
if self.result is False:
progress_bar_animation.stop_pulse()
@@ -314,6 +311,7 @@ class SysPatchStartFrame(wx.Frame):
while gui_support.PayloadMount(self.constants, self).is_unpack_finished() is False:
wx.Yield()
time.sleep(self.constants.thread_sleep_interval)
if self.patches[HardwarePatchsetSettings.KERNEL_DEBUG_KIT_REQUIRED] is True:
if self._kdk_download(self) is False:
@@ -329,8 +327,7 @@ class SysPatchStartFrame(wx.Frame):
thread = threading.Thread(target=self._start_root_patching, args=(self.patches,))
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
self._post_patch()
self.return_button.Enable()
@@ -356,8 +353,7 @@ class SysPatchStartFrame(wx.Frame):
thread = threading.Thread(target=self._revert_root_patching, args=(self.patches,))
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
self._post_patch()
self.return_button.Enable()

View File

@@ -102,8 +102,7 @@ class UpdateFrame(wx.Frame):
thread = threading.Thread(target=_fetch_update)
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
gui_download.DownloadFrame(
self.frame,
@@ -128,8 +127,7 @@ class UpdateFrame(wx.Frame):
thread = threading.Thread(target=self._extract_update)
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
# Title: Installing update
title_label.SetLabel("Installing update...")
@@ -138,8 +136,7 @@ class UpdateFrame(wx.Frame):
thread = threading.Thread(target=self._install_update)
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
# Title: Update complete
title_label.SetLabel("Update complete!")
@@ -170,8 +167,7 @@ class UpdateFrame(wx.Frame):
thread = threading.Thread(target=self._launch_update)
thread.start()
while thread.is_alive():
wx.Yield()
gui_support.wait_for_thread(thread)
timer = 5
while True:

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.

Some files were not shown because too many files have changed in this diff Show More