Compare commits

...

782 Commits
0.6.8 ... 2.1.1

Author SHA1 Message Date
neon ball
ab740371c8 Unify OS version image sizes 2024-11-03 11:31:56 +02:00
neon ball
d508e8e9f9 Adjust image sizes 2024-11-03 10:57:18 +02:00
neon ball
39c03e3f8b Small fix 2024-11-03 10:42:14 +02:00
neon ball
94f77c20a0 Add explainer about Spotlight indexing slowness 2024-11-03 10:40:10 +02:00
neon ball
2dc9961ffe Add FAT partition note about booting Windows 2024-11-03 10:18:11 +02:00
neon ball
24bc4432ab Small edit 2024-11-03 03:06:44 +02:00
Mykola Grymalyuk
2a578734b9 gui_settings.py: Fix typing for boolean values 2024-11-02 18:19:43 -06:00
neon ball
bb56544182 Add troubleshooting step for greyed out buttons in disk selection 2024-11-03 01:04:56 +02:00
neon ball
70e62c946a Change text location 2024-11-02 12:26:12 +02:00
neon ball
d24eb642ce Small edit 2024-11-02 12:23:57 +02:00
neon ball
81fee375a1 Fix link 2024-11-02 12:20:22 +02:00
neon ball
581c7fcb4e Change FeatureUnlock/mediaanalysisd explainer 2024-11-02 12:17:26 +02:00
neon ball
4939c1dc0f Remove mention of default settings reset as outdated information 2024-11-02 12:01:28 +02:00
neon ball
f635c21f29 Slight edits 2024-11-02 11:47:51 +02:00
neon ball
ed0e3ff66a Slight rewording 2024-11-02 11:35:59 +02:00
neon ball
7ac83d8dd6 Add note about manual config edits being not accounted for 2024-11-02 11:27:02 +02:00
neon ball
b7bca45910 Change to inform about new setting save feature 2024-11-02 11:17:53 +02:00
Mykola Grymalyuk
737aed5635 gui_settings.py: Add error handling for invalid value 2024-10-31 16:03:44 -06:00
Mykola Grymalyuk
868cfa62c1 Sync PatcherSupportPkg 2024-10-31 15:55:31 -06:00
Mykola Grymalyuk
b561a35ca9 products.py: Better handle Apple Silicon installers 2024-10-31 15:55:19 -06:00
neon ball
5542f10ea1 Ventura repatching note 2024-10-31 21:45:57 +02:00
neon ball
bccf1dc31d Monterey -> macOS 2024-10-31 21:43:27 +02:00
neon ball
b50ddb6e26 Documented Python version 3.10 -> 3.11 2024-10-23 19:03:53 +03:00
neon ball
4f980d7562 Slight changes 2024-10-21 02:12:22 +03:00
neon ball
6780fe307f Manual SIP config under details menu 2024-10-21 02:07:37 +03:00
neon ball
dfcb7fdb0c Add link 2024-10-21 01:58:33 +03:00
neon ball
97d956190e Change title 2024-10-21 01:56:17 +03:00
neon ball
41b9fcb85f Add Metal and Non-Metal explainer 2024-10-21 01:49:03 +03:00
neon ball
4015b8bb25 Align images 2024-10-21 01:26:37 +03:00
neon ball
be155127cf Adjust image sizes 2024-10-21 01:24:03 +03:00
neon ball
203b5cf127 Add link to Time Machine guide and adjust formatting 2024-10-21 01:09:54 +03:00
neon ball
fbec713b43 Adjust image 2024-10-21 01:04:12 +03:00
neon ball
734e14b0cf Adjust image 2024-10-21 00:59:21 +03:00
neon ball
ad1faf2ea2 Adjust images 2024-10-21 00:57:12 +03:00
neon ball
58435188eb Remove duplication 2024-10-21 00:49:45 +03:00
neon ball
0b92e022e9 Add more clarification and adjust images 2024-10-21 00:45:30 +03:00
neon ball
4db2e97662 Add new Sequoia image again because skill issue 2024-10-11 18:51:32 +03:00
neon ball
d1ba89049c Add Sequoia image with better crop 2024-10-11 18:48:51 +03:00
neon ball
33d60f19d0 Fix one image 2024-10-11 18:41:59 +03:00
neon ball
15d4e201f4 Align some images to flow better with the side width 2024-10-11 18:32:08 +03:00
neon ball
af67ec2bbe Adjust image sizes 2024-10-11 18:21:22 +03:00
neon ball
e30434a70e Adjust formatting 2024-10-11 18:15:12 +03:00
neon ball
3a442e67c6 Change order 2024-10-11 18:12:41 +03:00
neon ball
32a98e5b34 Update FAQ.md 2024-10-11 18:11:13 +03:00
neon ball
d9828999eb Fix capitalization 2024-10-10 20:21:15 +03:00
neon ball
07daef6f63 Change title 2024-10-10 20:19:06 +03:00
neon ball
2cccd34870 Adjust sidebar 2024-10-10 20:16:38 +03:00
neon ball
31790190be Adjust sidebar 2024-10-10 20:09:08 +03:00
neon ball
b7ecafb5ec Fix layout 2024-10-10 20:04:03 +03:00
neon ball
4f6e8c4fb8 Change MBA7,x spoof and add note 2024-10-10 20:01:37 +03:00
neon ball
e142702c3d Update titles 2024-10-10 01:17:09 +03:00
neon ball
8b5663c3c7 Rename title 2024-10-10 01:14:08 +03:00
neon ball
7c89ab6ba3 Restructure sidebar 2024-10-10 01:12:25 +03:00
neon ball
80e2aa9447 Some proof read fixes 2024-10-09 02:32:23 +03:00
neon ball
170b00694b Shorten title and move a sentence 2024-10-09 02:22:37 +03:00
neon ball
f5ffdd158a Edit note styling 2024-10-09 02:17:22 +03:00
neon ball
c504c95b50 Add new config.js
Because it just didn't want to go first time
2024-10-09 02:13:47 +03:00
neon ball
9da6c85c98 Add Time Machine guide and reorder sidebar items 2024-10-09 02:12:38 +03:00
Mykola Grymalyuk
6a58ef1dab gui_settings.py: Handle saving values of None 2024-10-05 12:21:34 -06:00
Mykola Grymalyuk
a8f76af6bc GUI: Support saving settings on-model 2024-10-05 11:14:46 -06:00
Mykola Grymalyuk
1ec6b02cd7 Increment build 2024-10-05 10:24:20 -06:00
neon ball
8ff76ba3cd Add macOS downgrade FAQ 2024-10-03 17:32:24 +03:00
neon ball
6742372e91 Remove unnecessary link section 2024-10-03 17:29:01 +03:00
neon ball
65caa6d028 Update UNINSTALL.md 2024-10-03 17:28:20 +03:00
neon ball
31cb5f9367 Fix headline 2024-10-03 17:26:11 +03:00
neon ball
9aacf826f2 Update UNINSTALL.md 2024-10-03 17:24:41 +03:00
neon ball
ca34c57fde Update UPDATE.md 2024-10-03 01:40:37 +03:00
neon ball
49c138bd19 Update UPDATE.md 2024-10-03 01:40:01 +03:00
neon ball
c8db4663ce Fix typo 2024-10-03 01:37:29 +03:00
neon ball
7fcf5fcab4 Make text match image 2024-10-03 01:35:09 +03:00
neon ball
7fcb824dc2 Fix link 2024-10-03 01:33:06 +03:00
neon ball
9455d5357b Center images 2024-10-03 01:32:03 +03:00
neon ball
3a7265e985 Reword 2024-10-03 01:29:20 +03:00
neon ball
03ac2ec155 Add info about updating 2024-10-03 01:28:49 +03:00
neon ball
cfde6978f5 Slight rewordings 2024-10-03 01:24:39 +03:00
neon ball
8ca7a2ebbb Remove random pipe 2024-10-03 01:19:22 +03:00
neon ball
7d50f96cf1 Overhaul UPDATE.md 2024-10-03 01:17:13 +03:00
neon ball
0eb351f270 Update FAQ.md 2024-09-30 23:25:10 +03:00
neon ball
3bfa50950a Add images 2024-09-30 23:18:25 +03:00
neon ball
2fb9fb866f Add sections 2024-09-30 22:52:36 +03:00
neon ball
87b5b49f06 Add a period lol 2024-09-30 22:47:25 +03:00
neon ball
4cc88d18a0 Add FAQ link to start page and other small changes 2024-09-30 22:46:27 +03:00
neon ball
5b332eeac5 Move application requirements to FAQ 2024-09-30 22:43:47 +03:00
neon ball
8f88444ac3 Clarify things 2024-09-30 22:26:53 +03:00
Mykola Grymalyuk
15ad0c509e macos_installer_handler.py: Reference full diskutil path
Thanks @niklasravnsborg for the report!
2024-09-27 11:26:43 -06:00
Mykola Grymalyuk
0e0b1436b2 bluetooth.py: Set legacy patches on Macs with upgraded chipsets 2024-09-27 10:06:31 -06:00
Mykola Grymalyuk
528d32cc9d non_metal.py: Remove Metal wallpaper 2024-09-26 16:15:55 -06:00
Mykola Grymalyuk
8e15ed6d6e constants.py: Set to bug fix release 2024-09-26 11:47:22 -06:00
Mykola Grymalyuk
796b5bcd9e gui_settings.py: Adjust pathing for root settings 2024-09-25 11:40:35 -06:00
neon ball
a37571a8a5 Edit a bit more 2024-09-25 19:09:20 +03:00
neon ball
9796ecf75e Slight edit 2024-09-25 19:03:48 +03:00
neon ball
cade003b31 Update FAQ.md 2024-09-25 18:59:44 +03:00
neon ball
2d8c9c5beb Update FAQ.md 2024-09-25 18:40:56 +03:00
neon ball
0a138ee435 Update FAQ.md 2024-09-25 18:07:01 +03:00
neon ball
6b414526ac Update FAQ.md 2024-09-25 18:02:35 +03:00
neon ball
a67a6d6c67 Fix link 2024-09-25 17:59:35 +03:00
neon ball
da887e3722 Update FAQ.md 2024-09-25 17:59:13 +03:00
neon ball
e65b8386ab Fix typo 2024-09-25 11:01:44 +03:00
neon ball
0d7edc8e09 Update FAQ.md 2024-09-25 10:58:49 +03:00
neon ball
32080fdcc3 Update FAQ.md 2024-09-25 10:56:42 +03:00
neon ball
c2d9d01a24 Fix link 2024-09-24 23:17:37 +03:00
neon ball
cdb6603ed6 Update FAQ.md 2024-09-24 23:15:57 +03:00
neon ball
dbf7444009 Update FAQ.md 2024-09-24 23:11:44 +03:00
neon ball
c46133b0b5 Update FAQ.md 2024-09-24 23:11:31 +03:00
neon ball
dde558a951 Update TROUBLESHOOTING.md 2024-09-24 23:02:59 +03:00
neon ball
9bdce62f59 Remove "currently" repetition 2024-09-24 22:58:35 +03:00
neon ball
098a4f9661 Update FAQ.md 2024-09-24 22:55:23 +03:00
neon ball
d9f23b556c Fix link 2024-09-24 22:52:58 +03:00
neon ball
0f63ce2fde Move a part to troubleshooting 2024-09-24 22:51:16 +03:00
neon ball
adc58b417b Fix typo 2024-09-24 22:16:51 +03:00
neon ball
b1bb01af69 Update FAQ.md 2024-09-24 22:15:57 +03:00
neon ball
2751ca69de Add link 2024-09-24 21:55:51 +03:00
neon ball
e9744fffd6 Update FAQ.md 2024-09-24 21:52:11 +03:00
neon ball
e0e731b13a Update FAQ.md 2024-09-24 21:48:50 +03:00
neon ball
bb34bbb6a1 Fix typo 2024-09-24 21:47:50 +03:00
neon ball
c68afc2f8e Update FAQ.md 2024-09-24 21:47:08 +03:00
neon ball
55ed78f5b4 Fix typo 2024-09-24 21:38:08 +03:00
neon ball
c065aae29f Update FAQ.md 2024-09-24 21:37:31 +03:00
neon ball
8333c3d8ec Update FAQ.md 2024-09-24 21:28:53 +03:00
neon ball
b8b591a8ed Fix title 2024-09-24 20:02:28 +03:00
neon ball
4542287613 Add FAQ 2024-09-24 20:01:02 +03:00
neon ball
597b167285 Add files via upload 2024-09-24 20:00:22 +03:00
Mykola Grymalyuk
7e5f171210 gui_settings.py: Resolve Beachball defaults write 2024-09-23 11:09:23 -06:00
Eduardo Covas
861898272b Sync PatcherSupportPkg 2024-09-23 13:58:43 -03:00
Eduardo Covas
16ab3367f8 Sync CHANGELOG 2024-09-23 13:17:37 -03:00
Mykola Grymalyuk
9d43d66f5d patchsets: Update for GCN GVA logic 2024-09-23 09:54:27 -06:00
Mykola Grymalyuk
753cd6cf3f patchsets: Avoid downgrading AppleGVA on AMD Polaris+ GPUs 2024-09-23 09:45:56 -06:00
Mykola Grymalyuk
192dfb79ae patchsets: Add reference patch
Unused, only present for referencing
2024-09-23 09:45:30 -06:00
Mykola Grymalyuk
d7f3d09c14 non_metal.py: Downgrade screencapture 2024-09-23 09:34:00 -06:00
Mykola Grymalyuk
41a5731546 metal_3802.py: Add 15.1 RenderBox metallib 2024-09-23 09:33:35 -06:00
Mykola Grymalyuk
2e513b98ca contants.py: Sync PatcherSupportPkg 2024-09-23 09:32:51 -06:00
neon ball
5c1326881a Remove duplicate explanations 2024-09-21 16:55:31 +03:00
Dhinak G
1d6631f24d Update TROUBLESHOOTING.md (#1148)
Co-authored-by: daCaPo <daCaPo@users.noreply.github.com>
2024-09-18 11:19:57 -04:00
Eduardo Covas
61872a8b94 legacy_audio.py: fix kext linking on macOS Sequoia 2024-09-18 10:16:40 -03:00
neon ball
024559885d Fix link here as well 2024-09-17 17:25:02 +03:00
neon ball
3e0a2a2198 Fix link 2024-09-17 17:24:18 +03:00
neon ball
86be4acedb Fix argument in patch sys command 2024-09-17 17:19:44 +03:00
Mykola Grymalyuk
ce08129d4b nvidia_kepler.py: Fix build comparison 2024-09-16 13:28:53 -06:00
Mykola Grymalyuk
56c9fd52d5 constants.py: Set versioning to bug fix release 2024-09-16 09:10:01 -06:00
Mykola Grymalyuk
429c213f79 detect.py: Fix Nvidia Web Drivers logic 2024-09-16 09:06:15 -06:00
Mykola Grymalyuk
2ce1f1c7f9 nvidia_kepler.py: Fix XNU minor comparison 2024-09-15 17:51:22 -06:00
neon ball
366bb6b6c2 Update POST-INSTALL.md 2024-09-16 00:20:55 +03:00
neon ball
3f7617c7c5 Fix list v2 2024-09-15 23:49:44 +03:00
neon ball
bd1e8b48b5 Fix list 2024-09-15 23:48:40 +03:00
neon ball
faba9e3200 Update POST-INSTALL.md 2024-09-15 23:47:41 +03:00
neon ball
4bda620f1e Small adjustment 2024-09-15 23:20:41 +03:00
neon ball
3a459dbdc3 Refactor BUILD.md 2024-09-15 23:18:34 +03:00
neon ball
9cc08a25db Adjust image layout 2024-09-15 22:46:03 +03:00
neon ball
1594db1624 One more adjustment 2024-09-15 22:43:49 +03:00
neon ball
5f54bdff54 Adjust wording 2024-09-15 22:43:00 +03:00
neon ball
1e0eb42c47 Refactor INSTALLER.md 2024-09-15 22:40:42 +03:00
neon ball
9e3087003c Update images 2024-09-15 22:35:09 +03:00
neon ball
7eb1ea2055 Remove duplicate guide already in BOOT.md 2024-09-15 22:13:28 +03:00
neon ball
b9c5aaa8dc Add T1 wipe image to BOOT.md note 2024-09-15 22:12:33 +03:00
Dhinak G
b0eb0fe5d9 Fix titles 2024-09-15 14:50:06 -04:00
neon ball
28ef0bb0d9 Adjust wording 2024-09-15 21:39:11 +03:00
Dhinak G
67006be28a Fix workflow permissions 2024-09-15 14:32:11 -04:00
Dhinak G
37ff4f70e7 Fix yarn cache path 2024-09-15 14:28:59 -04:00
Dhinak G
bcca5f8e2a [skip ci] Ignore docs on workflows 2024-09-15 14:28:08 -04:00
Dhinak G
a1dc492cc9 Add headers to support pages 2024-09-15 14:25:14 -04:00
Dhinak G
f394bee0f5 Sync docs config with other guides 2024-09-15 14:25:01 -04:00
neon ball
a41001130f Adjust layout 2024-09-15 20:44:28 +03:00
neon ball
e58dff05f2 Fix link 2024-09-15 20:42:40 +03:00
neon ball
9970e6806c Add T1 note 2024-09-15 20:41:20 +03:00
neon ball
1c39396ae2 Enlarge image 2024-09-15 20:34:37 +03:00
neon ball
431543057a Insert image to doc 2024-09-15 20:31:51 +03:00
neon ball
d67e2e3dee Add wipe-volume doc image 2024-09-15 20:31:34 +03:00
neon ball
6a4f2a9f02 Update build-site.yml 2024-09-15 20:20:37 +03:00
neon ball
0b68741959 Add T1 troubleshooting section 2024-09-15 20:17:26 +03:00
neon ball
9ec68a9db6 Better search plugins 2024-09-15 19:21:52 +03:00
Mykola Grymalyuk
4246f91289 nvidia_tesla.py: Fix OS detection typo 2024-09-15 10:15:16 -06:00
Mykola Grymalyuk
38657fb1c6 amd_polaris.py: Fix MacBookPro13,3 patch detection logic 2024-09-15 10:08:40 -06:00
neon ball
f6408a1054 Switch non-functional features to full headline 2024-09-15 02:35:58 +03:00
neon ball
aabb0b24ba Fix link 2024-09-15 02:13:10 +03:00
neon ball
2b39428127 Update information 2024-09-15 02:08:08 +03:00
neon ball
be53b0a034 Small change 2024-09-15 01:06:20 +03:00
neon ball
2cb3642c29 Adjust layout 2024-09-15 01:02:45 +03:00
neon ball
8feed781b2 Add note about unsupported features 2024-09-15 01:01:36 +03:00
Mykola Grymalyuk
be361d27e6 Increment build 2024-09-14 11:59:40 -06:00
neon ball
5f838259ad Add clarification 2024-09-14 20:39:01 +03:00
neon ball
f3e52a1335 Fix note and add code blocks 2024-09-14 20:33:40 +03:00
neon ball
622c56b430 Fix broken link 2024-09-14 20:31:16 +03:00
neon ball
287bca39e8 Add config.js 2024-09-14 20:30:12 +03:00
neon ball
b1325b77da Add SEQUOIA-DROP 2024-09-14 20:29:47 +03:00
neon ball
81f35aff57 Remove image folder and Sequoia image from wrong place 2024-09-14 20:29:20 +03:00
neon ball
143dba4a17 Remove doc from wrong place 2024-09-14 20:29:00 +03:00
neon ball
da3d701075 Add image 2024-09-14 20:03:33 +03:00
neon ball
c70238bd5d Add SEQUOIA-DROP.md 2024-09-14 20:00:49 +03:00
Mykola Grymalyuk
8eebf7e1e1 GUI: Add option to configure cpus=4 on MacPro3,1/Xserve2,1
If booting Sonoma or older, can toggle off the workaround
2024-09-14 10:01:52 -06:00
Mykola Grymalyuk
85cf440996 Merge branch 'main' of https://github.com/dortania/OpenCore-Legacy-Patcher 2024-09-12 10:38:36 -06:00
Mykola Grymalyuk
db2768a2bf keyboard_backlight.py: Fix patchset 2024-09-12 10:38:19 -06:00
Mykola Grymalyuk
48c74a1d75 gmux.py: Fix comment 2024-09-12 10:37:49 -06:00
Mykola Grymalyuk
73aa594ab6 install.py: Add error handling for read errors 2024-09-12 10:37:40 -06:00
Eduardo Covas
42478c726b Disable NSZoomButtonShowMenu only on Sonoma 2024-09-12 10:51:08 -03:00
Mykola Grymalyuk
00ea5a7843 Sync PatcherSupportPkg for non-Metal support 2024-09-12 07:41:26 -06:00
Mykola Grymalyuk
7f0a96126b Sync PatcherSupportPkg 2024-09-09 20:13:00 -06:00
Mykola Grymalyuk
c6f6fe4b43 nvidia_kepler.py: Remove unused import 2024-09-09 18:01:26 -06:00
Mykola Grymalyuk
c3dcb35b33 nvidia_kepler.py: Avoid downgrading AppleGVA 2024-09-09 17:12:31 -06:00
Mykola Grymalyuk
eefe49b837 metal_3802.py: Use dynamic metallib in Sequoia 2024-09-08 19:58:37 -06:00
Mykola Grymalyuk
bf3f4481dc metal_3802.py: Adjust patch method for metallib 2024-09-08 19:44:37 -06:00
Mykola Grymalyuk
ce6f65de1f metal_3802.py: Set PhotosUICore.framework correctly 2024-09-08 19:37:24 -06:00
neon ball
045cc3726e Fix note one more time 2024-09-08 12:15:27 +03:00
neon ball
60d392f969 Fix note 2024-09-08 12:12:19 +03:00
neon ball
e992fbdd14 Add SSH method to USB 1.1 troubleshooting 2024-09-08 12:09:08 +03:00
Eduardo Covas
3d40c94787 Sync CHANGELOG 2024-09-06 21:07:19 -03:00
Mykola Grymalyuk
9794cc5fb1 Merge pull request #1137 from dortania/sequoia-development
macOS Sequoia Development
2024-09-06 15:41:47 -06:00
Mykola Grymalyuk
8ae451f37f Sync CHANGELOG 2024-09-06 15:40:27 -06:00
Mykola Grymalyuk
3c309d71b9 Sync versioning to match 2024-09-06 15:27:11 -06:00
Mykola Grymalyuk
dbdddd063f model_array.py: Remove MacBookAir8,x models
As unable to install macOS Sequoia currently, removed to avoid confusion for end-users
2024-09-06 15:17:48 -06:00
Mykola Grymalyuk
0e1421f7fc Sync OpenCorePkg 2024-09-06 15:12:42 -06:00
Mykola Grymalyuk
3a3bba4c65 intel_haswell.py: Remove framebuffer hack for iMac15,1 2024-09-06 15:08:21 -06:00
Mykola Grymalyuk
1f000d893f detect.py: Avoid adding patches when hardware’s been removed 2024-09-06 15:02:35 -06:00
Mykola Grymalyuk
87469b71d0 validation.py: Add exemptions for PatchType checks 2024-09-06 09:25:51 -06:00
Mykola Grymalyuk
8d838a3148 Sync PatcherSupportPkg 2024-09-06 09:17:27 -06:00
Mykola Grymalyuk
c1f5be775d Sync IOSkywalk for Sequoia
Prevents kernel panic when using Continuity Camera, however connection issues still remain
2024-09-06 08:57:52 -06:00
Mykola Grymalyuk
7539d175b5 patchsets: Expand PatchType class to support merging
Resolves hardcoded merge/overwrite assumptions in files.py’s install_new_file()
2024-09-06 08:04:06 -06:00
Mykola Grymalyuk
5a1fa12e5b t1_security.py: Temporarily disable Touch ID patch 2024-09-05 09:09:48 -06:00
Mykola Grymalyuk
6aed21aae2 auto_patcher: Adjust formatting 2024-09-05 09:09:26 -06:00
Eduardo Covas
c0ae23367e t1_security.py: Fix SharedUtils 2024-09-05 09:30:06 -03:00
Eduardo Covas
4bbfe465fa Sync PatcherSupportPkg 2024-09-05 09:06:20 -03:00
Mykola Grymalyuk
2fb243cc00 wx_gui: Fix unpatch check 2024-09-03 21:23:39 -06:00
Mykola Grymalyuk
b74001a6e5 wx_gui: Handle spacing 2024-09-03 20:33:38 -06:00
Mykola Grymalyuk
4e4157c125 sys_patch: Standardize patch names 2024-09-03 19:15:33 -06:00
Mykola Grymalyuk
9ef569e949 wx_gui: Add handling for new patchset format 2024-09-03 17:20:20 -06:00
Mykola Grymalyuk
4b7c399ce6 patchsets: Handle non-Metal debugging 2024-09-02 19:48:16 -06:00
Mykola Grymalyuk
fcf24cef88 detect.py: Resolve Haswell + AMD GCN combo 2024-09-02 19:17:17 -06:00
Mykola Grymalyuk
1d37c5a4ee patchsets: Add handling for MacBookPro11,5 and iMac15,1 2024-09-02 18:40:11 -06:00
Mykola Grymalyuk
27d95a9aae detect.py: Remove Hell Spawn GPU check 2024-09-02 11:44:58 -06:00
Mykola Grymalyuk
8cae25b95a Merge branch 'main' into sequoia-development 2024-09-02 11:41:54 -06:00
Mykola Grymalyuk
fb0ea6bb08 detect.py: Enforce enum usage 2024-09-02 11:24:59 -06:00
Mykola Grymalyuk
303a908248 detect.py: Strip incompatible hardware combos
ie. Non-Metal with Metal, Metal 3802 with Metal 31001
2024-09-02 11:18:09 -06:00
Mykola Grymalyuk
3585053633 patchsets: Publish subclass for GPUs 2024-09-02 11:11:43 -06:00
Mykola Grymalyuk
a329e80082 patchsets: Implement new patch detection architecture
Greatly streamlines future patch set development
2024-09-01 21:00:05 -06:00
Mykola Grymalyuk
8332b714b5 graphics_audio.py: Add AMD Navi patch 2024-09-01 09:54:20 -06:00
neon ball
4add945fa0 Fix typo 2024-08-31 12:18:12 +03:00
neon ball
807d394bdb Fix link 2024-08-31 12:13:17 +03:00
neon ball
0ba78bae68 Fix formatting 2024-08-31 12:08:54 +03:00
neon ball
d73b3dcc69 Add Error Code 71 solution 2024-08-31 12:07:41 +03:00
Mykola Grymalyuk
d9e91bd17e os-caching.plist: Fix Label 2024-08-30 14:54:07 -06:00
Mykola Grymalyuk
8a9db4c2a5 metallib_handler.py: Capture output 2024-08-30 14:49:09 -06:00
Mykola Grymalyuk
fccde7214b GUI Installer: Support chainloading 2024-08-30 14:45:24 -06:00
Mykola Grymalyuk
24cc303530 Sync kexts to official releases 2024-08-30 10:07:53 -06:00
Mykola Grymalyuk
2753f88bfa Sync PatcherSupportPkg 2024-08-29 16:45:20 -06:00
Mykola Grymalyuk
4056224476 validation.py: Unmount on exit 2024-08-28 17:54:58 -06:00
Mykola Grymalyuk
5b55d17e42 validation.py: Supply extra parameter 2024-08-28 17:49:55 -06:00
Mykola Grymalyuk
669cc0ac5f sys_patch.py: Save MetallibSupportPkg path to patchset file 2024-08-28 17:48:38 -06:00
Mykola Grymalyuk
9a3181d465 sys_patch.py: Remove redundant type check 2024-08-28 17:38:48 -06:00
Mykola Grymalyuk
728fef9256 sys_patch_dict.py: Use StrEnum 2024-08-28 16:31:03 -06:00
Mykola Grymalyuk
b06feb9dbe sys_patch.py: Add typing check 2024-08-28 16:22:16 -06:00
Mykola Grymalyuk
bd51332a17 sys_patch.py: Add backend for MetallibSupportPkg 2024-08-28 15:21:35 -06:00
Mykola Grymalyuk
a6503bcd97 sys_patch_dict.py: Attempt older version 2024-08-27 08:47:36 -06:00
Mykola Grymalyuk
f931c3b6c2 sys_patch.py: Test rerouting patches to root 2024-08-26 17:10:51 -06:00
Mykola Grymalyuk
c8aa13664d Merge pull request #1147 from crystall1nedev/s3x-patch
Increase model range of S1X/S3X kext inclusion
2024-08-22 17:04:21 -06:00
Eva Luna
f32a813a0c Add note in CHANGELOG.md 2024-08-22 19:02:20 -04:00
Eva Luna
2696879109 Add note for S1X/S3X changes and clarify if statement 2024-08-22 18:58:31 -04:00
Eva Isabella Luna
df28ea288a Increase model range of S1X/S3X kext inclusion
While stock systems with S1X/S3X drives only include Broadwell to Kaby Lake Macs, Haswell Macs and MacPro6,1 are able to use these drives as well, causing issues when building OpenCore for those models from a different machine.
2024-08-22 18:18:57 -04:00
Mykola Grymalyuk
fc5b250d41 sys_patch.py: Fix AuxKC check 2024-08-20 15:52:44 -06:00
neon ball
b349459da6 Increase visibility of app requirements and add a note about firmware 2024-08-21 00:44:08 +03:00
Mykola Grymalyuk
132f12c885 Sync PatcherSupportPkg
Attempts to resolve AMDMTLBronze crashing in Sequoia
2024-08-20 15:26:55 -06:00
Mykola Grymalyuk
bbdfb8158f Merge branch 'main' into sequoia-development 2024-08-20 15:26:26 -06:00
Mykola Grymalyuk
be7493f74a macOS Installer: Add handling for reqading Sequoia installer versions 2024-08-20 15:26:14 -06:00
Mykola Grymalyuk
fbe216164a support.py: Ignore non-kext files 2024-08-20 15:25:36 -06:00
Mykola Grymalyuk
1cbee930cb constants.py: Publish Metal 31001 patches 2024-08-18 14:07:08 -06:00
Mykola Grymalyuk
f77a45a587 constants.py: Adjust support 2024-08-18 14:06:34 -06:00
Mykola Grymalyuk
ef32e07ac6 Remove DortaniaInternal DMG 2024-08-18 13:59:52 -06:00
Mykola Grymalyuk
e4f1f6b288 dmg_mount.py: Fix exit loop 2024-08-14 12:27:25 -06:00
Mykola Grymalyuk
ba0a6a59e5 detect.py: Add additional check for 3802 2024-08-14 12:27:14 -06:00
Mykola Grymalyuk
1ff1934595 Sync DortaniaInternalResources.dmg 2024-08-14 09:28:28 -06:00
Mykola Grymalyuk
61eb938350 Sync with previous changes 2024-08-14 09:26:19 -06:00
Mykola Grymalyuk
5a57ee1cc9 Merge branch 'main' into sequoia-development
# Conflicts:
#	opencore_legacy_patcher/sys_patch/sys_patch.py
2024-08-14 09:24:55 -06:00
Mykola Grymalyuk
258b0309ab Merge pull request #1146 from dortania/kernel-management
Modularize System Volume Patching System
2024-08-14 09:18:38 -06:00
Mykola Grymalyuk
53dd5d3477 Further modularize sys_patch 2024-08-13 13:07:58 -06:00
Mykola Grymalyuk
c4cda81df6 Modularize sys_patch_mount.py 2024-08-12 16:38:05 -06:00
Mykola Grymalyuk
35b365c8ca Rework Kernel Cache management 2024-08-12 15:46:52 -06:00
Mykola Grymalyuk
1653fec580 sys_patch_helpers.py: Use full pathing 2024-08-12 08:37:55 -06:00
Mykola Grymalyuk
d1e721d8d7 Merge branch 'main' into sequoia-development 2024-08-11 20:00:52 -06:00
Mykola Grymalyuk
e453bd1b51 Sync PatcherSupportPkg 2024-08-11 19:57:39 -06:00
Jazzzny
1a576c72a2 Provide additional resilience in USB detection code (#1144)
* Add fallback, don't bail out

* Part 2

* Part 3

* Fix import

* Move encoding
2024-08-09 18:13:53 -04:00
neon ball
9a55317f86 Fix typo 2024-08-07 21:01:14 +03:00
neon ball
23d7f9f07c Fix some links 2024-08-07 21:00:35 +03:00
Mykola Grymalyuk
8c99335b83 Merge branch 'main' into sequoia-development 2024-08-01 12:45:22 -06:00
Mykola Grymalyuk
5fd7ad0b4b Sync CHANGELOG 2024-08-01 12:44:15 -06:00
Mykola Grymalyuk
b065da6dbf Merge pull request #1143 from dortania/copy-on-write
Implement improved Copy on Write detection
2024-08-01 12:42:04 -06:00
Mykola Grymalyuk
90092a296d Implement getattrlist for improved CoW detection 2024-08-01 11:16:00 -06:00
Mykola Grymalyuk
57356bcceb products.py: Streamline beta removal
Reduce additional loops to clear beta builds
2024-07-31 20:11:05 -06:00
Mykola Grymalyuk
d726851d9c products.py: Add extra sanity check 2024-07-31 10:58:40 -06:00
Mykola Grymalyuk
cdd81c5466 Merge branch 'main' into sequoia-development 2024-07-31 10:54:43 -06:00
Mykola Grymalyuk
7897cd14b6 products.py: Work around index being offset on deletion
Resolves non-latest builds appearing in latest dictionary
2024-07-31 10:54:15 -06:00
Mykola Grymalyuk
628fe4f8fc products.py: Verify item exists before removal 2024-07-31 09:05:41 -06:00
Mykola Grymalyuk
260fcf4c93 Merge branch 'main' into sequoia-development 2024-07-25 12:21:32 -06:00
Mykola Grymalyuk
a074baa2e9 sys_patch: Remove unused bplist code 2024-07-25 12:19:28 -06:00
Jazzzny
e81c138d2e Update README.md 2024-07-25 13:31:09 -04:00
Jazzzny
aa4fd137d1 Update README.md 2024-07-25 13:16:05 -04:00
Mykola Grymalyuk
960090fd80 Merge branch 'main' into sequoia-development 2024-07-25 10:12:09 -06:00
Jazzzny
8203cbc756 Update README.md 2024-07-24 20:43:50 -04:00
Mykola Grymalyuk
fb88795923 sys_patch_helpers.py: Add fallback 2024-07-24 16:01:58 -06:00
Mykola Grymalyuk
7e6da1d056 sys_patch_dict.py: Adjust Metal XPC selection 2024-07-24 15:32:51 -06:00
Mykola Grymalyuk
a7837f1ae8 KernelRelayHost: Adjust injection order 2024-07-24 11:32:29 -06:00
Mykola Grymalyuk
4544c99fde misc.py: Resolve T1 communication on 15.0 Beta 4
Due to lack of kernel version incrementing, beta 1 through 3 will not function with this build (as we are unable to limit kext injection).

Note searchpartyd will crash on beta 4, full support not resolved yet.
2024-07-24 11:28:12 -06:00
Mykola Grymalyuk
1f2409043d Sync DortaniaInternalResources.dmg 2024-07-23 15:13:01 -06:00
neon ball
580fb83b4d Remove repetition and small change 2024-07-22 00:34:33 +03:00
neon ball
de3875279a Swap OS version names from heading to bold 2024-07-22 00:24:24 +03:00
neon ball
cdfefe1612 Add a thing 2024-07-22 00:14:56 +03:00
neon ball
6f7f309a4d Change a bit 2024-07-22 00:13:39 +03:00
neon ball
86a7e306f6 Improve SIP documentation
Previous one was a bit of a jumbled mess, added some cohesiveness and version based information
2024-07-22 00:08:26 +03:00
Mykola Grymalyuk
8d88fbbfa4 Remove unused imports 2024-07-21 13:53:52 -06:00
Mykola Grymalyuk
414d114b85 sucatalog: Sync versioning to Sequoia 2024-07-21 12:23:25 -06:00
Mykola Grymalyuk
0749d14e1c Merge branch 'main' into sequoia-development 2024-07-21 12:18:01 -06:00
Mykola Grymalyuk
ae423888d7 Merge pull request #1142 from dortania/sucatalog-rewrite
sucatalog: Implement more robust Software Update Catalog library
2024-07-21 12:16:59 -06:00
Mykola Grymalyuk
4583a743be sucatalog: Publish initial version 2024-07-21 11:54:54 -06:00
neon ball
537853418d Fix typo 2024-07-16 11:41:12 +03:00
neon ball
6603df4cce Fix link v2 2024-07-16 11:39:54 +03:00
neon ball
21e144ee5f Fix link 2024-07-16 11:39:08 +03:00
Jazzzny
4f44737f12 Add official product icon for Sequoia 2024-07-12 15:36:10 -04:00
Eduardo Covas
50e7f1d3ad Sync PatcherSupportPkg 2024-07-12 09:55:53 -03:00
Dhinak G
18157fe5aa Fix mislabeled MBA Identifiers (#1140)
Co-authored-by: ROSeaboyer <ryan.seaboyer@icloud.com>
2024-07-05 13:42:56 -04:00
Mykola Grymalyuk
3b551d565a sys_patch_dict.py: Adjust Vega MTL bin 2024-07-03 19:01:22 -06:00
Mykola Grymalyuk
b7c4ea2b89 Sync PatcherSupportPkg 2024-07-03 13:47:33 -06:00
Dhinak G
66f0009c65 disk_images.py: Do not include EFI 2024-06-28 12:10:57 -04:00
Dhinak G
49da508bde sys_patch.py: Better wording for staged update sanity check 2024-06-28 12:10:15 -04:00
Dhinak G
76516394fd payloads: Update AMFIPass to 1.4.1 and Lilu to 1.6.8 rolling (4256f4315b) 2024-06-28 11:52:07 -04:00
Mykola Grymalyuk
f46f4cf857 Merge pull request #1138 from dortania/bsd
Mention contributors in license
2024-06-27 13:34:32 -06:00
Jazzzny
4f104de405 Reword 2024-06-27 14:28:27 -04:00
Jazzzny
4f2f9a8763 Merge branch 'main' into bsd 2024-06-27 12:55:16 -04:00
Jazzzny
ceeef7c1a5 Update LICENSE.txt to include individual contributors 2024-06-27 12:51:19 -04:00
Mykola Grymalyuk
9cadfec802 Installer Backup: Add Sequoia logic 2024-06-25 21:26:48 -06:00
Mykola Grymalyuk
dbae3383d0 sys_patch.py: Adjust wording 2024-06-25 21:26:32 -06:00
Mykola Grymalyuk
99daa4c2b1 sys_patch_dict.py: Adjust GCN patchsets 2024-06-25 21:10:40 -06:00
Mykola Grymalyuk
18ec8ca665 Merge branch 'main' into sequoia-development 2024-06-25 19:02:21 -06:00
Mykola Grymalyuk
5f675ab9de constants.py: Sync versioning 2024-06-25 18:39:08 -06:00
Mykola Grymalyuk
ed002ce988 Publish internal DMG 2024-06-25 18:37:58 -06:00
Mykola Grymalyuk
9f24c8738a sys_patch_dict.py: Add Intel 31001 base 2024-06-25 18:37:39 -06:00
Mykola Grymalyuk
5551780fcb sys_patch_dict.py: Adjust formatting 2024-06-25 16:59:49 -06:00
Mykola Grymalyuk
820481a288 sys_patch_dict.py: Adjust formatting 2024-06-25 16:47:07 -06:00
Mykola Grymalyuk
a32e148ec0 sys_patch_dict.py: Add modern WiFi base 2024-06-25 16:43:35 -06:00
Mykola Grymalyuk
e7c9f4e90c sys_patch_dict.py: Add legacy GCN base 2024-06-25 16:02:56 -06:00
Mykola Grymalyuk
692c0de9f2 sys_patch_dict.py: Add T1 base 2024-06-25 16:02:42 -06:00
Mykola Grymalyuk
dbae4db28c sys_patch_dict.py: Add USB1.1 base 2024-06-25 16:02:30 -06:00
neon ball
ded1e8c2c7 Adjust size 2024-06-23 20:30:55 +03:00
neon ball
0f83e77f1a Fix path 2024-06-23 20:28:27 +03:00
neon ball
1fc1595ffb Fix image size 2024-06-23 20:23:49 +03:00
neon ball
1c147819f7 Add troubleshooting section about "Bless failed"
Possible solution to fix "You have no premission to save..." error
2024-06-23 20:18:44 +03:00
neon ball
4aaf658c8f Move sidebar location 2024-06-16 15:01:11 +03:00
neon ball
2fb193692b Update PROCESS.md 2024-06-16 14:55:46 +03:00
neon ball
7f6a2e393c Update PROCESS.md 2024-06-16 14:48:29 +03:00
neon ball
0a48986ddb Fix note again 2024-06-16 14:46:11 +03:00
neon ball
edd9814f12 Fix note 2024-06-16 14:43:47 +03:00
neon ball
f32f94e588 Fix typos 2024-06-16 14:42:21 +03:00
neon ball
5fb4bbf7f4 Add note highlight 2024-06-16 14:40:56 +03:00
neon ball
7d8d9324e0 Rename PROCESS to PROCESS.md 2024-06-16 14:34:37 +03:00
neon ball
f717bdceae Update config.js 2024-06-16 14:26:08 +03:00
neon ball
d015f8d1e4 Create PROCESS 2024-06-16 14:25:47 +03:00
Mykola Grymalyuk
462d6f633a Add Sequoia assets 2024-06-13 16:22:28 -06:00
Mykola Grymalyuk
b2c01da5b2 macos_installer_handler.py: List n-3 apps
Thanks @jazzzny for idea and implementation
2024-06-13 16:21:58 -06:00
Mykola Grymalyuk
fc650bfd97 macos_installer_handler.py: Add Sequoia support 2024-06-13 16:20:04 -06:00
Mykola Grymalyuk
ffeec342a9 efi_builder: Add SPI trackpad support to Sequoia 2024-06-13 10:34:08 -06:00
Mykola Grymalyuk
ea12d44d68 OpenCanopy: Add Sequoia assets 2024-06-11 18:46:33 -06:00
Mykola Grymalyuk
09c3b8e3da Add MacBookAir8,x to AGPM dictionary 2024-06-10 16:50:46 -06:00
Mykola Grymalyuk
697dbec6a1 Fix indentation 2024-06-10 16:36:41 -06:00
Mykola Grymalyuk
991c059f30 Add base MacBookAir8,x support 2024-06-10 16:35:13 -06:00
Mykola Grymalyuk
40484a42dd macos_installer_handler.py: Adjust os_override 2024-06-10 16:20:52 -06:00
Mykola Grymalyuk
832232dd37 smbios_data.py: Adjust max OS for MacBookAir8,x 2024-06-10 16:20:30 -06:00
Jazzzny
f9ecafb661 Replace hardcoded os_data.sonoma with max_os 2024-06-10 16:46:32 -04:00
Mykola Grymalyuk
42c6d6b042 sys_patch_detect.py: Increase max OS support to Sequoia
Probably gonna brick your device, don’t root patch. This is for dortania developers only
2024-06-10 12:07:27 -06:00
Mykola Grymalyuk
1d9fbec9ef efi_builder: Add -lilubetaall arg 2024-06-10 12:05:18 -06:00
Mykola Grymalyuk
9a2fca8d18 os_data.py: Add macOS Sequoia constant 2024-06-10 11:52:48 -06:00
Mykola Grymalyuk
475b9e793f sys_patch: Fix patches typing 2024-06-08 20:24:04 -06:00
Mykola Grymalyuk
73ce7e5bda package_scripts.py: Adjust formatting 2024-06-02 12:29:56 -06:00
Mykola Grymalyuk
3bffad8001 GUI: Add side spacing for wx.TextCtrl elements 2024-06-02 12:19:44 -06:00
Mykola Grymalyuk
aa40e9328a CI: Programatically create PKG scripts
Additionally move all PKG assets to ci_tooling/pkg_assets
2024-06-02 12:16:25 -06:00
Mykola Grymalyuk
ec103c1d2e Launch Services: Adjust AssociatedBundleIdentifiers 2024-06-02 12:04:26 -06:00
Mykola Grymalyuk
dd88879dc0 Increment version 2024-05-31 11:43:54 -06:00
Mykola Grymalyuk
a8ecd1c153 Sync CHANGELOG 2024-05-31 10:46:19 -06:00
Mykola Grymalyuk
2dd2569931 PkgBackground: Sync Affinity Design asset file 2024-05-31 10:46:13 -06:00
Mykola Grymalyuk
86e88bf70c Merge pull request #1134 from dortania/sanity-checks
sys_patch: Implement sanity checks
2024-05-31 10:43:03 -06:00
Dhinak G
6daa038705 sys_patch.py: Fix last 2024-05-31 12:21:56 -04:00
Dhinak G
0e6576ac3d sys_patch.py: Run sanity checks before starting patching 2024-05-31 11:46:31 -04:00
Mykola Grymalyuk
074d56eed3 utilities.py: Use full binary path 2024-05-31 08:49:14 -06:00
Mykola Grymalyuk
e086d0aec1 Publish internal installer backup tooling
Published for reference, not intended for end users
2024-05-30 20:07:33 -06:00
Mykola Grymalyuk
61524c764c Set executable bit on tooling 2024-05-30 20:03:02 -06:00
Mykola Grymalyuk
8f0e8d6928 application_entry.py: Add handling for when CWD disappears 2024-05-30 20:02:51 -06:00
Mykola Grymalyuk
b62eb7e684 Tooling: Fetch assets implictly 2024-05-28 18:58:07 -06:00
Mykola Grymalyuk
18d66c66bb gui_entry.py: Add missing import 2024-05-28 18:53:50 -06:00
Mykola Grymalyuk
b27e349952 Add Privileged Helper Tool Documentation 2024-05-28 12:59:49 -06:00
Mykola Grymalyuk
fdfc86e0d6 sys_patch: Avoid relaunching OCLP 2024-05-28 12:23:33 -06:00
Mykola Grymalyuk
3d8d97f400 Merge pull request #1133 from dortania/pkg-support
Implement Package and Privileged Helper Tool support
2024-05-27 17:51:41 -06:00
Mykola Grymalyuk
32e26a10c4 AutoPkg: Fix settings file permission 2024-05-27 17:49:17 -06:00
Mykola Grymalyuk
d613581faa wx_gui: Destroy frame on root patching 2024-05-27 17:27:58 -06:00
Mykola Grymalyuk
c645f57572 Remove legacy _fix_file_permission()
Required for when OCLP would run as root
2024-05-27 17:15:00 -06:00
Mykola Grymalyuk
8fb2ee4b83 Remove stop gap “supports_privileged_helper()” code
Intended to handle transition better, now that it’s complete the code is no longer required
2024-05-27 17:11:28 -06:00
Mykola Grymalyuk
1e650637eb sys_patch: Remove legacy shim code 2024-05-27 15:48:43 -06:00
Mykola Grymalyuk
9be685e358 Shim: update centering logic 2024-05-27 14:58:27 -06:00
Mykola Grymalyuk
3dc0c46986 Packaging: Resolve AutoPkg not setting S-bit 2024-05-27 14:52:51 -06:00
Mykola Grymalyuk
9428040f64 Tooling: Switch AutoPkg generation to macOS-Pkg-Builder 2024-05-27 13:25:51 -06:00
Mykola Grymalyuk
ec9ecbc7a9 Shim: Switch to old spawn logic 2024-05-27 12:13:26 -06:00
Mykola Grymalyuk
303d3de6bd GUI: Remove relaunch logic 2024-05-27 12:13:09 -06:00
Mykola Grymalyuk
e8efa89899 PKG: Add Affinity file
Source for PKG background images
2024-05-27 11:36:28 -06:00
Mykola Grymalyuk
b0def277ea updates.py: Add support for PKG updates 2024-05-27 11:29:04 -06:00
Mykola Grymalyuk
acbeef070f Remove alias creation
Now handled by PKG
2024-05-27 11:04:14 -06:00
Mykola Grymalyuk
e3eb90b7fb Shim: Switch to “/usr/bin/open” 2024-05-27 10:55:02 -06:00
Mykola Grymalyuk
c5dae2c61f Publish CFBundleVersion 2024-05-27 10:54:54 -06:00
Mykola Grymalyuk
fdddb8378c PHT: remove entitlements 2024-05-27 10:48:46 -06:00
Mykola Grymalyuk
8aed4e02a6 Shim: Add entitlements 2024-05-27 10:21:48 -06:00
Mykola Grymalyuk
2a6c3efa99 Build: Sign PHT 2024-05-27 10:19:53 -06:00
Mykola Grymalyuk
b3fe52b02b Shim: Better match original app 2024-05-27 09:51:15 -06:00
Mykola Grymalyuk
41be3ffb55 Build: Set versioning in update shim 2024-05-27 09:34:52 -06:00
Mykola Grymalyuk
9db11c3a8c Tooling: Rename build script 2024-05-27 07:32:57 -06:00
Mykola Grymalyuk
ea96c2c4ad shim: Add setpgid usage 2024-05-26 20:58:20 -06:00
Mykola Grymalyuk
0202f4e1fb Update Shim: Adjust app icon 2024-05-26 20:21:04 -06:00
Mykola Grymalyuk
796c2207a0 CI: Fix missing '--run-as-individual-steps' parameter 2024-05-26 19:52:04 -06:00
Mykola Grymalyuk
1469601570 CI: Modularize steps 2024-05-26 19:45:22 -06:00
Mykola Grymalyuk
7d686a29cf Implement update shim 2024-05-26 19:21:49 -06:00
Mykola Grymalyuk
b6346137f3 PKG Scripts: Add PackageKit parameters 2024-05-22 20:53:25 -06:00
Mykola Grymalyuk
e2dabfcc16 Scripts: Handle output escapes in El Capitan 2024-05-21 21:12:06 -06:00
Mykola Grymalyuk
0ef817566e CI: Add Uninstall PKG 2024-05-21 19:36:33 -06:00
Mykola Grymalyuk
af44dcef8e CI: Add Package Signing support 2024-05-21 13:44:53 -06:00
Mykola Grymalyuk
dd96889f66 CI: Upload PKG 2024-05-21 11:06:42 -06:00
Mykola Grymalyuk
811344261e CI: Adjust formatting 2024-05-21 10:58:52 -06:00
Mykola Grymalyuk
e8233c3691 CI: Add PKG building support 2024-05-21 10:42:11 -06:00
Mykola Grymalyuk
952ac0de8c Privileged Helper: Match directory casing 2024-05-20 18:58:14 -06:00
Mykola Grymalyuk
984eb67596 macos_installer_handler.py: Add support for Privileged Helper 2024-05-20 18:52:49 -06:00
Mykola Grymalyuk
45651a9aec Privileged Helper: Move to CI tooling directory
Moved as otherwise would be bundled in payloads.dmg, adding unnessesary space
2024-05-20 18:50:27 -06:00
Mykola Grymalyuk
e91c76e88e sys_patch_mount.py: Fix mount variable invocation 2024-05-20 13:40:44 -06:00
Mykola Grymalyuk
ef68b43fc3 PrivilegedHelperTool: Publish notarized binary 2024-05-20 13:06:15 -06:00
Mykola Grymalyuk
d6fbb2cf19 PrivilegedHelperTool: Fix Team ID verification 2024-05-20 13:05:50 -06:00
Mykola Grymalyuk
fde7d6f7ec firmware.py: Disable OpenLegacyBoot.efi 2024-05-20 11:38:03 -06:00
Mykola Grymalyuk
bac61f2dfa Sync OpenCorePkg 2024-05-20 11:32:38 -06:00
Mykola Grymalyuk
3906b80a68 PrivilegedHelperTool: Add source
Note: Currently not in use
2024-05-20 11:22:58 -06:00
Mykola Grymalyuk
f7bcb26b10 AutoPkg: Modularize pre/postinstall scripts 2024-05-14 21:16:25 -06:00
Mykola Grymalyuk
23146d731a sys_patch_mount.py: Fix comment and missing return statement 2024-05-13 17:55:37 -06:00
Mykola Grymalyuk
7f7acc4c9a Add backend support for Apple Silicon root patching 2024-05-10 17:44:09 -06:00
Mykola Grymalyuk
b494107d88 sys_patch_helpers.py: Remove unused import 2024-05-10 16:42:03 -06:00
Mykola Grymalyuk
abb18a5ad2 subprocess_wrapper.py: Add unified error handling
Additionally adds backend support for Privileged Helper Tool
2024-05-10 16:06:16 -06:00
Mykola Grymalyuk
84e020f7ea sys_patch.py: Enforce full pathing for subprocess 2024-05-10 14:15:42 -06:00
Mykola Grymalyuk
065b73daab sys_patch_auto.py: Enforce full pathing for subprocess 2024-05-10 14:07:15 -06:00
Mykola Grymalyuk
c456274446 kdk_handler.py: Enforce full pathing for subprocess 2024-05-10 14:04:51 -06:00
Mykola Grymalyuk
2fe8f4f4c8 sys_patch_dict.py: Enforce full pathing for processes 2024-05-10 14:01:33 -06:00
Mykola Grymalyuk
4e8805ddd7 macos_install_handler.py: Add macOS 15 variant support to backend 2024-05-10 08:47:22 -06:00
Mykola Grymalyuk
ddb71e6776 macos_installer_handler.py: Add signature check 2024-04-30 16:58:40 -06:00
Mykola Grymalyuk
a06b1f578e sys_patch.py: Resolve LE cleaning on Web Drivers
Thanks @midi1996 for catching
2024-04-03 15:48:58 -06:00
neon ball
e53ced5b8e Merge pull request #1131 from crystall1nedev/patch-2
Add missing MacBook Pro models to the supported list
2024-04-03 18:06:17 +03:00
Eva Isabella Luna
59b5ccf07e Add missing MacBook Pro x2 2024-04-03 10:56:07 -04:00
Eva Isabella Luna
eddc9e6ffd Add missing MacBook Pro model 2024-04-03 10:52:14 -04:00
neon ball
19c35f05e5 Merge pull request #1130 from crystall1nedev/fix-troubleshooting
Fix root patch troubleshooting docs
2024-04-02 22:16:28 +03:00
Eva Isabella Luna
9adbb5ae09 Note about FV2 2024-04-02 15:06:32 -04:00
Eva Isabella Luna
cf32b7a989 Fix an error deleting /L/E 2024-04-02 14:59:59 -04:00
Mykola Grymalyuk
c19c6aa575 Adjust type hinting 2024-04-01 19:50:28 -06:00
Mykola Grymalyuk
5e2278860d Merge pull request #1129 from dortania/package-restructuring
Restructure Python project into package format
2024-04-01 11:45:30 -06:00
Mykola Grymalyuk
f97096945b Sync CHANGELOG 2024-04-01 11:41:04 -06:00
Mykola Grymalyuk
6caabf9726 Organize Drive Icons 2024-04-01 11:36:25 -06:00
Mykola Grymalyuk
83fec2952e Move utilities directory to support 2024-04-01 11:15:34 -06:00
Mykola Grymalyuk
10da04ca3e Images: Move into docs directory 2024-04-01 09:44:18 -06:00
Mykola Grymalyuk
d464c80305 AutoPkg: Adjust relative path 2024-03-31 21:32:26 -06:00
Mykola Grymalyuk
463bed4e06 Restructure into package format 2024-03-31 21:27:36 -06:00
Mykola Grymalyuk
d02d89b9c0 Increment build 2024-03-31 15:59:50 -06:00
Mykola Grymalyuk
ae8d6923d7 CI: Upgrade actions/setup-node to v4 2024-03-31 15:34:16 -06:00
Mykola Grymalyuk
b7e76c2a4d CI: Upgrade actions/upload-artifact to v4 2024-03-31 15:34:00 -06:00
Mykola Grymalyuk
dd425d2c1e CI: Upgrade actions/checkout to v4 2024-03-31 15:22:49 -06:00
Mykola Grymalyuk
31e4d8d3f1 CI: Use full path for packagesbuild 2024-03-31 15:18:27 -06:00
Eduardo Covas
bbc8902270 Add non-Metal support for macOS 14.4 2024-03-18 09:50:25 -03:00
Dhinak G
520c922429 Fix last 2024-03-15 22:16:35 -04:00
Dhinak G
9c2da4e4fb Update "Stock GPUs" handling
closes #1128
2024-03-15 19:18:33 -04:00
Mykola Grymalyuk
4c4b202bcc Merge pull request #1127 from dortania/fix-apple-logo-oversight
Add SkipLogo patch for Macs natively supporting Monterey or newer
2024-03-13 09:44:58 -06:00
Jazzzny
8509746a49 Add Macmini7,1 to exclude list 2024-03-12 19:20:46 -04:00
Jazzzny
59beb64d17 Remove redundant check 2024-03-12 19:12:04 -04:00
Jazzzny
1713bfe6c3 Add SkipLogo patch 2024-03-12 19:04:54 -04:00
Mykola Grymalyuk
28f7f603b7 Sync OpenCorePkg 2024-03-12 07:50:06 -06:00
Mykola Grymalyuk
5a0c7679f7 Increment build 2024-03-12 07:47:53 -06:00
Mykola Grymalyuk
e494906f22 sys_patch_dict.py: Fix comparison 2024-03-10 17:06:07 -06:00
Mykola Grymalyuk
cdb40d8201 Sync PatcherSupportPkg 2024-03-10 14:14:38 -06:00
neon ball
b42eb6e395 Small fix 2024-03-10 21:10:10 +02:00
neon ball
20bb0cd6d8 Fix typos and stuff 2024-03-10 21:07:51 +02:00
Mykola Grymalyuk
c6688ea922 Increment build 2024-03-10 12:01:23 -06:00
neon ball
0e490e5ae9 Switch kext removal command
Command cleans /Library/Extensions with a one shot instead of having to do it one by one per kext.
2024-03-08 20:18:59 +02:00
Mykola Grymalyuk
e58a671136 bluetooth.py: Fix GUID and delete variables 2024-03-07 17:57:11 -07:00
Mykola Grymalyuk
5d142fd19f bluetooth.py: Publish Controller and Dongle NVRAM variables 2024-03-07 17:28:30 -07:00
Mykola Grymalyuk
f55598dac8 misc.py: Resolve SPI support for MacBookAir6,x 2024-03-07 17:00:52 -07:00
Mykola Grymalyuk
321cc8dd68 Increment build 2024-03-07 14:27:56 -07:00
Jazzzny
9070f5af8d Update implementation for updater (#1126)
* Update implementation for updater

* Update changelog
2024-03-07 16:16:53 -05:00
Mykola Grymalyuk
a8c080042a misc.py: Adjust AppleHSSPI model range 2024-02-20 13:13:21 -07:00
Eduardo Covas
5788e067b3 Resolve 14.4 T1 support 2024-02-13 11:41:23 -03:00
Mykola Grymalyuk
90d7e9715d Sync CHANGELOG 2024-02-11 19:59:03 -07:00
Mykola Grymalyuk
f8a3d5716c Add support for macOS 14.4 2024-02-11 14:23:05 -07:00
Mykola Grymalyuk
82084c84e3 validation.py: Add optional support for checking unused PatcherSupportPkg files 2024-02-11 13:58:37 -07:00
Mykola Grymalyuk
f29c629165 misc.py: Add SPI top case patches 2024-01-30 16:14:09 -07:00
Dhinak G
54b3e17d93 kdk_handler.py: Fix KDK matching
Use sort order from API
2024-01-18 21:22:07 -05:00
Mykola Grymalyuk
2bc843dd2f Adjust copyright label 2024-01-01 11:00:08 -07:00
Dhinak G
55eeec790f Docs: Drop security point on homepage
With Sonoma everything needs patches.
2023-12-31 17:23:28 -05:00
Mykola Grymalyuk
8db6c5607d Sync OpenCorePkg 2023-12-30 19:12:58 -07:00
Mykola Grymalyuk
2df8dc9caf Merge pull request #1121 from dortania/subprocess-cleanup
Refactor subprocess usage
2023-12-30 14:13:39 -07:00
Mykola Grymalyuk
99f48b1e87 Sync CHANGELOG 2023-12-30 14:13:23 -07:00
Mykola Grymalyuk
0dfcf03c0c Use full path and arguments for subprocess 2023-12-30 13:49:59 -07:00
Mykola Grymalyuk
b46e55d3f6 Clean up macserial invocation 2023-12-30 13:14:47 -07:00
Mykola Grymalyuk
62fd543623 Avoid .split() usage for subprocess 2023-12-30 13:14:20 -07:00
Mykola Grymalyuk
ec46221c30 Build-Binary.command: Remove unused import 2023-12-30 12:46:35 -07:00
Mykola Grymalyuk
e57247a233 OpenCore-Patcher-GUI.spec: Add type hinting for PyInstaller classes 2023-12-30 12:44:28 -07:00
Mykola Grymalyuk
6aa0ab2161 Increment build 2023-12-30 12:32:43 -07:00
Mykola Grymalyuk
f1210def89 sys_patch: Expand 32023 patching for 14.2 Beta 2+ 2023-11-26 13:03:18 -07:00
Mykola Grymalyuk
03842d4e77 paylods: Resolve malformed CFBundleExecutable property 2023-11-26 11:11:41 -07:00
Mykola Grymalyuk
34676702f4 Merge pull request #1119 from fricklerhandwerk/fix-typos
fricklerhandwerk: fix typos
2023-11-18 11:00:58 -07:00
fricklerhandwerk
352d917a7d fix typos 2023-11-16 19:21:49 +01:00
Mykola Grymalyuk
f1b47f6a78 Increment build 2023-11-10 18:43:21 -07:00
neon ball
15d58966f6 Update DONATE.md 2023-11-10 22:24:26 +02:00
neon ball
49cb9ccb66 Reword DONATE.md 2023-11-10 19:45:10 +02:00
Mykola Grymalyuk
6841fa6f0a Adjust versioning to 1.2.1
Release coming shortly to handle Launch Agent regression
2023-11-09 09:38:03 -07:00
Mykola Grymalyuk
5e77d7dba1 Launch Services: Remove faulty log file
Launch Agents normally can’t write to `/var/log`, thus resulting in the agent failing to load.
2023-11-09 09:36:07 -07:00
Mykola Grymalyuk
fbedb6f0d2 gui_settings.py: Resolve TS2 toggle not holding 2023-11-08 11:41:29 -07:00
Mykola Grymalyuk
974a560cde Increment build 2023-11-06 11:02:10 -07:00
Mykola Grymalyuk
5db862d38b gui_cache: Use new check_backups_only property 2023-11-06 09:23:29 -07:00
Mykola Grymalyuk
139f94aae1 kdk_handler.py: Add optional check_backups_only property
Reduces false positives for Patcher’s `—cache_os` property, where an installed KDK would match against an expected backup
2023-11-06 09:22:47 -07:00
Mykola Grymalyuk
432736eb98 Sync OpenCorePkg 2023-11-06 09:03:55 -07:00
neon ball
6e40a80650 Fix Mac mini model 2023-11-05 14:19:14 +02:00
Eduardo Covas
21e1b73a4e Sync changelog 2023-11-04 19:31:51 -03:00
neon ball
d9676afe43 Fix Mac mini model 2023-11-04 20:27:01 +02:00
Jazzzny
525c7c3173 Migrate to font_factory (#1118) 2023-11-02 20:10:44 -04:00
Eduardo Covas
51ef3fe719 Sync PatcherSupportPkg 2023-11-02 15:21:32 -03:00
Mykola Grymalyuk
c6f5ceacfd os_update.py: Skip 10s wait if user approved immediately 2023-11-01 21:59:39 -06:00
Mykola Grymalyuk
55801e80bd Add support for KDK caching 2023-11-01 21:55:29 -06:00
Mykola Grymalyuk
4196a7b5f2 Paylods: Move launch service files 2023-11-01 19:43:46 -06:00
Mykola Grymalyuk
f0d6faab9a sys_patch_detect.py: Allow optional OS overrides
For detecting patches for an incoming OS
2023-11-01 13:36:31 -06:00
Mykola Grymalyuk
6b00caf883 firmware.py: Add handling for iMac18,2 4K display 2023-11-01 07:27:01 -06:00
Mykola Grymalyuk
d98a653082 Merge branch 'main' of https://github.com/dortania/OpenCore-Legacy-Patcher 2023-11-01 07:25:19 -06:00
Mykola Grymalyuk
6d026290ac constants.py: Load icons from relative resources
Resolves issues with icons failing to load on macOS download UI
2023-11-01 07:18:06 -06:00
Eduardo Covas
39e58b3927 Sync PatcherSupportPkg 2023-10-31 21:35:38 -03:00
neon ball
8cfc33e704 Update UNINSTALL.md 2023-10-30 01:10:14 +02:00
neon ball
2b1beff6dc Update UNINSTALL.md 2023-10-30 01:06:41 +02:00
neon ball
d23e483542 Update UNINSTALL.md 2023-10-30 00:59:22 +02:00
Mykola Grymalyuk
d57a758c73 kdk_handler.py: Add support for optional backup without installation 2023-10-26 10:02:19 -06:00
Mykola Grymalyuk
16b2f1ff55 Move LA/LD order 2023-10-25 21:53:05 -06:00
Mykola Grymalyuk
ba0a676ca0 Add new daemon for update handling
Currently developed to handle bug in macOS Sonoma that fails to clear problamatic kernel extensions in /Library/Extensions which could result in update failures from 14.0 to 14.1
2023-10-25 21:33:34 -06:00
neon ball
2ff132cb04 Small command and wording change 2023-10-26 01:13:57 +03:00
Eduardo Covas
613748488c Resolve non-Metal Photos app crash 2023-10-24 14:11:26 -03:00
Jazzzny
f23c9268f9 Readme update (#1115)
* Update DOCS

* Update README
2023-10-24 08:15:05 -04:00
Mykola Grymalyuk
7160f34a85 device_probe.py: Add handling for T1s in DFU mode 2023-10-23 18:00:58 -06:00
Jazzzny
6767f58047 Update DOCS (#1114) 2023-10-23 18:41:25 -04:00
Mykola Grymalyuk
1e781dccb3 Merge pull request #1113 from Jazzzny/readme-update
Update UI to take nightlies into account
2023-10-23 14:57:21 -06:00
Jazzzny
7e7a5d0f35 Remove temp change 2023-10-23 14:24:27 -04:00
Jazzzny
f91c817fce Fix crash when rate limited, nightly naming chng. 2023-10-23 14:22:42 -04:00
Jazzzny
173f77cc31 Follow semver 2023-10-23 13:41:03 -04:00
Jazzzny
94f870ef5b Merge branch 'dortania:main' into readme-update 2023-10-23 13:37:18 -04:00
Mykola Grymalyuk
1641e2522b Increment build 2023-10-23 11:33:39 -06:00
Mykola Grymalyuk
60f403d4b4 Remove NVMeFix.kext MaxKernel
Sonoma support resolved with NVMeFix v1.1.1
2023-10-23 10:40:11 -06:00
Jazzzny
a8a6e609f4 Update WINDOWS.md (#1112)
* Update WINDOWS.md

* Fix change
2023-10-22 13:51:27 -04:00
Jazzzny
de7d024c8f Fix change 2023-10-22 13:49:30 -04:00
Jazzzny
253b8b40a0 Update WINDOWS.md 2023-10-22 13:48:05 -04:00
Mykola Grymalyuk
331d5c7b49 Remove ParavirtualizedGraphics.framework downgrade
Determined to be ineffective for 3802-based GPUs
2023-10-21 10:06:55 -06:00
Mykola Grymalyuk
edbfa951c8 Merge pull request #1110 from dortania/vault_2
Security - Enable vaulting by default
2023-10-21 10:02:46 -06:00
neon ball
3f828d0d69 Merge pull request #1111 from crystall1nedev/migration-assistant
Add note about Migration Assistant
2023-10-21 19:01:49 +03:00
neon ball
e6a33ed26b Merge branch 'main' into migration-assistant 2023-10-21 19:00:57 +03:00
Mykola Grymalyuk
59e9ddfe3e Merge branch 'main' into vault_2 2023-10-21 09:59:57 -06:00
Mykola Grymalyuk
c27998a881 Merge pull request #1105 from Jazzzny/readme-update
GUI - Refresh update menu
2023-10-21 09:57:52 -06:00
Mykola Grymalyuk
faa6b1e770 Merge branch 'main' into readme-update 2023-10-21 09:55:39 -06:00
neon ball
c8b02a8e28 Update config.js 2023-10-21 18:49:29 +03:00
neon ball
03713c3f7b Delete docs/TESTED.md
Removing due to being out of date constantly and no longer really relevant.
2023-10-21 18:48:21 +03:00
Eva Isabella Luna
64cab85704 Add note about Migration Assistant 2023-10-19 00:14:02 -04:00
neon ball
957dd4b9ff Add Bluetooth workaround 2023-10-18 19:09:05 +03:00
Mykola Grymalyuk
d83f8ee381 Sync PatcherSupportPkg 2023-10-15 18:06:41 -06:00
Mykola Grymalyuk
14e5772b44 security.py: Clean whitespace 2023-10-15 18:03:51 -06:00
neon ball
23ee732078 Change model, remove tested/tested by 2023-10-15 23:01:03 +03:00
Mykola Grymalyuk
457615a161 Sync PatcherSupportPkg 2023-10-15 13:47:01 -06:00
Mykola Grymalyuk
2ec63ce006 utilities.py: Fix formatting for less than a minute 2023-10-15 00:37:40 -06:00
Mykola Grymalyuk
7c23220416 sys_patch_dict.py: Adjust pathing 2023-10-14 23:34:27 -06:00
Mykola Grymalyuk
1aee2e5dfa sys_patch: Add T1 support 2023-10-14 22:32:00 -06:00
Mykola Grymalyuk
760db35d15 sys_patch: Resolve PCIe Camera on 14.1 2023-10-14 21:55:29 -06:00
Mykola Grymalyuk
af57596559 sys_patch: Add OHCI/UHCI downgrade 2023-10-14 20:35:17 -06:00
Mykola Grymalyuk
51954d3b6a firmware.py: Add path check for OpenLegacyBoot.efi 2023-10-14 19:15:26 -06:00
neon ball
9e485a5997 Add link to Metal GPU issue for supported models 2023-10-12 22:03:26 +03:00
neon ball
379eb56eb5 Add Sonoma UC models
These are not tested, so YMMV.
2023-10-08 14:04:04 +03:00
Jazzzny
a483e713ae remove file 2023-10-07 17:29:53 -04:00
Jazzzny
0877d4b4be i 2023-10-07 17:29:29 -04:00
Jazzzny
b5a876ffd7 push 2023-10-07 17:27:03 -04:00
Eduardo Covas
5924ab507c Resolve Paravirtualized Graphics support for 3802 GPUs on macOS Sonoma 2023-10-07 09:31:04 -03:00
Jazzzny
f4a8cbbea9 changelog eta 2023-10-06 20:52:26 -04:00
neon ball
86ce62a7d6 Fix repetition of same word 2023-10-07 03:49:31 +03:00
Mykola Grymalyuk
8aace2d2c9 Merge branch 'main' of https://github.com/dortania/OpenCore-Legacy-Patcher
# Conflicts:
#	CHANGELOG.md
#	resources/constants.py
2023-10-06 16:44:37 -06:00
Mykola Grymalyuk
815eb8f270 firmware.py: Tag links for historical tracking 2023-10-06 16:39:20 -06:00
Jazzzny
c7471fc64b Update CHANGELOG 2023-10-06 18:08:09 -04:00
Jazzzny
f968a493b9 Add new vaulting implementation 2023-10-06 16:09:44 -04:00
Jazzzny
5e61f0c61f Add universal vaulting files 2023-10-06 15:53:08 -04:00
Eduardo Covas
38188a5ccb Sync PatcherSupportPkg 2023-10-06 14:16:26 -03:00
Eduardo Covas
ba88b5be82 Increment build 2023-10-06 14:01:19 -03:00
Mykola Grymalyuk
a41bbb8267 Merge branch 'main' of https://github.com/dortania/OpenCore-Legacy-Patcher 2023-10-06 09:44:30 -06:00
Eva Isabella Luna
2c428aa3dd Update MODELS.md for Sonoma (#1108)
* Sonoma models.md

* Other small thing

* Resolve incorrect Legacy Metal entries

---------

Co-authored-by: Michael McAuliff <michaeltechse@gmail.com>
Co-authored-by: Michael <68412795+TheMasterOfMike@users.noreply.github.com>
2023-10-06 00:23:08 -04:00
Jazzzny
4429b5cb4b Changes 2023-10-04 18:01:05 -04:00
Jazzzny
526594a90d Fix up 2023-10-04 17:12:51 -04:00
Jazzzny
04a2e55d24 Merge branch 'main' into readme-update 2023-10-04 16:28:35 -04:00
neon ball
7aff1794c6 Fix v2 2023-10-04 22:53:59 +03:00
neon ball
e8f8f1bd93 Fix wording 2023-10-04 22:49:24 +03:00
Mykola Grymalyuk
cba33c1e82 Sync Kexts 2023-10-03 15:49:12 -06:00
Mykola Grymalyuk
a26120a376 Increment build 2023-10-03 15:47:16 -06:00
neon ball
9982d43d5a Add "ls /Volumes" 2023-10-03 23:53:17 +03:00
Mykola Grymalyuk
b72ff16f55 CHANGELOG: Adjust formatting 2023-10-03 14:22:17 -06:00
Eduardo Covas
54c56e2988 Sync PatcherSupportPkg 2023-10-03 13:25:55 -03:00
Mykola Grymalyuk
8718c620d3 sys_patch_detect.py: Add Sonoma check to PCIe Camera UI label
Patch itself still has a Sonoma guard, this simply prevents the UI from showing the item
2023-10-03 07:39:20 -06:00
Mykola Grymalyuk
8a6a9ec054 sys_patch_dict.py: Fix OS versioning for CoreImage
Thanks @OnesuchDev for catching this
2023-10-02 20:26:22 -06:00
neon ball
e56beb5f4e Change wording 2023-10-03 01:00:46 +03:00
neon ball
9038aaf906 Add LE kext method to root patch reversion 2023-10-03 00:53:15 +03:00
Jazzzny
8a287e7cc2 Merge branch 'dortania:main' into readme-update 2023-10-02 17:19:15 -04:00
neon ball
8f7606aaf2 Fix dash 2023-10-03 00:08:29 +03:00
neon ball
1319a23c77 Change text position 2023-10-02 23:59:42 +03:00
Mykola Grymalyuk
5774f0c402 global_settings.py: Add handling for corrupted config files 2023-10-02 14:49:27 -06:00
Mykola Grymalyuk
ce70d87555 Merge branch 'main' of https://github.com/dortania/OpenCore-Legacy-Patcher 2023-10-02 11:36:58 -06:00
Mykola Grymalyuk
859b002240 Increment build 2023-10-02 11:36:51 -06:00
neon ball
00d29e8422 Add a colon... 2023-10-02 19:31:48 +03:00
neon ball
6fcdd5fa99 Fix
Turns out changing the word makes this fail
2023-10-02 19:27:41 +03:00
neon ball
4f1cb2d753 Warning -> Attention 2023-10-02 19:22:40 +03:00
neon ball
c9ace128a1 Fix it again 2023-10-02 19:17:20 +03:00
neon ball
e6149046b3 Small changes 2023-10-02 19:14:49 +03:00
neon ball
82eec8e343 Fix warning line
I think?
2023-10-02 19:04:13 +03:00
neon ball
c4063840e9 Merge pull request #1107 from ParaDoX1994/Troubleshooting.md
Add troubleshooting for root patch reversion in recovery
2023-10-02 19:03:06 +03:00
neon ball
aa7be2163f Add troubleshooting for root patch reversion in recovery 2023-10-02 19:02:35 +03:00
neon ball
67b00f34be SONOMA-DROP.md (#1106)
* Add files via upload

* SONOMA-DROP.md

* Update SONOMA-DROP.md

* Add Sonoma doc to sidebar

* Update SONOMA-DROP.md

* Update SONOMA-DROP.md

* Update SONOMA-DROP.md

* Update SONOMA-DROP.md

* Update SONOMA-DROP.md

* Update USB1.1 Chart headline

* Fix the warning line

* Add links to non-Metal and Metal issues

* Add versioning note and reorganize

* Reorganize

* Add links

* Small changes

* Fix few things

* Fix link

* Fix link description

* Intel -> Ivy

Goddamnit

* Remove widget freeze note

* Small change
2023-10-02 11:54:33 -04:00
Mykola Grymalyuk
be4ef6a7f2 CI: Add Sonoma validation to PSP bins 2023-10-02 09:17:07 -06:00
Mykola Grymalyuk
a24570de05 Sync PatcherSupportPkg 2023-10-02 09:14:48 -06:00
Mykola Grymalyuk
fb85c42c52 constants.py: Fix path handling with DMG mounting 2023-10-01 15:31:21 -06:00
Mykola Grymalyuk
c6bef2d8aa Sync changelog
0.9.5 was reverted, and as such OpenLegacyBoot.efi is not present currently
2023-10-01 14:53:36 -06:00
Mykola Grymalyuk
7dc80475c3 Increment build to 1.0.0
Switch to semeantic versioning
2023-10-01 14:19:00 -06:00
Mykola Grymalyuk
404e855443 Merge pull request #1077 from dortania/sonoma-development
Preliminary support for macOS Sonoma
2023-10-01 14:17:12 -06:00
Mykola Grymalyuk
5683fedd25 Merge branch 'main' into sonoma-development 2023-10-01 14:16:35 -06:00
Jazzzny
3bf92c3587 Remove logging 2023-09-29 17:54:28 -04:00
Jazzzny
ce0928ba38 Changes 2023-09-29 17:51:51 -04:00
Jazzzny
25f5ea2457 Adjust requirements.txt 2023-09-28 22:03:03 -04:00
Jazzzny
0ba93a8a2b Merge branch 'dortania:main' into readme-update 2023-09-28 21:32:11 -04:00
Jazzzny
3e0c329e53 Add main menu portion 2023-09-28 21:31:55 -04:00
Mykola Grymalyuk
2fc21e6f07 Fix debug logic 2023-09-28 09:43:29 -06:00
Mykola Grymalyuk
8db6085ed1 Revert to OpenCore 0.9.3
Due to regression on Skylake and newer systems, currently investigating
2023-09-28 08:36:01 -06:00
Mykola Grymalyuk
ca4fd2286f Sync RestrictEvents 2023-09-27 09:07:52 -06:00
Mykola Grymalyuk
df6ca71124 Merge pull request #1104 from Jazzzny/readme-update
GUI - Refresh Download UI
2023-09-26 19:50:04 -06:00
Jazzzny
3fb624fc7d Changes 2023-09-26 21:30:02 -04:00
Jazzzny
89e36d762b Changes 2023-09-26 21:24:16 -04:00
Mykola Grymalyuk
f24a7f4229 smbios_data.py: Remove extra space 2023-09-26 18:50:47 -06:00
Mykola Grymalyuk
55b3641965 Sync changelog 2023-09-26 18:49:43 -06:00
Mykola Grymalyuk
8baca06246 Sync OpenCorePkg 2023-09-26 18:34:35 -06:00
Mykola Grymalyuk
f7b160f449 Sync kexts 2023-09-26 14:27:41 -06:00
Mykola Grymalyuk
fc65423ee2 sys_patch: Add missing Xserve3,1 handling 2023-09-26 10:24:41 -06:00
Mykola Grymalyuk
8c25110568 sys_patch: Adjust WebKit command to global file 2023-09-26 07:48:16 -06:00
Mykola Grymalyuk
dad8d1224a Add basic support for 3rd party Broadcom chipsets
Not officially supported as never shipped in any official Mac, however adding to simplify non-standard hardware support (ex. Hackintoshes)
2023-09-26 07:32:08 -06:00
Mykola Grymalyuk
ed78b5632c config: Fix comment 2023-09-26 07:29:05 -06:00
Jazzzny
6bb274638e Improve consistency for menu buttons 2023-09-25 20:31:24 -04:00
Jazzzny
bb78f59b9d Update CHANGELOG 2023-09-24 21:32:45 -04:00
Jazzzny
0c960438f2 Merge branch 'dortania:main' into readme-update 2023-09-24 20:41:42 -04:00
Jazzzny
c1849c0d28 Refresh download menu 2023-09-24 20:41:22 -04:00
Mykola Grymalyuk
e62335cae5 Merge branch 'main' into sonoma-development 2023-09-24 13:22:49 -06:00
Jazzzny
b4644f4b80 Merge pull request #1102 from Jazzzny/readme-update
Readme update
2023-09-24 15:08:17 -04:00
Jazzzny
1d22ea51b4 Clean up 2023-09-24 15:06:33 -04:00
Jazzzny
241fe052aa Update credits 2023-09-24 15:05:37 -04:00
Eduardo Covas
51eb22bc94 Fix WPA Enterprise and non-Metal blank WebKit on TS2/WebDriver
NOTE: Need to revert and re-run post install patches for WPA enterprise networks.
2023-09-23 15:11:50 -03:00
Jazzzny
084ee663b2 Merge pull request #1101 from Jazzzny/gui-2
Add missing Aquantia IDs
2023-09-21 20:32:19 -04:00
Jazzzny
1fb46d0d76 Remove white line 2023-09-21 20:32:00 -04:00
Jazzzny
1faa8055ab Add missing Aquantia IDs 2023-09-21 20:31:31 -04:00
Dhinak G
b50f376990 Remove submodule 2023-09-18 13:33:56 -04:00
Dhinak G
13ffc64ce6 Update changelog 2023-09-18 13:32:31 -04:00
Dhinak G
9676c2c08a Centralize font handling
closes #1098

Co-authored-by: Jazzzny <jazzzny225@gmail.com>
2023-09-18 12:05:27 -04:00
Mykola Grymalyuk
9317e11009 build.py: Add ECM-Override 2023-09-17 18:26:41 -06:00
Jazzzny
211e8fbb71 Merge pull request #1100 from Jazzzny/bestmacever
Adjust spacing for new installer download menu
2023-09-17 20:19:07 -04:00
Jazzzny
f2bfb7c479 Adjust spacing 2023-09-17 20:18:24 -04:00
Mykola Grymalyuk
35722875ee sys_patch: Resolve dGPU support for MacBookPro14,3 2023-09-17 17:15:26 -06:00
Mykola Grymalyuk
86a9789b18 Merge branch 'main' into sonoma-development 2023-09-17 12:46:17 -06:00
Mykola Grymalyuk
18c49d0902 Merge pull request #1099 from dortania/server-update-311
Server Side: Update backend to Python 3.11 and add Universal 2 support
2023-09-17 12:45:17 -06:00
Mykola Grymalyuk
f7ec0ddf21 Add Universal 2 support 2023-09-17 12:25:13 -06:00
Mykola Grymalyuk
c2d26b4903 Upgrade Python backend to 3.11 2023-09-17 12:07:02 -06:00
Eduardo Covas
cf7a553f0b Fix non-Metal PhotoBooth 2023-09-13 00:07:59 -03:00
Eduardo Covas
434dedb815 Update non-Metal Safari workaround and avoid disabling Beta Menu Bar if enabled 2023-09-11 21:08:19 -03:00
Eduardo Covas
214e31e8e3 Implement experimental non-Metal support 2023-09-09 23:06:29 -03:00
Jazzzny
ed63f12f2b Merge pull request #1097 from Jazzzny/bestmacever
Fix Rosetta detection
2023-09-08 11:29:16 -04:00
Jazzzny
91417bf75d better fix 2023-08-26 19:06:50 -04:00
Jazzzny
be62a3f7db Merge branch 'dortania:main' into bestmacever 2023-08-26 19:00:44 -04:00
Jazzzny
f5b467c4fb Fix Rosetta detection 2023-08-26 19:00:16 -04:00
Eduardo Covas
fd17caf03d Update IOSurface patches for Intel iGPUs 2023-08-22 23:36:27 -03:00
Mykola Grymalyuk
37862961df Merge branch 'main' into sonoma-development 2023-08-20 19:46:25 -06:00
Eduardo Covas
c05238875f Workaround 13.3+ Kernel Panic on AMD GCN GPUs playing DRM content 2023-08-20 19:17:59 -03:00
Jazzzny
60f4182184 Merge pull request #1096 from Jazzzny/bestmacever
Remove double space and random character
2023-08-20 16:15:54 -04:00
Jazzzny
526c009866 Merge branch 'dortania:main' into bestmacever 2023-08-20 16:13:34 -04:00
Jazzzny
55b76aff9a Remove double space and character 2023-08-20 16:13:08 -04:00
Jazzzny
e6f44a902a Merge pull request #1095 from Jazzzny/bestmacever
Update MacBook5,2
2023-08-20 16:10:52 -04:00
Jazzzny
26e69d0084 Update 2023-08-20 16:08:59 -04:00
Mykola Grymalyuk
9cfe1a493c Merge pull request #1093 from crystall1nedev/modelsmd
Rework MODELS.md
2023-08-20 14:01:37 -06:00
Mykola Grymalyuk
b4e0c79d13 Merge pull request #1092 from crystall1nedev/main
Add NVIDIA GPU IDs
2023-08-20 14:01:24 -06:00
Eva Luna
e2440a075e 10.10 Yosemite 2023-08-20 15:58:47 -04:00
Eva Luna
59c5393bc4 Fix MacPro6,1 notes 2023-08-20 15:57:35 -04:00
Mykola Grymalyuk
685491d0ba Merge pull request #1085 from TechEnthusiasm/main
Small change to Uninstall.MD
2023-08-20 13:52:53 -06:00
Mykola Grymalyuk
0f64b8b2d9 Merge pull request #1094 from Jazzzny/menu-rewrites
Add new macOS Installer download menu
2023-08-20 13:48:36 -06:00
Eduardo Covas
e800612bcf Ensure patched GeForce kext is used for Sonoma
**WARNING: users with Nvidia Kepler GPUs to revert root patches before patching.
2023-08-20 16:21:38 -03:00
Jazzzny
ae1d73eac1 Update CHANGELOG 2023-08-18 14:34:03 -04:00
Jazzzny
fab6daae5e Move locale setting to only run once 2023-08-18 14:17:43 -04:00
Jazzzny
cc68e098eb Clean up 2023-08-18 14:15:17 -04:00
Jazzzny
b95bd4e357 Rewrite for HiDPI and enable Locale-based time 2023-08-18 14:14:06 -04:00
Eduardo Covas
36f69c4f21 Restore KDKLess support and drop IOSurface downgrade
**WARNING: this change will break existing installs, you'll need to revert root patches before patching.
2023-08-18 14:28:08 -03:00
Eduardo Covas
829f1f6bc1 Fix legacy wifi without vmm patches
Resolves missing ControlCenter
2023-08-18 14:14:15 -03:00
Mykola Grymalyuk
d73d62f68c Ensure custom RE is used
Build from force-vmm-install branch
2023-08-18 10:42:25 -06:00
Mykola Grymalyuk
5b6b8d6e1a Merge branch 'main' into sonoma-development
# Conflicts:
#	payloads/Kexts/Acidanthera/RestrictEvents-v1.1.2-DEBUG.zip
#	payloads/Kexts/Acidanthera/RestrictEvents-v1.1.2-RELEASE.zip
#	payloads/Kexts/Acidanthera/WhateverGreen-v1.6.5-Navi-DEBUG.zip
#	payloads/Kexts/Acidanthera/WhateverGreen-v1.6.5-Navi-RELEASE.zip
#	payloads/OpenCore/OpenCore-DEBUG.zip
#	payloads/OpenCore/OpenCore-RELEASE.zip
#	resources/constants.py
#	resources/wx_gui/gui_settings.py
2023-08-18 10:36:42 -06:00
Jazzzny
01b0bc4c67 Add new installer menu 2023-08-17 12:55:01 -04:00
Eva Luna
5537340c87 Fix MacBook5,2’s unique note 2023-08-14 13:58:32 -04:00
Eva Luna
eda96d0f93 Move MXM note to iMac9,1
Some iMac9,1s can be upgraded with Metal GPUs, as told by Ausdauersportler. The same thread should detail how to upgrade compatible iMac9,1 models.
2023-08-14 04:21:15 -04:00
Eva Luna
65a11b30d7 Rework MODELS.md 2023-08-14 01:09:35 -04:00
Eva Luna
5f5d5daebf Kepler [GK208]
Three unnamed GPUs
2023-08-14 00:47:32 -04:00
Eva Luna
226a59e9c1 Kepler [GK110]
- GTX 780 Ti 6GB
- Tesla K20X
- Tesla K40st
- Tesla K40s
- Tesla K40t
- Tesla K40d
- Tesla Stella Solo
- Quadro K6000
- Tesla Stella SXM
2023-08-14 00:45:26 -04:00
Eva Luna
840f47d861 Kepler [GK107]
- GT 1030 (faked 730?)
- GT 730
- GT 640M LE
- Two unknown cards
- GT 745M
- K340 USM
- GRID K1 NVS USM
- GRID K100 vGPU
- N14P-GS
- 710A
- 820M
- GRID K340
- NVS 1000
- GRID K1 Tesla USM
- GRID K140Q vGPU
- Quadro K500M
2023-08-14 00:36:28 -04:00
Eva Luna
c5adf1eeea Kepler [GK106]
- 650 Ti OEM
- 645 OEM
- 740
- 750 Ti
- 650 OEM
- 770M
- 760M
- Unnamed
2023-08-14 00:21:15 -04:00
Eva Luna
70b4381003 Kepler [GK104]
- 760 Ti
- GRID K520
- K2 GeForce USM
- K2 NVS USM
- K200 vGPU
- 760 Rev. 2
- 760 Ti OEM
- Tesla K8
- 660 Rev. 2
- Quadro K5100M
- GRID IceCube
- GRID K240Q / K240Q vGPU
- GRID K2 Tesla USM

Also remove "GeForce" if GTX follows, for consistency
2023-08-14 00:15:25 -04:00
Eva Luna
2a315b7a57 Maxwell [GP100]
The three unknown ones
2023-08-13 23:52:13 -04:00
Eva Luna
e8b4e3dfdf Maxwell [GM200(GL)]
- 980 Ti
- Quadro M6000
- Quadro M6000 24GB
- Tesla M40
2023-08-13 23:50:27 -04:00
Eva Luna
c5dd7ec6c9 Maxwell [GM107, 940MX] 2023-08-13 23:48:02 -04:00
Eva Luna
3aed0438fc Maxwell [GM107GL, GRID M3-3020] 2023-08-13 23:46:04 -04:00
Eva Luna
58314caed4 Maxwell [GM108M, MX110]
Also make sure this is grouped properly
2023-08-13 23:44:09 -04:00
Eva Luna
bd8c6b4d9f Maxwell [GM108M, MX130] 2023-08-13 23:42:51 -04:00
Eva Luna
7134e30640 Add Maxwell core TITAN X 2023-08-13 23:21:23 -04:00
Mykola Grymalyuk
e8ee2a2657 Merge pull request #1088 from Jazzzny/devtools
Developer - Add buttons to mount and save the root volume
2023-08-08 20:37:05 -06:00
Mykola Grymalyuk
c9a14e242d misc.py: Disable T1 patches temporarily 2023-08-01 13:24:41 -06:00
Mykola Grymalyuk
69f4bbc7a6 Build: Add handling for ARM64 Python 2023-08-01 13:24:02 -06:00
Mykola Grymalyuk
5ecd453c75 storage.py: Streamline S1X/S3X logic 2023-08-01 12:29:57 -06:00
Mykola Grymalyuk
d7eebbe171 Swap injection order 2023-07-31 19:49:03 -06:00
Mykola Grymalyuk
1038be303b build: Add basic T1 patches
Restore basic communication from stripped KernelRelayHost logic
2023-07-31 18:31:30 -06:00
Mykola Grymalyuk
d12b39bd98 Update BlueToolFixup to rolling 2023-07-29 18:06:53 -06:00
Jazzzny
d6161481ef Add returns to comply with comment 2023-07-28 21:26:28 -04:00
Jazzzny
2455cb1233 Update imports 2023-07-28 21:23:20 -04:00
Jazzzny
d2312e3cce Add workaround for unmount 2023-07-28 21:18:12 -04:00
Jazzzny
3ff6f68236 Update 2023-07-28 21:14:25 -04:00
Jazzzny
8b0625eb41 change wording 2023-07-28 20:58:35 -04:00
Jazzzny
97a86fcd92 Add developer patcher 2023-07-28 20:52:18 -04:00
Mykola Grymalyuk
9631cc48bd Sync binaries 2023-07-27 15:29:08 -06:00
Mykola Grymalyuk
84a3341788 Merge branch 'main' into sonoma-development 2023-07-26 13:54:41 -06:00
Mykola Grymalyuk
d547ecdcf0 Increment build 2023-07-26 13:53:50 -06:00
Mykola Grymalyuk
e0fd78c7af sys_patch_detect.py: Adjust OS check from mainline merge 2023-07-26 13:53:21 -06:00
Mykola Grymalyuk
87f412b469 Merge branch 'main' into sonoma-development 2023-07-26 10:58:30 -06:00
Mykola Grymalyuk
6003d6c457 Merge branch 'main' into sonoma-development 2023-07-24 12:19:56 -06:00
Mykola Grymalyuk
20d04d307d sys_patch: Add CoreImage patch for 3802
Resolves Preview and QuickLook support on Sonoma
2023-07-24 08:53:01 -06:00
Mykola Grymalyuk
24a1e35f54 sys_patch.py: Increase AMFI check for WiFi patches in Sonoma 2023-07-24 08:22:54 -06:00
Mykola Grymalyuk
ef4983d907 sys_patch_detect.py: Fix any() invocation 2023-07-23 20:37:29 -06:00
Mykola Grymalyuk
423bf8f20c sys_patch_detect.py: Fix KDKless logic for Sonoma 2023-07-23 15:29:36 -06:00
Mykola Grymalyuk
55e6aeaf0a Add macOS Sonoma public preview 2023-07-23 12:57:35 -06:00
Mykola Grymalyuk
509137f519 sys_patch_detect.py: Adjust FaceTime patch naming 2023-07-23 11:06:51 -06:00
Mykola Grymalyuk
169ea95dc4 defaults.py: Adjust logic for modern wifi 2023-07-23 11:05:04 -06:00
Mykola Grymalyuk
e21efa975c sys_patch: Clean up patch set logic 2023-07-22 12:40:38 -06:00
Mykola Grymalyuk
b9bd01750c sys_patch_dict.py: Fix pathing 2023-07-17 18:34:19 -06:00
Mykola Grymalyuk
7691184ca2 sys_patch: Add PCIe Webcam support 2023-07-17 18:05:33 -06:00
Dhinak G
2bba8f474a device_probe.py: Add multiple class code support 2023-07-17 18:53:03 -04:00
Dhinak G
a5bb29142f device_probe.py: Add in Apple's NVMe class code (part 3) 2023-07-17 18:23:44 -04:00
Dhinak G
74857b1d16 device_probe.py: Fix NVMe handling (part 2) 2023-07-17 17:51:02 -04:00
Mykola Grymalyuk
c19cbd9f41 device_probe.py: Match NVMe off class code 2023-07-17 15:32:39 -06:00
TechEnthusiasm
b6630b685a Another reword 2023-07-17 19:29:26 +01:00
Mykola Grymalyuk
b01adb9c10 Merge branch 'sonoma-development' of https://github.com/dortania/OpenCore-Legacy-Patcher into sonoma-development 2023-07-17 12:26:05 -06:00
Mykola Grymalyuk
44c2f9cbd4 Resolve CI validation errors 2023-07-17 12:25:36 -06:00
Mykola Grymalyuk
e0d16b2d28 Merge branch 'main' into sonoma-development 2023-07-17 12:10:44 -06:00
TechEnthusiasm
4f9ce33912 Reword slightly 2023-07-17 19:07:01 +01:00
Mykola Grymalyuk
9b3bf07494 wireless.py: Ensure IO80211 patches apply on BCM94331/3224 chipsets 2023-07-17 11:10:51 -06:00
Mykola Grymalyuk
4982edef33 Sync PatcherSupportPkg 2023-07-17 09:30:42 -06:00
Mykola Grymalyuk
549bf1686b sys_patch: Implement backend for 3802 support 2023-07-16 22:44:58 -06:00
Mykola Grymalyuk
f3c3c83140 Merge branch 'main' into sonoma-development 2023-07-16 21:43:06 -06:00
Mykola Grymalyuk
e3fa2e857f misc.py: Ensure spoofed models with SBM get access to VMM 2023-07-16 13:26:04 -06:00
Mykola Grymalyuk
f973817819 device_probe.py: Expand NVMe detection to 0x106b Device IDs 2023-06-22 20:02:45 -06:00
Mykola Grymalyuk
c3e0765aae build: Restore S1X/S3X Drive Support for 14.0 Beta 2
Applicable for MacBook8,1-10,1, MacBookPro13,1/14,1:
- APPLE SSD AP0128H, AP0256H, etc
- APPLE SSD AP0128J, AP0256J, etc
2023-06-22 19:25:52 -06:00
Mykola Grymalyuk
3a50a602e0 Sync resources 2023-06-18 14:04:14 -06:00
Mykola Grymalyuk
8487eab010 Merge branch 'main' into sonoma-development 2023-06-18 14:02:24 -06:00
Mykola Grymalyuk
8ac64ff9c0 Sync binaries 2023-06-13 09:06:59 -06:00
Mykola Grymalyuk
e754a7d06f sys_patch_start.py: Remove unused import 2023-06-13 08:38:27 -06:00
Mykola Grymalyuk
b3f6607768 Strip Content Cache references
Setting no longer required with new RestrictEvents setup
2023-06-13 08:38:00 -06:00
Mykola Grymalyuk
b92daff30e GUI: Adjust default selection to latest non-Beta 2023-06-11 12:55:59 -06:00
Mykola Grymalyuk
abdac48f83 payloads: Add Sonoma icons to boot picker 2023-06-11 09:43:08 -06:00
Mykola Grymalyuk
c9fae32eb6 Sync sys_patch 2023-06-10 19:15:45 -06:00
Mykola Grymalyuk
a762d7efe8 sys_patch: Sync dev tools 2023-06-10 10:23:14 -06:00
Mykola Grymalyuk
c044e8acc9 Sync RestrictEvents
Reference: e5c52564f5
2023-06-10 09:59:26 -06:00
Mykola Grymalyuk
f2cc423c31 reroute_payloads.py: Adjust message 2023-06-10 09:59:02 -06:00
Mykola Grymalyuk
218507b8a7 build: Test RE kern.hv_vmm_present routing 2023-06-09 23:00:31 -06:00
Mykola Grymalyuk
e29895830c sys_patch_detect.py: Drop root KC check 2023-06-09 16:45:31 -06:00
Mykola Grymalyuk
e5a260b74b sys_patch: Disable QC for testing 2023-06-08 18:31:14 -06:00
Mykola Grymalyuk
5e45ea92bc Sync dev disk image 2023-06-08 15:52:23 -06:00
Mykola Grymalyuk
6020eae937 Add patching utility for internal developers 2023-06-08 15:44:41 -06:00
Mykola Grymalyuk
0dbffc5a3e Merge branch 'main' into sonoma-development 2023-06-08 10:48:47 -06:00
Mykola Grymalyuk
233ded0924 Merge branch 'main' into sonoma-development 2023-06-08 10:19:03 -06:00
Mykola Grymalyuk
985e053e90 sys_patch: Avoid listing Modern Wifi patch
Binaries are currently not public, however patcher may confuse some users that it added support
2023-06-08 09:27:14 -06:00
Mykola Grymalyuk
9a483181a1 sys_patch_generate.py: Add support reference for 31001 2023-06-07 12:12:22 -06:00
Mykola Grymalyuk
d762b37851 sys_patch_dict.py: Add extra comment 2023-06-06 14:44:01 -06:00
Mykola Grymalyuk
e531d30c3c sys_patch_dict.py: Add legacy wifi patch comment 2023-06-06 14:24:55 -06:00
Mykola Grymalyuk
ca8e1a7bf0 sys_patch.py: Add reference patch set for Broadcom 2023-06-06 13:03:28 -06:00
Mykola Grymalyuk
31a29e0b3e config: Limit NVMeFix to Ventura 2023-06-06 10:13:52 -06:00
Mykola Grymalyuk
1126a49dc5 Merge branch 'main' into sonoma-development 2023-06-06 09:11:18 -06:00
Mykola Grymalyuk
0fce7adad1 payloads: sync AGPM njector with new units 2023-06-06 08:10:57 -06:00
Mykola Grymalyuk
8976496e52 Add dropped models 2023-06-06 08:01:03 -06:00
Mykola Grymalyuk
077b9f67b2 sys_patch: Add reference notes for 31001 2023-06-06 07:48:33 -06:00
Mykola Grymalyuk
8f8778f0f6 build.py: Set beta flag for development 2023-06-05 19:37:11 -06:00
Mykola Grymalyuk
adcceb0c10 firmware.py: Fix MacPro6,1 boot support in Sonoma 2023-06-05 19:36:32 -06:00
418 changed files with 29481 additions and 36578 deletions

View File

@@ -2,6 +2,8 @@ name: CI - Build wxPython
on:
push:
paths-ignore:
- 'docs/**'
workflow_dispatch:
release:
types: [published]
@@ -13,57 +15,110 @@ jobs:
if: github.repository_owner == 'dortania'
env:
# GitHub Information
branch: ${{ github.ref }}
commiturl: ${{ github.event.head_commit.url }}${{ github.event.release.html_url }}
commitdate: ${{ github.event.head_commit.timestamp }}${{ github.event.release.published_at }}
MAC_CODESIGN_IDENTITY: ${{ secrets.MAC_CODESIGN_IDENTITY }}
MAC_CODESIGN_CERT: ${{ secrets.MAC_CODESIGN_CERT }}
MAC_NOTARIZATION_USERNAME: ${{ secrets.MAC_NOTARIZATION_USERNAME }}
MAC_NOTARIZATION_PASSWORD: ${{ secrets.MAC_NOTARIZATION_PASSWORD }}
MAC_NOTARIZATION_TEAM_ID: ${{ secrets.MAC_NOTARIZATION_TEAM_ID }}
# Analytics
ANALYTICS_KEY: ${{ secrets.ANALYTICS_KEY }}
ANALYTICS_SITE: ${{ secrets.ANALYTICS_SITE }}
# App Signing
ORG_MAC_DEVELOPER_ID_APPLICATION_IDENTITY: ${{ secrets.ORG_MAC_DEVELOPER_ID_APPLICATION_IDENTITY }}
# PKG Signing
ORG_MAC_DEVELOPER_ID_INSTALLER_IDENTITY: ${{ secrets.ORG_MAC_DEVELOPER_ID_INSTALLER_IDENTITY }}
# Notarization
ORG_MAC_NOTARIZATION_TEAM_ID: ${{ secrets.ORG_MAC_NOTARIZATION_TEAM_ID }}
ORG_MAC_NOTARIZATION_APPLE_ID: ${{ secrets.ORG_MAC_NOTARIZATION_APPLE_ID }}
ORG_MAC_NOTARIZATION_PASSWORD: ${{ secrets.ORG_MAC_NOTARIZATION_PASSWORD }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Build Binary
run: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3 Build-Binary.command --reset_binaries --branch "${{ env.branch }}" --commit "${{ env.commiturl }}" --commit_date "${{ env.commitdate }}" --key "${{ env.ANALYTICS_KEY }}" --site "${{ env.ANALYTICS_SITE }}"
# - name: Import Certificate
# if: (!security find-certificate -c "${{ env.MAC_CODESIGN_IDENTITY }}")
# uses: apple-actions/import-codesign-certs@v2
# - name: Import Application Signing Certificate
# uses: dhinakg/import-codesign-certs@master
# with:
# p12-file-base64: ${{ secrets.MAC_CODESIGN_CERT }}
# p12-password: ${{ secrets.MAC_NOTARIZATION_PASSWORD }}
# p12-file-base64: ${{ secrets.ORG_MAC_DEVELOPER_ID_APPLICATION_CERT_P12_BASE64 }}
# p12-password: ${{ secrets.ORG_MAC_DEVELOPER_ID_APPLICATION_CERT_P12_PASSWORD }}
- name: Codesign Binary
run: 'codesign -s "${{ env.MAC_CODESIGN_IDENTITY }}" -v --force --deep --timestamp --entitlements ./payloads/entitlements.plist -o runtime "dist/OpenCore-Patcher.app"'
# - name: Import Installer Signing Certificate
# uses: dhinakg/import-codesign-certs@master
# with:
# p12-file-base64: ${{ secrets.ORG_MAC_DEVELOPER_ID_INSTALLER_CERT_P12_BASE64 }}
# p12-password: ${{ secrets.ORG_MAC_DEVELOPER_ID_INSTALLER_CERT_P12_PASSWORD }}
- name: Package Binary
run: cd dist; ditto -c -k --sequesterRsrc --keepParent OpenCore-Patcher.app ../OpenCore-Patcher-wxPython.app.zip
# - name: Install Dependencies
# run: /Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip install -r requirements.txt
- name: Notarize Binary
run: xcrun notarytool submit OpenCore-Patcher-wxPython.app.zip --apple-id "${{ env.MAC_NOTARIZATION_USERNAME }}" --password "${{ env.MAC_NOTARIZATION_PASSWORD }}" --team-id "${{ env.MAC_NOTARIZATION_TEAM_ID }}"
# - name: Force Universal2 charset for Python
# run: |
# /Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip uninstall -y charset_normalizer
# /Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip download --platform macosx_10_9_universal2 --only-binary=:all: charset-normalizer
# /Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip install charset_normalizer-*-macosx_10_9_universal2.whl
- name: Generate support package
run: packagesbuild ./payloads/InstallPackage/AutoPkg-Assets-Setup.pkgproj
- name: Prepare Assets (--prepare-assets)
run: >
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Project.command
--run-as-individual-steps --reset-dmg-cache
--prepare-assets
- name: Prepare Application (--prepare-application)
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 }}"
--git-branch "${{ env.branch }}" --git-commit-url "${{ env.commiturl }}" --git-commit-date "${{ env.commitdate }}"
--analytics-key "${{ env.ANALYTICS_KEY }}" --analytics-endpoint "${{ env.ANALYTICS_SITE }}"
--reset-pyinstaller-cache
--run-as-individual-steps
--prepare-application
- name: Prepare Package (--prepare-package)
run: >
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Project.command
--installer-signing-identity "${{ env.ORG_MAC_DEVELOPER_ID_INSTALLER_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-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: mv ./OpenCore-Patcher-wxPython.app.zip ./OpenCore-Patcher-GUI.app.zip
run: /bin/mv ./dist/OpenCore-Patcher.app.zip ./OpenCore-Patcher-GUI.app.zip
- name: Upload App to Artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: OpenCore-Patcher.app (GUI)
path: OpenCore-Patcher-GUI.app.zip
- name: Upload Package to Artifacts
uses: actions/upload-artifact@v3
- name: Upload AutoPkg Package to Artifacts
uses: actions/upload-artifact@v4
with:
name: AutoPkg-Assets.pkg
path: ./dist/AutoPkg-Assets.pkg
- name: Upload Installation Package to Artifacts
uses: actions/upload-artifact@v4
with:
name: OpenCore-Patcher.pkg
path: ./dist/OpenCore-Patcher.pkg
- name: Upload Uninstaller Package to Artifacts
uses: actions/upload-artifact@v4
with:
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
@@ -73,11 +128,29 @@ jobs:
tag: ${{ github.ref }}
file_glob: true
- name: Upload Package to Release
- name: Upload AutoPkg Package to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./dist/AutoPkg-Assets.pkg
tag: ${{ github.ref }}
file_glob: true
- name: Upload Installation Package to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./dist/OpenCore-Patcher.pkg
tag: ${{ github.ref }}
file_glob: true
- name: Upload Uninstaller Package to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./dist/OpenCore-Patcher-Uninstaller.pkg
tag: ${{ github.ref }}
file_glob: true

View File

@@ -1,36 +1,52 @@
name: CI - Build Site
on:
push:
branches-ignore:
- gh-pages
workflow_dispatch:
pull_request:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
name: Build Site and Deploy
runs-on: ubuntu-latest
if: github.repository_owner == 'dortania'
steps:
- uses: actions/setup-node@v3
- name: Checkout
uses: actions/checkout@v4
with:
node-version: '12'
- name: Checkout Repository
uses: actions/checkout@v3
submodules: "recursive"
- name: Setup Node
uses: actions/setup-node@v4
with:
fetch-depth: '0'
persist-credentials: false
submodules: 'recursive'
- name: Install
run: npm install
working-directory: 'docs'
node-version: "22"
cache: "yarn"
cache-dependency-path: ./docs/yarn.lock
- name: Install Dependencies
run: yarn install --frozen-lockfile
working-directory: docs
- name: Build
run: npm run build
working-directory: 'docs'
- name: Deploy
uses: JamesIves/github-pages-deploy-action@3.7.1
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main'}}
run: yarn run build
working-directory: docs
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
BRANCH: gh-pages
FOLDER: docs/.vuepress/dist/
CLEAN: true
path: docs/.vuepress/dist/
deploy:
if: ${{ github.repository_owner == 'dortania' && github.event_name == 'push' && github.ref == 'refs/heads/main' }}
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

View File

@@ -2,6 +2,8 @@ name: CI - Validation (External)
on:
push:
paths-ignore:
- 'docs/**'
workflow_dispatch:
release:
types: [published]
@@ -12,7 +14,7 @@ jobs:
runs-on: macos-latest
if: github.repository_owner != 'dortania'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v2
with:

View File

@@ -2,6 +2,8 @@ name: CI - Validation
on:
push:
paths-ignore:
- 'docs/**'
workflow_dispatch:
release:
types: [published]
@@ -12,6 +14,6 @@ jobs:
runs-on: x86_64_monterey
if: github.repository_owner == 'dortania'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Validate
run: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3 OpenCore-Patcher-GUI.command --validate
run: /Library/Frameworks/Python.framework/Versions/3.11/bin/python3 OpenCore-Patcher-GUI.command --validate

2
.gitignore vendored
View File

@@ -17,7 +17,6 @@ __pycache__/
*$py.class
/docs/.vuepress/dist
/docs/.vuepress/.config.js.swp
/docs/yarn.lock
/docs/yarn-error.log
/docs/node_modules/
/payloads/List.txt
@@ -39,3 +38,4 @@ __pycache__/
/payloads/update.sh
/payloads/OpenCore-Patcher.app
/.x86_64_venv
*afdesign~lock~

View File

@@ -1,440 +0,0 @@
#!/usr/bin/env python3
# Generate stand alone application for OpenCore-Patcher
# Copyright (C) 2022-2023 - Mykola Grymalyuk
from pathlib import Path
import time
import argparse
import os
import subprocess
import plistlib
import time
import sys
from resources import constants
class CreateBinary:
"""
Library for creating OpenCore-Patcher application
This script's main purpose is to handle the following:
- Download external dependencies (ex. PatcherSupportPkg)
- Convert payloads directory into DMG
- Build Binary via Pyinstaller
- Patch 'LC_VERSION_MIN_MACOSX' to OS X 10.10
- Add commit data to Info.plist
"""
def __init__(self):
start = time.time()
print("Starting build script")
self.args = self._parse_arguments()
self._set_cwd()
self._preflight_processes()
self._build_binary()
self._postflight_processes()
print(f"Build script completed in {str(round(time.time() - start, 2))} seconds")
def _set_cwd(self):
"""
Initialize current working directory to parent of this script
"""
os.chdir(Path(__file__).resolve().parent)
print(f"Current Working Directory:\n- {os.getcwd()}")
def _parse_arguments(self):
"""
Parse arguments passed to script
"""
parser = argparse.ArgumentParser(description='Builds OpenCore-Patcher binary')
parser.add_argument('--branch', type=str, help='Git branch name')
parser.add_argument('--commit', type=str, help='Git commit URL')
parser.add_argument('--commit_date', type=str, help='Git commit date')
parser.add_argument('--reset_binaries', action='store_true', help='Force redownload and imaging of payloads')
parser.add_argument('--key', type=str, help='Developer key for signing')
parser.add_argument('--site', type=str, help='Path to server')
args = parser.parse_args()
return args
def _setup_pathing(self):
"""
Initialize pathing for pyinstaller
"""
python_path = sys.executable
python_binary = python_path.split("/")[-1]
python_bin_dir = python_path.strip(python_binary)
# macOS (using Python installed by homebrew (e.g. brew))
if f"/usr/local/opt/python@3." in sys.executable:
print(f"\t* NOTE: home(brew) python3 detected; using (sys.exec_prefix, python_path) ==> {sys.exec_prefix, python_path}")
# - under brew, pip3 will install pyinstaller at:
# /usr/local/lib/python3.9/site-packages/pyinstaller
# and /usr/local/bin/pyinstaller stub to load and run.
pyinstaller_path = f"/usr/local/bin/pyinstaller"
else:
pyinstaller_path = f"{python_bin_dir}pyinstaller"
if not Path(pyinstaller_path).exists():
print(f"- pyinstaller not found:\n\t{pyinstaller_path}")
raise Exception("pyinstaller not found")
self.pyinstaller_path = pyinstaller_path
def _preflight_processes(self):
"""
Start preflight processes
"""
print("Starting preflight processes")
self._setup_pathing()
self._delete_extra_binaries()
self._download_resources()
self._generate_payloads_dmg()
def _postflight_processes(self):
"""
Start postflight processes
"""
print("Starting postflight processes")
self._patch_load_command()
self._add_commit_data()
self._post_flight_cleanup()
self._mini_validate()
def _build_binary(self):
"""
Build binary via pyinstaller
"""
if Path(f"./dist/OpenCore-Patcher.app").exists():
print("Found OpenCore-Patcher.app, removing...")
rm_output = subprocess.run(
["rm", "-rf", "./dist/OpenCore-Patcher.app"],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
if rm_output.returncode != 0:
print("Remove failed")
print(rm_output.stderr.decode('utf-8'))
raise Exception("Remove failed")
self._embed_key()
print("Building GUI binary...")
build_args = [self.pyinstaller_path, "./OpenCore-Patcher-GUI.spec", "--noconfirm"]
build_result = subprocess.run(build_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
self._strip_key()
if build_result.returncode != 0:
print("Build failed")
print(build_result.stderr.decode('utf-8'))
raise Exception("Build failed")
# Next embed support icns into ./Resources
print("Embedding icns...")
for file in Path("payloads/Icon/AppIcons").glob("*.icns"):
subprocess.run(
["cp", str(file), "./dist/OpenCore-Patcher.app/Contents/Resources/"],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
def _embed_key(self):
"""
Embed developer key into binary
"""
if not self.args.key:
print("No developer key provided, skipping...")
return
if not self.args.site:
print("No site provided, skipping...")
return
print("Embedding developer key...")
if not Path("./resources/analytics_handler.py").exists():
print("analytics_handler.py not found")
return
lines = []
with open("./resources/analytics_handler.py", "r") as f:
lines = f.readlines()
for i, line in enumerate(lines):
if line.startswith("SITE_KEY: str = "):
lines[i] = f"SITE_KEY: str = \"{self.args.key}\"\n"
elif line.startswith("ANALYTICS_SERVER: str = "):
lines[i] = f"ANALYTICS_SERVER: str = \"{self.args.site}\"\n"
with open("./resources/analytics_handler.py", "w") as f:
f.writelines(lines)
def _strip_key(self):
"""
Strip developer key from binary
"""
if not self.args.key:
print("No developer key provided, skipping...")
return
if not self.args.site:
print("No site provided, skipping...")
return
print("Stripping developer key...")
if not Path("./resources/analytics_handler.py").exists():
print("analytics_handler.py not found")
return
lines = []
with open("./resources/analytics_handler.py", "r") as f:
lines = f.readlines()
for i, line in enumerate(lines):
if line.startswith("SITE_KEY: str = "):
lines[i] = f"SITE_KEY: str = \"\"\n"
elif line.startswith("ANALYTICS_SERVER: str = "):
lines[i] = f"ANALYTICS_SERVER: str = \"\"\n"
with open("./resources/analytics_handler.py", "w") as f:
f.writelines(lines)
def _delete_extra_binaries(self):
"""
Delete extra binaries from payloads directory
"""
whitelist_folders = [
"ACPI",
"Config",
"Drivers",
"Icon",
"InstallPackage",
"Kexts",
"OpenCore",
"Tools",
]
whitelist_files = [
"com.dortania.opencore-legacy-patcher.auto-patch.plist",
"com.dortania.opencore-legacy-patcher.rsr-monitor.plist",
"entitlements.plist",
"launcher.sh",
"OC-Patcher-TUI.icns",
"OC-Patcher.icns",
]
print("Deleting extra binaries...")
for file in Path("payloads").glob(pattern="*"):
if file.is_dir():
if file.name in whitelist_folders:
continue
print(f"- Deleting {file.name}")
subprocess.run(["rm", "-rf", file])
else:
if file.name in whitelist_files:
continue
print(f"- Deleting {file.name}")
subprocess.run(["rm", "-f", file])
def _download_resources(self):
"""
Download required dependencies
"""
patcher_support_pkg_version = constants.Constants().patcher_support_pkg_version
required_resources = [
"Universal-Binaries.dmg"
]
print("Downloading required resources...")
for resource in required_resources:
if Path(f"./{resource}").exists():
if self.args.reset_binaries:
print(f" - Removing old {resource}")
# Just to be safe
assert resource, "Resource cannot be empty"
assert resource not in ("/", "."), "Resource cannot be root"
rm_output = subprocess.run(
["rm", "-rf", f"./{resource}"],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
if rm_output.returncode != 0:
print("Remove failed")
print(rm_output.stderr.decode('utf-8'))
raise Exception("Remove failed")
else:
print(f"- {resource} already exists, skipping download")
continue
print(f"- Downloading {resource}...")
download_result = subprocess.run(
[
"curl", "-LO",
f"https://github.com/dortania/PatcherSupportPkg/releases/download/{patcher_support_pkg_version}/{resource}"
],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
if download_result.returncode != 0:
print("- Download failed")
print(download_result.stderr.decode('utf-8'))
raise Exception("Download failed")
if not Path(f"./{resource}").exists():
print(f"- {resource} not found")
raise Exception(f"{resource} not found")
def _generate_payloads_dmg(self):
"""
Generate disk image containing all payloads
Disk image will be password protected due to issues with
Apple's notarization system and inclusion of kernel extensions
"""
if Path("./payloads.dmg").exists():
if not self.args.reset_binaries:
print("- payloads.dmg already exists, skipping creation")
return
print("- Removing old payloads.dmg")
rm_output = subprocess.run(
["rm", "-rf", "./payloads.dmg"],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
if rm_output.returncode != 0:
print("Remove failed")
print(rm_output.stderr.decode('utf-8'))
raise Exception("Remove failed")
print("- Generating DMG...")
dmg_output = subprocess.run([
'hdiutil', 'create', './payloads.dmg',
'-megabytes', '32000', # Overlays can only be as large as the disk image allows
'-format', 'UDZO', '-ov',
'-volname', 'OpenCore Patcher Resources (Base)',
'-fs', 'HFS+',
'-srcfolder', './payloads',
'-passphrase', 'password', '-encryption'
], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if dmg_output.returncode != 0:
print("- DMG generation failed")
print(dmg_output.stderr.decode('utf-8'))
raise Exception("DMG generation failed")
print("- DMG generation complete")
def _add_commit_data(self):
"""
Add commit data to Info.plist
"""
if not self.args.branch and not self.args.commit and not self.args.commit_date:
print("- No commit data provided, adding source info")
branch = "Built from source"
commit_url = ""
commit_date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
else:
branch = self.args.branch
commit_url = self.args.commit
commit_date = self.args.commit_date
print("- Adding commit data to Info.plist")
plist_path = Path("./dist/OpenCore-Patcher.app/Contents/Info.plist")
plist = plistlib.load(Path(plist_path).open("rb"))
plist["Github"] = {
"Branch": branch,
"Commit URL": commit_url,
"Commit Date": commit_date,
}
plistlib.dump(plist, Path(plist_path).open("wb"), sort_keys=True)
def _patch_load_command(self):
"""
Patch LC_VERSION_MIN_MACOSX in Load Command to report 10.10
By default Pyinstaller will create binaries supporting 10.13+
However this limitation is entirely arbitrary for our libraries
and instead we're able to support 10.10 without issues.
To verify set version:
otool -l ./dist/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.13
sdk 10.9
"""
print("- Patching LC_VERSION_MIN_MACOSX")
path = './dist/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher'
find = b'\x00\x0D\x0A\x00' # 10.13 (0xA0D)
replace = b'\x00\x0A\x0A\x00' # 10.10 (0xA0A)
with open(path, 'rb') as f:
data = f.read()
data = data.replace(find, replace, 1)
with open(path, 'wb') as f:
f.write(data)
def _post_flight_cleanup(self):
"""
Post flight cleanup
"""
path = "./dist/OpenCore-Patcher"
print(f"- Removing {path}")
rm_output = subprocess.run(
["rm", "-rf", path],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
if rm_output.returncode != 0:
print(f"- Remove failed: {path}")
print(rm_output.stderr.decode('utf-8'))
raise Exception(f"Remove failed: {path}")
def _mini_validate(self):
"""
Validate generated binary
"""
print("- Validating binary")
validate_output = subprocess.run(
["./dist/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher", "--build", "--model", "MacPro3,1"],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
if validate_output.returncode != 0:
print("- Validation failed")
print(validate_output.stderr.decode('utf-8'))
raise Exception("Validation failed")
if __name__ == "__main__":
CreateBinary()

168
Build-Project.command Executable file
View File

@@ -0,0 +1,168 @@
#!/usr/bin/env python3
"""
Build-Project.command: Generate OpenCore-Patcher.app and OpenCore-Patcher.pkg
"""
import os
import sys
import time
import argparse
import plistlib
from pathlib import Path
from ci_tooling.build_modules import (
application,
disk_images,
package,
sign_notarize,
shim
)
from opencore_legacy_patcher import constants
def main() -> None:
"""
Parse Command Line Arguments
"""
parser = argparse.ArgumentParser(description="Build OpenCore Legacy Patcher Suite", add_help=False)
# Signing Parameters
parser.add_argument("--application-signing-identity", type=str, help="Application Signing Identity")
parser.add_argument("--installer-signing-identity", type=str, help="Installer Signing Identity")
# Notarization Parameters
parser.add_argument("--notarization-apple-id", type=str, help="Notarization Apple ID", default=None)
parser.add_argument("--notarization-password", type=str, help="Notarization Password", default=None)
parser.add_argument("--notarization-team-id", type=str, help="Notarization Team ID", default=None)
# GitHub Actions CI/CD Parameters
parser.add_argument("--git-branch", type=str, help="Git Branch", default=None)
parser.add_argument("--git-commit-url", type=str, help="Git Commit URL", default=None)
parser.add_argument("--git-commit-date", type=str, help="Git Commit Date", default=None)
# Local Build Parameters
parser.add_argument("--reset-dmg-cache", action="store_true", help="Redownload PatcherSupportPkg.dmg and regenerate payloads.dmg", default=False)
parser.add_argument("--reset-pyinstaller-cache", action="store_true", help="Clean PyInstaller Cache", default=False)
# CI/CD Parameters for individual steps
# If not specified, will run all steps
parser.add_argument("--run-as-individual-steps", action="store_true", help="CI: Run as individual steps", default=False)
parser.add_argument("--prepare-application", action="store_true", help="CI: Prepare Application", default=False)
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)
# Help
parser.add_argument("--help", action="store_true", help="Show this help message and exit", default=False)
# Parse Arguments
args = parser.parse_args()
if args.help:
parser.print_help()
print("\n\nIf running outside of CI/CD, simply run the following command:")
print("$ python3 Build-Project.command")
sys.exit(0)
# Set 'Current Working Directory' to script directory
os.chdir(Path(__file__).resolve().parent)
if (args.run_as_individual_steps is False) or (args.run_as_individual_steps and args.prepare_assets):
# Prepare workspace
disk_images.GenerateDiskImages(args.reset_dmg_cache).generate()
if (args.run_as_individual_steps is False) or (args.run_as_individual_steps and args.prepare_application):
# Prepare Privileged Helper Tool
sign_notarize.SignAndNotarize(
path=Path("./ci_tooling/privileged_helper_tool/com.dortania.opencore-legacy-patcher.privileged-helper"),
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,
).sign_and_notarize()
# Build OpenCore-Patcher.app
application.GenerateApplication(
reset_pyinstaller_cache=args.reset_pyinstaller_cache,
git_branch=args.git_branch,
git_commit_url=args.git_commit_url,
git_commit_date=args.git_commit_date,
analytics_key=args.analytics_key,
analytics_endpoint=args.analytics_endpoint,
).generate()
# Sign OpenCore-Patcher.app
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 (args.run_as_individual_steps is False) or (args.run_as_individual_steps and args.prepare_package):
# Build OpenCore-Patcher.pkg and OpenCore-Patcher-Uninstaller.pkg
package.GeneratePackage().generate()
# Sign OpenCore-Patcher.pkg
sign_notarize.SignAndNotarize(
path=Path("dist/OpenCore-Patcher.pkg"),
signing_identity=args.installer_signing_identity,
notarization_apple_id=args.notarization_apple_id,
notarization_password=args.notarization_password,
notarization_team_id=args.notarization_team_id,
).sign_and_notarize()
# Sign OpenCore-Patcher-Uninstaller.pkg
sign_notarize.SignAndNotarize(
path=Path("dist/OpenCore-Patcher-Uninstaller.pkg"),
signing_identity=args.installer_signing_identity,
notarization_apple_id=args.notarization_apple_id,
notarization_password=args.notarization_password,
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()
main()
print(f"Build script completed in {str(round(time.time() - _start, 2))} seconds")

View File

@@ -1,5 +1,326 @@
# OpenCore Legacy Patcher changelog
## 2.1.1
- Resolve boolean GUI settings saving incorrectly as Python's None type
## 2.1.0
- Disable FeatureUnlock by default
- Intended to maintain long term stability
- If features unlocked by FeatureUnlock desired, can be enabled in settings
- Disable mediaanalysisd on Metal 3802-based GPUs
- Intended to maintain long term stability
- If Live Text support desired, can be enabled in settings
- Support for retaining GUI settings when building on-model
- When switching to a different model, model-specific GUI settings will be reset
- Note resetting saved settings not implemented yet
- Delete `/Users/Shared/.com.dortania.opencore-legacy-patcher.plist` and restart app to reset settings
- Resolve macOS 15.1 (24B2083) Apple Silicon installer appearing as download option
- Resolve WhatsApp crashing on 15.1
- Increment binaries:
- PatcherSupportPkg 1.8.4 - release
## 2.0.2
- Fix Nvidia Kepler patches not installing on Monterey
- Fix `iMac7,1` and `iMac8,1` failing to apply root patches on macOS Sequoia
- Avoid downgrading AppleGVA stack on AMD GCN and newer GPUs
- Resolves VTDecoderXPC crashes
- Thanks @ausdauersportler for the catch!
- Resolve glitched widgets on 3802-based GPUs running macOS Sequoia 15.1
- Resolve CoreImage crashes on 3802-based GPUs running macOS Sequoia
- Resolve missing screen capture crop borders on non-Metal GPUs running macOS Sequoia
- Resolve TeraScale 2 HDCP kernel panic
- Resolve specific Wallpaper locking up on non-Metal GPUs running macOS Sequoia
- Removes unsupported Metal-based wallpaper (Macintosh Wallpaper)
- Resolve firmware upload incompatibilities on pre-2012 Macs with 2012+ Airport cards
- Thanks @ausdauersportler for the catch!
- Resolve `diskutil` failing to be located in the installer creation process
- Thanks @niklasravnsborg for the report!
- Increment binaries:
- PatcherSupportPkg 1.8.3 - release
## 2.0.1
- Fix MacBookPro13,3 listing 'Available patches' after having installed all applicable patches
- Fix Nvidia Tesla and Kepler patches not installing on Monterey (and older if applicable)
- Fix Nvidia Web Drivers incorrectly listing 'OpenGL', 'compat' and 'nvda_drv(_vrl)' missing
## 2.0.0
- Set `AssociatedBundleIdentifiers` property in launch services as an array
- Move to auto-generated pre/postinstall scripts for PKGs
- Streamlines PKG creation process, ensuring Install and AutoPKG scripts are always in sync
- Add support for `gktool` in PKG postinstall scripts
- Removes Gatekeeper "verifying" prompt on first launch after PKG installation
- Note `gktool` is only available on macOS Sonoma and newer
- Resolve unpatching crash edge case when host doesn't require patches.
- Implement new Software Update Catalog Parser for macOS Installers
- Implement new Copy on Write detection mechanism for all file copying operations
- Implemented using `getattrlist` and `VOL_CAP_INT_CLONE` flag
- Helps improve performance on APFS volumes
- Increase model range for S1X/S3X patching to include Haswell Macs and `MacPro6,1`
- Helps avoid an issue where older machines with newer, unsupported SSDs would fail to boot
- Only affects building EFI from another machine
- Resolve AMD Navi MXM GPU detection for modded iMac9,x-12,x
- Thanks @Ausdauersportler for the patch!
- Implement early macOS Sequoia support:
- Supporting Macs with Metal and non-Metal-based graphics:
- MacBook5,x - 10,1
- MacBookAir2,x - 7,x
- MacBookPro4,1 - 14,x
- Macmini3,1 - 7,1
- iMac7,1 - 18,x
- MacPro3,1 - 6,1
- MacPro3,1 can only boot with 4 cores max currently
- 8 cores can be re-enabled for older OSes in the GUI:
- Settings -> Build -> MacPro3,1/Xserve2,1 Workaround
- Xserve2,1 - 3,1
- Xserve2,1 can only boot with 4 cores max currently
- 8 cores can be re-enabled for older OSes in the GUI:
- Settings -> Build -> MacPro3,1/Xserve2,1 Workaround
- Excludes the newly dropped MacBookAir8,x series.
- No estimate can be given when support will be added.
- For non-Metal graphics, Photos app will be broken.
- No estimate can be given when support will be added.
- Implement new MetallibSupportPkg system to support macOS Sequoia on Metal 3802-based GPUs.
- See repository for more details: [MetallibSupportPkg](https://github.com/dortania/MetallibSupportPkg).
- Implement new Patchset Detection architecture.
- Implement new kernel cache building architecture.
- Resolve "Label" error in com.dortania.opencore-legacy-patcher.os-caching.plist.
- Add macOS Sequoia icons to boot picker and GUI.
- Resolve Memoji crashes on 3802 GPUs.
- Resolve Photos Memories tab crash on Intel Ivy Bridge/Haswell iGPUs.
- Increment Binaries:
- PatcherSupportPkg 1.8.0 - release
- OpenCorePkg 1.0.1 - release
- Lilu 1.6.8 - release
- WhateverGreen 1.6.7 - release
- RestrictEvents 1.1.4 - release
- FeatureUnlock 1.1.6 - release
- DebugEnhancer 1.0.9 - release
- CPUFriend 1.2.8 - release
- AutoPkgInstaller 1.0.4 - release
- CryptexFixup 1.0.3 - release
## 1.5.0
- Restructure project directories
- Python:
- Move logic into `opencore_legacy_patcher` directory
- Use relative imports for local libraries
- Documentation:
- Move images to `docs/images`
- Payloads:
- Remove redundant/unused files bundled in payloads.dmg
- Resolve unpatching Nvidia Web Drivers failing to clean up `/Library/Extensions`
- Implement preflight code signature checks for macOS installer creation
- Ensures validity of `createinstallmedia` binary before execution
- Modularize AutoPkg's pre/postinstall scripts
- Adjusted to use functions for better readability
- Implements ZSH shebang
- Removes OS logging
- Disable usage of `OpenLegacyBoot.efi`
- Resolves boot issues on certain CSM-based Macs
- Implement new PKG-based installer
- `OpenCore-Patcher.pkg` is now the recommended method for installation
- `OpenCore-Patcher-Uninstaller.pkg` is now available for uninstallation
- Note this only removes the application, not any patches applied
- `OpenCore-Patcher-GUI.app.zip` is deprecated and will be removed in future versions
- Implement new Privileged Helper Tool
- Removes need for password prompts when installing patches, creating installers, etc.
- Installed at `/Library/PrivilegedHelperTools/com.dortania.opencore-legacy-patcher.privileged-helper`
- No launch services required
- For running from source, recompile tool with debug configuration (`make debug`)
- Resolve OpenCore-Patcher.app window not appearing as topmost window on launch
- Reworked CI tooling:
- New build script with reworked parameters: `Build-Project.command`
- Remove reliance on WhiteBox's Packages for AutoPkg creation
- Now implements `pkgbuild` and `productbuild` for package creation through `macOs-Pkg-Builder` Python module
- Implement additional sanity checks before performing root patches
- Checks for mismatched snapshots vs root volume macOS versions
- Increment Binaries:
- OpenCorePkg 1.0.0 - release
## 1.4.3
- Update non-Metal Binaries for macOS Sonoma:
- Resolve TeraScale 2 screen recording kernel panic
- Resolve Dock location after changing screen resolution
- Resolve 14.4 loginwindow crashes
- Patch SkipLogo on Macs that natively support Monterey or newer
- Resolves missing Apple logo on boot screen
- Increment Binaries:
- OpenCorePkg 0.9.9 - release
## 1.4.2
- Resolve Auto-Join support for Modern Wireless on macOS 14.4
- Applicable for BCM94360, 4360, 4350, 4331 and 43224 chipsets
- Resolve WiFi support for Legacy Wireless on macOS 12.7.4 and 13.6.5
- Applicable for BCM94328, BCM94322 and Atheros chipsets
- Resolve USB 1.1 on macOS Ventura regression from OCLP 1.4.0
- Increment Binaries:
- PatcherSupportPkg 1.4.8 - release
## 1.4.1
- Update updater implementation
- Resolve Keyboard/Trackpad support for MacBookAir6,x running macOS 14.4 and newer
- Expands SPI Keyboard and Trackpad patch to include MacBookAir6,x
- Publish Bluetooth NVRAM variables for BCM2046 and BCM2070 chipsets
- Reduces need for NVRAM reset to restore Bluetooth support in newer OSes (Thanks @ausdauersportler)
## 1.4.0
- Refactor subprocess invocations
- Resolve RecoveryOS support (Regression resolved in OpenCorePkg)
- Restore SPI Keyboard and Trackpad support for macOS 14.4 and newer
- Applicable for MacBook8,1, MacBookAir7,x and MacBookPro12,1-14,x
- Restore support for T1 on macOS 14.4 and newer
- Applicable for MacBookPro13,2, MacBookPro13,3, MacBookPro14,2, MacBookPro14,3
- Restore support for legacy Metal GPUs on macOS 14.4 and newer
- Applicable for:
- Intel Ivy Bridge through Skylake
- Nvidia Kepler
- AMD legacy GCN
- Restore support for USB 1.1 on macOS 14.4 and newer
- Applicable for Penryn Macs, Xserve3,1 and MacPro4,1/5,1
- Resolve support for legacy and modern WiFi on macOS 14.4 and newer
- Applicable for all WiFi-equipped Macs
- Note with 14.4: Auto-Join may not work until you forget and rejoin the network
- Increment binaries:
- OpenCorePkg 0.9.7 - release
## 1.3.0
- Resolve mismatched `CFBundleExecutable` and binary name for kexts.
- Resolves ProperTree binary detection (Thanks @CorpNewt).
- Applicable extensions:
- corecrypto_T1.kext
- corecaptureElCap.kext
- IO80211ElCap.kext
- Resolve 3802-GPU support for macOS 14.2 Beta 2 and newer.
- Applicable GPUs:
- Intel Ivy Bridge and Haswell iGPUs
- Nvidia Kepler dGPUs
- Increment Binaries:
- PatcherSupportPkg 1.4.6 - release
## 1.2.1
- Resolve `TeraScale 2 Acceleration` checkbox in Settings not being saved
- Thanks @rtd1250
- Resolve Auto Patcher failing to launch after updating macOS
- Regression from 1.2.0
## 1.2.0
- Resolve application not existing if user dismisses an update instead of installing
- Resolve lldb crashes on extracted binaries
- Remove MH_DYLIB_IN_CACHE flag from binaries extracted with DSCE
- Add support for detecting T1 Security Chips in DFU mode
- Resolve macOS 14.2 coreauthd crashes on T1 Macs
- Resolve missing NFC firmware on T1 Macs
- Update non-Metal Binaries for macOS Sonoma:
- Resolve Photos app crash
- Resolve loginwindow crashes
- Workaround tile window popup freezing apps by disabling the feature
- Workaround monochrome desktop widgets rendering issues by enforcing full color (can be disabled in OCLP settings)
- Add new arguments:
- `--cache_os`: Cache necessary patcher files for OS to be installed (ex. KDKs)
- `--prepare_for_update`: Clean up patcher files for OS to be installed (ex. /Library/Extensions)
- Add new Launch Daemons for handling macOS updates:
- `macos-update.plist`:
- Resolves KDKless Macs failing to boot after updating from 14.0 to 14.x
- Adds support for KDK caching for OS to be installed
- Invoked when update is staged
- `/Library/LaunchDaemons/com.dortania.opencore-legacy-patcher.macos-update.plist`
- `os-caching.plist`
- Resolves unsupported/old KDKs from being used post-update
- Invoked when update is downloading
- `/Library/LaunchDaemons/com.dortania.opencore-legacy-patcher.os-caching.plist`
- Load UI icons from local path
- Resolves macOS downloader crash on slower machines
- Resolve iMac18,2 internal 4K display support
- Remove News Widget removal from Control Centre
- News Widget no longer crashes on 3802-based GPUs
- Resolve i210 NIC support for macOS Sonoma
- Increment Binaries:
- PatcherSupportPkg 1.4.5 - release
- OpenCorePkg 0.9.6 - release
## 1.1.0
- Resolve rendering issues on Intel Broadwell iGPUs
- Update non-Metal Binaries for macOS Sonoma:
- Resolve unresponsive Weather app
- Resolve full screen menubar covering the app toolbar
- Resolve unfocused password windows
- Resolve USB 1.1 kernel panics on macOS 14.1
- Resolve PCIe FaceTime camera support on macOS 14.1
- Resolve T1 Security Chip support on macOS 14
- Applicable for MacBookPro13,2, MacBookPro13,3, MacBookPro14,2, MacBookPro14,3
- Add support for stand alone OpenCore Vaulting without Xcode Command Line Tools (Jazzzny)
- Re-allow NVMeFix for macOS 14
- Remove `-lilubetaall` argument for machines without AppleALC
- Increment Binaries:
- PatcherSupportPkg 1.4.2 - release
- AirportBrcmFixup 2.1.8 - release
- BlueToolFixup 2.6.8 - release
- RestrictEvents 1.1.3 - release
- AMFIPass 1.4.0 - release
## 1.0.1
- Resolve rendering issues on Intel Ivy Bridge iGPUs
- Update non-Metal Binaries for macOS Sonoma:
- Resolve unresponsive Catalyst buttons
- Resolve window unfocusing issues
- Resolve menu bar fonts not changing color automatically with Beta Menu Bar enabled
- Improve Lock Screen clock transparency
- Prevent random WiFiAgent crashes
- Add error handling for corrupted patcher settings
- Remove CoreImage patch for 3802 GPUs on Ventura
- Avoid listing PCIe FaceTime camera patch on pre-Sonoma OSes
- Only cosmetic in Root Patching UI, however it has been removed to avoid confusion
## 1.0.0
- Resolve BCM2046 and BCM2070 support on macOS 13.3 and newer
- Workaround 13.3+ Kernel Panic on AMD GCN GPUs playing DRM content
- Add new macOS Installer download menu (Jazzzny)
- Refresh download UI (Jazzzny)
- Add support for Universal 2 distribution (x86_64 and ARM64)
- Drops Rosetta requirement on Apple Silicon Macs
- Note building from source will require Python 3.11 or newer and up-to-date Python modules
- Update font handling code, fixing font issues on Yosemite and El Capitan
- Resolve incorrect RELEASE usage of OpenCore binaries when DEBUG enabled
- Add RenderBox.framework patch for 3802-based Intel GPUs on macOS 13.3 and newer
- Works around Weather and Widget freezing
- Applicable for Intel Ivy Bridge and Haswell iGPUs
- Add macOS Sonoma support to PatcherSupportPkg validation in CI
- Implement basic support for macOS Sonoma:
- Supports same range of hardware as Ventura, in addition to:
- iMac18,x
- MacBook10,1
- MacBookPro14,x
- [T1 chip currently unsupported in Sonoma](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1103)
- Resolved issues:
- Graphics Acceleration support for 3802 and non-Metal GPUs
- UI corruption on 31001 GPUs
- Wireless Networking for BCM94360, 4360, 4350, 4331 and 43224
- USB ethernet support for adapters based on ECM protocol (ex. Realtek)
- dGPU support for MacBookPro14,3
- S1X/S3X NVMe Drive Support
- PCIe-based FaceTime Camera support
- Bluetooth support by switching to dynamic VMM spoofing
- Increment Binaries:
- OpenCorePkg 0.9.3 - release
- Lilu 1.6.7 - release
- WhateverGreen 1.6.6 - release
- RestrictEvents 1.1.3 - (rolling - 4f233dd)
- FeatureUnlock 1.1.5 - release
- DebugEnhancer 1.0.8 - release
- CPUFriend 1.2.7 - release
- BlueToolFixup 2.6.8 - rolling (2305aaa)
- CryptexFixup 1.0.2 - release
- NVMeFix 1.1.1 - release
- PatcherSupportPkg 1.3.2 - release
- Build Server Changes:
- Upgrade Python backend to 3.11.5
- Upgrade Python modules:
- requests - 2.31.0
- pyobjc - 9.2
- wxpython - 4.2.1
- pyinstaller - 5.13.2
- packaging - 23.1
## 0.6.8
- Update non-Metal Binaries:
- Improve experimental Menubar implementation stability
@@ -33,7 +354,7 @@
- utilities.py:
- Fix indexing error on Device Paths (thx [@Ausdauersportler](https://github.com/Ausdauersportler))
- Increment Binaries:
- PatcherSupportPkg 1.2.2 - release
- PatcherSupportPkg 1.2.2 - release
## 0.6.7
- Resolve partition buttons overlapping in Install OpenCore UI

View File

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

View File

@@ -1,6 +1,9 @@
#!/usr/bin/env python3
# Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk
from resources import main
"""
PyInstaller Entry Point
"""
from opencore_legacy_patcher import main
if __name__ == '__main__':
main.OpenCoreLegacyPatcher()
main()

View File

@@ -1,15 +1,35 @@
# -*- mode: python ; coding: utf-8 -*-
import sys, os, time, subprocess
import os
import sys
import time
import subprocess
from pathlib import Path
from PyInstaller.building.api import PYZ, EXE, COLLECT
from PyInstaller.building.osx import BUNDLE
from PyInstaller.building.build_main import Analysis
sys.path.append(os.path.abspath(os.getcwd()))
from resources import constants
from opencore_legacy_patcher import constants
block_cipher = None
datas = [
('payloads.dmg', '.'),
('Universal-Binaries.dmg', '.'),
]
if Path("DortaniaInternalResources.dmg").exists():
datas.append(('DortaniaInternalResources.dmg', '.'))
a = Analysis(['OpenCore-Patcher-GUI.command'],
pathex=[],
binaries=[],
datas=[('payloads.dmg', '.'), ('Universal-Binaries.dmg', '.')],
datas=datas,
hiddenimports=[],
hookspath=[],
hooksconfig={},
@@ -19,8 +39,10 @@ a = Analysis(['OpenCore-Patcher-GUI.command'],
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
pyz = PYZ(a.pure,
a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
@@ -33,9 +55,10 @@ exe = EXE(pyz,
upx=True,
console=False,
disable_windowed_traceback=False,
target_arch=None,
target_arch="universal2",
codesign_identity=None,
entitlements_file=None )
entitlements_file=None)
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
@@ -44,18 +67,20 @@ coll = COLLECT(exe,
upx=True,
upx_exclude=[],
name='OpenCore-Patcher')
app = BUNDLE(coll,
name='OpenCore-Patcher.app',
icon="payloads/OC-Patcher.icns",
icon="payloads/Icon/AppIcons/OC-Patcher.icns",
bundle_identifier="com.dortania.opencore-legacy-patcher",
info_plist={
"CFBundleName": "OpenCore Legacy Patcher",
"CFBundleVersion": constants.Constants().patcher_version,
"CFBundleShortVersionString": constants.Constants().patcher_version,
"NSHumanReadableCopyright": constants.Constants().copyright_date,
"LSMinimumSystemVersion": "10.10.0",
"NSRequiresAquaSystemAppearance": False,
"NSHighResolutionCapable": True,
"Build Date": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
"BuildMachineOSBuild": subprocess.run("sw_vers -buildVersion".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode().strip(),
"BuildMachineOSBuild": subprocess.run(["/usr/bin/sw_vers", "-buildVersion"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode().strip(),
"NSPrincipalClass": "NSApplication",
})

View File

@@ -1,5 +1,5 @@
<div align="center">
<img src="images/OC-Patcher.png" alt="OpenCore Patcher Logo" width="256" />
<img src="docs/images/OC-Patcher.png" alt="OpenCore Patcher Logo" width="256" />
<h1>OpenCore Legacy Patcher</h1>
</div>
@@ -15,7 +15,7 @@ Our project's main goal is to breathe new life into Macs no longer supported by
Noteworthy features of OpenCore Legacy Patcher:
* Support for macOS Big Sur, Monterey and Ventura
* Support for macOS Big Sur, Monterey, Ventura, Sonoma and Sequoia
* Native Over the Air (OTA) System Updates
* Supports Penryn and newer Macs
* Full support for WPA Wi-Fi and Personal Hotspot on BCM943224 and newer wireless chipsets
@@ -32,7 +32,7 @@ Note: Only clean-installs and upgrades are supported. macOS Big Sur installs alr
* You can, however, reinstall macOS with this patcher and retain your original data
Note 2: Currently, OpenCore Legacy Patcher officially supports patching to run macOS Big Sur through Ventura installs. For older OSes, OpenCore may function; however, support is currently not provided from Dortania.
Note 2: Currently, OpenCore Legacy Patcher officially supports patching to run macOS Big Sur through Sonoma installs. For older OSes, OpenCore may function; however, support is currently not provided from Dortania.
* For macOS Mojave and Catalina support, we recommend the use of [dosdude1's patchers](http://dosdude1.com)
@@ -93,7 +93,23 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m
* [FixPCIeLinkrate](https://github.com/joevt/joevtApps)
* [Jazzzny](https://github.com/Jazzzny)
* Research and various contributions to the project
* Aquantia Ethernet Patch
* UEFI Legacy XHCI research and development
* NVIDIA OpenCL research and development
* `MacBook5,2` research and development
* LegacyKeyboardInjector
* Pre-Ivy Bridge Aquantia Ethernet Patch
* Non-Metal Photo Booth Patch for Monterey+
* GUI and Backend Development
* Updater UI
* macOS Downloader UI
* Downloader UI
* USB Top Case probing
* Developer root patching
* Vaulting implementation
* macOS 15 3802 Helios Research
* UEFI bootx64.efi research
* universal2 build research
* Various documentation contributions
* Amazing users who've graciously donate hardware:
* [JohnD](https://forums.macrumors.com/members/johnd.53633/) - 2013 Mac Pro
* [SpiGAndromeda](https://github.com/SpiGAndromeda) - AMD Vega 64

View File

@@ -2,7 +2,7 @@
OpenCore Legacy Patcher at its core is a Python-based GUI/CLI-based application. In turn, to run the project from source, you simply need to invoke the OpenCore-Patcher-GUI.command file via Python.
For developers wishing to validate mainline changes, you may use this link: [GUI (Graphical Based App)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app-wxpython/main/OpenCore-Patcher.app%20%28GUI%29.zip)
For developers wishing to validate mainline changes, you may use this link: [GUI (Graphical Based App)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app-wxpython/main/OpenCore-Patcher.pkg.zip)
* **Warning**: Nightly builds (untagged builds built from the latest commit) are actively developed OpenCore Legacy Patcher builds. These builds have not been tested, are not guaranteed to work, and are not guaranteed to be safe. Do not use nightlies without a good reason to do so, and do not use them on your main machine. Additionally, these binaries should not be used without first consulting the [CHANGELOG](./CHANGELOG.md).
@@ -31,8 +31,8 @@ pip3 install -r requirements.txt
If you have any installation errors, see the following troubleshooting options:
* Use Python 3.10
* Our build server currently uses Python 3.10 for generating binaries used in releases
* Use Python 3.11
* Our build server currently uses Python 3.11 for generating binaries used in releases
* Use .whl snapshots for installing additional dependencies
## Running OpenCore Legacy Patcher
@@ -63,9 +63,7 @@ pip3 install pyinstaller
# Move into project directory
cd ~/Developer/OpenCore-Legacy-Patcher/
# Create the pyinstaller based Application
# Optional Arguments
# '--reset_binaries': Redownload and generate support files
python3 Build-Binary.command
python3 Build-Project.command
# Open build folder
open ./dist/
```

View File

@@ -0,0 +1,176 @@
import sys
import time
import plistlib
import subprocess
from pathlib import Path
from opencore_legacy_patcher.volume import generate_copy_arguments
from opencore_legacy_patcher.support import subprocess_wrapper
class GenerateApplication:
"""
Generate OpenCore-Patcher.app
"""
def __init__(self, reset_pyinstaller_cache: bool = False, git_branch: str = None, git_commit_url: str = None, git_commit_date: str = None, analytics_key: str = None, analytics_endpoint: str = None) -> None:
"""
Initialize
"""
self._pyinstaller = [sys.executable, "-m", "PyInstaller"]
self._application_output = Path("./dist/OpenCore-Patcher.app")
self._reset_pyinstaller_cache = reset_pyinstaller_cache
self._git_branch = git_branch
self._git_commit_url = git_commit_url
self._git_commit_date = git_commit_date
self._analytics_key = analytics_key
self._analytics_endpoint = analytics_endpoint
def _generate_application(self) -> None:
"""
Generate PyInstaller Application
"""
if self._application_output.exists():
subprocess_wrapper.run_and_verify(["/bin/rm", "-rf", self._application_output], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print("Generating OpenCore-Patcher.app")
_args = self._pyinstaller + ["./OpenCore-Patcher-GUI.spec", "--noconfirm"]
if self._reset_pyinstaller_cache:
_args.append("--clean")
subprocess_wrapper.run_and_verify(_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
def _embed_analytics_key(self) -> None:
"""
Embed analytics key
"""
_file = Path("./opencore_legacy_patcher/support/analytics_handler.py")
if not all([self._analytics_key, self._analytics_endpoint]):
print("Analytics key or endpoint not provided, skipping embedding")
return
print("Embedding analytics data")
if not Path(_file).exists():
raise FileNotFoundError("analytics_handler.py not found")
lines = []
with open(_file, "r") as f:
lines = f.readlines()
for i, line in enumerate(lines):
if line.startswith("SITE_KEY: str = "):
lines[i] = f"SITE_KEY: str = \"{self._analytics_key}\"\n"
elif line.startswith("ANALYTICS_SERVER: str = "):
lines[i] = f"ANALYTICS_SERVER: str = \"{self._analytics_endpoint}\"\n"
with open(_file, "w") as f:
f.writelines(lines)
def _remove_analytics_key(self) -> None:
"""
Remove analytics key
"""
_file = Path("./opencore_legacy_patcher/support/analytics_handler.py")
if not all([self._analytics_key, self._analytics_endpoint]):
return
print("Removing analytics data")
if not _file.exists():
raise FileNotFoundError("analytics_handler.py not found")
lines = []
with open(_file, "r") as f:
lines = f.readlines()
for i, line in enumerate(lines):
if line.startswith("SITE_KEY: str = "):
lines[i] = "SITE_KEY: str = \"\"\n"
elif line.startswith("ANALYTICS_SERVER: str = "):
lines[i] = "ANALYTICS_SERVER: str = \"\"\n"
with open(_file, "w") as f:
f.writelines(lines)
def _patch_load_command(self):
"""
Patch LC_VERSION_MIN_MACOSX in Load Command to report 10.10
By default Pyinstaller will create binaries supporting 10.13+
However this limitation is entirely arbitrary for our libraries
and instead we're able to support 10.10 without issues.
To verify set version:
otool -l ./dist/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.13
sdk 10.9
"""
_file = self._application_output / "Contents" / "MacOS" / "OpenCore-Patcher"
_find = b'\x00\x0D\x0A\x00' # 10.13 (0xA0D)
_replace = b'\x00\x0A\x0A\x00' # 10.10 (0xA0A)
print("Patching LC_VERSION_MIN_MACOSX")
with open(_file, "rb") as f:
data = f.read()
data = data.replace(_find, _replace, 1)
with open(_file, "wb") as f:
f.write(data)
def _embed_git_data(self) -> None:
"""
Embed git data
"""
_file = self._application_output / "Contents" / "Info.plist"
_git_branch = self._git_branch or "Built from source"
_git_commit = self._git_commit_url or ""
_git_commit_date = self._git_commit_date or time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("Embedding git data")
_plist = plistlib.load(_file.open("rb"))
_plist["Github"] = {
"Branch": _git_branch,
"Commit URL": _git_commit,
"Commit Date": _git_commit_date
}
plistlib.dump(_plist, _file.open("wb"), sort_keys=True)
def _embed_resources(self) -> None:
"""
Embed resources
"""
print("Embedding resources")
for file in Path("payloads/Icon/AppIcons").glob("*.icns"):
subprocess_wrapper.run_and_verify(
generate_copy_arguments(str(file), self._application_output / "Contents" / "Resources/"),
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
def generate(self) -> None:
"""
Generate OpenCore-Patcher.app
"""
self._embed_analytics_key()
self._generate_application()
self._remove_analytics_key()
self._patch_load_command()
self._embed_git_data()
self._embed_resources()

View File

@@ -0,0 +1,137 @@
"""
disk_images.py: Fetch and generate disk images (Universal-Binaries.dmg, payloads.dmg)
"""
import subprocess
from pathlib import Path
from opencore_legacy_patcher import constants
from opencore_legacy_patcher.support import subprocess_wrapper
class GenerateDiskImages:
def __init__(self, reset_dmg_cache: bool = False) -> None:
"""
Initialize
"""
self.reset_dmg_cache = reset_dmg_cache
def _delete_extra_binaries(self):
"""
Delete extra binaries from payloads directory
"""
whitelist_folders = [
"ACPI",
"Config",
"Drivers",
"Icon",
"Kexts",
"OpenCore",
"Tools",
"Launch Services",
]
whitelist_files = []
print("Deleting extra binaries...")
for file in Path("payloads").glob(pattern="*"):
if file.is_dir():
if file.name in whitelist_folders:
continue
print(f"- Deleting {file.name}")
subprocess_wrapper.run_and_verify(["/bin/rm", "-rf", file])
else:
if file.name in whitelist_files:
continue
print(f"- Deleting {file.name}")
subprocess_wrapper.run_and_verify(["/bin/rm", "-f", file])
def _generate_payloads_dmg(self):
"""
Generate disk image containing all payloads
Disk image will be password protected due to issues with
Apple's notarization system and inclusion of kernel extensions
"""
if Path("./payloads.dmg").exists():
if self.reset_dmg_cache is False:
print("- payloads.dmg already exists, skipping creation")
return
print("- Removing old payloads.dmg")
subprocess_wrapper.run_and_verify(
["/bin/rm", "-rf", "./payloads.dmg"],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
print("Generating DMG...")
subprocess_wrapper.run_and_verify([
'/usr/bin/hdiutil', 'create', './payloads.dmg',
'-megabytes', '32000', # Overlays can only be as large as the disk image allows
'-format', 'UDZO', '-ov',
'-volname', 'OpenCore Patcher Resources (Base)',
'-fs', 'HFS+',
'-layout', 'NONE',
'-srcfolder', './payloads',
'-passphrase', 'password', '-encryption'
], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print("DMG generation complete")
def _download_resources(self):
"""
Download required dependencies
"""
patcher_support_pkg_version = constants.Constants().patcher_support_pkg_version
required_resources = [
"Universal-Binaries.dmg"
]
print("Downloading required resources...")
for resource in required_resources:
if Path(f"./{resource}").exists():
if self.reset_dmg_cache is True:
print(f" - Removing old {resource}")
# Just to be safe
assert resource, "Resource cannot be empty"
assert resource not in ("/", "."), "Resource cannot be root"
subprocess_wrapper.run_and_verify(
["/bin/rm", "-rf", f"./{resource}"],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
else:
print(f"- {resource} already exists, skipping download")
continue
print(f"- Downloading {resource}...")
subprocess_wrapper.run_and_verify(
[
"/usr/bin/curl", "-LO",
f"https://github.com/dortania/PatcherSupportPkg/releases/download/{patcher_support_pkg_version}/{resource}"
],
stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
if not Path(f"./{resource}").exists():
print(f"- {resource} not found")
raise Exception(f"{resource} not found")
def generate(self) -> None:
"""
Generate disk images
"""
self._delete_extra_binaries()
self._generate_payloads_dmg()
self._download_resources()

View File

@@ -0,0 +1,148 @@
"""
package.py: Generate packages (Installer, Uninstaller, AutoPkg-Assets)
"""
import tempfile
import macos_pkg_builder
from opencore_legacy_patcher import constants
from .package_scripts import GenerateScripts
class GeneratePackage:
"""
Generate OpenCore-Patcher.pkg
"""
def __init__(self) -> None:
"""
Initialize
"""
self._files = {
"./dist/OpenCore-Patcher.app": "/Library/Application Support/Dortania/OpenCore-Patcher.app",
"./ci_tooling/privileged_helper_tool/com.dortania.opencore-legacy-patcher.privileged-helper": "/Library/PrivilegedHelperTools/com.dortania.opencore-legacy-patcher.privileged-helper",
}
self._autopkg_files = {
"./payloads/Launch Services/com.dortania.opencore-legacy-patcher.auto-patch.plist": "/Library/LaunchAgents/com.dortania.opencore-legacy-patcher.auto-patch.plist",
}
self._autopkg_files.update(self._files)
def _generate_installer_welcome(self) -> str:
"""
Generate Welcome message for installer PKG
"""
_welcome = ""
_welcome += "# Overview\n"
_welcome += f"This package will install the OpenCore Legacy Patcher application (v{constants.Constants().patcher_version}) on your system."
_welcome += "\n\nAdditionally, a shortcut for OpenCore Legacy Patcher will be added in the '/Applications' folder."
_welcome += "\n\nThis package will not 'Build and Install OpenCore' or install any 'Root Patches' on your machine. If required, you can run OpenCore Legacy Patcher to install any patches you may need."
_welcome += f"\n\nFor more information on OpenCore Legacy Patcher usage, see our [documentation]({constants.Constants().guide_link}) and [GitHub repository]({constants.Constants().repo_link})."
_welcome += "\n\n"
_welcome += "## Files Installed"
_welcome += "\n\nInstallation of this package will add the following files to your system:"
for key, value in self._files.items():
_welcome += f"\n\n- `{value}`"
return _welcome
def _generate_uninstaller_welcome(self) -> str:
"""
Generate Welcome message for uninstaller PKG
"""
_welcome = ""
_welcome += "# Application Uninstaller\n"
_welcome += "This package will uninstall the OpenCore Legacy Patcher application and its Privileged Helper Tool from your system."
_welcome += "\n\n"
_welcome += "This will not remove any root patches or OpenCore configurations that you may have installed using OpenCore Legacy Patcher."
_welcome += "\n\n"
_welcome += f"For more information on OpenCore Legacy Patcher, see our [documentation]({constants.Constants().guide_link}) and [GitHub repository]({constants.Constants().repo_link})."
return _welcome
def _generate_autopkg_welcome(self) -> str:
"""
Generate Welcome message for AutoPkg-Assets PKG
"""
_welcome = ""
_welcome += "# DO NOT RUN AUTOPKG-ASSETS MANUALLY!\n\n"
_welcome += "## THIS CAN BREAK YOUR SYSTEM'S INSTALL!\n\n"
_welcome += "This package should only ever be invoked by the Patcher itself, never downloaded or run by the user. Download the OpenCore-Patcher.pkg on the Github Repository.\n\n"
_welcome += f"[OpenCore Legacy Patcher GitHub Release]({constants.Constants().repo_link})"
return _welcome
def generate(self) -> None:
"""
Generate OpenCore-Patcher.pkg
"""
print("Generating OpenCore-Patcher-Uninstaller.pkg")
_tmp_uninstall = tempfile.NamedTemporaryFile(delete=False)
with open(_tmp_uninstall.name, "w") as f:
f.write(GenerateScripts().uninstall())
assert macos_pkg_builder.Packages(
pkg_output="./dist/OpenCore-Patcher-Uninstaller.pkg",
pkg_bundle_id="com.dortania.opencore-legacy-patcher-uninstaller",
pkg_version=constants.Constants().patcher_version,
pkg_background="./ci_tooling/pkg_assets/PkgBackground-Uninstaller.png",
pkg_preinstall_script=_tmp_uninstall.name,
pkg_as_distribution=True,
pkg_title="OpenCore Legacy Patcher Uninstaller",
pkg_welcome=self._generate_uninstaller_welcome(),
).build() is True
print("Generating OpenCore-Patcher.pkg")
_tmp_pkg_preinstall = tempfile.NamedTemporaryFile(delete=False)
_tmp_pkg_postinstall = tempfile.NamedTemporaryFile(delete=False)
with open(_tmp_pkg_preinstall.name, "w") as f:
f.write(GenerateScripts().preinstall_pkg())
with open(_tmp_pkg_postinstall.name, "w") as f:
f.write(GenerateScripts().postinstall_pkg())
assert macos_pkg_builder.Packages(
pkg_output="./dist/OpenCore-Patcher.pkg",
pkg_bundle_id="com.dortania.opencore-legacy-patcher",
pkg_version=constants.Constants().patcher_version,
pkg_allow_relocation=False,
pkg_as_distribution=True,
pkg_background="./ci_tooling/pkg_assets/PkgBackground-Installer.png",
pkg_preinstall_script=_tmp_pkg_preinstall.name,
pkg_postinstall_script=_tmp_pkg_postinstall.name,
pkg_file_structure=self._files,
pkg_title="OpenCore Legacy Patcher",
pkg_welcome=self._generate_installer_welcome(),
).build() is True
print("Generating AutoPkg-Assets.pkg")
_tmp_auto_pkg_preinstall = tempfile.NamedTemporaryFile(delete=False)
_tmp_auto_pkg_postinstall = tempfile.NamedTemporaryFile(delete=False)
with open(_tmp_auto_pkg_preinstall.name, "w") as f:
f.write(GenerateScripts().preinstall_autopkg())
with open(_tmp_auto_pkg_postinstall.name, "w") as f:
f.write(GenerateScripts().postinstall_autopkg())
assert macos_pkg_builder.Packages(
pkg_output="./dist/AutoPkg-Assets.pkg",
pkg_bundle_id="com.dortania.pkg.AutoPkg-Assets",
pkg_version=constants.Constants().patcher_version,
pkg_allow_relocation=False,
pkg_as_distribution=True,
pkg_background="./ci_tooling/pkg_assets/PkgBackground-AutoPkg.png",
pkg_preinstall_script=_tmp_auto_pkg_preinstall.name,
pkg_postinstall_script=_tmp_auto_pkg_postinstall.name,
pkg_file_structure=self._autopkg_files,
pkg_title="AutoPkg Assets",
pkg_welcome=self._generate_autopkg_welcome(),
).build() is True

View File

@@ -0,0 +1,556 @@
"""
package_scripts.py: Generate pre/postinstall scripts for PKG and AutoPkg
"""
class ZSHFunctions:
def __init__(self) -> None:
pass
def generate_standard_pkg_parameters(self) -> str:
"""
ZSH variables for standard PackageKit parameters
"""
_script = ""
_script += "# MARK: PackageKit Parameters\n"
_script += "# " + "-" * 27 + "\n\n"
_script += "pathToScript=$0 # ex. /tmp/PKInstallSandbox.*/Scripts/*/preinstall\n"
_script += "pathToPackage=$1 # ex. ~/Downloads/Installer.pkg\n"
_script += "pathToTargetLocation=$2 # ex. '/', '/Applications', etc (depends on pkgbuild's '--install-location' argument)\n"
_script += "pathToTargetVolume=$3 # ex. '/', '/Volumes/MyVolume', etc\n"
_script += "pathToStartupDisk=$4 # ex. '/'\n"
return _script
def generate_script_remove_file(self) -> str:
"""
ZSH function to remove files
"""
_script = ""
_script += "function _removeFile() {\n"
_script += " local file=$1\n\n"
_script += " if [[ ! -e $file ]]; then\n"
_script += " # Check if file is a symbolic link\n"
_script += " if [[ -L $file ]]; then\n"
_script += " echo \"Removing symbolic link: $file\"\n"
_script += " /bin/rm -f $file\n"
_script += " fi\n"
_script += " return\n"
_script += " fi\n\n"
_script += " echo \"Removing file: $file\"\n\n"
_script += " # Check if file is a directory\n"
_script += " if [[ -d $file ]]; then\n"
_script += " /bin/rm -rf $file\n"
_script += " else\n"
_script += " /bin/rm -f $file\n"
_script += " fi\n"
_script += "}\n"
return _script
def generate_script_create_parent_directory(self) -> str:
"""
ZSH function to create parent directory
"""
_script = ""
_script += "function _createParentDirectory() {\n"
_script += " local file=$1\n\n"
_script += " local parentDirectory=\"$(/usr/bin/dirname $file)\"\n\n"
_script += " # Check if parent directory exists\n"
_script += " if [[ ! -d $parentDirectory ]]; then\n"
_script += " echo \"Creating parent directory: $parentDirectory\"\n"
_script += " /bin/mkdir -p $parentDirectory\n"
_script += " fi\n"
_script += "}\n"
return _script
def generate_set_suid_bit(self) -> str:
"""
ZSH function to set SUID bit
"""
_script = ""
_script += "function _setSUIDBit() {\n"
_script += " local binaryPath=$1\n\n"
_script += " echo \"Setting SUID bit on: $binaryPath\"\n\n"
_script += " # Check if path is a directory\n"
_script += " if [[ -d $binaryPath ]]; then\n"
_script += " /bin/chmod -R +s $binaryPath\n"
_script += " else\n"
_script += " /bin/chmod +s $binaryPath\n"
_script += " fi\n"
_script += "}\n"
return _script
def generate_create_alias(self) -> str:
"""
ZSH function to create alias
"""
_script = ""
_script += "function _createAlias() {\n"
_script += " local mainPath=$1\n"
_script += " local aliasPath=$2\n\n"
_script += " # Check if alias path exists\n"
_script += " if [[ -e $aliasPath ]]; then\n"
_script += " # Check if alias path is a symbolic link\n"
_script += " if [[ -L $aliasPath ]]; then\n"
_script += " echo \"Removing old symbolic link: $aliasPath\"\n"
_script += " /bin/rm -f $aliasPath\n"
_script += " else\n"
_script += " echo \"Removing old file: $aliasPath\"\n"
_script += " /bin/rm -rf $aliasPath\n"
_script += " fi\n"
_script += " fi\n\n"
_script += " # Create symbolic link\n"
_script += " echo \"Creating symbolic link: $aliasPath\"\n"
_script += " /bin/ln -s $mainPath $aliasPath\n"
_script += "}\n"
return _script
def generate_start_patching(self) -> str:
"""
ZSH function to start patching
"""
_script = ""
_script += "function _startPatching() {\n"
_script += " local executable=$1\n"
_script += " local logPath=$(_logFile)\n\n"
_script += " # Start patching\n"
_script += " \"$executable\" \"--patch_sys_vol\" &> $logPath\n"
_script += "}\n"
return _script
def generate_log_file(self) -> str:
"""
ZSH function to generate log file
"""
_script = ""
_script += "function _logFile() {\n"
_script += " echo \"/Users/Shared/.OCLP-AutoPatcher-Log-$(/bin/date +\"%Y_%m_%d_%I_%M_%p\").txt\"\n"
_script += "}\n"
return _script
def generate_fix_settings_file_permission(self) -> str:
"""
ZSH function to fix settings file permission
"""
_script = ""
_script += "function _fixSettingsFilePermission() {\n"
_script += " local settingsPath=\"$pathToTargetVolume/Users/Shared/.com.dortania.opencore-legacy-patcher.plist\"\n\n"
_script += " if [[ -e $settingsPath ]]; then\n"
_script += " echo \"Fixing settings file permissions: $settingsPath\"\n"
_script += " /bin/chmod 666 $settingsPath\n"
_script += " fi\n"
_script += "}\n"
return _script
def generate_reboot(self) -> str:
"""
ZSH function to reboot
"""
_script = ""
_script += "function _reboot() {\n"
_script += " /sbin/reboot\n"
_script += "}\n"
return _script
def generate_prewarm_gatekeeper(self) -> str:
"""
ZSH function to prewarm Gatekeeper
"""
_script = ""
_script += "function _prewarmGatekeeper() {\n"
_script += " local appPath=$1\n\n"
_script += " # Check if /usr/bin/gktool exists\n"
_script += " if [[ ! -e /usr/bin/gktool ]]; then\n"
_script += " echo \"Host doesn't support Gatekeeper prewarming, skipping...\"\n"
_script += " return\n"
_script += " fi\n\n"
_script += " echo \"Prewarming Gatekeeper for application: $appPath\"\n"
_script += " /usr/bin/gktool scan $appPath\n"
_script += "}\n"
return _script
def generate_clean_launch_service(self) -> str:
"""
ZSH function to clean Launch Service
"""
_script = ""
_script += "function _cleanLaunchService() {\n"
_script += " local domain=\"com.dortania.opencore-legacy-patcher\"\n\n"
_script += " # Iterate over launch agents and daemons\n"
_script += " for launchServiceVariant in \"$pathToTargetVolume/Library/LaunchAgents\" \"$pathToTargetVolume/Library/LaunchDaemons\"; do\n"
_script += " # Check if directory exists\n"
_script += " if [[ ! -d $launchServiceVariant ]]; then\n"
_script += " continue\n"
_script += " fi\n\n"
_script += " # Iterate over launch service files\n"
_script += " for launchServiceFile in $(/bin/ls -1 $launchServiceVariant | /usr/bin/grep $domain); do\n"
_script += " local launchServicePath=\"$launchServiceVariant/$launchServiceFile\"\n\n"
_script += " # Remove launch service file\n"
_script += " _removeFile $launchServicePath\n"
_script += " done\n"
_script += " done\n"
_script += "}\n"
return _script
def generate_preinstall_main(self) -> str:
"""
ZSH function for preinstall's main
"""
_script = ""
_script += "function _main() {\n"
_script += " for file in $filesToRemove; do\n"
_script += " _removeFile $pathToTargetVolume/$file\n"
_script += " _createParentDirectory $pathToTargetVolume/$file\n"
_script += " done\n"
_script += "}\n"
return _script
def generate_postinstall_main(self, is_autopkg: bool = False) -> str:
"""
ZSH function for postinstall's main
"""
_script = ""
_script += "function _main() {\n"
_script += " _setSUIDBit \"$pathToTargetVolume/$helperPath\"\n"
_script += " _createAlias \"$pathToTargetVolume/$mainAppPath\" \"$pathToTargetVolume/$shimAppPath\"\n"
_script += " _prewarmGatekeeper \"$pathToTargetVolume/$mainAppPath\"\n"
if is_autopkg:
_script += " _startPatching \"$pathToTargetVolume/$executablePath\"\n"
_script += " _fixSettingsFilePermission\n"
_script += " _reboot\n"
_script += "}\n"
return _script
def generate_uninstall_main(self) -> str:
"""
ZSH function for uninstall's main
"""
_script = ""
_script += "function _main() {\n"
_script += " _cleanLaunchService\n"
_script += " for file in $filesToRemove; do\n"
_script += " _removeFile $pathToTargetVolume/$file\n"
_script += " done\n"
_script += "}\n"
return _script
class GenerateScripts:
def __init__(self):
self.zsh_functions = ZSHFunctions()
self.files = [
"Applications/OpenCore-Patcher.app",
"Library/Application Support/Dortania/Update.plist",
"Library/Application Support/Dortania/OpenCore-Patcher.app",
"Library/PrivilegedHelperTools/com.dortania.opencore-legacy-patcher.privileged-helper"
]
self.additional_auto_pkg_files = [
"Library/LaunchAgents/com.dortania.opencore-legacy-patcher.auto-patch.plist"
]
def __generate_shebang(self) -> str:
"""
Standard shebang for ZSH
"""
return "#!/bin/zsh --no-rcs\n"
def _generate_header_bar(self) -> str:
"""
# ------------------------------------------------------
"""
return "# " + "-" * 54 + "\n"
def _generate_label_bar(self) -> str:
"""
# ------------------------------
"""
return "# " + "-" * 27 + "\n"
def _generate_preinstall_script(self, is_autopkg: bool = False) -> str:
"""
Generate preinstall script for PKG
"""
_script = ""
_script += self.__generate_shebang()
_script += self._generate_header_bar()
_script += f"# {'AutoPkg Assets' if is_autopkg else 'OpenCore Legacy Patcher'} Preinstall Script\n"
_script += self._generate_header_bar()
_script += "# Remove old files, and prepare directories.\n"
_script += self._generate_header_bar()
_script += "\n\n"
_script += self.zsh_functions.generate_standard_pkg_parameters()
_script += "\n\n"
_script += "# MARK: Variables\n"
_script += self._generate_label_bar()
_script += "\n"
_files = self.files
if is_autopkg:
_files += self.additional_auto_pkg_files
_script += f"filesToRemove=(\n"
for _file in _files:
_script += f" \"{_file}\"\n"
_script += ")\n"
_script += "\n\n"
_script += "# MARK: Functions\n"
_script += self._generate_label_bar()
_script += "\n"
_script += self.zsh_functions.generate_script_remove_file()
_script += "\n"
_script += self.zsh_functions.generate_script_create_parent_directory()
_script += "\n"
_script += self.zsh_functions.generate_preinstall_main()
_script += "\n\n"
_script += "# MARK: Main\n"
_script += self._generate_label_bar()
_script += "\n"
_script += "echo \"Starting preinstall script...\"\n"
_script += "_main\n"
return _script
def _generate_postinstall_script(self, is_autopkg: bool = False) -> str:
"""
"""
_script = ""
_script += self.__generate_shebang()
_script += self._generate_header_bar()
_script += f"# {'AutoPkg Assets' if is_autopkg else 'OpenCore Legacy Patcher'} Post Install Script\n"
_script += self._generate_header_bar()
if is_autopkg:
_script += "# Set UID, create alias, start patching, and reboot.\n"
else:
_script += "# Set SUID bit on helper tool, and create app alias.\n"
_script += self._generate_header_bar()
_script += "\n\n"
_script += self.zsh_functions.generate_standard_pkg_parameters()
_script += "\n\n"
_script += "# MARK: Variables\n"
_script += self._generate_label_bar()
_script += "\n"
_script += "helperPath=\"Library/PrivilegedHelperTools/com.dortania.opencore-legacy-patcher.privileged-helper\"\n"
_script += "mainAppPath=\"Library/Application Support/Dortania/OpenCore-Patcher.app\"\n"
_script += "shimAppPath=\"Applications/OpenCore-Patcher.app\"\n"
if is_autopkg:
_script += "executablePath=\"$mainAppPath/Contents/MacOS/OpenCore-Patcher\"\n"
_script += "\n\n"
_script += "# MARK: Functions\n"
_script += self._generate_label_bar()
_script += "\n"
_script += self.zsh_functions.generate_set_suid_bit()
_script += "\n"
_script += self.zsh_functions.generate_create_alias()
_script += "\n"
_script += self.zsh_functions.generate_prewarm_gatekeeper()
_script += "\n"
if is_autopkg:
_script += self.zsh_functions.generate_start_patching()
_script += "\n"
_script += self.zsh_functions.generate_log_file()
_script += "\n"
_script += self.zsh_functions.generate_fix_settings_file_permission()
_script += "\n"
_script += self.zsh_functions.generate_reboot()
_script += "\n"
_script += self.zsh_functions.generate_postinstall_main(is_autopkg)
_script += "\n\n"
_script += "# MARK: Main\n"
_script += self._generate_label_bar()
_script += "\n"
_script += "echo \"Starting postinstall script...\"\n"
_script += "_main\n"
return _script
def _generate_uninstall_script(self) -> str:
"""
"""
_script = ""
_script += self.__generate_shebang()
_script += self._generate_header_bar()
_script += f"# OpenCore Legacy Patcher Uninstall Script\n"
_script += self._generate_header_bar()
_script += "# Remove OpenCore Legacy Patcher files and directories.\n"
_script += self._generate_header_bar()
_script += "\n\n"
_script += self.zsh_functions.generate_standard_pkg_parameters()
_script += "\n\n"
_script += "# MARK: Variables\n"
_script += self._generate_label_bar()
_script += "\n"
_files = self.files
_script += "filesToRemove=(\n"
for _file in _files:
_script += f" \"{_file}\"\n"
_script += ")\n"
_script += "\n\n"
_script += "# MARK: Functions\n"
_script += self._generate_label_bar()
_script += "\n"
_script += self.zsh_functions.generate_script_remove_file()
_script += "\n"
_script += self.zsh_functions.generate_clean_launch_service()
_script += "\n"
_script += self.zsh_functions.generate_uninstall_main()
_script += "\n\n"
_script += "# MARK: Main\n"
_script += self._generate_label_bar()
_script += "\n"
_script += "echo \"Starting uninstall script...\"\n"
_script += "_main\n"
return _script
def preinstall_pkg(self) -> str:
"""
Generate preinstall script for PKG
"""
return self._generate_preinstall_script()
def preinstall_autopkg(self) -> str:
"""
Generate preinstall script for AutoPkg
"""
return self._generate_preinstall_script(is_autopkg=True)
def postinstall_pkg(self) -> str:
"""
Generate postinstall script for PKG
"""
return self._generate_postinstall_script()
def postinstall_autopkg(self) -> str:
"""
Generate postinstall script for AutoPkg
"""
return self._generate_postinstall_script(is_autopkg=True)
def uninstall(self) -> str:
"""
Generate uninstall script
"""
return self._generate_uninstall_script()

View File

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

@@ -0,0 +1,54 @@
"""
sign_notarize.py: Sign and Notarize a file
"""
import mac_signing_buddy
import macos_pkg_builder
from pathlib import Path
import macos_pkg_builder.utilities.signing
class SignAndNotarize:
def __init__(self, path: Path, signing_identity: str, notarization_apple_id: str, notarization_password: str, notarization_team_id: str, entitlements: str = None) -> None:
"""
Initialize
"""
self._path = path
self._signing_identity = signing_identity
self._notarization_apple_id = notarization_apple_id
self._notarization_password = notarization_password
self._notarization_team_id = notarization_team_id
self._entitlements = entitlements
def sign_and_notarize(self) -> None:
"""
Sign and Notarize
"""
if not all([self._signing_identity, self._notarization_apple_id, self._notarization_password, self._notarization_team_id]):
print("Signing and Notarization details not provided, skipping")
return
print(f"Signing {self._path.name}")
if self._path.name.endswith(".pkg"):
macos_pkg_builder.utilities.signing.SignPackage(
identity=self._signing_identity,
pkg=self._path,
).sign()
else:
mac_signing_buddy.Sign(
identity=self._signing_identity,
file=self._path,
**({"entitlements": self._entitlements} if self._entitlements else {}),
).sign()
print(f"Notarizing {self._path.name}")
mac_signing_buddy.Notarize(
apple_id=self._notarization_apple_id,
password=self._notarization_password,
team_id=self._notarization_team_id,
file=self._path,
).sign()

View File

@@ -0,0 +1,376 @@
#!/usr/bin/env python3
"""
--------------------------------
macOS_Installer_Backup.command
--------------------------------
Utility for grabbing macOS Installers from Apple's catalogs and AppleDB,
and saving them to a local directory.
WARNING: Solely for internal usage, not intended for end-users.
"""
import sys
import argparse
import plistlib
import subprocess
from pathlib import Path
from datetime import datetime
# To allow easy importing of OpenCore Legacy Patcher's utilities
sys.path.append(str(Path(__file__).parent.parent.parent))
from opencore_legacy_patcher.support import (
macos_installer_handler,
network_handler,
integrity_verification,
utilities,
)
from opencore_legacy_patcher.datasets import os_data
_DEFAULT_PATH: str = "/Volumes/macOS Installers"
class InstallerBackup:
def __init__(self,
directory: Path = Path(_DEFAULT_PATH),
supported_oses: list = [
os_data.os_data.big_sur,
os_data.os_data.monterey,
os_data.os_data.ventura,
os_data.os_data.sonoma,
os_data.os_data.sequoia,
],
first_run: bool = False
) -> None:
print(f"Starting macOS Installer Backup: {datetime.now()}")
self._directory = directory
self._supported_oses = supported_oses
self._os_table = {
os_data.os_data.big_sur: Path(self._directory, "11 Big Sur"),
os_data.os_data.monterey: Path(self._directory, "12 Monterey"),
os_data.os_data.ventura: Path(self._directory, "13 Ventura"),
os_data.os_data.sonoma: Path(self._directory, "14 Sonoma"),
os_data.os_data.sequoia: Path(self._directory, "15 Sequoia"),
}
for os_version in self._supported_oses:
if os_version not in self._os_table:
raise ValueError(f"Unsupported OS version: {os_version}")
for dir in self._os_table.values():
if not Path(dir).exists():
if first_run is False:
raise FileNotFoundError(f"Directory does not exist: {dir} (use --first-run to create)")
Path(dir).mkdir(parents=True, exist_ok=True)
self._main()
def _download_installer(self, installer: dict) -> None:
"""
Download installer
"""
installer_name = f"{installer['Version']} ({installer['Build']})"
if Path(installer['Link']).suffix == ".pkg":
installer_name += " InstallAssistant.pkg"
else:
installer_name += " Restore.ipsw"
integrity_name = f"{installer_name}.integrityDataV1"
print(f"Downloading {installer_name}")
# Check if integrity file available
integrity = installer["integrity"]
if integrity is not None:
result = self._downloader(url=integrity, path=Path(self._os_table[installer['OS']], integrity_name), name=integrity_name)
if result is False:
return
# Download installer
result = self._downloader(url=installer["Link"], path=Path(self._os_table[installer['OS']], installer_name), name=installer_name)
if result is False:
return
# Validate against chunklist
if integrity is not None:
result = self._validate_against_chunklist(installer_path=Path(self._os_table[installer['OS']], installer_name), chunklist=Path(self._os_table[installer['OS']], integrity_name))
if result is False:
return
def _validate_against_chunklist(self, installer_path: str, chunklist: str) -> bool:
"""
Validate file against chunklist
"""
name = Path(installer_path).name
if not Path(installer_path).exists():
print("File does not exist")
return False
if not Path(chunklist).exists():
print("Chunklist does not exist")
return False
chunk_obj = integrity_verification.ChunklistVerification(installer_path, chunklist)
if not chunk_obj.chunks:
print("Failed to generate chunklist dict")
return False
print(f"Validating {name} against chunklist: {chunk_obj.total_chunks} chunks", end="\r")
chunk_obj.validate()
while chunk_obj.status == integrity_verification.ChunklistStatus.IN_PROGRESS:
print(f"Validating {name} against chunklist: chunk {chunk_obj.current_chunk} passed", end="\r")
if chunk_obj.status == integrity_verification.ChunklistStatus.FAILURE:
print(chunk_obj.error_msg)
print(f"Validating {name} against chunklist: chunk {chunk_obj.current_chunk} failed")
for file in [installer_path, chunklist]:
result = subprocess.run(["/bin/rm", "-f", file])
if result.returncode != 0:
print(f"Failed to delete {file}")
print(f"Validating {name} against chunklist: chunk {chunk_obj.total_chunks} passed")
return True
def _downloader(self, url, path, name) -> bool:
"""
Download file from URL
"""
dl_obj = network_handler.DownloadObject(url, path)
dl_obj.download(display_progress=False, spawn_thread=True)
percentages_displayed = set()
while dl_obj.is_active():
if dl_obj.get_percent() in percentages_displayed:
continue
percentages_displayed.add(int(dl_obj.get_percent()))
print(f" Downloading: {name}: {dl_obj.get_percent():.2f}% ({utilities.human_fmt(dl_obj.get_speed())})/s", end="\r")
print(f" Downloading: {name}: 100.00% ({utilities.human_fmt(dl_obj.get_speed())})/s")
if not dl_obj.download_complete:
print("Download failed")
subprocess.run(["/bin/rm", "-f", path]) # Retry later
return False
if Path(path).stat().st_size == 0:
print("Downloaded file is empty, considering permanent failure") # Likely dead URL
if not Path(Path(path).parent, "Dead URLs").exists():
Path(Path(path).parent, "Dead URLs").mkdir()
if Path(path).exists():
subprocess.run(["/bin/mv", path, Path(Path(path).parent, "Dead URLs", Path(path).name)])
return True
def _does_file_exist(self, xnu_version: int, build: str, suffix: str) -> bool:
"""
Check if installer already exists in directory
"""
if xnu_version not in self._os_table:
raise ValueError(f"Unsupported OS version: {xnu_version}")
if not Path(self._os_table[xnu_version]).exists():
raise FileNotFoundError(f"Directory does not exist: {self._os_table[xnu_version]}")
# Check failed, as those are generally dead URLs
for path in [Path(self._os_table[xnu_version]), Path(self._os_table[xnu_version], "Dead URLs")]:
if not Path(path).exists():
continue
for file in path.iterdir():
if file.is_dir():
continue
if not file.name.endswith(suffix):
continue
if f"({build})" in file.name:
return True
return False
def _get_remote_installer_catalog(self, os_version: int) -> dict:
"""
Get remote installer catalog from Apple's servers
"""
installers = {}
print(f"SUCATALOG: Getting installers for macOS {os_data.os_conversion.kernel_to_os(os_version)}")
for seed in macos_installer_handler.SeedType:
print(f" Catalog: {seed.name}")
result = macos_installer_handler.RemoteInstallerCatalog(seed_override=seed, os_override=os_version).available_apps
installers.update(result)
return installers
def _get_apple_db_items(self, variant: str = ".ipsw") -> dict:
"""
Get macOS installers from AppleDB
"""
if variant not in ["InstallAssistant.pkg", ".ipsw"]:
raise ValueError(f"Invalid variant: {variant}")
installers = {
# "22F82": {
# url: "https://swcdn.apple.com/content/downloads/36/06/042-01917-A_B57IOY75IU/oocuh8ap7y8l8vhu6ria5aqk7edd262orj/InstallAssistant.pkg",
# version: "13.4.1",
# build: "22F82",
# }
}
print(f"APPLEDB: Getting installers for variant: {variant}")
apple_db = network_handler.NetworkUtilities().get("https://api.appledb.dev/main.json")
if apple_db is None:
return installers
apple_db = apple_db.json()
for group in apple_db:
if group != "ios":
continue
for item in apple_db[group]:
if "osStr" not in item:
continue
if item["osStr"] != "macOS":
continue
if "build" not in item:
continue
if "version" not in item:
continue
if "sources" not in item:
continue
for source in item["sources"]:
if "links" not in source:
continue
for entry in source["links"]:
if "url" not in entry:
continue
if entry["url"].endswith(variant) is False:
continue
models = []
if "devices" in item:
for device in item["devices"]:
_device = device
if "-" in device:
_device = device.split("-")[0]
if _device in models:
continue
models.append(_device)
# Attempt to match macos_installer_handler.py's format
installers[item["build"]] = {
"Version": item["version"],
"Build": item["build"],
"Link": entry["url"],
"Size": -1,
"integrity": None,
"Source": "AppleDB",
"Variant": "Beta" if item["beta"] else "Public",
"OS": os_data.os_conversion.os_to_kernel(item["version"] if " " not in item["version"] else item["version"].split(" ")[0]),
"Models": models,
"Date": item["released"],
}
return installers
def _main(self) -> None:
"""
Main entry point
"""
installers = {}
apple_db_ipsw_installers = {}
apple_db_pkg_installers = {}
for build in self._supported_oses:
installers.update(self._get_remote_installer_catalog(os_version=build))
for installer in [".ipsw", "InstallAssistant.pkg"]:
apple_db_items = self._get_apple_db_items(variant=installer)
if installer == ".ipsw":
apple_db_ipsw_installers = apple_db_items
else:
apple_db_pkg_installers = apple_db_items
installers.update(apple_db_items)
# Sort by name
installers = dict(sorted(installers.items(), key=lambda item: item[1]["Build"]))
print(f"Found {len(installers)} installers, checking which ones are missing")
missing = []
for build in installers:
if self._does_file_exist(xnu_version=installers[build]["OS"], build=installers[build]["Build"], suffix=Path(installers[build]["Link"]).suffix) is True:
continue
missing.append(installers[build])
print(f"Found {len(missing)} missing installers:" if missing else "No missing installers found")
for installer in missing:
print(f" {Path(installer['Link']).suffix}: {installer['Version']} ({installer['Build']})")
self._download_installer(installer)
# Finally, fix names
for apple_db_installers in [apple_db_ipsw_installers, apple_db_pkg_installers]:
for installer in apple_db_installers:
_build = apple_db_installers[installer]["Build"]
_version = apple_db_installers[installer]["Version"]
if _version.lower().endswith(" beta"):
_version += " 1"
elif " " not in _version:
_version += " release"
_base_name = f"{_version} ({_build})"
for os in self._os_table:
for directory in [self._os_table[os], Path(self._os_table[os], "Dead URLs")]:
for file in directory.iterdir():
if file.is_dir():
continue
if f"({_build})" not in file.name and f" {_build} " not in file.name:
continue
_name = _base_name
_current_suffix = Path(file).suffix
if _current_suffix == ".pkg":
_name += " InstallAssistant.pkg"
elif _current_suffix == ".ipsw":
_name += " Restore.ipsw"
elif _current_suffix == ".integrityDataV1":
if Path(file).name.endswith(" Restore.ipsw.integrityDataV1"):
_name += " Restore.ipsw.integrityDataV1"
elif Path(file).name.endswith("InstallAssistant.pkg.integrityDataV1"):
_name += " InstallAssistant.pkg.integrityDataV1"
else:
continue
else:
continue
if Path(file).name == _name:
continue
print(f"Renaming {file.name} to {_name}")
result = subprocess.run(["/bin/mv", file, Path(directory, _name)])
if result.returncode != 0:
print(f"Failed to rename {file} to {Path(directory, _name)}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="macOS Installer Backup")
parser.add_argument("--first-run", action="store_true", help="Create directories if missing")
InstallerBackup(**vars(parser.parse_args()))

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

View File

@@ -0,0 +1,13 @@
CC=clang
OUTPUT=com.dortania.opencore-legacy-patcher.privileged-helper
all: clean release
release: main.m
$(CC) -framework Foundation -framework Security -arch x86_64 -arch arm64 -mmacosx-version-min=10.9 -o $(OUTPUT) main.m
debug: main.m
$(CC) -framework Foundation -framework Security -arch x86_64 -arch arm64 -mmacosx-version-min=10.9 -o $(OUTPUT) main.m -DDEBUG
clean:
/bin/rm -f $(OUTPUT)

View File

@@ -0,0 +1,34 @@
# OpenCore Legacy Patcher Privileged Helper Tool
`com.dortania.opencore-legacy-patcher.privileged-helper` is OpenCore Legacy Patcher's Privileged Helper Tool.
The architecture is as such:
1. The main application (OpenCore-Patcher.app) will send arguments to the privileged helper tool to execute.
2. The privileged helper tool will check the code signature of the main application to ensure it is signed by Dortania.
3. The privileged helper tool will then execute the command and return the output to the main application.
The helper tool is able to execute code as root by using the "Set UID" bit present on the file.
## Running from source
Since running OpenCore Legacy Patcher from source will lack Dortania's code signature, you will need to disable code signature verification in the privileged helper tool otherwise root commands will fail.
To do so, compile the privileged helper tool with debug:
```
make debug
```
Then when you build OpenCore-Patcher.pkg, the debug version of the helper tool will be used.
### Security Considerations
When using the Privileged Helper Tool from source, you are now adding a security risk to your system. By disabling the code signature checks, any malicious application is given ability to execute code as root.
If possible, we highly recommend creating a developer account with Apple and signing the application with your own ["Developer ID Application" certificate](https://developer.apple.com/help/account/create-certificates/create-developer-id-certificates/). This will allow you to run the application without disabling code signature checks.
* Note that Dortania's Team ID will need to be replaced in main.m with your own Team ID (`S74BDJXQMD` -> `YOUR_TEAM`)
* Additionally you will be required to compile OpenCore-Patcher.app with your own Developer ID Application certificate
If this is not possible, we recommend using [OpenCore Legacy Patcher's prebuilt binaries](../../SOURCE.md) instead.

View File

@@ -0,0 +1,54 @@
#!/bin/zsh --no-rcs
# ------------------------------------------------------
# Privileged Helper Tool Installer
# ------------------------------------------------------
# Moves to expected destination and sets SUID bit.
# ------------------------------------------------------
# Developed for internal testing, end users should be
# using the PKG installer when released.
# ------------------------------------------------------
# MARK: Variables
# ---------------------------
helperName="com.dortania.opencore-legacy-patcher.privileged-helper"
helperPath="/Library/PrivilegedHelperTools/$helperName"
# MARK: Functions
# ---------------------------
function _setSUIDBit() {
local binaryPath=$1
# Check if path is a directory
if [[ -d $binaryPath ]]; then
/bin/chmod -R +s $binaryPath
else
/bin/chmod +s $binaryPath
fi
}
function _copyHelper() {
local sourcePath=$1
local destinationPath=$2
# Check if destination path exists
if [[ -e $destinationPath ]]; then
# Check if destination path is a directory
if [[ -d $destinationPath ]]; then
/bin/rm -rf $destinationPath
else
/bin/rm -f $destinationPath
fi
fi
# Copy source to destination
/bin/cp -R $sourcePath $destinationPath
}
# MARK: Main
# ---------------------------
_copyHelper "./$helperName" $helperPath
_setSUIDBit $helperPath

View File

@@ -0,0 +1,152 @@
/*
------------------------------------------------
OpenCore Legacy Patcher Privileged Helper Tool
------------------------------------------------
Designed as an alternative to an XPC service,
this tool is used to run commands as root.
------------------------------------------------
Server and client must have the same signing
certificate in order to run commands.
------------------------------------------------
*/
#import <Foundation/Foundation.h>
#import <Security/Security.h>
#include <libproc.h>
#define UTILITY_VERSION "1.0.0"
#define VALID_CLIENT_TEAM_ID @"S74BDJXQMD"
#define OCLP_PHT_ERROR_MISSING_ARGUMENTS 160
#define OCLP_PHT_ERROR_SET_UID_MISSING 161
#define OCLP_PHT_ERROR_SET_UID_FAILED 162
#define OCLP_PHT_ERROR_SELF_PATH_MISSING 163
#define OCLP_PHT_ERROR_PARENT_PATH_MISSING 164
#define OCLP_PHT_ERROR_SIGNING_INFORMATION_MISSING 165
#define OCLP_PHT_ERROR_INVALID_TEAM_ID 166
#define OCLP_PHT_ERROR_INVALID_CERTIFICATES 167
#define OCLP_PHT_ERROR_COMMAND_MISSING 168
#define OCLP_PHT_ERROR_COMMAND_FAILED 169
#define OCLP_PHT_ERROR_CATCH_ALL 170
NSDictionary *getSigningInformationFromPath(NSString *path) {
SecStaticCodeRef codeRef;
OSStatus status = SecStaticCodeCreateWithPath((__bridge CFURLRef)[NSURL fileURLWithPath:path], kSecCSDefaultFlags, &codeRef);
if (status != errSecSuccess) {
return nil;
}
CFDictionaryRef codeDict = NULL;
status = SecCodeCopySigningInformation(codeRef, kSecCSSigningInformation, &codeDict);
if (status != errSecSuccess) {
return nil;
}
return (__bridge NSDictionary *)codeDict;
}
NSString *getParentProcessPath() {
char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
if (proc_pidpath(getppid(), pathbuf, sizeof(pathbuf)) <= 0) {
return nil;
}
NSString *path = [NSString stringWithUTF8String:pathbuf];
return path;
}
NSString *getProcessPath() {
NSString *path = [[NSBundle mainBundle] executablePath];
return path;
}
BOOL isSBitSet(NSString *path) {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDictionary *attributes = [fileManager attributesOfItemAtPath:path error:nil];
if (attributes == nil) {
return NO;
}
return (attributes.filePosixPermissions & S_ISUID) != 0;
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
// We simply return if no arguments are passed
if (argc < 2) {
return OCLP_PHT_ERROR_MISSING_ARGUMENTS;
}
if (argc == 2 && (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-v") == 0)) {
printf("%s\n", UTILITY_VERSION);
return 0;
}
// Verify whether we can run as root
NSString *processPath = getProcessPath();
if (processPath == nil) {
return OCLP_PHT_ERROR_SELF_PATH_MISSING;
}
if (!isSBitSet(processPath)) {
return OCLP_PHT_ERROR_SET_UID_MISSING;
}
setuid(0);
if (getuid() != 0) {
return OCLP_PHT_ERROR_SET_UID_FAILED;
}
NSString *parentProcessPath = getParentProcessPath();
if (parentProcessPath == nil) {
return OCLP_PHT_ERROR_PARENT_PATH_MISSING;
}
NSDictionary *processSigningInformation = getSigningInformationFromPath(processPath);
NSDictionary *parentProcessSigningInformation = getSigningInformationFromPath(parentProcessPath);
if (processSigningInformation == nil || parentProcessSigningInformation == nil) {
return OCLP_PHT_ERROR_SIGNING_INFORMATION_MISSING;
}
#ifdef DEBUG
// Skip Team ID check in debug mode
// DO NOT USE IN PRODUCTION
#else
// Check Team ID
if (![processSigningInformation[@"teamid"] isEqualToString:VALID_CLIENT_TEAM_ID] || ![parentProcessSigningInformation[@"teamid"] isEqualToString:VALID_CLIENT_TEAM_ID]) {
return OCLP_PHT_ERROR_INVALID_TEAM_ID;
}
// Check Certificates
if (![processSigningInformation[@"certificates"] isEqualToArray:parentProcessSigningInformation[@"certificates"]]) {
return OCLP_PHT_ERROR_INVALID_CERTIFICATES;
}
#endif
NSString *command = nil;
NSArray *arguments = @[];
if (argc == 2) {
command = [NSString stringWithUTF8String:argv[1]];
} else {
command = [NSString stringWithUTF8String:argv[1]];
for (int i = 2; i < argc; i++) {
arguments = [arguments arrayByAddingObject:[NSString stringWithUTF8String:argv[i]]];
}
}
// Verify command exists
if (![[NSFileManager defaultManager] fileExistsAtPath:command]) {
return OCLP_PHT_ERROR_COMMAND_MISSING;
}
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:command];
[task setArguments:arguments];
[task launch];
[task waitUntilExit];
return [task terminationStatus];
}
return OCLP_PHT_ERROR_CATCH_ALL; // Should never reach here
}

View File

@@ -0,0 +1,30 @@
<?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

@@ -0,0 +1,8 @@
# 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

@@ -1,57 +0,0 @@
# Copyright (C) 2022, Mykola Grymalyuk
# Within AppleMobileFileIntegrity.kext, Apple has a bitmask-based boot-arg (ex. amfi=128)
# Below information is from reversed values in 13.0 Beta 6's AppleMobileFileIntegrity.kext
# Currently only 'amfi=3' has been used by Apple publicly
# - 0x3 used in 11.0.1 dyld source:
# - https://github.com/apple-oss-distributions/dyld/blob/5c9192436bb195e7a8fe61f22a229ee3d30d8222/testing/test-cases/kernel-hello-world.dtest/main.c#L2
import enum
class AppleMobileFileIntegrity(enum.IntEnum):
# Names set are solely for readability
# Internal names are unknown
AMFI_ALLOW_TASK_FOR_PID: int = 0x1 # Allow Task for PID (alt. amfi_unrestrict_task_for_pid=0x1)
AMFI_ALLOW_INVALID_SIGNATURE: int = 0x2 # Reduce sig enforcement (alt. amfi_allow_any_signature=0x1)
AMFI_LV_ENFORCE_THIRD_PARTY: int = 0x4 # Don't mark external binaries as platform binaries
AMFI_UNKNOWN_1: int = 0x8
AMFI_UNKNOWN_2: int = 0x10
AMFI_UNKNOWN_3: int = 0x20
AMFI_UNKNOWN_4: int = 0x40
AMFI_ALLOW_EVERYTHING: int = 0x80 # Disable sig enforcement and Library Validation (alt. amfi_get_out_of_my_way=0x1)
# Internally within AMFI.kext, Apple references 0x2 and 0x80 as both 'Disable signature enforcement'
# However 0x80 is a higher privilege than 0x2, and breaks TCC support in OS (ex. Camera, Microphone, etc prompts)
# Supported boot-args within AMFI.kext, last compared against 13.0 Beta 6
#
# Within _initializeAppleMobileFileIntegrity():
# - amfi_unrestrict_task_for_pid=0x1
# - amfi_dev_mode_policy=0x1
# - amfi_allow_any_signature=0x1
# - amfi_get_out_of_my_way=0x1
# - amfi_unrestricted_local_signing=0x1
# - pmap_cs_unrestricted_local_signing=0x1
# - amfi_ready_to_roll=0x1
# - cs_enforcement_disable=0x1
#
# Within AMFIInitializeLocalSigningPublicKey():
# - -restore
#
# Within macOSPolicyConfigurationInit():
# - amfi_force_policy=0x1
# - amfi_block_unsigned_code=0x1
# - amfi_force_cs_kill=0x1
# - amfi_hsp_disable=0x1
# - amfi_hsp_logging=0x1
# - amfi_allow_bni_as_platform=0x1
# - amfi_allow_non_platform=0x1
# - amfi_prevent_old_entitled_platform_binaries=0x1
# - amfi_allow_only_tc=0x1
# - amfi_allow_only_tc_override=0x1
#
# Within configurationSettingsInit()
# - amfi_enforce_launch_constraints=0x1
# - amfi_allow_3p_launch_constraints=0x1
# - BATS_TESTPLAN_ID="Custom Team ID"

File diff suppressed because it is too large Load Diff

View File

@@ -10,5 +10,6 @@
"single-title": false,
"ul-style": {
"style": "asterisk"
}
},
"link-fragments": false
}

View File

@@ -24,29 +24,29 @@ module.exports = {
],
base: '/OpenCore-Legacy-Patcher/',
watch: {
$page(newPage, oldPage) {
if (newPage.key !== oldPage.key) {
requestAnimationFrame(() => {
if (this.$route.hash) {
const element = document.getElementById(this.$route.hash.slice(1));
watch: {
$page(newPage, oldPage) {
if (newPage.key !== oldPage.key) {
requestAnimationFrame(() => {
if (this.$route.hash) {
const element = document.getElementById(this.$route.hash.slice(1));
if (element && element.scrollIntoView) {
element.scrollIntoView();
}
}
});
}
}
},
if (element && element.scrollIntoView) {
element.scrollIntoView();
}
}
});
}
}
},
markdown: {
extendMarkdown: md => {
md.use(require('markdown-it-multimd-table'), {
rowspan: true,
});
}
},
markdown: {
extendMarkdown: md => {
md.use(require('markdown-it-multimd-table'), {
rowspan: true,
});
}
},
theme: 'vuepress-theme-succinct',
globalUIComponents: [
@@ -56,10 +56,10 @@ module.exports = {
themeConfig: {
lastUpdated: true,
repo: 'https://github.com/dortania/OpenCore-Legacy-Patcher/',
docsDir: 'docs',
docsBranch: 'main',
editLinks: true,
editLinkText: 'Help us improve this page!',
docsDir: 'docs',
docsBranch: 'main',
editLinks: true,
editLinkText: 'Help us improve this page!',
logo: 'homepage.png',
sidebar: [{
@@ -67,61 +67,65 @@ module.exports = {
collapsable: false,
sidebarDepth: 1,
children: [
'START',
'MODELS',
'START',
'MODELS',
'FAQ',
]
},
{
title: 'Setting up',
title: 'How to install',
collapsable: false,
sidebarDepth: 1,
children: [
'INSTALLER',
'BUILD',
'BUILD',
'BOOT',
'POST-INSTALL',
]
},
{
title: 'Installation',
title: 'macOS Support',
collapsable: false,
sidebarDepth: 1,
children: [
'BOOT',
'POST-INSTALL',
'SEQUOIA-DROP',
'SONOMA-DROP',
'VENTURA-DROP',
'MONTEREY-DROP',
]
},
{
title: 'macOS Ventura',
{
title: 'Application',
collapsable: false,
sidebarDepth: 1,
children: [
['VENTURA-DROP', 'macOS Ventura Support'],
'UPDATE',
'UNINSTALL',
'PROCESS',
]
},
},
{
title: 'macOS Monterey',
title: 'Troubleshooting',
collapsable: false,
sidebarDepth: 1,
children: [
['MONTEREY-DROP', 'macOS Monterey Support'],
'TROUBLESHOOTING',
'ACCEL',
'DEBUG',
]
},
},
{
title: 'Misc',
collapsable: false,
sidebarDepth: 1,
children: [
'ACCEL',
'TROUBLESHOOTING',
'DEBUG',
'UPDATE',
'UNINSTALL',
'ICNS',
'WINDOWS',
'UNIVERSALCONTROL',
'TIMEMACHINE',
'ICNS',
'WINDOWS',
'UNIVERSALCONTROL',
]
},
{
@@ -129,8 +133,8 @@ module.exports = {
collapsable: false,
sidebarDepth: 1,
children: [
'DONATE',
'LICENSE',
'DONATE',
'LICENSE',
]
},
@@ -139,22 +143,22 @@ module.exports = {
collapsable: false,
sidebarDepth: 1,
children: [
'ISSUES-HOLD',
'TESTED',
'TERMS',
'HOW',
'PATCHEXPLAIN',
'ISSUES-HOLD',
'TERMS',
'HOW',
'PATCHEXPLAIN',
]
},
],
},
plugins: [
'@vuepress/plugin-back-to-top',
'@vuepress/back-to-top',
'vuepress-plugin-smooth-scroll',
['vuepress-plugin-medium-zoom',
'vuepress-plugin-fulltext-search',
['@vuepress/medium-zoom',
{
selector: "img",
selector: ".theme-succinct-content :not(a) > img",
options: {
background: 'var(--bodyBgColor)'
}

View File

@@ -47,3 +47,22 @@ tr
background-color var(--sideBgColor)!important
box-shadow 0px 0px 2px var(--bodyBgColor)
right -12%!important
@media (min-width: 1000px)
.theme-succinct-content:not(.custom)
max-width 70%
.search-box .suggestion a .suggestion-row .page-title
border-color var(--borderColor) !important
background-color: var(--sideBgColor) !important
.search-box .suggestion a .suggestion-row .suggestion-content
border-color var(--borderColor) !important
.search-box .suggestion a .parent-page-title
background-color: var(--bodyBgColor) !important
color: var(--accentColor) !important
.search-box .suggestion.focused a
color: var(--navItemHoverColor) !important

View File

@@ -22,4 +22,4 @@ $bodyBgColorDark = #2d3033
$sideBgColorDark = #363b40
$badgeTipColorDark = #023e52
$contentWidth = 900px
$contentWidth = 900px

View File

@@ -1,4 +1,4 @@
# Working Around Legacy Acceleration Issues
# Working Around Non-Metal Issues
* [Broken Background Blurs](#broken-background-blurs)
* [Downloading older non-Metal Apps](#downloading-older-non-metal-apps)
@@ -46,7 +46,11 @@ Metal is Apple's in-house graphics API that acts as a replacement for OpenGL/Ope
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:
![](../images/OCLP-GUI-Settings-Beta-Blur.png)
![]()
<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
@@ -70,7 +74,7 @@ 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 entires in System Preferences. To work around this, we recommend users install tccplus to manage permissions.
Due to the usage of amfi_get_out_of_my_way=1, macOS will fail to prompt users for special permissions upon application start as well as omit the entries in System Preferences. To work around this, we recommend users install tccplus to manage permissions.
[Download TCCPlus](https://github.com/jslegendre/tccplus)
@@ -190,7 +194,7 @@ A somewhat strange issue on Intel HD3000-based Macs, on 3rd party displays somet
| Default Color Profile | Display/Display P3 Profile |
| :--- | :--- |
| ![](../images/HD3000-Default-Colors.png) | ![](../images/HD3000-Display-Colors.png) |
| ![](./images/HD3000-Default-Colors.png) | ![](./images/HD3000-Display-Colors.png) |
## Cannot Pair Bluetooth Devices

View File

@@ -6,7 +6,10 @@ Reboot the machine while holding `Option` to select the EFI Boot entry with the
* This will be the Mac Boot Picker
![](../images/efi-boot.png)
<div align="left">
<img src="./images/efi-boot.png" alt="EFI boot" width="800" />
</div>
::: details Note for Mac Pros/Xserves/iMacs with unflashed GPUs
@@ -27,7 +30,10 @@ Now you'll want to get a list of drive identifiers. To do so, run the following
diskutil list
```
The command should produce a list of drives installed in your system:
![](../images/Unflashed-Boot-1.png)
<div align="left">
<img src="./images/Unflashed-Boot-1.png" alt="Unflashed boot" width="800" />
</div>
Keep track of the drive with the OCLP install. You will need the drive identifer for later.
@@ -37,7 +43,11 @@ Run the following command (Replace X with the drive number):
```sh
diskutil mount diskXs1
```
![](../images/Unflashed-Boot-2.png)
<div align="left">
<img src="./images/Unflashed-Boot-2.png" alt="Unflashed boot 2" width="800" />
</div>
If everything is correct, the EFI partion should be mounted.
Now you'll want to use the `bless` command to set the default boot device:
@@ -45,7 +55,10 @@ Now you'll want to use the `bless` command to set the default boot device:
bless --mount /Volumes/EFI --setBoot --file /Volumes/EFI/System/Library/CoreServices/boot.efi
```
Once the command is run, it should produce no output.
![](../images/Unflashed-Boot-3.png)
<div align="left">
<img src="./images/Unflashed-Boot-3.png" alt="Unflashed boot 3" width="800" />
</div>
If the command produces an output, ensure that you've typed it in correctly.
@@ -56,15 +69,20 @@ Now that you've loaded OpenCore, "select Install macOS":
* This will be the OpenCore Picker
![](../images/oc-boot.png)
<div align="left">
<img src="./images/oc-boot.png" alt="OpenCore boot" width="800" />
</div>
You will soon reach the installer screen! If you enabled verbose mode when building OCLP, a lot of text will run across the screen. From there, it's just like any normal macOS install. For an example of how the boot process looks, see the following video:
* [OpenCore Legacy Patcher Boot Process](https://www.youtube.com/watch?v=AN3zsbQV_n4)
If your Mac is looping back into the beginning of the setup after the first reboot, turn it off, start it again and hold `Option`. This time, select the option with a grey hard disk icon, it can say "macOS Installer" or the name you gave the disk during the installer process. Keep repeating this step after every reboot if necessary.
If your Mac is looping back into the beginning of the setup after the first reboot, turn it off, start it again and hold Option. This time (after choosing `EFI Boot` first) select the option with a grey hard disk icon in the OpenCore picker. It can either say `macOS Installer` or the name you gave the disk during the installer process. Keep repeating this step after every reboot if necessary.
![](../images/oclp-stuck-firstreboot.png)
<div align="left">
<img src="./images/oclp-stuck-firstreboot.png" alt="Stuck on first reboot" width="800" />
</div>
::: warning
@@ -73,5 +91,18 @@ If your Mac is looping back into the beginning of the setup after the first rebo
:::
::: warning
**T1 Macs**: When installing macOS Sonoma or newer on a T1 system, full disk wipe will remove T1 functionality (touchbar etc). Therefore when installing, only wipe the volume containing the operating system.
<div align="left">
<img src="./images/wipe-volume.png" alt="WipeVolume" width="800" />
</div>
[More info here](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#no-t1-functionality-after-installing-sonoma-or-newer)
:::
# Once installed and booting, head to [Post-Installation](./POST-INSTALL.md)

View File

@@ -6,20 +6,25 @@ If you haven't downloaded OpenCore Patcher yet, do so now:
* [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
Next, run the `OpenCore-Patcher.app`:
Next, run the `OpenCore-Patcher.app`
![](../images/OCLP-GUI-Main-Menu.png)
Here we'll select Build and Install OpenCore and start building:
<div align="left">
<img src="./images/OCLP-GUI-Main-Menu.png" alt="OCLP GUI Main Menu" width="700" />
</div>
::: warning
OpenCore configurations are hardware specific.
If you're building OpenCore for a different model than you're currently running, it is absolutely necessary to select the proper model from Settings.
:::
Here we'll select Build and Install OpenCore and start building:
| Start Building | Finished Building |
| :--- | :--- |
| ![](../images/OCLP-GUI-Build-Start.png) | ![OCLP GUI Build Finished](../images/OCLP-GUI-Build-Finished.png) |
| <img src="./images/OCLP-GUI-Build-Start.png" alt="Build start" width="600" /> | <img src="./images/OCLP-GUI-Build-Finished.png" alt="Build finished" width="600" /> |
Once it finishes building, you'll want to select the Install OpenCore button:
@@ -28,6 +33,8 @@ Once it finishes building, you'll want to select the Install OpenCore button:
| Select Drive | Select Partition |
| :--- | :--- |
| ![](../images/OCLP-GUI-EFI-Select-Disk.png) | ![](../images/OCLP-GUI-EFI-Select-Partition.png) |
| <img src="./images/OCLP-GUI-EFI-Select-Disk.png" alt="Select disk" width="600" /> | <img src="./images/OCLP-GUI-EFI-Select-Partition.png" alt="Select partition" width="600" /> |
# Once finished, head to [Booting OpenCore and macOS](./BOOT.md)

View File

@@ -10,7 +10,10 @@ The easiest way to debug yourself is via Patcher Settings. Here there are many d
* "Enable OpenCore DEBUG"
* "Enable Kext DEBUG"
![](../images/ocdebugimage.png)
<div align="left">
<img src="./images/ocdebugimage.png" alt="OCLP debug" width="600" />
</div>
When you've enabled these 3 options, rebuild OpenCore and install to your drive. This will provide much greater debug information as well as write logs to the EFI Partition.
@@ -18,11 +21,15 @@ When you've enabled these 3 options, rebuild OpenCore and install to your drive.
With "Enable OpenCore DEBUG" set, on every boot there will be a .txt file generated on the EFI Partition. To grab these logs, [download and run MountEFI](https://github.com/corpnewt/MountEFI):
![](../images/mountefi.png)
<div align="left">
<img src="./images/mountefi.png" alt="Mount EFI" width="600" />
</div>
Once you've mounted the EFI Partition of the drive you have macOS on, you should see some nice logs:
![](../images/logs-efi.png)
<div align="left">
<img src="./images/logs-efi.png" alt="Mount EFI" width="800" />
</div>
## Obtaining Kernel logs from macOS

View File

@@ -1,18 +1,7 @@
# Supporting the patcher
OpenCore Legacy Patcher is a hobby project for us developers, and while we love helping out the community, it's very difficult for us to troubleshoot issues remotely. The best way for us to get to work on the patcher, fix issues and add enhancements is having the hardware in-hand. As a hobby project, neither of the main developers can afford to buy every legacy Mac to test on.
We have opened OpenCollective in order to manage donations as well as be transparent about where the donated money is going. If you want to support the patcher with money donation, you can do so below.
The best way to support us in all honesty is to donate any old hardware you no longer need, as this allows us to have machines to test locally and push fixes much faster. While we appreciate cash donations, this makes it much more difficult for us to handle as an organization.
[OpenCollective](https://opencollective.com/opencore-legacy-patcher)
Main sections of help we'd appreciate:
* Donating any Mac you own
* Does require SSE4,1 CPU to test on Sierra and newer however
Additionally, hardware info dumps are greatly beneficial for us to determine what patches a machine might need:
* [IORegistryExplorer](https://github.com/khronokernel/IORegistryClone/blob/master/ioreg-210.zip?raw=true)
* `File -> SaveAs` and open an issue on Github
* Note: We want IOReg dumps of hardware not running on OpenCore, instead running a clean, officially supported OS by the machine
If you have any legacy hardware you're willing to donate or want to buy us hardware, please reach out on our Discord server.
If you wish, you can also donate legacy hardware you don't need anymore as long as it makes sense logistically. In this case, reach out on the Discord server.

148
docs/FAQ.md Normal file
View File

@@ -0,0 +1,148 @@
# FAQ
* [Application requirements](#application-requirements)
* [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)
* [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)
* [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)
* [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)
* [Where is Apple Intelligence?](#where-is-apple-intelligence)
## 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.
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.
## 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"?
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 case of issues, delete the file and restart the application to revert the GUI to default settings, then rebuild OpenCore with newly configured settings.
::: 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.
:::
## Can I use the same USB install media as a universal installer?
OpenCore configurations are device specific, due to different quirks needed for different systems. If you are building OpenCore for a different system that you're running, you will have to select the targeted model from Settings before building OpenCore on the USB media.
When building OpenCore on a different system, OCLP cannot be aware of all the hardware installed in the target, meaning safe defaults will be used. However, this may not be the most optimal experience especially with custom hardware. As such it's recommended to rebuild OpenCore **on device** to apply settings that are based on hardware detection, after the OS has been installed.
## 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.
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.
## Can I use automatic updates?
It is extremely recommended to disable automatic updates (even downloading) when using OCLP, as Apple has recently changed the way automatic updates work. You can still manually initiate an update when you're ready to do so. For a related "System version mismatch" error while root patching, refer to [System version mismatch error when root patching](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#system-version-mismatch-error-when-root-patching) for troubleshooting.
### Disabling updates
**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".
## 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.
## Can I downgrade macOS while keeping data?
macOS doesn't allow direct downgrades, as such you will have to wipe the disk in order to revert. Backup your data beforehand either via Time Machine, ASR or some other solution.
## Why is my system slow?
This can mean many things. Firstly, newer operating systems are harder to run and can appear more slow.
Additionally if your macOS installation is recent, Spotlight starts creating a full disk index which can cause high CPU load, high temps and general slowness. It's recommended to keep the system running for few hours, once Spotlight has indexed the load will ease. A way to check whether it's caused by Spotlight is to open Activity Monitor, choosing "All Processes" from the "View" menu item to, then sorting by the CPU value to see if a process called ```mds_stores``` is using a lot of CPU resources.
However, if your system is being **really** slow and you have no transparency in Dock and menubar, this typically indicates that root patches are not installed and as such there is no acceleration. Make sure to install root patches to get proper drivers and functionality. Refer to [Applying post install volume patches](https://dortania.github.io/OpenCore-Legacy-Patcher/POST-INSTALL.html#applying-post-install-volume-patches) and the [Troubleshooting](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html) section for more information.
Patches can also break if automatic updates are enabled and an update modifies the system volume, refer to [System version mismatch error when root patching](https://dortania.github.io/OpenCore-Legacy-Patcher/TROUBLESHOOTING.html#system-version-mismatch-error-when-root-patching) for more information.
## 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.
GPUs that support Metal are as follows:
* 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)
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.
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.
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.
## 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.
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 | mediaanalysisd |
| :--- | :--- |
| ![FeatureUnlock](./images/OCLP_FeatureUnlock_Setting.png) | ![mediaanalysisd](./images/OCLP_Disable_mediaanalysisd_Setting.png) |
::: details *3802 systems list (click to expand)
* NVIDIA
* Kepler (600-800 series GPUs)
* Intel
* Ivy Bridge (3rd generation, HD 4000 series GPUs)
* Haswell (4th generation, HD/Iris 4000-5000 series GPUs)
These GPUs are typically met in systems from 2012-2015.
:::
## Why isn't iPhone Mirroring working?
iPhone Mirroring requires a T2 chip, which means it will not be available on OCLP patched systems. The connection fails due to failure to establish T2 attestation.
## Where is Apple Intelligence?
Apple Intelligence requires Neural Engine, which is only found in Apple Silicon chips.

View File

@@ -6,4 +6,4 @@ OpenCore Legacy Patcher itself is actually quite a "dumb" program. It essentiall
To understand a bit more of how OpenCore is able to revive older Macs in such a native-like way, we need to go over *how* OpenCore works with your Mac:
![](../images/oc-explained.png)
![](./images/oc-explained.png)

View File

@@ -27,12 +27,12 @@ To generate custom OpenCore icons, you'll need the following:
* ResetNVRAM — Reset NVRAM system action or tool (128x128).
* Shell — Entry with UEFI Shell name for e.g. OpenShell (128x128).
* Tool — Any other tool (128x128).
Note, for each image we recommend having one of double the size. This ensures that icons are scaled correctly since .icns support dedicated images depending on HiDPI or not.
Once you have a custom image you want to use(for example, as a background), download the [latest release of OpenCorePkg](https://github.com/acidanthera/OpenCorePkg/releases) and enter the `Utilities/icnspack/` folder:
![](../images/icnspack-folder.png)
![](./images/icnspack-folder.png)
Now `cd` to this folder in terminal and run the following:
@@ -42,7 +42,7 @@ Now `cd` to this folder in terminal and run the following:
Once done, you'll see your custom icon generated in `icnspack`'s folder:
![](../images/icnspack-done.png)
![](./images/icnspack-done.png)
# Custom Mac Boot Picker icons
@@ -59,15 +59,15 @@ To generate legacy icons, you'll need the following:
Head to [developer.apple's More Downloads page](https://developer.apple.com/download/more/) and search for `Graphics Tools` that is supported by your OS(note for 10.6 and older, the app is hidden inside `Developer Tools`):
![](../images/graphics-download.png)
![](./images/graphics-download.png)
Once downloaded, open the disk image and you'll find Icon Composer.app:
![Graphics Open](../images/graphics-open.png)
![Graphics Open](./images/graphics-open.png)
Now run the app and simply drag the images to each section as so:
![](../images/icon-SL.png)
![](./images/icon-SL.png)
Now save and export the new icns file.
@@ -79,7 +79,7 @@ To install, please ensure that Vault was disabled when you built OpenCore. If yo
Now that you've verified that you can edit OpenCore safely, you'll need to mount the drive that OpenCore is stored on. To do this, download [MountEFI](https://github.com/corpnewt/MountEFI) and run it:
![](../images/mountefi.png)
![](./images/mountefi.png)
Select the drive you installed OpenCore to and mount it.
@@ -90,7 +90,7 @@ Select the drive you installed OpenCore to and mount it.
Head to `EFI/OC/Resources/Image/` on your drive and you'll see all the custom icons. For Background.icns, we need to ensure the file matches the theme OpenCore has set so we add the prefix `Modern` to it:
![](../images/background-moved.png)
![](./images/background-moved.png)
Now reboot and you should see your updated icon(s)!
@@ -98,6 +98,6 @@ Now reboot and you should see your updated icon(s)!
Updating the Mac Boot Picker icons is actually quite simple. On the root of your drive, simply drop the icon into the root of the drive with the name `.VolumeIcon.icns`
![](../images/mac-icns-drive.png)
![](./images/mac-icns-drive.png)
Now reboot and you'll see the new icon!

View File

@@ -1,51 +1,41 @@
# Download and build macOS Installers
# Creating macOS Installers
This document is centered around downloading and writing the macOS installer to a USB drive. If you're already familiar with how to do this, you can skip this section.
* Note: 16GB+ USB drive will be required for the installer
* 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.
## Creating the installer
## Downloading the installer
With OpenCore Legacy Patcher, our new GUI includes a download menu for macOS installers. So to start off, you'll want to grab our app:
To start off, you'll want to grab the app:
* [OpenCore Legacy Patcher Release Apps](https://github.com/dortania/OpenCore-Legacy-Patcher/releases)
For this guide, we'll be using the standard OpenCore-Patcher (GUI).
Once downloaded, open the app and you should be greeted by the main menu.
Once downloaded, open the app and you should be greeted by this menu:
First, we'll want to select the "Create macOS Installer" button. This will present you with 2 options.
![OCLP GUI Main Menu](../images/OCLP-GUI-Main-Menu.png)
For this example, we'll assume you'll need an installer. Select the "Download macOS installer" to get you a list of installers. Click to download the version you want.
First, we'll want to select the "Create macOS Installer" button. This will present you with 2 options:
| Main menu | Installer creation menu | Available installers |
| :--- | :--- | --- |
| ![OCLP GUI Main Menu](./images/OCLP-GUI-Main-Menu.png) | ![OCLP GUI Installer Create Installer Menu](./images/OCLP-GUI-Create-Installer-Menu.png) | ![OCLP GUI Installer Download Listed Products](./images/OCLP-GUI-Installer-Download-Listed-Products.png) |
![](../images/OCLP-GUI-Create-Installer-Menu.png)
For this example, we'll assume you'll need an installer. Selecting this option will download Apple's Installer Catalogs and build a list for you to choose:
## Creating the installer
| Downloading | Listed Installers | Unsupported Installer |
| :--- | :--- | :--- |
| ![OCLP GUI Installer Download Catalog](../images/OCLP-GUI-Installer-Download-Catalog.png) | ![OCLP GUI Installer Download Listed Products](../images/OCLP-GUI-Installer-Download-Listed-Products.png) | ![](../images/OCLP-GUI-Installer-Download-Unsupported.png)
Since the patcher officially supports Big Sur and newer for patching, only those entires will be shown. For ourselves, we'll select macOS 12 as that's the latest public release at the time of writing. This will download and install the macOS installer to your applications folder.
* Note that some machines (namely 2012 and older) may not be currently supported on macOS Ventura. If you see this prompt, you'll need to use an older version of macOS.
| Downloading the Installer | Requesting to install | Finished Installing |
| :--- | :--- | :--- |
| ![OCLP GUI Installer Download Progress](../images/OCLP-GUI-Installer-Download-Progress.png) | ![OCLP GUI Installer Needs Installing](../images/OCLP-GUI-Installer-Needs-Installing.png) | ![OCLP GUI Installer Download Finished](../images/OCLP-GUI-Installer-Download-Finished.png) |
Once finished, you can proceed to write the installer onto a USB drive.
Once the download is finished, you can proceed to write the installer onto a USB drive.
* Note: The entire USB drive will be formatted
| Select Downloaded Installer | Select disk to format |
| :--- | :--- |
| ![](../images/OCLP-GUI-Installer-Select-Local-Installer.png) | ![](../images/OCLP-GUI-Installer-Format-USB.png) |
| <img src="./images/OCLP-GUI-Installer-Select-Local-Installer.png" alt="Select local installer" width="600" /> | <img src="./images/OCLP-GUI-Installer-Format-USB.png" alt="Select disk to format" width="600" /> |
Now the patcher will start the installer flashing!
| Flashing | Success Prompt | Finished Flashing |
| :--- | :--- |
| ![](../images/OCLP-GUI-Installer-Flashing-Process.png) | ![](../images/OCLP-GUI-Installer-Sucess-Prompt.png) | ![](../images/OCLP-GUI-Installer-Finished-Script.png) |
| :--- | :--- | :--- |
| ![](./images/OCLP-GUI-Installer-Flashing-Process.png) | ![](./images/OCLP-GUI-Installer-Sucess-Prompt.png) | ![](./images/OCLP-GUI-Installer-Finished-Script.png) |
# Once finished, head to [Building and installing OpenCore](./BUILD.md)

View File

@@ -1,13 +1,17 @@
# Supported Models
Any hardware supporting SSE4.1 CPU and 64-Bit firmware work on this patcher. To check your hardware model, run the following command on the applicable machine in the terminal:
Any Intel-based Mac listed below can install and make use of OpenCore Legacy Patcher. To check your hardware model, open System Information and look for the `Model Identifier` key.
* This applies even if Apple supports the model natively.
* OpenCore Legacy Patcher does not support PowerPC- or Apple Silicon-based Macs.
* If your model is not listed below, it is not supported by this patcher.
```bash
system_profiler SPHardwareDataType | grep 'Model Identifier'
```
::: warning Note
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.
:::
The below table will list all supported and unsupported functions of the patcher currently:
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)
* [MacBook Air](#macbook-air)
* [MacBook Pro](#macbook-pro)
@@ -16,146 +20,130 @@ The below table will list all supported and unsupported functions of the patcher
* [Mac Pro](#mac-pro)
* [Xserve](#xserve)
Regarding OS support, see below:
| Support Entry | Supported OSes | Description | Comment |
| :--- | :--- | :--- | :--- |
| HostOS | macOS 10.10 - macOS 13 | Refers to OSes where running OpenCore-Patcher.app are supported | Users running 10.9 or older are advised to upgrade to a newer operating system before using OCLP. |
| TargetOS | macOS 11 - macOS 13 | Refers to OSes that can be patched to run with OpenCore | May support 10.4 and newer (in a potentially broken state). No support provided. |
* macOS Ventura installer creation requires 10.11 or later
### MacBook
| SMBIOS | Year | Supported | Comment |
| :--- | :--- | :--- | :--- |
| MacBook1,1 | Mid 2006 | <span style="color:red"> NO </span> | 32-Bit CPU limitation |
| MacBook2,1 | Late 2006 | ^^ | 32-Bit Firmware limitation |
| MacBook3,1 | Late 2007 | ^^ | ^^ |
| MacBook4,1 | Early 2008 | ^^ | - No GPU Acceleration in Mavericks and newer<br/>- No Keyboard and Trackpad<br/>- No USB |
| MacBook5,1 | Late 2008 | <span style="color:#30BCD5"> YES </span> | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| MacBook5,2 | Early 2009, Mid 2009 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))<br/> - Trackpad gestures are partially broken |
| MacBook6,1 | Late 2009 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)) |
| MacBook7,1 | Mid 2010 | ^^ | ^^ |
| MacBook8,1 | Mid 2015 | ^^ | <span style="color:green"> Everything is supported</span> |
| MacBook9,1 | Early 2016 | ^^ | ^^ |
| Model Name | Identifier | Additional info |
| :--- | :--- | :--- |
| MacBook (13-inch, Aluminum, Late 2008) | `MacBook5,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)|
| MacBook (13-inch, Early 2009)<br>MacBook (13-inch, Mid 2009) | `MacBook5,2` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)<br>- Trackpad gestures are partially broken |
| MacBook (13-inch, Late 2009) | `MacBook6,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
| MacBook (13-inch, Mid 2010) | `MacBook7,1` | ^^ |
| MacBook (Retina, 12-inch, Early 2015) | `MacBook8,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
| MacBook (Retina, 12-inch, Early 2016) | `MacBook9,1` | ^^ |
| MacBook (Retina, 12-inch, 2017) | `MacBook10,1` | - Native graphics support |
### MacBook Air
| SMBIOS | Year | Supported | Comment |
| :--- | :--- | :--- | :--- |
| MacBookAir1,1 | Early 2008 | <span style="color:red"> NO </span> | Requires SSE4.1 CPU |
| MacBookAir2,1 | Late 2008 | <span style="color:#30BCD5"> YES </span> | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| MacBookAir3,1 | Late 2010 | ^^ | ^^ |
| MacBookAir3,2 | ^^ | ^^ | ^^ |
| MacBookAir4,1 | Mid 2011 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
| MacBookAir4,2 | ^^ | ^^ | ^^ |
| MacBookAir5,1 | Mid 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
| MacBookAir5,2 | ^^ | ^^ | ^^ |
| MacBookAir6,1 | Mid 2013, Early 2014 | ^^ | ^^ |
| MacBookAir6,2 | ^^ | ^^ | ^^ |
| MacBookAir7,1 | Early 2015, 2017 | ^^ | ^^ |
| MacBookAir7,2 | ^^ | ^^ | ^^ |
| Model Name | Identifier | Additional info |
| :--- | :--- | :--- |
| MacBook Air (13-inch, Late 2008)<br>MacBook Air (13-inch, Mid 2009) | `MacBookAir2,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)|
| MacBook Air (11-inch, Late 2010) | `MacBookAir3,1` | ^^ |
| MacBook Air (13-inch, Late 2010) | `MacBookAir3,2` | ^^ |
| MacBook Air (11-inch, Mid 2011) | `MacBookAir4,1` | ^^ |
| MacBook Air (13-inch, Mid 2011) | `MacBookAir4,2` | ^^ |
| MacBook Air (11-inch, Mid 2012) | `MacBookAir5,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
| MacBook Air (13-inch, Mid 2012) | `MacBookAir5,2` | ^^ |
| MacBook Air (11-inch, Mid 2013)<br>MacBook Air (11-inch, Early 2014) | `MacBookAir6,1` | ^^ |
| 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, 2019) | `MacBookAir8,2` | ^^ |
| MacBook Air (Retina, 13-inch, 2020) | `MacBookAir9,1` | Supported by Apple |
### MacBook Pro
| SMBIOS | Year | Supported | Comment |
| :--- | :--- | :--- | :--- |
| MacBookPro1,1 | Early 2006 | <span style="color:red"> NO </span> | 32-Bit CPU limitation |
| MacBookPro1,2 | ^^ | ^^ | ^^ |
| MacBookPro2,1 | Late 2006 | ^^ | 32-Bit Firmware limitation |
| MacBookPro2,2 | Late 2006 | ^^ | ^^ |
| MacBookPro3,1 | Mid 2007 | ^^ | Requires SSE4.1 CPU |
| MacBookPro4,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| MacBookPro5,1 | Late 2008 | ^^ | ^^ |
| MacBookPro5,2 | Early 2009 | ^^ | ^^ |
| MacBookPro5,3 | Mid 2009 | ^^ | ^^ |
| MacBookPro5,4 | ^^ | ^^ | ^^ |
| MacBookPro5,5 | ^^ | ^^ | ^^ |
| MacBookPro6,1 | Mid 2010 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
| MacBookPro6,2 | ^^ | ^^ | ^^ |
| MacBookPro7,1 | ^^ | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| MacBookPro8,1 | Early 2011 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
| MacBookPro8,2 | ^^ | ^^ | ^^ |
| MacBookPro8,3 | ^^ | ^^ | ^^ |
| MacBookPro9,1 | Mid 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
| MacBookPro9,2 | ^^ | ^^ | ^^ |
| MacBookPro10,1 | Mid 2012, Early 2013 | ^^ | ^^ |
| MacBookPro10,2 | Late 2012, Early 2013 | ^^ | ^^ |
| MacBookPro11,1 | Late 2013, Mid 2014 | ^^ | ^^ |
| MacBookPro11,2 | ^^ | ^^ | ^^ |
| MacBookPro11,3 | ^^ | ^^ | ^^ |
| MacBookPro11,4 | Mid 2015 | ^^ | ^^ |
| MacBookPro11,5 | ^^ | ^^ | ^^ |
| MacBookPro12,1 | Early 2015 | ^^ | ^^ |
| MacBookPro13,1 | Late 2016 | ^^ | ^^ |
| MacBookPro13,2 | ^^ | ^^ | ^^ |
| MacBookPro13,3 | ^^ | ^^ | ^^ |
| Model Name | Identifier | Additional info |
| :--- | :--- | :--- |
| MacBook Pro (15-inch, Early 2008)<br>MacBook Pro (17-inch, Early 2008) | `MacBookPro4,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)|
| MacBook Pro (15-inch, Late 2008)<br>MacBook Pro (15-inch, Early 2009) | `MacBookPro5,1` | ^^ |
| MacBook Pro (17-inch, Early 2009)<br>MacBook Pro (17-inch, Mid 2009) | `MacBookPro5,2` | ^^ |
| MacBook Pro (15-inch, Mid 2009) | `MacBookPro5,3`<br>`MacBookPro5,4` | ^^ |
| MacBook Pro (13-inch, Mid 2009) | `MacBookPro5,5` | ^^ |
| MacBook Pro (17-inch, Mid 2010) | `MacBookPro6,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) |
| MacBook Pro (15-inch, Mid 2010) | `MacBookPro6,2` | ^^ |
| MacBook Pro (13-inch, Mid 2010) | `MacBookPro7,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
| MacBook Pro (13-inch, Early 2011)<br>MacBook Pro (13-inch, Late 2011) | `MacBookPro8,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) |
| MacBook Pro (15-inch, Early 2011)<br>MacBook Pro (15-inch, Late 2011) | `MacBookPro8,2` | ^^ |
| MacBook Pro (17-inch, Early 2011)<br> | `MacBookPro8,3` | ^^ |
| MacBook Pro (15-inch, Mid 2012) | `MacBookPro9,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
| MacBook Pro (13-inch, Mid 2012) | `MacBookPro9,2` | ^^ |
| MacBook Pro (Retina, 15-inch, Mid 2012)<br>MacBook Pro (Retina, 15-inch, Early 2013) | `MacBookPro10,1` | ^^ |
| MacBook Pro (Retina, 13-inch, Late 2012)<br>MacBook Pro (Retina, 13-inch, Early 2013) | `MacBookPro10,2` | ^^ |
| MacBook Pro (Retina, 13-inch, Late 2013)<br>MacBook Pro (Retina, 13-inch, Mid 2014) | `MacBookPro11,1` | ^^ |
| MacBook Pro (Retina, 15-inch, Late 2013)<br>MacBook Pro (Retina, 15-inch, Mid 2014) | `MacBookPro11,2`<br>`MacBookPro11,3` | ^^ |
| MacBook Pro (Retina, 15-inch, Mid 2015) | `MacBookPro11,4`<br>`MacBookPro11,5` | ^^ |
| MacBook Pro (Retina, 13-inch, Early 2015) | `MacBookPro12,1` | ^^ |
| MacBook Pro (13-inch, 2016, 2 Thunderbolt 3 ports) | `MacBookPro13,1` | ^^ |
| MacBook Pro (13-inch, 2016, 4 Thunderbolt 3 ports) | `MacBookPro13,2` | ^^ |
| MacBook Pro (15-inch, 2016) | `MacBookPro13,3` | ^^ |
| MacBook Pro (13-inch, 2017, 2 Thunderbolt 3 ports) | `MacBookPro14,1` | - Native graphics support |
| 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 (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` | ^^ |
| MacBook Pro (13-inch, 2020, 2 Thunderbolt 3 ports) | `MacBookPro16,3` | ^^ |
### Mac mini
| SMBIOS | Year | Supported | Comment |
| :--- | :--- | :--- | :--- |
| Macmini1,1 | Early 2006 | <span style="color:red"> NO </span> | 32-Bit CPU limitation |
| Macmini2,1 | Mid 2007 | ^^ | 32-Bit Firmware limitation |
| Macmini3,1 | Early 2009 | <span style="color:#30BCD5"> YES </span> | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| Macmini4,1 | Mid 2010 | ^^ | ^^ |
| Macmini5,1 | Mid 2011 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
| Macmini5,2 | ^^ | ^^ | ^^ |
| Macmini5,3 | ^^ | ^^ | ^^ |
| Macmini6,1 | Late 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
| Macmini6,2 | ^^ | ^^ | ^^ |
| Macmini7,1 | Mid 2014 | ^^ | ^^ |
| Model Name | Identifier | Additional info |
| :--- | :--- | :--- |
| Mac mini (Early 2009) | `Macmini3,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
| Mac mini (Mid 2010) | `Macmini4,1` | ^^ |
| Mac mini (Mid 2011) | `Macmini5,1`<br>`Macmini5,2`<br>`Macmini5,3` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) |
| Mac mini (Late 2012) | `Macmini6,1`<br>`Macmini6,2` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
| Mac mini (Late 2014) | `Macmini7,1` | ^^ |
| Mac mini (Late 2018) | `Macmini8,1` | - Supported by Apple |
### iMac
| SMBIOS | Year | Supported | Comment |
| :--- | :--- | :--- | :--- |
| iMac4,1 | Early 2006 | <span style="color:red"> NO </span> | 32-Bit CPU limitation |
| iMac4,2 | Mid 2006 | ^^ | ^^ |
| iMac5,1 | Late 2006 | ^^ | 32-Bit Firmware limitation |
| iMac5,2 | ^^ | ^^ | ^^ |
| iMac6,1 | ^^ | ^^ | ^^ |
| iMac7,1 | Mid 2007 | <span style="color:#30BCD5"> YES </span> | - Requires an [SSE4.1 CPU Upgrade](https://lowendmac.com/2018/penryn-t9300-9500-cpu-upgrades-for-the-2007-imac/)<br/>- GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- Stock Bluetooth 2.0 card non-functional<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| iMac8,1 | Early 2008 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| iMac9,1 | Early 2009 | ^^ | ^^ |
| iMac10,1 | Late 2009 | ^^ | - GPU is socketed, [recommend upgrading to Metal GPU](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/?post=17425857#post-17425857) <br/>- GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)) <br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| iMac11,1 | ^^ | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
| iMac11,2 | Mid 2010 | ^^ | ^^ |
| iMac11,3 | ^^ | ^^ | ^^ |
| iMac12,1 | Mid 2011 | ^^ | ^^ |
| iMac12,2 | ^^ | ^^ | ^^ |
| iMac13,1 | Late 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
| iMac13,2 | ^^ | ^^ | ^^ |
| iMac13,3 | ^^ | ^^ | ^^ |
| iMac14,1 | Late 2013 | ^^ | ^^ |
| iMac14,2 | ^^ | ^^ | ^^ |
| iMac14,3 | ^^ | ^^ | ^^ |
| iMac14,4 | Mid 2014 | ^^ | ^^ |
| iMac15,1 | Late 2014, Mid 2015 | ^^ | ^^ |
| iMac16,1 | Late 2014, Mid 2015 | ^^ | ^^ |
| iMac16,2 | Late 2014, Mid 2015 | ^^ | ^^ |
| iMac17,1 | Late 2015, Early 2016 | ^^ | ^^ |
* For iMac10,1 through iMac12,x, we highly recommend users upgrade the GPU to a Metal supported model. See here for more information: [iMac late 2009 to mid-2011 Graphics Card Upgrade Guide](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/?post=17425857#post-17425857)
| Model Name | Identifier | Additional info |
| :--- | :--- | :--- |
| iMac (20-inch, Mid 2007)<br>iMac (24-inch, Mid 2007) | `iMac7,1` | - [Requires SSE4.1 CPU](https://lowendmac.com/2018/penryn-t9300-9500-cpu-upgrades-for-the-2007-imac/)<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)<br>- Remove stock Bluetooth to prevent panics |
| iMac (20-inch, Early 2008)<br>iMac (24-inch, Early 2008) | `iMac8,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
| iMac (20-inch, Early 2009)<br>iMac (24-inch, Early 2009)<br>iMac (20-inch, Mid 2009) | `iMac9,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)<br>- [Recommend upgrading to Metal GPU](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/?post=17425857#post-17425857) |
| iMac (21.5-inch, Late 2009)<br>iMac (27-inch, Late 2009)| `iMac10,1` | ^^ |
| iMac (27-inch, Late 2009) | `iMac11,1` | ^^ |
| iMac (21.5-inch, Mid 2010) | `iMac11,2` | ^^ |
| iMac (27-inch, Mid 2010) | `iMac11,3` | ^^ |
| iMac (21.5-inch, Mid 2011)<br>iMac (21.5-inch, Late 2011) | `iMac12,1` | ^^ |
| iMac (27-inch, Mid 2011) | `iMac12,2` | ^^ |
| iMac (21.5-inch, Late 2012) | `iMac13,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
| iMac (27-inch, Late 2012) | `iMac13,2` | ^^ |
| iMac (21.5-inch, Early 2013) | `iMac13,3` | ^^ |
| iMac (21.5-inch, Late 2013) | `iMac14,1` | ^^ |
| iMac (27-inch, Late 2013) | `iMac14,2`<br>`iMac14,3` | ^^ |
| iMac (21.5-inch, Mid 2014) | `iMac14,4` | ^^ |
| iMac (Retina 5K, 27-inch, Late 2014)<br>iMac (Retina 5K, 27-inch, Mid 2015) | `iMac15,1` | ^^ |
| iMac (21.5-inch, Late 2015) | `iMac16,1` | ^^ |
| iMac (Retina 4K, 21.5-inch, Late 2015) | `iMac16,2` | ^^ |
| iMac (Retina 5K, 27-inch, Late 2015) | `iMac17,1` | ^^ |
| iMac (21.5-inch, 2017) | `iMac18,1` | - Native graphics support |
| iMac (Retina 4K, 21.5-inch, 2017) | `iMac18,2` | ^^ |
| iMac (Retina 5K, 27-inch, 2017) | `iMac18,3` | ^^ |
| iMac (Retina 5K, 27-inch, 2019) | `iMac19,1` | - Supported by Apple |
| iMac (Retina 4K, 21.5-inch, 2019) | `iMac19,2` | ^^ |
| iMac (Retina 5K, 27-inch, 2020) | `iMac20,1`<br>`iMac20,2` | ^^ |
| iMac Pro (2017) | `iMacPro1,1` | ^^ |
### Mac Pro
| SMBIOS | Year | Supported | Comment |
| :--- | :--- | :--- | :--- |
| MacPro1,1 | Mid 2006 | <span style="color:red"> NO </span> | 32-Bit Firmware limitation |
| MacPro2,1 | Mid 2007 | ^^ | ^^ |
| MacPro3,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)) <br/>- Potential boot issues with stock Bluetooth card, recommend removing to avoid kernel panics |
| MacPro4,1 | Early 2009 | ^^ | - Everything is supported as long as GPU is Metal capable <br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| MacPro5,1 | Mid 2010, Mid 2012 | ^^ | ^^ |
| MacPro6,1 | Late 2013 | ^^ | - DRM support is flaky |
| Model Name | Identifier | Additional info |
| :--- | :--- | :--- |
| Mac Pro (Early 2008) | `MacPro3,1` | - [Recommend upgrade to Metal GPU](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008)<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)<br>- Remove stock Bluetooth to prevent panics |
| Mac Pro (Early 2009) | `MacPro4,1` | - [Recommend upgrade to Metal GPU](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008)<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
| Mac Pro (Mid 2010)<br>Mac Pro (Mid 2012) | `MacPro5,1` | ^^ |
| Mac Pro (Late 2013) | `MacPro6,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
| Mac Pro (2019) | `MacPro7,1` | - Supported by Apple |
### Xserve
| SMBIOS | Year | Supported | Comment |
| :--- | :--- | :--- | :--- |
| Xserve1,1 | Mid 2006 | <span style="color:red"> NO </span> | 32-Bit Firmware limitation |
| Xserve2,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - Everything is supported as long as GPU is Metal capable <br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
| Xserve3,1 | Early 2009 | ^^ | ^^ |
| Model Name | Identifier | Additional info |
| :--- | :--- | :--- |
| Xserve (Early 2008) | `Xserve2,1` | - Recommend upgrade to Metal GPU<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)
| Xserve (Early 2009) | `Xserve3,1` | ^^ |
# Once you've verified your hardware is supported, head to [Download and build macOS Installers](./INSTALLER.md)

View File

@@ -1,4 +1,6 @@
![](../images/macos-monterey.png)
# macOS Monterey
![](./images/macos-monterey.png)
With OpenCore Legacy Patcher v0.1.7 and newer, we've implemented beta macOS Monterey support for users. Please note that Apple has dropped a lot of hardware with this release as well as broken many of our previous patch sets. This page will be used to inform users regarding current issues and will be updated as new patch sets are developed and added to our patcher.

View File

@@ -2,6 +2,7 @@
* [Booting without USB drive](#booting-without-usb-drive)
* [Booting seamlessly without Boot Picker](#booting-seamlessly-without-boot-picker)
* [SIP settings](#sip-settings)
* [Applying Post Install Volume Patches](#applying-post-install-volume-patches)
## Booting without USB drive
@@ -20,25 +21,55 @@ And voila! No more USB drive required.
To do this, run the OpenCore Patcher and head to Patcher Settings, then uncheck "Show OpenCore Bootpicker" on the Build tab:
![](../images/OCLP-GUI-Settings-ShowPicker.png)
<div align="left">
<img src="./images/OCLP-GUI-Settings-ShowPicker.png" alt="GUI Settings ShowPicker" width="600" />
</div>
Once you've toggled it off, build your OpenCore EFI once again and install to your desired drive. Now to show the OpenCore selector, you can simply hold down the "ESC" key while clicking on EFI boot, and then you can release the "ESC" key when you see the cursor arrow at the top left.
## Enabling SIP
## SIP settings
For many users, SIP will be lowered by default on build. For Intel HD 4000 users, you may have noticed that SIP is partially disabled. This is to ensure full compatibility with macOS Monterey and allow seamless booting between it and older OSes. However for users who do not plan to boot Monterey, you can re-enable under Patcher Settings.
SIP, or System Integrity Protection, needs to be lowered on systems where root patching is required to patch data on disk. This will vary between OS versions and the model in question.
Note: Machines running macOS Ventura or systems with non-Metal GPUs cannot enable SIP outright, due to having a patched root volume. Enabling it will brick the installation.
Going forward with 0.6.6, SIP settings can be accessed from the Security tab shown in the images.
| 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) |
OCLP by default will determine the proper SIP options for the OS version and Mac model, in most cases the user has no need to touch these settings.
:::warning
If you're unsure whether you should enable SIP, leave it as-is. Systems where you have already ran the Post Install Root Patching cannot enable SIP without potentially breaking the current install.
If you're unsure whether you should change the SIP settings, leave them as-is. Systems where you have already ran the Post Install Root Patching cannot enable SIP without potentially breaking the current install.
:::
| SIP Enabled | SIP Lowered (OCLP default) | SIP Disabled |
| :--- | :--- | :--- |
| ![](./images/OCLP-GUI-Settings-SIP-Enabled.png) | ![](./images/OCLP-GUI-Settings-SIP-Root-Patch.png) | ![](./images/OCLP-GUI-Settings-SIP-Disabled.png) |
The guide in the dropdown below explains how the SIP settings work in OCLP, where lowered SIP is needed and where full SIP could be enabled.
::: details Configuring SIP manually (click to expand)
SIP settings can be accessed from the Security tab shown in the images. To change SIP settings, make the changes here, return in main menu and rebuild OpenCore using the first option.
In the cases where SIP can be enabled, manually enabling it is needed.
Easiest way to check whether you can fully enable SIP is the "Post Install Root Patch" section, if that section tells your system doesn't need patches (or you don't install the patches e.g. in case you don't need WiFi on a Mac Pro with upgraded GPU running Monterey) then it is safe to assume full SIP can be enabled.
**Ventura and newer**
All unsupported systems require lowered SIP.
**Monterey**
Majority of unsupported systems from 2013 onward can enable full SIP.
Pre-2012 systems, also known as "non-Metal", as well as NVIDIA Kepler and Intel HD 4000 GPUs require lowered SIP. Mac Pros also require lowered SIP for stock WiFi cards and stock GPUs (due to root patching) but if you do not need WiFi (or you plan to upgrade it) and you're running on an upgraded GPU, there is no need for root patching and as such SIP can be fully enabled.
**Big Sur**
All Metal capable systems from 2012 onward (incl. NVIDIA Kepler and Intel HD 4000) as well as Mac Pros with upgraded GPU can run with full SIP enabled.
Non-Metal systems still require lowered SIP.
:::
@@ -50,9 +81,19 @@ OCLP will automatically root patch your system during a first time install **if
Users can also see whether applicable patches have been installed, date and version the system was root patched with in the Post-Install Menu.
:::warning
If you need to use Migration Assistant to bring over data to your new macOS install, it is **highly recommended** to avoid restoring from inside Setup Assistant and waiting to install root patches until after the transfer is complete. If root patches were automatically installed, you can use the options available in the OCLP app to remove them.
Using Migration Assistant while patches are installed can lead to an unbootable system, requiring a reinstall of macOS.
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)
:::
| Automatic install prompt | Status |
| :--- | :--- |
| ![](../images/OCLP-GUI-root-patch-update.png) | ![](../images/OCLP-GUI-Root-Patch-Status.png) |
| ![](./images/OCLP-GUI-root-patch-update.png) | ![](./images/OCLP-GUI-Root-Patch-Status.png) |
@@ -60,11 +101,27 @@ Users can also see whether applicable patches have been installed, date and vers
If you're using OCLP v0.4.3 or earlier, or need to run the patcher manually, you can do so with the app. There is no harm in trying to run the Patcher, as without compatible hardware, nothing will be done. You can see below on whether your hardware needs root volume patching or not.
There is also an option to remove root patches, which may be required in some situations, such as switching GPUs in Mac Pros or using Migration Assistant.
| Listing Patches | Patching Finished |
| :--- | :--- |
| ![](../images/OCLP-GUI-Root-Patch.png) | ![](../images/OCLP-GUI-Root-Patch-Finished.png) |
| ![](./images/OCLP-GUI-Root-Patch.png) | ![](./images/OCLP-GUI-Root-Patch-Finished.png) |
:::warning
With macOS Sequoia, MetallibSupportPkg is required to be downloaded for all 3802 systems. OCLP will handle this as long as you're connected to the internet.
Such systems include:
* NVIDIA
* Kepler (GTX 600 - 700 series)
* Intel
* Ivy Bridge (HD 4000 series)
* Haswell (Iris/HD 4000-5000 series)
:::
:::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:
@@ -82,19 +139,62 @@ Machines that require this are those with AMD Metal dGPUs:
Below entries represent GPUs no longer natively supported, ie. requiring root volume patching with OpenCore Legacy Patcher:
:::details GPUs requiring patching in macOS Big Sur
:::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**
:::details GPUs requiring patching in macOS Monterey
* 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)
@@ -106,6 +206,17 @@ Below entries represent GPUs no longer natively supported, ie. requiring root vo
* 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)
:::
:::details Wireless Cards requiring patching in macOS Monterey
@@ -116,18 +227,3 @@ Below entries represent GPUs no longer natively supported, ie. requiring root vo
* Atheros
:::
:::details GPUs requiring patching in macOS Ventura
* NVIDIA:
* Kepler (600 - 800 series)
* AMD:
* GCN 1-3 (7000 - R9 series)
* Polaris (RX 4xx/5xx series, if CPU lacks AVX2)
* Intel:
* Ivy Bridge (4000 series)
* Haswell (4400, 4600, 5000 series)
* Broadwell (6000 series)
* Skylake (500 series)
:::

19
docs/PROCESS.md Normal file
View File

@@ -0,0 +1,19 @@
# Background process
OpenCore Legacy Patcher utilizes a background process to:
- Check for mismatched configurations and warn the user (e.g. installed MacBookPro11,1 config on MacBookPro11,5)
- Monitor the status of installed Root Patches and OpenCore
- Ask you to install Root Patches in case they aren't detected (typically after an update)
- Check whether OpenCore is being booted from USB drive or internal drive
- Ask you to install OpenCore on the internal disk in case booted from USB
- React to upcoming updates requiring a new KDK to be downloaded, starting KDK download automatically
It is recommended to keep the background process enabled for smoothest functionality. e.g. to try and avoid failed patching when new KDK is not found.
If you decide to disable the background process, the KDK installation for each update has to be done manually. OCLP is also unable to detect Root Patches on boot, meaning manually opening the app and root patching is required.
::: warning Note:
In some cases macOS may report background process being added by "Mykola Grymalyuk", this happens due to a macOS bug where sometimes the developer name who sent the app for notarization is shown instead of the application name.
Dortania cannot do anything about this.
:::

View File

@@ -10,8 +10,8 @@ meta:
content: Experience macOS just like before
features:
- title: Built with security in mind
details: Supporting System Integrity Protection(SIP), FileVault 2, .im4m Secure Boot and Vaulting. For many machines, you're just as secure as a supported Mac.
# - title: Built with security in mind
# details: Supporting System Integrity Protection(SIP), FileVault 2, .im4m Secure Boot and Vaulting. We make an effort to ensure your system is as secure as possible.
- title: Native OTA updates
details: Install updates the moment they come out, with native System Preferences support, just like a supported Mac.
- title: Zero firmware patching
@@ -22,5 +22,5 @@ features:
details: Unlock Sidecar, AirPlay to Mac, Night Shift, and Universal Control, even on natively supported models!
- title: A helpful community
details: Whether it's getting started or learning the specifics, you can always find answers with our amazing community of tinkerers, developers, and dreamers.
footer: Copyright © Dortania 2020-2022
footer: Copyright © Dortania 2020-2024
---

109
docs/SEQUOIA-DROP.md Normal file
View File

@@ -0,0 +1,109 @@
# macOS Sequoia
![](./images/macos-sequoia.png)
Another year, another release.
This time Apple dropped surprisingly few amount of Macs. With the release of OpenCore Legacy Patcher 2.0.0, early support for macOS Sequoia has been implemented.
## Newly dropped hardware
* MacBookAir8,1 : MacBook Air (2018)
* MacBookAir8,2 : MacBook Air (2019)
## 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.
Unfortunately due to T2 related problems, the recently dropped MacBookAir8,x models cannot be supported at this time.
[More information here](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1136)
## Non-functional features
On majority of patched Macs, iPhone Mirroring and Apple Intelligence won't be functional.
iPhone Mirroring requires T2 for attestation and Apple Intelligence requires an NPU only found in Apple Silicon, the patcher is unable to provide a fix for these as they're hardware requirements.
## Issues
* [Dual socket CPUs with Mac Pros and Xserve](#dual-socket-cpus-with-mac-pro-2008-and-xserve-2008)
* [T2 Security chip](#t2-security-chip)
* [USB 1.1 (OHCI/UHCI) Support](#usb-1-1-ohci-uhci-support)
* [Graphics support and issues](#graphics-support-and-issues)
### Dual socket CPUs with Mac Pro 2008 and Xserve 2008
Booting Sequoia on Mac Pro 2008 (MacPro3,1) or Xserve 2008 (Xserve2,1) with more than 4 cores will cause Sequoia to panic. OpenCore Legacy Patcher will automatically disable additional cores.
This is due to the dual socket nature of the machine, and likely some firmware/ACPI table incompatibility.
**If building OpenCore for older OS, this limitation can be disabled in Settings -> Build -> "MacPro3,1/Xserve2,1 Workaround".**
::: warning Note
Dual booting Sequoia and older will not be possible with all cores enabled due to reasons described before. In these cases you will be limited to 4 cores.
:::
### T2 security chip
The current biggest issue we face with supporting the MacBookAir8,x (2018/19) series is the T2 chip's lack of communication when booted through OpenCorePkg.
What happens when one of these units boots through OpenCorePkg is that AppleKeyStore.kext panics due to timeouts with the T2 chip:
```
"AppleKeyStore":3212:0: sks timeout strike 18
"AppleKeyStore":3212:0: sks timeout strike 19
"AppleKeyStore":3212:0: sks timeout strike 20
panic(cpu 0 caller 0xffffff801cd12509): "AppleSEPManager panic for "AppleKeyStore": sks request timeout" @AppleSEPManagerIntel.cpp:809
```
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)
### USB 1.1 (OHCI/UHCI) Support
For Penryn systems, pre-2013 Mac Pros and Xserve, USB 1.1 support was outright removed in macOS Ventura, therefore this applies all the way to Sequoia.
While USB 1.1 may seem unimportant, it handles many important devices on your system. These include:
* Keyboard and Trackpad for laptops
* IR Receivers
* Bluetooth
Users will need to use a USB hub for installation and post-OS updates when patches are cleaned:
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.
* [Legacy Metal](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008)
* [Non-Metal](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)

95
docs/SONOMA-DROP.md Normal file
View File

@@ -0,0 +1,95 @@
# macOS Sonoma
![](./images/sonoma.png)
*Well here we are again, it's always such a pleasure~*
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)
* MacBookPro14,1: MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
* MacBookPro14,2: MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)
* MacBookPro14,3: MacBook Pro (15-inch, 2017)
* iMac18,1: iMac (21.5-inch, 2017)
* iMac18,2: iMac (Retina 4K, 21.5-inch, 2017)
* iMac18,3: iMac (Retina 5K, 27-inch, 2017)
## 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.
## Issues
* [Bluetooth](#bluetooth)
* [T1 Security chip](#t1-security-chip)
* [USB 1.1 (OHCI/UHCI) Support](#usb-1-1-ohci-uhci-support)
* [Graphics support and issues](#graphics-support-and-issues)
### Bluetooth
Sometimes Bluetooth may not work after boot on pre-2012 models. Running NVRAM reset can alleviate it.
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)
Sonoma has removed support for T1 chips found in most 2016 and 2017 Macs. Therefore on these systems, the following will not function:
* Enable or disable FileVault
* Open the Password Settings window
* Add fingerprints (if upgrading, existing fingerprints will be deleted)
* Add cards to Apple Pay
[More information here](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1103)
:::
::: warning
Note that erasing the entire drive will remove the T1 firmware and it won't be reinstalled.
:::
### USB 1.1 (OHCI/UHCI) Support
For Penryn systems, pre-2013 Mac Pros and Xserve, USB 1.1 support was outright removed in macOS Ventura and naturally this continues in Sonoma.
While USB 1.1 may seem unimportant, it handles many important devices on your system. These include:
* Keyboard and Trackpad for laptops
* 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)
### 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.
* [Legacy Metal](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008)
* [Non-Metal](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)

View File

@@ -7,8 +7,6 @@ OpenCore is a sophisticated boot loader used to inject and patch data in memory,
## How do I get started?
1. The first step of ensuring whether your model is supported is by checking the [Supported Models](./MODELS.md) page.
2. [Download and build macOS Installer](./INSTALLER.md)
3. [Run the `OpenCore-Patcher.app`](./BUILD.md)
4. [Reboot and boot OpenCore](./BOOT.md)
1. Read the [FAQ](./FAQ.md) for application requirements and other information.
2. Check that your model is supported from the [Supported Models](./MODELS.md) page.
3. Once you've verified your model is supported, you can jump into the process in [Download and build macOS Installer](./INSTALLER.md)

View File

@@ -1,144 +0,0 @@
# Tested Models on OpenCore Legacy Patcher
To aid users in troubleshooting, we've compiled a list of users who've reported success with OpenCore Legacy Patcher as well as the version used. This should aid users in verifying whether issues with the patcher are regression-related with newer versions.
::: details MacBook
| SMBIOS | Tested | Tester | Model | Version | Comment |
| :--- | :--- | :--- | :--- | :--- | :--- |
| MacBook4,1 | <span style="color:#30BCD5"> YES </span> | Mami | Stock | Unknown | Couldn't install due to broken USB support |
| MacBook5,1 | ^^ | air.man | ^^ | 0.0.19 | N/A |
| MacBook5,2 | ^^ | Finder352 | ^^ | ^^ | ^^ |
| MacBook6,1 | ^^ | Finder352 | ^^ | ^^ | ^^ |
| MacBook7,1 | ^^ | MykolaG | ^^ | ^^ | ^^ |
| ^^ | ^^ | Jazzzny | ^^ | ^^ | ^^ |
| ^^ | ^^ | AlexSakha67 | ^^ | 0.0.20 | ^^ |
| MacBook8,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | ^^ |
:::
::: details MacBook Air
| SMBIOS | Tested | Tester | Model | Version | Comment |
| :--- | :--- | :--- | :--- | :--- | :--- |
| MacBookAir2,1 | <span style="color:#30BCD5"> YES </span> | Bruno | Stock | 0.4.5 | Slow to the point of being unusable. |
| MacBookAir3,1 | ^^ | uvesten | Stock | 0.3.3 | N/A |
| MacBookAir3,2 | ^^ | houser42 | ^^ | Unknown | ^^ |
| MacBookAir4,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | ^^ |
| MacBookAir4,2 | <span style="color:#30BCD5"> YES </span> | bdwilson1907 | Stock | 0.3.1 | Intermittent keyboard backlight |
| MacBookAir5,1 | ^^ | Ausdauersportler | ^^ | 0.0.9 | N/A |
| ^^ | ^^ | webg3 | ^^ | Unknown | ^^ |
| MacBookAir5,2 | ^^ | Bab-droid | ^^ | 0.0.19 | ^^ |
| ^^ | ^^ | K-Hobert | ^^ | Unknown | ^^ |
| ^^ | ^^ | cboukouv | ^^ | 0.0.21 | ^^ |
| MacBookAir6,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | N/A |
| MacBookAir6,2 | ^^ | ^^ | ^^ | ^^ | ^^ |
:::
::: details MacBook Pro
| SMBIOS | Tested | Tester | Model | Version | Comment |
| :--- | :--- | :--- | :--- | :--- | :--- |
| MacBookPro4,1 | <span style="color:#30BCD5"> YES </span> | cboukouv | Stock | 0.0.19 | N/A |
| MacBookPro5,1 | ^^ | GURU_Jasho#5736 | ^^ | 0.0.21 | ^^ |
| MacBookPro5,2 | ^^ | hvds | ^^ | ^^ | ^^ |
| MacBookPro5,3 | ^^ | kommtzeitkonrad | ^^ | 0.0.22 | ^^ |
| MacBookPro5,4 | <span style="color:red"> NO </span> | N/A | N/A | N/A | ^^ |
| MacBookPro5,5 | <span style="color:#30BCD5"> YES </span> | ASentientHedgehog | Stock | - | ^^ |
| ^^ | ^^ | ParaDoX1994 | Stock | 0.4.5 | Camera/Bluetooth not working (connector broken) |
| MacBookPro6,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | N/A |
| MacBookPro6,2 | <span style="color:#30BCD5"> YES </span> | Jakeluke | Stock | Unknown | dGPU broken |
| MacBookPro7,1 | ^^ | fussel132 | ^^ | 0.1.2 | N/A
| ^^ | ^^ | casey1234 | Upgraded | 0.3.3 | Upgraded SSD |
| MacBookPro8,1 | <span style="color:#30BCD5"> YES </span> | AvaQueen | Stock | 0.0.19 | N/A |
| MacBookPro8,1 | ^^ | charly-black | Upgraded | 0.3.1 | Upgraded BCM94331PCIEBT4CAX |
| MacBookPro8,2 | ^^ | air.man | Stock | 0.0.22 | dGPU disabled |
| ^^ | ^^ | cboukouv | ^^ | 0.0.19 | N/A |
| MacBookPro8,3 | ^^ | lulujyc | ^^ | 0.1.4 | dGPU disabled |
| MacBookPro9,1 | <span style="color:#30BCD5"> YES </span>| jbdamiano | Stock | 0.0.19 | N/A |
| ^^ | ^^ | dennes544 | ^^ | ^^ | ^^ |
| ^^ | ^^ | cgrazy | ^^ | ^^ | ^^ |
| ^^ | ^^ | LIPA85 | ^^ | ^^ | ^^ |
| MacBookPro9,2 | <span style="color:#30BCD5"> YES </span> | alexx17xx | ^^ | ^^ | ^^ |
| ^^ | ^^ | Arvxistanx | ^^ | ^^ | ^^ |
| ^^ | ^^ | CyberDroid1 | ^^ | 0.0.16 | ^^ |
| ^^ | ^^ | woefi | Upgraded | 0.0.13 | Upgraded BCM94331CAX |
| ^^ | ^^ | whgmkeller | Stock | 0.0.11 | N/A |
| ^^ | ^^ | vinaypundith | Unknown | 0.0.7 | ^^ |
| ^^ | ^^ | casey1234 | Upgraded | 0.3.3 | Upgraded RAM and SSD |
| ^^ | ^^ | crystall1nedev | Upgraded | 0.4.4 | ^^ |
| MacBookPro10,1 | <span style="color:#30BCD5"> YES </span> | traviswparker | Stock | 0.0.14 | N/A |
| ^^ | ^^ | il-rollino | Upgraded | 0.0.21 | Upgraded BCM94360CSAX |
| MacBookPro10,2 | ^^ | akidone | ^^ | 0.3.0 | ^^ |
| MacBookPro11,1 | <span style="color:#30BCD5"> YES </span> | ParaDoX1994 | Stock | 0.4.4 | N/A |
| MacBookPro11,2 | ^^ | casey1234 | ^^ | 0.3.3 | ^^ |
| MacBookPro11,3 | <span style="color:red"> NO </span> | N/A | N/A | N/A | N/A |
:::
::: details Mac mini
| SMBIOS | Tested | Tester | Model | Version | Comment |
| :--- | :--- | :--- | :--- | :--- | :--- |
| Macmini3,1 | <span style="color:#30BCD5"> YES </span> | ASentientHedgehog | Stock | N/A | N/A |
| Macmini4,1 | <span style="color:#30BCD5"> YES </span> | Towster15#6369 | ^^ | 0.4.4 | Does not have internal SATA cable, booted and installed to SSD over USB 2.0 instead |
| ^^ | ^^ | MykolaG | ^^ | 0.4.5 | SD card reader possibly broken. |
| Macmini5,1 | <span style="color:#30BCD5"> YES </span> | MykolaG | ^^ | 0.4.5 | N/A |
| Macmini5,2 | ^^ | charly-black | ^^ | 0.3.1 | ^^ |
| ^^ | ^^ | MykolaG | ^^ | 0.4.5 | SD card reader possibly broken. |
| Macmini5,3 | <span style="color:red"> NO </span> | N/A | N/A | N/A | N/A |
| Macmini6,1 | <span style="color:#30BCD5"> YES </span> | cicofz | Stock | 0.0.21 | ^^ |
| ^^ | ^^ | Stig124 | ^^ | 0.0.19 | ^^ |
| ^^ | ^^ | mwidjaya | ^^ |0.0.18 | ^^ |
| ^^| ^^ | MykolaG | ^^ | 0.4.5 | ^^ |
| Macmini6,2 | ^^ | Shelbs | ^^ | 0.0.16 | ^^ |
| Macmini7,1 | <span style="color:#30BCD5"> YES </span> | MykolaG | ^^ | 0.4.5 | ^^ |
| Macmini8,1 | ^^ | ^^ | ^^ | 0.4.5 | ^^ |
:::
::: details iMac
| SMBIOS | Tested | Tester | Model | Version | Comment |
| :--- | :--- | :--- | :--- | :--- | :--- |
| iMac7,1 | <span style="color:#30BCD5"> YES </span> | lulujyc | Upgraded | 0.3.1 | Upgraded with BCM94352HMB <br><br> The USB 1.1 controller is unstable on Big Sur+, using USB hubs (forcing USB 2.0) can fix unrecognized keyboard/ mouse. |
| iMac8,1 | <span style="color:#30BCD5"> YES </span> | EduCovas | Stock | 0.0.21 | N/A |
| iMac9,1 | <span style="color:#30BCD5"> YES </span> | Allanrfox | ^^ | ^^ | ^^ |
| ^^ | ^^ | Jakeluke | ^^ | ^^ | ^^ |
| iMac10,1 | <span style="color:#30BCD5"> YES </span> | Ausdauersportler | Upgraded | Unknown | Upgraded with WX4150 |
| iMac11,1 | ^^ | internetzel | ^^ | ^^ | Upgraded RX580 mobile |
| iMac11,2 | ^^ | MykolaG | Stock | 0.0.21 | N/A |
| ^^ | ^^ | iMac-iPad | ^^ | ^^ | ^^ |
| ^^ | ^^ | vinaypundith | Unknown | 0.0.19 | ^^ |
| iMac11,3 | ^^ | Ausdauersportler | Upgraded | 0.0.21 | Upgraded with Polaris GPU and BCM943602CDP |
| iMac12,1 | <span style="color:#30BCD5"> YES </span> | shnockdu | ^^ | ^^ | Upgraded with Kepler GPU |
| ^^ | ^^ | StephN999 | ^^ | ^^ | Upgraded with WX4150 GPU and BCM94360CD |
| iMac12,2 | ^^ | Ausdauersportler | ^^ | ^^ | Upgraded with Polaris GPU and BCM943602CDP |
| iMac13,1 | <span style="color:#30BCD5"> YES </span> | alexx17xx | Stock | 0.0.19 | N/A |
| iMac13,2 | ^^ | Alain13 | ^^ | ^^ | ^^ |
| ^^ | ^^ | algernonpule | ^^ | ^^ | ^^ |
| iMac13,3 | <span style="color:red"> NO </span> | N/A | N/A | N/A | ^^ |
| iMac14,1 | <span style="color:#30BCD5"> YES </span> | woefi | Upgraded | 0.0.21 | Upgraded NVMe |
| ^^ | ^^ | mikeboss | Stock | 0.0.19 | N/A |
| iMac14,2 | ^^ | OKonnel | ^^ | 0.0.22 | ^^ |
| ^^ | ^^ | mibaxx | ^^ | 0.0.21 | ^^ |
| iMac14,3 | ^^ | StupeFied | ^^ | 0.4.5 | ^^ |
| iMac15,1 | <span style="color:#30BCD5"> YES </span> | JakubMazur | Upgraded | 0.4.1 | Upgraded RAM, Radeon R9 M295X and Quad-Core Intel Core i7 |
:::
::: details Mac Pro
| SMBIOS | Tested | Tester | Model | Version | Comment |
| :--- | :--- | :--- | :--- | :--- | :--- |
| MacPro3,1 | <span style="color:#30BCD5"> YES </span> | MykolaG | Upgraded | 0.1.6 | Upgraded RX 470 and BCM94360CD.<br/>Stock Bluetooth card removed. |
| ^^ | ^^ | christiann | ^^ | 0.0.21 | Upgraded RX 560 and BCM94322.<br/>Stock Bluetooth card removed. |
| ^^ | ^^ | gw463 | ^^ | 0.0.22 | Upgraded GTX 680 and BCM94360 |
| ^^ | ^^ | AlexSakha67 | ^^ | 0.0.20 | Upgraded R9 280 |
| ^^ | ^^ | nekton1 | ^^ | ^^ | Upgraded GTX 680 |
| ^^ | ^^ | Pri-est | Unknown | 0.0.9 | N/A |
| ^^ | ^^ | vinaypundith | Upgraded | 0.0.6 | Upgraded with GTX 680 and BCM94360CD. |
| ^^ | ^^ | ParaDoX1994 | ^^ | 0.4.4 | Upgraded with HD 7950.<br/>Stock Bluetooth card removed. |
| MacPro4,1 | <span style="color:#30BCD5"> YES </span> | vinaypundith | Unknown | 0.0.9 | N/A |
| MacPro5,1 | ^^ | woefi | Upgraded | 0.0.21 | Upgraded with RX 580. |
| ^^ | ^^ | Mabrouk Oscar | Unknown | ^^ | N/A |
| ^^ | ^^ | astuffedtiger | Flashed | 0.0.18 | MacPro4,1 flashed to 5,1 |
:::

25
docs/TIMEMACHINE.md Normal file
View File

@@ -0,0 +1,25 @@
# 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.
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.
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.
3. Restart your machine.
* Note: Your Mac will feel slow due to lack of graphics drivers and resolution may be wrong. WiFi will also be unavailable in most cases, if your backup is on a network drive, use Ethernet.
4. Login and start Migration Assistant.
5. Go through the restoring process.
6. Once finished, go into the OCLP app and reinstall the root patches.
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.
:::

View File

@@ -1,175 +1,292 @@
# Troubleshooting
Here are some common errors that users may experience while using this patcher:
* [OpenCore Legacy Patcher not launching](#opencore-legacy-patcher-not-launching)
* [Stuck on `This version of Mac OS X is not supported on this platform` or (🚫) Prohibited Symbol](#stuck-on-this-version-of-mac-os-x-is-not-supported-on-this-platform-or-(🚫)-prohibited-symbol)
* [Cannot boot macOS without the USB](#cannot-boot-macos-without-the-usb)
* [Infinite Recovery OS Booting](#infinite-recovery-os-reboot)
* [Reboot when entering Hibernation (`Sleep Wake Failure`)](#reboot-when-entering-hibernation-sleep-wake-failure)
* [How to Boot 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)
## 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
```
## 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.
## 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.
![](../images/OCLP-GUI-SMBIOS-Minimal.png)
## Volume Hash Mismatch Error in macOS Monterey
A semi-common popup some users face is the "Volume Hash Mismatch" error:
<p align="center">
<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 Monterey 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.
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.
* 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 | |
![](../images/usb11-chart.png)
# General troubleshooting
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)
* [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.
## 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.
## 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.

View File

@@ -1,6 +1,30 @@
# Uninstalling OpenCore
# Uninstall
To remove OpenCore:
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.
[Reset NVRAM](https://support.apple.com/HT204063) afterwards.
## Uninstalling the application
### Version 1.5.0 and newer
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)
### Version 1.4.3 and older.
Navigate to `/Library/Application Support/` and delete the Dortania folder.
## Reverting root patches
Open the OCLP application and go into the Post Install Root Patch menu, choose Revert Root Patches.
If you're planning to revert back to native version, you don't have to do this. Root patches get wiped when you wipe the disk.
## Uninstalling the bootloader
1. Remove OpenCore either from the USB or internal drive
@@ -11,4 +35,11 @@ To remove OpenCore:
2. [Reset NVRAM](https://support.apple.com/HT204063)
Note that if you are on Big Sur when you remove the EFI folder, your Mac will no longer boot and show the "prohibited" symbol. Be ready to install an older version of macOS before you uninstall OpenCore.
:::warning
Note that after you remove OpenCore, your Mac will no longer boot and show the "prohibited" symbol. Be prepared to have a bootable USB drive with either OpenCore or natively-supported version of macOS before you uninstall the bootloader.
* This does not apply to native Macs just using OpenCore to achieve features like AirPlay to Mac and Sidecar, but it is still recommended to reinstall macOS after removing OpenCore, if using SMBIOS spoofing to enable Universal Control and other features.
:::

View File

@@ -3,7 +3,11 @@
Introduced in macOS 12 Monterey, Universal Control is a feature that allows a Mac to control other Macs and/or iPads, share input devices, and share files across them simultaneously. With OpenCore and FeatureUnlock, Universal Control can be unlocked for most unsupported Macs, as long as they meet the technical requirements listed on this page.
* Note: The following page is primarily for tinkerers, no proper support is provided outside of Discord support (see bottom of page).
::: warning Note
These features are not actively tested and may break at any time. The following page is primarily for tinkerers, no proper support is provided outside of Discord support (see bottom of page).
:::
## Enabling Universal Control
@@ -12,7 +16,7 @@ If you meet all the requirements, in most cases you can go to Display Preference
| Display Preferences | Universal Control settings |
| :--- | :--- |
| ![](../images/UC-enable-1.png) | ![OCLP GUI Build Finished](../images/UC-enable-2.png) |
| ![](./images/UC-enable-1.png) | ![OCLP GUI Build Finished](./images/UC-enable-2.png) |
Most Mac models from 2011 and above should work out of the box. However, older Macs like the 2008-2011 MacBook Pros require upgrading the Wi-Fi/Bluetooth card to a newer model. More info in the [requirements section.](#requirements-for-universal-control)
@@ -183,7 +187,7 @@ The following models are blacklisted from using Universal Control by Apple:
- Macmini7,x - Mac mini 2014
- MacPro6,x - Mac Pro Late 2013
The hardware in these models are capable of supporting Universal Control, but due to blacklisting, the only solution to use Universal Control on these models is to spoof their SMBIOS. SMBIOS spoofing essentially fools some aspects of macOS to think they are running on a different machine.
The hardware in these models are capable of supporting Universal Control, but due to blacklisting, the only solution to use Universal Control on these models is to spoof their SMBIOS. SMBIOS spoofing essentially fools some aspects of macOS to think they are running on a different machine.
With SMBIOS Spoofing, the Universal Control handshake recognizes a different SMBIOS and thus grants a blacklisted Mac to connect to other Macs and iPads with Universal Control.
@@ -202,11 +206,74 @@ Before we continue, please keep in mind that SMBIOS Spoofing is an advanced feat
### How to spoof
Ventura has dropped more models which includes all of the blacklisted Macs in question, making the procedure slightly different. It is important to follow the guide for the version you're on, failing to do so is likely to cause boot issues.
::: details macOS Sequoia
Firstly run OpenCore Legacy Patcher.
Then go to **Settings** and **SMBIOS** tab, set SMBIOS Spoof Level to **Moderate**. Set SMBIOS Spoof Model **one listed next to your native model in the table for spoofed models below.**
Notice that "Allow native models" and "Allow Native Spoofs" **are NOT** enabled unlike on Monterey, this is on purpose. They are no longer relevant on Sonoma and enabling them will cause boot issues.
| Main Settings view | SMBIOS settings |
| :--- | :--- |
| ![](./images/ventura_uc1.png) | ![](./images/ventura_uc2.png) |
::: details Table for spoofed models (click to expand)
Spoofing to any model with native Sonoma support should work, but these are the earliest Macs natively supported by Sonoma and thus chosen for the sake of simplicity.
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Ventura as long as the other requirements are met, since they aren't blacklisted.
| Mac by name | Native SMBIOS | Spoof SMBIOS |
|-------------|---------------|--------------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir9,1 |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro15,2 |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro15,2 |
| iMac Late 2015 21" | iMac16,x | iMac19,2 |
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 |
:::
::: details macOS Sonoma
Firstly run OpenCore Legacy Patcher.
Then go to **Settings** and **SMBIOS** tab, set SMBIOS Spoof Level to **Moderate**. Set SMBIOS Spoof Model **one listed next to your native model in the table for spoofed models below.**
Notice that "Allow native models" and "Allow Native Spoofs" **are NOT** enabled unlike on Monterey, this is on purpose. They are no longer relevant on Sonoma and enabling them will cause boot issues.
| Main Settings view | SMBIOS settings |
| :--- | :--- |
| ![](./images/ventura_uc1.png) | ![](./images/ventura_uc2.png) |
::: details Table for spoofed models (click to expand)
Spoofing to any model with native Sonoma support should work, but these are the earliest Macs natively supported by Sonoma and thus chosen for the sake of simplicity.
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Ventura as long as the other requirements are met, since they aren't blacklisted.
| Mac by name | Native SMBIOS | Spoof SMBIOS |
|-------------|---------------|--------------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro15,2 |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro15,2 |
| iMac Late 2015 21" | iMac16,x | iMac19,2 |
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 |
:::
::: details macOS Ventura
Firstly run the GUI version of OpenCore Legacy Patcher.
Firstly run OpenCore Legacy Patcher.
Then go to **Settings** and **SMBIOS** tab, set SMBIOS Spoof Level to **Moderate**. Set SMBIOS Spoof Model **one listed next to your native model in the table for spoofed models below.**
@@ -214,7 +281,7 @@ Notice that "Allow native models" and "Allow Native Spoofs" **are NOT** enabled
| Main Settings view | SMBIOS settings |
| :--- | :--- |
| ![](../images/ventura_uc1.png) | ![](../images/ventura_uc2.png) |
| ![](./images/ventura_uc1.png) | ![](./images/ventura_uc2.png) |
@@ -225,29 +292,29 @@ Spoofing to any model with native Ventura support should work, but these are the
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Ventura as long as the other requirements are met, since they aren't blacklisted.
| Mac by name | Native SMBIOS | Spoof SMBIOS | Tested | Tested by |
|-------------|---------------|--------------|--------|-----------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 | <span style="color:red"> NO </span> | N/A |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro14,1 | ^^ | ^^ |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro14,3 | ^^ | ^^
| iMac Late 2015 21" | iMac16,x | iMac18,2 | ^^ | ^^
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 | <span style="color:red"> NO </span> | N/A |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 | <span style="color:red"> NO </span> | N/A |
| Mac by name | Native SMBIOS | Spoof SMBIOS |
|-------------|---------------|--------------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro14,1 |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro14,3 |
| iMac Late 2015 21" | iMac16,x | iMac18,2 |
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 |
:::
::: details macOS Monterey
Firstly, run the GUI version of OpenCore Legacy Patcher. Secondly, go to **Settings** then the **App** tab and tick **Allow native models**.
Firstly, run OpenCore Legacy Patcher. Secondly, go to **Settings** then the **App** tab and tick **Allow native models**.
[](../images/OCLP-App-Allow-Native-Models.png)
[](./images/OCLP-App-Allow-Native-Models.png)
Then, go to **SMBIOS** tab, tick **Allow spoofing native Macs**, set SMBIOS Spoof Level to **Moderate**. Set SMBIOS Spoof Model to **one listed next to your native model in the table for spoofed models below.**
| Main Settings view | SMBIOS settings |
| :--- | :--- |
| ![](../images/OCLP-SMBIOS-Allow-Native-Spoof.png) | ![](../images/OCLP-smbios-settings.png) |
| ![](./images/OCLP-SMBIOS-Allow-Native-Spoof.png) | ![](./images/OCLP-smbios-settings.png) |
::: details Table for spoofed models (click to expand)
@@ -257,14 +324,14 @@ Any model after the list of officially blacklisted Macs should be supported, but
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Monterey, as long as the other requirements are met, since they aren't blacklisted.
| Mac by name | Native SMBIOS | Spoof SMBIOS | Tested | Tested by |
|-------------|---------------|--------------|--------|-----------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 | <span style="color:#30BCD5"> YES </span> | Hzlph |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro13,1 | ^^ | ^^ |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro13,3 | ^^ | ^^
| iMac Late 2015 21" | iMac16,x | iMac18,2 | ^^ | ^^
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 | <span style="color:red"> NO </span> | N/A |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 | <span style="color:#30BCD5"> YES </span> | Crystall1nedev |
| Mac by name | Native SMBIOS | Spoof SMBIOS |
|-------------|---------------|--------------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro13,1 |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro13,3 |
| iMac Late 2015 21" | iMac16,x | iMac18,2 |
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 |
:::

View File

@@ -1,22 +1,45 @@
# Updating OpenCore and Patches
With OpenCore Legacy Patcher, there's generally very little reason for users to update the OpenCore installation on their machine unless you feel there's a benefit with new versions for your setup, e.g. Bluetooth has stopped working with a new macOS update.
For those who do wish to update, simply [download the latest release](https://github.com/dortania/OpenCore-Legacy-Patcher/releases) and rerun the patcher:
![](../images/OCLP-GUI-Main-Menu.png)
Then, rebuild your OpenCore build and install again. OpenCore Will now be updated!
To check what version of OpenCore and the Patcher you're currently running, you can run the following in the terminal:
```bash
# OpenCore Version
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
# Patcher Version
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:OCLP-Version
```
![](../images/oclp-version.png)
From this, we can see that we're running a RELEASE version of OpenCore 0.8.0 built on April 18th, 2022 with Patcher Version 0.4.5!
# Updating OpenCore and Patches
This guide explains how to get fully up to date application, bootloader and patches.
## Updating the application
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.
<div align="left">
<img src="./images/OCLP_Update_Successful.png" alt="Update Successful" />
</div>
## 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:
```bash
# OpenCore Version
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
# Patcher 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!

View File

@@ -1,4 +1,6 @@
![](../images/ventura.png)
# macOS Ventura
![](./images/ventura.png)
With the release of OpenCore Legacy Patcher v0.5.0 and newer, early support for macOS Ventura has been implemented for most Metal-capable Macs. This page will be used to inform users regarding current issues and will be updated as new patch sets are developed and added to our patcher.
@@ -24,7 +26,7 @@ Ventura's release dropped a large amount of Intel hardware, thus requiring the u
## Current status
<img width="625" alt="" src="../images/OCLP-060-Initial-Support.png">
<img width="625" alt="" src="./images/OCLP-060-Initial-Support.png">
For older hardware, see below sections:
@@ -64,7 +66,7 @@ For Penryn systems and pre-2013 Mac Pros, USB 1.1 support was outright removed i
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)
![](./images/usb11-chart.png)
::: warning The following systems rely on USB 1.1

View File

@@ -3,23 +3,29 @@
Modern versions of Windows officially support two types of firmware: UEFI and BIOS. Users may want to boot Windows through the OCLP Bootpicker, but only UEFI Installations of Windows will show up in the OCLP Bootpicker.
Many older Macs do not "officially" support UEFI Windows installations, leading to installation failures and strange behaviour, but OCLP can be used to prevent almost all of these issues.
::: warning
When booting Windows with OpenCore, it's highly recommended to create a new 200MB **MS-DOS (FAT)** partition in Disk Utility to install OpenCore in. This will prevent Windows from overwriting OpenCore with its own bootloader in the EFI partition and causing boot issues.
::::
## Minimum Requirements
This guide will focus on the installation of Windows 10 without using Boot Camp Assistant. Windows 11 should also work, but its quirks will not be covered.
This guide will focus on the installation of modern Windows (10/11) without using Boot Camp Assistant.
* Due to hardware and firmware limitations, UEFI Windows installations are only recommended on the following machines:
* 2015 MacBook or newer (MacBook8,x+)
* 2011 MacBook Air or newer (MacBookAir4,x+)
* 2011 MacBook Pro or newer (MacBookPro8,x+)
* 2011 Mac mini or newer (Macmini5,x+)
* 2009[^1] Mac Pro or newer (MacPro4,1+), upgraded GPU is preferred
* 2010 iMac or newer (iMac11,x+), upgraded GPU is preferred
* 2009[^2] Xserve (Xserve3,1), upgraded GPU is preferred
* 2015 MacBook or newer (`MacBook8,x`+)
* 2011 MacBook Air or newer (`MacBookAir4,x`+)
* 2011 MacBook Pro or newer (`MacBookPro8,x`+)
* 2011 Mac mini or newer (`Macmini5,x`+)
* 2009* Mac Pro or newer (`MacPro4,1`+), upgraded GPU is preferred
* 2010 iMac or newer (`iMac11,x`+), upgraded GPU is preferred
* 2009* Xserve (`Xserve3,1`), upgraded GPU is preferred
[^1]: MacPro4,1 and MacPro5,1 systems experience issues with the Windows installer, follow the DISM installation section for instructions.
[^2]: Theoretically supported, not tested. Follow DISM installation section
*`MacPro4,1`, `MacPro5,1`, and `Xserve3,1` systems experience issues with the Windows installer, follow the DISM installation section for instructions.
If your machine is not listed, UEFI Windows will likely still install, but you may face stability/driver issues.
@@ -33,13 +39,13 @@ The following is required for installation:
Open Disk Utility in macOS and format the USB Drive as ExFat with the Master Boot Record scheme:
![](../images/windows-mbr-format.png)
![](./images/windows-mbr-format.png)
### Formatting the Target Drive
Next, select the drive you wish to install Windows in Disk Utility on and partition it as ExFat (If formatting the entire drive, ensure it's using the GUID Partition Table scheme):
![](../images/windows-partition-1.png)
![](./images/windows-partition-1.png)
:::warning
@@ -56,7 +62,7 @@ Recommended size is 200MB and the partition format **must** be FAT32 for OpenCor
* Note 2: Having different partitions for OpenCore is not required if the Windows boot files detected by the stock Bootpicker are removed. See "Removing the Windows option from the stock bootpicker" for further information.
* Note 3: We recommend uninstalling OpenCore from the ESP/EFI Partition when you create this new OpenCore partition to avoid confusion when selecting OpenCore builds in the Mac's boot picker.
![](../images/windows-partition-2.png)
![](./images/windows-partition-2.png)
## Creating the Windows Installer
@@ -68,7 +74,7 @@ The latest Windows installation images can be downloaded from Microsoft using th
Once the file is downloaded, mount the .iso image:
![](../images/windows-iso.png)
![](./images/windows-iso.png)
Then open terminal and use the `rsync` command with the disk image set as the source and your USB drive set as the target. (Replace "CCCOMA_X64" with the mounted image's partition name, and replace "InstallWin10" with your USB Drive's name).
@@ -76,29 +82,37 @@ Then open terminal and use the `rsync` command with the disk image set as the so
rsync -r -P /Volumes/CCCOMA_X64/ /Volumes/InstallWin10
```
![](../images/rsync-progess.png)
![](./images/rsync-progess.png)
The `rsync` command will take some time, so get some coffee and sit back. Once finished, the root of the USB drive should look as follows:
![](../images/windows-rsync-done.png)
![](./images/windows-rsync-done.png)
* Ensure that these folders and files are in the root of the USB drive, otherwise the USB will not boot.
## Installation Process
Once you reboot your machine, you should see a new boot option in the OCLP Bootpicker labelled as "EFI Boot". It may or may not have the Boot Camp icon.
Once you reboot your machine, you should see a new boot option in the OCLP Bootpicker labelled as "EFI Boot" or "Windows". It may or may not have the Boot Camp icon.
:::warning
If you aren't booted into OCLP, you may see two boot options labelled "Windows" and "EFI Boot". Do not choose either of the options and boot into OCLP to continue.
If you aren't booted into OCLP, you may see **two** boot options labelled "Windows" and "EFI Boot". Do not choose either of the options and boot into OCLP to continue.
:::
### Installation: Microsoft Method
Once booted into the Windows installer, proceed as you normally would on any Windows computer. If you see an error message containing “Windows could not prepare the computer to boot into the next phase of installation”, please follow the next portion of this guide (DISM Installation).
::: details Installing Windows 11
If you are installing Windows 11, you will need to [modify the Windows Setup](https://www.bleepingcomputer.com/news/microsoft/how-to-bypass-the-windows-11-tpm-20-requirement/) to allow installation on unsupported machines.
:::
### Installation: DISM Deployment Method
Once booted into the Windows installer, proceed as you normally would until you reach the "Where do you want to install Windows" disk formatting section.
@@ -106,33 +120,33 @@ Once booted into the Windows installer, proceed as you normally would until you
When you are prompted to select a drive, select your desired partition and delete it using "Delete". If you want to install Windows to an empty drive, erase every partition currently on the desired drive.
After your drive/partition is erased, press "New" to create the Windows system partitions.
![](../images/DISM-1.png)
![](./images/DISM-1.png)
You will be prompted to confirm the creation of the system partitions, press "OK".
![](../images/DISM-2.png)
![](./images/DISM-2.png)
Once the partitions are created, select the main (largest) partition and press "Format". This will format the partition using the NFTS file system.
![](../images/DISM-3.png)
![](./images/DISM-3.png)
After the installer formats the partition, open up the Command Prompt by pressing SHIFT + F10. Then run the `diskpart` command, and `list vol`. This will produce a list of volumes in your system, make sure to keep track of the drive letters of the main Windows partition (largest, NTFS), the EFI partition (100MB, FAT32), and the Windows installer (Usually Drive D). Run `exit` to close diskpart
![](../images/DISM-4.png)
![](./images/DISM-4.png)
Now, get a list of available Windows editions by running `dism /Get-WimInfo /WimFile:D:\Sources\install.wim` (substituting D with the Installer Drive Letter). This guide will use Option 6 for Windows 10 Pro.
![](../images/DISM-5.png)
![](./images/DISM-5.png)
You can now start the deployment process. Run `dism /Apply-Image /ImageFile:D:\Sources\install.wim /index:6 /ApplyDir:E:`, replacing "D" with the Installer Drive Letter, "6" with the Windows edition option, and "E" with the Windows Partition Drive Letter.
![](../images/DISM-6.png)
![](./images/DISM-6.png)
Once `dism` finishes its thing, run `bcdboot E:\Windows`, substituting "E" for the drive letter of the main Windows partition to create the boot files.
![](../images/DISM-7.png)
![](./images/DISM-7.png)
Windows is now installed. It should be recognized as "EFI Boot" with a Boot Camp icon in the OCLP Bootpicker.
Windows is now installed. It should be recognized as "EFI Boot" or "Windows" with a Boot Camp icon in the OCLP Bootpicker.
:::warning
@@ -148,11 +162,11 @@ Start up a command prompt window in the Windows Setup environment by running `cm
Next, enter the EFI Folder by running `C:`, substituting "C" for the EFI Partition Drive Letter. Then run `cd EFI` to enter the EFI Partition. Then, run `rmdir Boot /S /Q` to remove the boot files that can be detected by the stock Bootpicker. The OCLP Picker will still be able to detect and boot Windows.
![](../images/DISM-8.png)
![](./images/DISM-8.png)
You can verify that the `Boot` folder is removed by running the `dir` command:
![](../images/DISM-9.png)
![](./images/DISM-9.png)
If, for whatever reason, you are not able to remove the boot files from the Windows setup, shut down your system, boot into macOS, mount your EFI partition with [MountEFI](https://github.com/corpnewt/MountEFI), and remove the `Boot` folder (it should have a recent file modification date, and contain `Bootx64.efi`).
@@ -169,11 +183,11 @@ Once Brigadier is downloaded, move it to your desktop for easy access.
Open up a command prompt window as a standard user and run `cd desktop`.
![](../images/BOOTCAMP-1.png)
![](./images/BOOTCAMP-1.png)
Then run `.\brigadier.exe --model=MODEL1,1`, replacing "MODEL1,1" with your machine's SMBIOS model.
![](../images/BOOTCAMP-2.png)
![](./images/BOOTCAMP-2.png)
Once the Boot Camp software is downloaded, you can install it by executing `Setup.exe` or `\Drivers\Apple\BootCamp.msi` (`BootCamp64.msi` if present).
@@ -187,11 +201,11 @@ Once Brigadier is downloaded, move it to your desktop for easy access.
Open up a command prompt window as a standard user and run `cd desktop`.
![](../images/BOOTCAMP-1.png)
![](./images/BOOTCAMP-1.png)
Then run `.\brigadier.exe --model=MacPro7,1`. This will download the latest BootCamp 6 package.
![](../images/BOOTCAMP-2.png)
![](./images/BOOTCAMP-2.png)
Once the Boot Camp software is downloaded, you can install Boot Camp 6 by executing `\Drivers\Apple\BootCamp.msi` in an administrator command prompt window.
@@ -203,7 +217,7 @@ If you built OpenCore with Moderate or higher SMBIOS spoofing, you'll get an err
| Setup.exe | BootCamp.msi |
| :--- | :--- |
| ![](../images/windows-bootcamp-error.png) | ![](../images/windows-bootcamp-msi.png) |
| ![](./images/windows-bootcamp-error.png) | ![](./images/windows-bootcamp-msi.png) |
::: details BootCamp.msi quirks
@@ -221,4 +235,8 @@ You can also open `Properties` on the file to change the compatibility to `Previ
### iMac12,x Bluescreen after driver installation
Currently Intel's iGPU drivers for the HD 3000 series do not support UEFI booting in Windows. The recommended solution is to simply disable the iGPU: [iMac 12,1 Windows 10 Boot Loop Fix Intel Graphics issue](https://zzq.org/?p=39)
Intel's iGPU drivers for the HD 3000 series do not support UEFI booting in Windows. The recommended solution is to simply disable the iGPU: [iMac 12,1 Windows 10 Boot Loop Fix Intel Graphics issue](https://zzq.org/?p=39)
### NVIDIA Tesla Black Screen after driver installation
The NVIDIA Tesla GPUs found in 2008-2010 Macs do not support UEFI booting in Windows. You cannot use UEFI Windows without low-level patching on these machines.

View File

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

View File

Before

Width:  |  Height:  |  Size: 312 KiB

After

Width:  |  Height:  |  Size: 312 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 MiB

After

Width:  |  Height:  |  Size: 2.9 MiB

View File

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 3.1 MiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View File

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 270 KiB

View File

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

View File

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

View File

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 782 KiB

After

Width:  |  Height:  |  Size: 782 KiB

View File

Before

Width:  |  Height:  |  Size: 984 KiB

After

Width:  |  Height:  |  Size: 984 KiB

View File

Before

Width:  |  Height:  |  Size: 504 KiB

After

Width:  |  Height:  |  Size: 504 KiB

View File

Before

Width:  |  Height:  |  Size: 382 KiB

After

Width:  |  Height:  |  Size: 382 KiB

View File

Before

Width:  |  Height:  |  Size: 446 KiB

After

Width:  |  Height:  |  Size: 446 KiB

View File

Before

Width:  |  Height:  |  Size: 368 KiB

After

Width:  |  Height:  |  Size: 368 KiB

View File

Before

Width:  |  Height:  |  Size: 268 KiB

After

Width:  |  Height:  |  Size: 268 KiB

View File

Before

Width:  |  Height:  |  Size: 246 KiB

After

Width:  |  Height:  |  Size: 246 KiB

View File

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 201 KiB

View File

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 156 KiB

View File

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View File

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

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