Compare commits

...

674 Commits
0.0.5 ... 0.2.1

Author SHA1 Message Date
Mykola Grymalyuk
40aea143cf Update build 2021-06-22 10:18:17 -06:00
Dhinak G
e6fc4f4a6e Fix NVMe exception 2021-06-22 12:10:19 -04:00
Mykola Grymalyuk
b5ebc7ffd7 Update Recv icons 2021-06-21 20:56:39 -06:00
Mykola Grymalyuk
21482eda88 Add Flavours for macOS 2021-06-21 19:12:53 -06:00
Mykola Grymalyuk
e91148e534 Add note
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/319
2021-06-21 17:01:07 -06:00
Mykola Grymalyuk
c2c2ffc00b Sync PatcherSupportPkg 2021-06-21 16:52:06 -06:00
Mykola Grymalyuk
100c54a82c AirPlay to Mac support on Skylake - Coffeelake Macs 2021-06-21 15:45:27 -06:00
Dhinak G
2b81e38ea8 OCLP-CLI updates 2021-06-21 11:06:40 -04:00
Dhinak G
db2721354c Create requirements.txt 2021-06-20 19:55:23 -04:00
Mykola Grymalyuk
f21856a65b Convert PatcherSupportPkg downloader into function 2021-06-20 15:30:48 -06:00
Mykola Grymalyuk
c7cd22bf65 Fix codesign 2021-06-20 13:31:23 -06:00
Mykola Grymalyuk
3d8c523b7a Work around eficheck kills
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/292
2021-06-20 13:04:08 -06:00
Mykola Grymalyuk
11df8195ce Work around Codesigning killing binary 2021-06-20 13:01:01 -06:00
Mykola Grymalyuk
cdc80ef550 Work around MacBook8,1 bug 2021-06-20 09:32:56 -06:00
Mykola Grymalyuk
85559d4d9e Fix typo 2021-06-20 00:31:41 -06:00
Mykola Grymalyuk
88ecd19369 Add better error handling on file presence 2021-06-20 00:28:10 -06:00
Mykola Grymalyuk
22822be944 Remove curl usage for downloading 2021-06-20 00:23:55 -06:00
Mykola Grymalyuk
55607c5437 Swap ditto for rsync 2021-06-19 23:17:59 -06:00
Mykola Grymalyuk
0459c0a5dc Sync PatcherSupportPkg 2021-06-19 22:00:41 -06:00
Mykola Grymalyuk
2626f9733d Fix OCLP-CLI crash 2021-06-19 21:15:09 -06:00
Mykola Grymalyuk
128e68d735 Fix file path typo 2021-06-19 20:59:12 -06:00
Mykola Grymalyuk
abc1ca5ec9 Fix Google Fonts rendering for HD4000 2021-06-19 20:47:32 -06:00
Mykola Grymalyuk
ed6fee1f94 Fix defaults write running as sudo 2021-06-19 20:16:33 -06:00
Mykola Grymalyuk
edad35e1f5 Add missing CLI args 2021-06-19 10:53:01 -06:00
Mykola Grymalyuk
f8615a8852 Fix CLI support for SysPatch.py 2021-06-19 10:33:56 -06:00
Mykola Grymalyuk
dec0873a41 Clarify SysPatch function names 2021-06-19 10:31:32 -06:00
Mykola Grymalyuk
16e29d3a1e Fix OCLP-CLI support with device_probe 2021-06-19 10:27:23 -06:00
Mykola Grymalyuk
fa7e51252d Fix double wifi typo 2021-06-19 09:30:36 -06:00
Mykola Grymalyuk
84abbb7c11 Add Windows detection to disk install 2021-06-18 19:23:18 -06:00
Mykola Grymalyuk
292e09a0d7 Fix Country Code detection
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/184
2021-06-18 19:08:01 -06:00
Dhinak G
c5fd4036a7 Add country code probing 2021-06-18 20:34:39 -04:00
Mykola Grymalyuk
4843ed92c9 Increment PatcherSupportPkg 2021-06-18 16:53:28 -06:00
Mykola Grymalyuk
f75fac14e6 Fix crash on missing dGPU 2021-06-18 16:46:16 -06:00
Mykola Grymalyuk
ac055a633c Clean unused variables 2021-06-18 13:19:12 -06:00
Mykola Grymalyuk
0dc40318d0 Set CMIO_Unit_Input_ASC.DoNotUseOpenCL 2021-06-18 13:08:19 -06:00
Mykola Grymalyuk
84d0272eda Add PatcherSupportPkg 2021-06-18 12:53:07 -06:00
Mykola Grymalyuk
4b35681b5f Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher 2021-06-18 10:14:50 -06:00
Mykola Grymalyuk
bbb5c06ddc Merge pull request #314 from dortania/device-probe
Device probe refactor
2021-06-18 10:12:56 -06:00
Mykola Grymalyuk
df0c196a94 Fix dgpu typo 2021-06-18 09:51:59 -06:00
Mykola Grymalyuk
12f9482d3d Update SysPatch.py 2021-06-18 09:29:29 -06:00
Mykola Grymalyuk
5f7b836330 Fix set_defaults incorrectly disabling SIP 2021-06-18 07:42:21 -06:00
Dhinak G
94af2350f4 Use device_probe 2021-06-17 13:18:31 -04:00
Dhinak G
7b758fcf15 Fix High Sierra issues 2021-06-16 10:28:26 -04:00
Dhinak G
fecf9502d0 WIP device probe refactor part 2 2021-06-16 10:28:24 -04:00
Dhinak G
4747c2619f WIP device probe refactor 2021-06-16 10:27:23 -04:00
Dhinak G
4b187a045a Fix DisplayLevel 2021-06-16 10:25:44 -04:00
Mykola Grymalyuk
eb9a24eee7 Increment build 2021-06-15 20:08:22 -06:00
Mykola Grymalyuk
b3d2ac190c Add better error messaging 2021-06-15 18:49:53 -06:00
Mykola Grymalyuk
ce6805507d Fix crash on El Capitan and older 2021-06-15 18:08:22 -06:00
Mykola Grymalyuk
ad7d06d4b2 Sync changelog 2021-06-15 17:45:21 -06:00
Mykola Grymalyuk
04dee1fcff Fix incorrect AMFI and SIP detection 2021-06-15 17:44:04 -06:00
Mykola Grymalyuk
3af65423c6 Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher 2021-06-15 17:43:12 -06:00
Dhinak G
af6c98b54d Fix crash with no boot args
Fixes #304
2021-06-15 14:36:54 -04:00
Mykola Grymalyuk
eb9b137323 Increment Build 2021-06-15 09:55:10 -06:00
Mykola Grymalyuk
178c604507 Clean Detection Code 2021-06-15 09:49:16 -06:00
Mykola Grymalyuk
88b660ecf8 Merge pull request #303 from dortania/bump-binaries
Update Lilu to acidanthera/Lilu@0fd1b298
2021-06-15 09:22:57 -06:00
Dhinak G
3feb5a61f6 Update Lilu to acidanthera/Lilu@0fd1b298 2021-06-15 08:26:37 -04:00
Mykola Grymalyuk
b8708ff193 Fix HD 4000 models 2021-06-14 22:42:01 -06:00
Mykola Grymalyuk
8da945833c Clarify HD 4000 bugs 2021-06-14 22:11:38 -06:00
Mykola Grymalyuk
ee10c104b7 Add Monterey Hardware Issues 2021-06-14 22:02:20 -06:00
Mykola Grymalyuk
803a699658 Add TeraScale 2 Acceleration 2021-06-14 08:57:55 -06:00
Mykola Grymalyuk
88ee0e813e Fix typo indentation 2021-06-13 12:49:12 -06:00
Mykola Grymalyuk
cc44024a8c Fix typo 2021-06-13 12:02:19 -06:00
Mykola Grymalyuk
880432970b Add DebugEnhancer 2021-06-13 10:47:10 -06:00
Mykola Grymalyuk
5d6587100e Clean up AMFI and SIP checks 2021-06-13 09:48:21 -06:00
Dhinak G
df8d95b815 Disable SBM and SIP on HD4000 Macs 2021-06-12 23:04:58 -04:00
Mykola Grymalyuk
f1a868199e Update Constants.py 2021-06-12 19:23:35 -06:00
Dhinak G
d0e77cca52 Update binaries, again 2021-06-12 19:37:51 -04:00
Dhinak G
eaadaa2d45 Update binaries and add AppleIntelSharedGraphics.bundle 2021-06-12 17:15:24 -04:00
Mykola Grymalyuk
4a5e3c89b6 Add AppleIntelIVBVA.bundle 2021-06-12 12:22:39 -06:00
Mykola Grymalyuk
a0eca53c58 Add Intel HD4000 Acceleration 2021-06-12 11:01:52 -06:00
Mykola Grymalyuk
8c092494a8 Fix crash 2021-06-12 08:34:42 -06:00
Mykola Grymalyuk
5f69a1c917 Fix Sidecar and CPU renaming 2021-06-11 21:54:10 -06:00
Mykola Grymalyuk
856ac19314 Fix no SMBIOS spoof option 2021-06-11 21:08:21 -06:00
Mykola Grymalyuk
6c5aa244af Expand AGDP Override models 2021-06-11 15:08:36 -06:00
Mykola Grymalyuk
f42bdcee03 Fix incorrectly enabling kexts 2021-06-11 11:36:53 -06:00
Mykola Grymalyuk
b49db7e739 Set correct SMBIOS for MacBookPro11,2
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/287
2021-06-11 10:56:19 -06:00
Mykola Grymalyuk
ec20d7b581 Remove duplicate boot-arg 2021-06-11 10:34:44 -06:00
Mykola Grymalyuk
1c75353f27 Avoid setting UIScale
Mac firmwares will correctly set this, overriding is not needed
2021-06-11 10:13:41 -06:00
Mykola Grymalyuk
b14ca8689a Merge pull request #285 from lulujyc/patch-1
Fix MacBook8,1 SMBIOS Spoofing
2021-06-11 10:11:45 -06:00
lulujyc
bd20cf6a1f Update Build.py 2021-06-11 21:47:34 +08:00
lulujyc
b23e9c2eaa Update ModelArray.py 2021-06-11 21:46:09 +08:00
Mykola Grymalyuk
e625d9803b Add basic Ivy Bridge framebuffer support 2021-06-10 09:09:03 -06:00
Mykola Grymalyuk
ae8bba5582 Merge pull request #282 from dortania/syspatch-monterey
Refactor SysPatch for wider OS support
2021-06-09 19:24:34 -06:00
Mykola Grymalyuk
f19f08fc06 Expand AddIntelGen3Accel 2021-06-09 19:21:43 -06:00
Mykola Grymalyuk
5fd17cc5e8 Fix skipping text 2021-06-09 19:21:20 -06:00
Mykola Grymalyuk
3c6d0de2e3 Clean up SysPatch 2021-06-09 18:50:32 -06:00
Mykola Grymalyuk
d3de15b594 Heavily refactor SysPatch 2021-06-09 17:27:14 -06:00
Mykola Grymalyuk
b0db4739ad Prep for SysPatch refactor 2021-06-09 17:26:49 -06:00
Mykola Grymalyuk
2584c16d41 Fix Kext name 2021-06-09 11:59:04 -06:00
Mykola Grymalyuk
b4caffe0d4 Merge pull request #279 from lulujyc/patch-1
Support HiDPI Picker for Newly Unsupported Macs
2021-06-09 11:57:20 -06:00
Mykola Grymalyuk
46734a7c5a Limit IO80211 Patched Kexts to Big Sur 2021-06-09 09:04:30 -06:00
lulujyc
484f434a67 Update ModelArray.py 2021-06-09 18:59:51 +08:00
Mykola Grymalyuk
033b577552 Add missing Labels 2021-06-08 17:42:44 -06:00
Mykola Grymalyuk
f1e2a320dc Fix iMac13,x sleep 2021-06-08 16:47:32 -06:00
Mykola Grymalyuk
3885bf894a Remove unused kext 2021-06-08 16:28:06 -06:00
Mykola Grymalyuk
04ca447eb7 Fix OpenCanopy icons 2021-06-08 15:17:22 -06:00
Mykola Grymalyuk
41486c0215 Fix SSE4,2 Emulation 2021-06-08 15:13:57 -06:00
Mykola Grymalyuk
69035db2d7 Merge pull request #272 from dortania/monterey-support
Add macOS Monterey support
2021-06-08 13:20:00 -06:00
Mykola Grymalyuk
c98021b14c Update Apple Binaries 2021-06-08 11:49:53 -06:00
Mykola Grymalyuk
b576e5a511 Increment binaries 2021-06-08 11:27:00 -06:00
Mykola Grymalyuk
9b69700733 Fix XHCI hang
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/269
2021-06-08 10:14:35 -06:00
Mykola Grymalyuk
9d731c065e Clean up code 2021-06-08 10:07:30 -06:00
Mykola Grymalyuk
93aa69b0b0 Add inital macOS 12 support 2021-06-07 18:35:05 -06:00
Mykola Grymalyuk
3679324371 Fix Thunderbolt Ethernet support on MacBookAir4,x
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/268
2021-06-06 13:16:09 -06:00
Mykola Grymalyuk
ebc6611f5c Revert new mount code 2021-06-06 10:11:21 -06:00
Mykola Grymalyuk
16ac5a6093 Fix Arch settings for kexts 2021-06-05 12:52:40 -06:00
Mykola Grymalyuk
b1479fbc14 Fix OpenCore start 2021-06-05 12:36:40 -06:00
Mykola Grymalyuk
375b7c2fd2 Add NVMe and FireWire support
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/267
2021-06-05 11:38:04 -06:00
Mykola Grymalyuk
95afb7d109 Implement basic CPU detection 2021-06-04 15:45:26 -06:00
Mykola Grymalyuk
3956908482 Fix DeviceProperty and Root Volume detection 2021-06-04 15:21:59 -06:00
Mykola Grymalyuk
e0eda1fa0c Increment build 2021-06-02 12:12:21 -06:00
Mykola Grymalyuk
dc6b14f962 Avoid patching on macOS 12
Can harmfully damage the OS if not properly validated first
2021-06-02 09:12:43 -06:00
Mykola Grymalyuk
dd798c02d1 Update ACCEL.md 2021-06-01 20:41:56 -06:00
Mykola Grymalyuk
4fc0f4dee7 Reslove Codesigning issues 2021-06-01 11:30:21 -06:00
Mykola Grymalyuk
81379dc857 Fix GPU Switching on MacBookPro6,x 2021-06-01 11:22:53 -06:00
Mykola Grymalyuk
1d7eea068a Sync TESTED.md 2021-06-01 09:56:05 -06:00
Mykola Grymalyuk
0978bcbb87 Remove unnecessary calculations 2021-05-31 21:15:20 -06:00
Mykola Grymalyuk
2da88a22d7 Support Minimal SMBIOS spoofing on ElCap era Macs 2021-05-31 14:01:30 -06:00
Mykola Grymalyuk
ccb9aea1e6 Remove unused models.json 2021-05-30 16:18:02 -06:00
Mykola Grymalyuk
6b8d1743b3 Fix command 2021-05-30 15:15:38 -06:00
Mykola Grymalyuk
cf0f613a5f Add ApECID backend 2021-05-29 09:39:05 -06:00
Mykola Grymalyuk
ba49f45c4c Remove duplicate SMBIOS 2021-05-28 07:40:08 -06:00
Mykola Grymalyuk
3e5ade8047 Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher 2021-05-27 10:12:03 -06:00
Mykola Grymalyuk
3e47853e75 Fix linting 2021-05-27 10:11:59 -06:00
Mykola Grymalyuk
d19f5ba72f Merge pull request #249 from HAUDRAUFHAUN/patch-1
📝 align logo in readme
2021-05-27 09:52:29 -06:00
Mykola Grymalyuk
4918873ad9 Additionally Centre Header 2021-05-27 09:51:43 -06:00
Mykola Grymalyuk
6ecb8e26c9 Allow custom SMBIOS overriding 2021-05-27 09:47:58 -06:00
HAUDRAUFHAUN
52ad1f7399 📝 align logo in readme 2021-05-27 08:21:05 +02:00
Mykola Grymalyuk
f6ee429c8e Fix TESTED.md table 2021-05-26 07:57:14 -06:00
Mykola Grymalyuk
4de79ce633 Merge pull request #247 from flagersgit/patch-1
Add more Tesla, Fermi, and Kepler Device IDs
2021-05-25 21:11:47 -06:00
flagersgit
d7c2904868 Add missing Tesla, Fermi, and Kepler Device IDs 2021-05-25 22:23:16 -04:00
Mykola Grymalyuk
24eec279d8 Fix SysPatch.py 2021-05-25 10:43:20 -06:00
Mykola Grymalyuk
d49575b22b Sync DONATE.md
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/242
2021-05-25 10:08:06 -06:00
Mykola Grymalyuk
3271bcf92f Fix device tree renaming 2021-05-25 09:56:02 -06:00
Mykola Grymalyuk
41514a35f5 Fix Photos app distortion 2021-05-24 10:53:45 -06:00
Mykola Grymalyuk
8e1809cf3d Fix pythong 3.8 support and XhciDxe
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/240
2021-05-23 11:37:48 -06:00
Mykola Grymalyuk
98bc71e46a Fix UEFI output on MacPro3,1 with PC GPUs 2021-05-23 11:31:56 -06:00
Mykola Grymalyuk
d1dd8a0e2e Update Python requirement 2021-05-22 00:36:02 -06:00
Mykola Grymalyuk
d20d9975c1 Fix screen printing 2021-05-21 11:38:44 -06:00
Mykola Grymalyuk
ecca9f2c72 Clean unused function 2021-05-21 09:27:26 -06:00
Mykola Grymalyuk
88724c4950 Fix erroring on XHCI detection
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/236
2021-05-21 07:42:43 -06:00
Mykola Grymalyuk
fd48419cb2 Update patch set information 2021-05-19 19:37:56 -06:00
Mykola Grymalyuk
ff5543f9dc Merge pull request #232 from dortania/recovery-tests
Partial Support Patching from RecoveryOS
2021-05-19 13:36:28 -06:00
Mykola Grymalyuk
0130fce0c6 Update SysPatch.py 2021-05-19 13:15:46 -06:00
Mykola Grymalyuk
d8258a73fd Update SysPatch.py 2021-05-19 13:02:19 -06:00
Mykola Grymalyuk
939e942f50 Update SysPatch.py 2021-05-19 12:32:04 -06:00
Mykola Grymalyuk
603aedb6ae Update SysPatch.py 2021-05-19 12:16:29 -06:00
Mykola Grymalyuk
05a51bf32e Update SysPatch.py 2021-05-19 11:27:20 -06:00
Mykola Grymalyuk
792a99ce04 Update Utilities.py 2021-05-19 11:10:26 -06:00
Mykola Grymalyuk
a6fbbc0c44 Fix incorrectly stripping disk ID in recovery 2021-05-19 11:01:58 -06:00
Mykola Grymalyuk
9b7497946a Update Constants.py 2021-05-19 10:48:40 -06:00
Mykola Grymalyuk
9a68ce67eb Update SysPatch.py 2021-05-19 10:48:10 -06:00
Mykola Grymalyuk
a6ccd28671 Update SysPatch.py 2021-05-19 09:58:37 -06:00
Mykola Grymalyuk
f7f66cd732 Fix SIP parsing 2021-05-19 09:51:30 -06:00
Mykola Grymalyuk
9b316bbbca Fix crash on APFS snapshotting 2021-05-19 09:28:20 -06:00
Mykola Grymalyuk
db39757655 Fix elevation crash 2021-05-19 09:16:02 -06:00
Mykola Grymalyuk
88903e8edf Fix import 2021-05-19 09:07:18 -06:00
Dhinak G
dd968a3244 Fixes 2021-05-19 09:58:01 -04:00
Mykola Grymalyuk
a42811b907 Clean unused binaries 2021-05-18 18:05:35 -06:00
Mykola Grymalyuk
15aacddd23 Add XHCI UEFI Driver 2021-05-17 20:40:09 -06:00
Mykola Grymalyuk
f4d3154fd1 Increment Build Version 2021-05-17 12:32:40 -06:00
Mykola Grymalyuk
93e9a8f381 Add SeedUtil option to Advanced Patcher Settings 2021-05-16 21:49:54 -06:00
Mykola Grymalyuk
69ab0fd17b Increment Apple Binaries 2021-05-16 13:18:05 -06:00
Mykola Grymalyuk
504cdc6214 Merge pull request #227 from dortania/terascale-2-test
Add basic MacBookPro8,2/3 Brightness Control
2021-05-16 13:07:51 -06:00
Mykola Grymalyuk
d3b9b6e87a Sync changelog 2021-05-16 12:23:55 -06:00
Mykola Grymalyuk
0a04c5c156 Enable Brightness MBP8,x 2021-05-16 11:31:52 -06:00
Mykola Grymalyuk
1799625f99 Test TeraScale 2 support 2021-05-16 10:07:02 -06:00
Mykola Grymalyuk
8f13906d2c Add disk picker 2021-05-15 19:09:25 -06:00
Mykola Grymalyuk
771186e6cf Avoid using sudo and fdesetup calls in Recovery 2021-05-15 18:58:25 -06:00
Mykola Grymalyuk
da32e9d4e3 Test Recovery picker 2021-05-15 18:29:42 -06:00
Mykola Grymalyuk
935b3819f0 Fix typo 2021-05-15 18:09:46 -06:00
Mykola Grymalyuk
1abe08bcac Fix screen clear erroring in RecoveryOS 2021-05-15 18:07:17 -06:00
Mykola Grymalyuk
09779f62b3 Enhance RecoveryOS support 2021-05-15 17:54:31 -06:00
Mykola Grymalyuk
abe865f999 Fix MacBookPro8,2/3 Hibernation wake 2021-05-15 17:42:09 -06:00
Mykola Grymalyuk
f3734f9daa Merge pull request #223 from lulujyc/patch-1
Update TESTED.md
2021-05-15 10:29:42 -06:00
lulujyc
7bc993ccc9 Update TESTED.md 2021-05-15 17:36:39 +08:00
Mykola Grymalyuk
ab3762e42e Expand AGPM and AGDC Override support 2021-05-14 20:45:15 -06:00
Mykola Grymalyuk
58ed1634db Fix missing variable 2021-05-14 18:47:21 -06:00
Mykola Grymalyuk
7d579a0942 Add nightly link 2021-05-14 18:43:37 -06:00
Mykola Grymalyuk
4daa5c4755 Remove unused OCLP binary from GA 2021-05-14 18:38:57 -06:00
Mykola Grymalyuk
00c89089c3 Enable PanicNoKextDump by default 2021-05-14 18:14:16 -06:00
Mykola Grymalyuk
68f82e1993 Work around AppleHDA linking issues 2021-05-14 16:49:10 -06:00
Mykola Grymalyuk
356646725e Refactor for better file path handling 2021-05-14 16:23:56 -06:00
Mykola Grymalyuk
608decc9de Support space in path when downloading Root Patches
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/194
2021-05-14 15:51:19 -06:00
Mykola Grymalyuk
9eecbae6da Remove reliance on ARPT device naming
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/216
2021-05-14 10:59:20 -06:00
Mykola Grymalyuk
3197510b72 Sync changelog 2021-05-13 08:39:17 -06:00
Mykola Grymalyuk
4830d462aa Merge pull request #218 from dortania/brightness-test
Remove AppleBacklightFixup reliance
2021-05-13 08:38:28 -06:00
Mykola Grymalyuk
fc1cb53c1d Merge branch 'main' into brightness-test 2021-05-13 08:38:00 -06:00
Mykola Grymalyuk
7446da8e1f Add agdpmod=vit9696 to all Nvidia Metal iMacs
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/217
2021-05-13 08:32:23 -06:00
Mykola Grymalyuk
04019798e9 Add iMac10,1 default dGPU pathing 2021-05-12 17:48:47 -06:00
Mykola Grymalyuk
20a900f052 Add Monitor Injection 2021-05-12 17:29:03 -06:00
Mykola Grymalyuk
df469be05f Remove AppleBacklightFixup reliance 2021-05-12 15:38:23 -06:00
Mykola Grymalyuk
d42d2d09e9 Fix SysPatch.py rebuild arg 2021-05-12 12:53:28 -06:00
Mykola Grymalyuk
f8c39e957e Clean unused imports 2021-05-12 09:47:11 -06:00
Mykola Grymalyuk
78760b8a08 Fix crashing when Wireless module not present 2021-05-12 08:42:05 -06:00
Mykola Grymalyuk
276883059f Increment build 2021-05-11 18:53:45 -06:00
Mykola Grymalyuk
cabb5da981 Fix versioning 2021-05-11 18:26:29 -06:00
Mykola Grymalyuk
f8afde61fe Sync changelog 2021-05-11 18:23:39 -06:00
Mykola Grymalyuk
95a802a402 Fix Device Path formatting on 2012+ iMacs 2021-05-11 17:52:33 -06:00
Mykola Grymalyuk
e5fd984daf Fix audio support on iMac7,1 and iMac8,1 2021-05-11 10:52:56 -06:00
Mykola Grymalyuk
0a0a59feea Fix NVMe properties applying with OC installed
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/212
2021-05-11 10:44:23 -06:00
Mykola Grymalyuk
75200e9c8d Remove unused setting 2021-05-10 17:55:13 -06:00
Mykola Grymalyuk
83d4cc5a16 Work-around BT2.0 panic
Based on StarPlayrX’s BigMac patch
2021-05-10 10:30:07 -06:00
Mykola Grymalyuk
faecdc3b0c Add misc info 2021-05-10 09:18:28 -06:00
Mykola Grymalyuk
0fe230e56b Fix typo 2021-05-10 08:55:29 -06:00
Mykola Grymalyuk
6f13247151 Add accel issues docs 2021-05-10 08:53:57 -06:00
Mykola Grymalyuk
24a8249a60 Update docs 2021-05-09 17:38:52 -06:00
Mykola Grymalyuk
7df345d286 Fix USB mapping witout CPUFriend 2021-05-09 10:29:52 -06:00
Mykola Grymalyuk
7c0088e0ff Merge pull request #208 from dortania/accel-testing
Import dosdude1 patches
2021-05-09 08:08:38 -06:00
Mykola Grymalyuk
204cf5beea Increment Apple binaries 2021-05-09 08:07:57 -06:00
Mykola Grymalyuk
04b69f4288 Fix typo 2021-05-08 22:25:28 -06:00
Mykola Grymalyuk
b4ef000fc0 Import dosdude1 patches 2021-05-08 22:24:05 -06:00
Mykola Grymalyuk
78038b9607 Add partial TeraScale 2 support 2021-05-08 22:04:33 -06:00
Mykola Grymalyuk
a458b68f2b Merge pull request #207 from dortania/pci-id
Revamp PCI ID handling
2021-05-08 21:39:21 -06:00
Mykola Grymalyuk
1509dffa1c Fix iMac7,1 audio support
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/191
2021-05-08 21:38:36 -06:00
Mykola Grymalyuk
e274137503 Fix codesigning crashes 2021-05-08 20:52:26 -06:00
Mykola Grymalyuk
97bfb9f730 Clean up SysPatch code 2021-05-08 20:33:10 -06:00
Mykola Grymalyuk
b1f8b80e83 Fix typo 2021-05-08 20:18:30 -06:00
Mykola Grymalyuk
f0a339b0f7 Rework PCI ID storage 2021-05-08 20:14:51 -06:00
Mykola Grymalyuk
6bb5c2e74e Update donate.md 2021-05-08 18:07:50 -06:00
Mykola Grymalyuk
5f1b732e12 Heavily expand Graphics ID list 2021-05-08 17:35:26 -06:00
Mykola Grymalyuk
2a9f94ac99 Add user-configurable CPUFriend
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/199
2021-05-08 14:04:01 -06:00
Mykola Grymalyuk
9b89b62219 Add device ID comments 2021-05-08 12:51:03 -06:00
Mykola Grymalyuk
315be87f31 Fix table 2021-05-08 12:35:26 -06:00
Mykola Grymalyuk
0613ad9bc3 Merge pull request #196 from fussel132/patch-1
Adding successful report of MacBookPro7,1
2021-05-08 12:34:25 -06:00
Mykola Grymalyuk
0ff6977bb7 Add iMac12,x troubleshooting 2021-05-08 12:29:19 -06:00
Mykola Grymalyuk
025d03e7e8 Fix crashing 2021-05-07 14:56:32 -06:00
Mykola Grymalyuk
a4efb1ecd5 Fix DevicePath handling
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/195
2021-05-07 08:23:12 -06:00
Mykola Grymalyuk
7340539742 Fix iMac display output support
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/190
2021-05-07 07:54:37 -06:00
Mykola Grymalyuk
377fdc8de1 Fix crashing on Nvidia iGPUs 2021-05-05 15:32:51 -06:00
Fussel132
36a68ca147 Adding successful report of MacBookPro7,1
Tried out Big Sur 11.3 on MacBookPro7,1 with OpenCore patcher version v0.1.2, working fine (with graphics acceleration).  Not working: Keyboard backlight and graphical issues with sliders in control center.
2021-05-05 23:11:25 +02:00
Mykola Grymalyuk
922f207da7 Add better debug during Root Patch 2021-05-05 12:38:20 -06:00
Mykola Grymalyuk
ec4d1d4471 Fix crash 2021-05-05 12:34:23 -06:00
Mykola Grymalyuk
057b8739d3 Refactor Device Probing 2021-05-05 12:28:24 -06:00
Dhinak G
332376030e Fix typo in storage device detection
Fixes #192
2021-05-05 08:19:58 -04:00
Mykola Grymalyuk
302cfb3bef Add built-in to party PCI drives 2021-05-04 22:24:14 -06:00
Mykola Grymalyuk
0cb70d896d Fix iMac9,1 audio support 2021-05-04 21:03:11 -06:00
Mykola Grymalyuk
f5c511366e Fix NightShift disabling on Minimal SMBIOS configs 2021-05-04 14:07:50 -06:00
Mykola Grymalyuk
79a2f49739 Fix integer 2021-05-04 00:13:05 -06:00
Mykola Grymalyuk
d6b5b65183 Avoid having too fast RAM 2021-05-04 00:11:30 -06:00
Mykola Grymalyuk
89444bc4bc Fix input handling 2021-05-04 00:03:49 -06:00
Mykola Grymalyuk
2435a7e651 Fix typo 2021-05-03 23:56:48 -06:00
Mykola Grymalyuk
1957e70cfd Fix CPU Renaming on non-i5 models 2021-05-03 23:49:43 -06:00
Mykola Grymalyuk
aba21bca43 Fix crash 2021-05-03 21:33:05 -06:00
Mykola Grymalyuk
ccc9549fc4 Fix typo 2021-05-03 21:24:30 -06:00
Mykola Grymalyuk
07bd8fa33f Support custom CPU names in About This Mac 2021-05-03 21:12:01 -06:00
Mykola Grymalyuk
85e0761460 Fix MacBookPro5,4 audio
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/185
2021-05-03 12:44:11 -06:00
Mykola Grymalyuk
5bca1a0ad6 Add Innie Support
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/187
2021-05-03 12:28:47 -06:00
Mykola Grymalyuk
ca4051b10d Increment binaries to release 2021-05-03 09:05:57 -06:00
Mykola Grymalyuk
ece4065de3 Clarify changelog 2021-05-02 23:00:35 -06:00
Mykola Grymalyuk
e5aea82b6f Add Sidecar support 2021-05-02 22:59:13 -06:00
Mykola Grymalyuk
85fc1d6627 Adjust CPUFriend for custom SMBIOS better 2021-05-02 20:25:24 -06:00
Mykola Grymalyuk
a0e9de2cb8 Strip garbage code 2021-05-02 18:38:27 -06:00
Mykola Grymalyuk
c39b719093 Fix pci-aspm-default parsing on non-int vars
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/183
2021-05-02 16:41:42 -06:00
Mykola Grymalyuk
dd7cc97645 Fix comment 2021-05-02 13:56:32 -06:00
Mykola Grymalyuk
76f104ddab Increment binaries
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/180
2021-05-02 12:35:50 -06:00
Mykola Grymalyuk
6f1ed43f4e Disable L0 for NVMe drives 2021-05-01 10:40:06 -06:00
Mykola Grymalyuk
7209aa98d0 Append 0x2 for NVMe PM 2021-05-01 08:52:26 -06:00
Mykola Grymalyuk
0ac33532f2 Fix MacBook6,1 audio support
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/179
2021-04-30 23:36:22 -06:00
Mykola Grymalyuk
d40e9c869d Allow native Macs to use OpenCore
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/178
2021-04-30 23:27:43 -06:00
Mykola Grymalyuk
d5ff1edc44 Add 3rd Party NVMe Power Management Patches 2021-04-30 22:51:12 -06:00
Mykola Grymalyuk
c3d8d77b07 Add documentation on UEFI Windows install 2021-04-29 21:46:25 -06:00
Mykola Grymalyuk
9ae7be59b5 Add Windows UEFI Audio support
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/133
2021-04-29 20:53:54 -06:00
Mykola Grymalyuk
e1be0d32ab Update config 2021-04-29 18:41:07 -06:00
Mykola Grymalyuk
a675771bc6 Add better model logging to config.plist 2021-04-29 18:20:49 -06:00
Mykola Grymalyuk
c0a15477c9 Update docs 2021-04-29 08:46:20 -06:00
Mykola Grymalyuk
c2291ab590 Merge pull request #176 from Ausdauersportler/patch-4
How to apply the legacy Video Patches
2021-04-29 08:31:48 -06:00
Mykola Grymalyuk
be9cc0d41b Merge pull request #177 from Ausdauersportler/patch-5
make OLCP EFI default boot object
2021-04-29 08:30:52 -06:00
Ausdauersportler
01e0f3061c make OLCP EFI default boot object
Select EFI by pressing control. You should possibly change the picture (../images/efi-boot.png) with one showing the circle arrow in that case!
2021-04-29 16:27:19 +02:00
Mykola Grymalyuk
8cd7b0b43b Clarify Imac Metal Setting 2021-04-29 07:48:32 -06:00
Mykola Grymalyuk
ef11715e79 Probe hardware for Backlight pathing 2021-04-29 07:41:07 -06:00
Ausdauersportler
7a7ff557ea How to apply the legacy Video Patches
Added two pictures  and some text about the legacy video patching process.
2021-04-29 11:10:38 +02:00
Mykola Grymalyuk
cb307d852a Update DONATE.md 2021-04-28 17:39:10 -06:00
Mykola Grymalyuk
e943c69c82 Update README 2021-04-28 10:31:25 -06:00
Mykola Grymalyuk
fa8d3a800e Remove ACPI Patching for Minimal SMBIOS 2021-04-28 09:45:30 -06:00
Mykola Grymalyuk
f592524054 Fix incorrect agdpmod arg for AMD GPUs 2021-04-28 08:34:15 -06:00
Mykola Grymalyuk
aaa114e753 Fix disabling non-existent iGPU in iMac11,2 2021-04-27 14:19:02 -06:00
Mykola Grymalyuk
0625bdb3d1 Fix reduced output speeds on BCM94360 Wifi cards
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/170
2021-04-27 07:14:20 -06:00
Mykola Grymalyuk
7e918c86e2 Fix URL error message 2021-04-26 19:48:28 -06:00
Mykola Grymalyuk
2216bc0212 Fix IDE support on 2008 era MacBooks and iMacs
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/169
2021-04-26 19:04:35 -06:00
Mykola Grymalyuk
e76ceb7cf4 Update Discord link 2021-04-26 14:59:19 -06:00
Mykola Grymalyuk
22b9853452 Fix CLI model checking
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/168
2021-04-26 09:11:14 -06:00
Mykola Grymalyuk
8c7e991779 Revert MBP8,x AMD patch 2021-04-25 15:19:08 -06:00
Mykola Grymalyuk
b2fcb77c24 Fix more typos 2021-04-25 00:37:17 -06:00
Mykola Grymalyuk
2ac80fda32 Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher into main 2021-04-25 00:26:02 -06:00
Mykola Grymalyuk
31e48c7d96 Fix misc typos 2021-04-25 00:25:54 -06:00
Mykola Grymalyuk
18bbe60088 Merge pull request #167 from guanzhangrtk/main
Fix typo
2021-04-25 00:15:56 -06:00
guanzhangrtk
5a0ad4379e Fix typo 2021-04-24 23:12:13 -07:00
Mykola Grymalyuk
8971a3c4a9 SysPatch.py: Fix typo 2021-04-24 23:57:07 -06:00
Mykola Grymalyuk
37cd66265b Fix Acceleration Linking for Intel Ironlake iGPUs 2021-04-24 23:04:13 -06:00
Dhinak G
faad02a7fa Sync changelog 2021-04-24 14:10:43 -04:00
Dhinak G
06d4c86ad8 Fix report error output 2021-04-24 14:09:28 -04:00
Mykola Grymalyuk
a5998cb226 Sync changelog 2021-04-24 10:35:22 -06:00
Mykola Grymalyuk
e86b48e0fc Update GPU detection 2021-04-24 09:38:09 -06:00
Mykola Grymalyuk
53a59c0ce3 Update docs 2021-04-24 09:24:03 -06:00
Mykola Grymalyuk
fe5045edbe Fix dGPU detection on patcher start 2021-04-24 09:12:05 -06:00
Mykola Grymalyuk
6a357d8cdf Disable AMD TeraScale 2 GPUs in MacBook Pros 2021-04-24 08:33:55 -06:00
Mykola Grymalyuk
5005d1f1eb Update SysPatch.py 2021-04-24 00:35:27 -06:00
Mykola Grymalyuk
b801afcff0 Enable GPU Accel on legacy GPUs by default 2021-04-23 20:30:52 -06:00
Mykola Grymalyuk
758c1d9649 Fix TeraScale 1 GPU detection 2021-04-22 20:27:24 -06:00
Mykola Grymalyuk
9e6d742c6d Fix iMac11,3 Nvidia boot issues after PRAM reset 2021-04-22 10:01:51 -06:00
Mykola Grymalyuk
de1b893049 Disable iGPU when running iMac13,x/14,x 2021-04-22 09:51:54 -06:00
Mykola Grymalyuk
0483b5651a Patch AppleIntelSNBGraphicsFB’s board ID 2021-04-22 07:45:51 -06:00
Mykola Grymalyuk
7680c20221 Fix build crashing on iMac7,1 2021-04-21 21:55:09 -06:00
Mykola Grymalyuk
349bdb2936 Update iMac7,1 notes 2021-04-21 21:05:13 -06:00
Mykola Grymalyuk
60dc7c4490 Fix USB kernel panics on iMac7,1 2021-04-21 20:43:57 -06:00
Mykola Grymalyuk
7aaaa79571 Merge pull request #163 from dortania/test-sandy
Misc fixes
2021-04-21 18:14:24 -06:00
Mykola Grymalyuk
b83495702b Disable HD3000 work-around 2021-04-21 18:13:54 -06:00
Mykola Grymalyuk
d482443f0e Allow Legacy Acceleration Patches on Mac Pros and Xserves 2021-04-21 18:13:02 -06:00
Mykola Grymalyuk
d4b55ad0e4 Fix build crashing when no wifi card is present 2021-04-21 17:47:51 -06:00
Mykola Grymalyuk
77cff8a6f3 Initial Sandy Bridge test 2021-04-21 15:23:43 -06:00
Mykola Grymalyuk
2e62f1f65c Add better kmutil crash handling 2021-04-21 14:42:54 -06:00
Mykola Grymalyuk
87359ee642 Fix typo 2021-04-21 12:43:07 -06:00
Mykola Grymalyuk
0b8c4b20b6 Update menubar patches 2021-04-21 12:17:38 -06:00
Mykola Grymalyuk
3049d1adef Fix misc issues
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/161
2021-04-21 10:53:21 -06:00
Mykola Grymalyuk
e3e9be01a2 Fix iMac13/14,x building 2021-04-21 08:02:37 -06:00
Mykola Grymalyuk
f178b22423 Add beta support for Legacy GPU Acceleration 2021-04-20 18:38:42 -06:00
Mykola Grymalyuk
797b56b9f9 Fix DRM support on Nvidia-only configurations 2021-04-20 15:00:53 -06:00
Mykola Grymalyuk
d08807e301 Fix bluetooth on iMac12,x 2021-04-20 11:19:31 -06:00
Mykola Grymalyuk
c78f7d0bdb Fix crashing on custom models 2021-04-20 09:11:56 -06:00
Mykola Grymalyuk
bd4564f98e Clarify uninstallation docs 2021-04-20 07:15:04 -06:00
Mykola Grymalyuk
25a5a3d168 Add MouSSE support to iMac10,1 with Metal AMD GPU 2021-04-18 10:45:01 -06:00
Mykola Grymalyuk
4b54711434 Fix iMac11,3 GFX0 pathing
Reference https://github.com/dortania/OpenCore-Legacy-Patcher/issues/89
2021-04-18 09:11:14 -06:00
Mykola Grymalyuk
6eec2e95b8 Increment build 2021-04-17 17:34:02 -06:00
Mykola Grymalyuk
03ed8ed1f0 Fix crash on iMacs with Metal GPUs 2021-04-17 17:05:32 -06:00
Mykola Grymalyuk
9720d90493 Update docs
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/155
2021-04-17 13:40:27 -06:00
Mykola Grymalyuk
d0eada1d85 Increment build 2021-04-17 12:49:11 -06:00
Mykola Grymalyuk
06b3cf2e90 Fix workflow name 2021-04-17 09:45:13 -06:00
Mykola Grymalyuk
bbd379a584 Allow Root Patches by default on legacy GPUs 2021-04-17 09:44:12 -06:00
Mykola Grymalyuk
2b04a06adc Fix typo 2021-04-15 21:20:25 -06:00
Mykola Grymalyuk
703e926b96 Build CLI: Fix typo 2021-04-15 21:17:11 -06:00
Mykola Grymalyuk
3d10404da5 Fix CI building 2021-04-15 21:14:12 -06:00
Mykola Grymalyuk
41a189444b Add basic CLI support 2021-04-15 21:07:53 -06:00
Mykola Grymalyuk
6ae572f74f Misc cleanup 2021-04-15 20:46:46 -06:00
Mykola Grymalyuk
fa045e96e7 Fix GFX0 parsing for iMac11,x/12,x 2021-04-15 20:28:32 -06:00
Mykola Grymalyuk
2a12e861ac Clean up AMD brightness patch logic 2021-04-15 20:10:27 -06:00
Mykola Grymalyuk
31c0845667 Temporarily disable AMD Brightness patches
Currently will fail linking when AMDx3000 is installed
2021-04-15 19:55:51 -06:00
Mykola Grymalyuk
a97c6c9baa Merge pull request #151 from flagersgit/patch-1
Remove confusing / unapplicable language
2021-04-15 19:06:19 -06:00
Flagers
e4c433730f Remove confusing / unapplicable language 2021-04-15 20:54:06 -04:00
Mykola Grymalyuk
30be583a3d Fix iMac9,1 20” and 24” audio support 2021-04-14 11:09:23 -06:00
Mykola Grymalyuk
bbed0b4921 Update Build.py
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/145
2021-04-13 14:38:10 -06:00
Mykola Grymalyuk
3e784c0ae5 Fix spoofed wifi card detection 2021-04-13 12:53:23 -06:00
Mykola Grymalyuk
182b6c4291 Constants.py: Fix Atheros ID typo 2021-04-13 12:02:02 -06:00
Mykola Grymalyuk
b1f16fca1d Add gfxutil support 2021-04-13 10:31:37 -06:00
Mykola Grymalyuk
9787645542 Strip unused kext entries during build 2021-04-12 22:03:38 -06:00
Mykola Grymalyuk
af3d4c4af5 Update license 2021-04-12 21:01:18 -06:00
Mykola Grymalyuk
bdc8c2a4fc Remove reliance on WEG boot-args for non-MP models 2021-04-12 17:37:55 -06:00
Mykola Grymalyuk
be89e2ae11 Fix typo 2021-04-12 15:49:28 -06:00
Mykola Grymalyuk
55f3905dd4 Fix MacBookPro9,1 patches 2021-04-12 15:18:39 -06:00
Mykola Grymalyuk
6f0048814f Misc fixes
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/141
2021-04-12 14:48:53 -06:00
Mykola Grymalyuk
7895413ce2 Fix misc issues
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/142
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/140
2021-04-12 11:55:37 -06:00
Dhinak G
9254e67fc9 Update README.md 2021-04-11 22:01:10 -04:00
Mykola Grymalyuk
d815ece3c4 Fix crashing on non-iGPU machines 2021-04-11 13:58:14 -06:00
Mykola Grymalyuk
14bad15df4 Fix IMac detection 2021-04-11 13:17:17 -06:00
Mykola Grymalyuk
d830e72b62 Enhance GPU Detection logic 2021-04-11 13:00:04 -06:00
Mykola Grymalyuk
70b5399126 Format py files 2021-04-11 08:46:42 -06:00
Mykola Grymalyuk
1d8d3ef757 Sync fix naming scheme 2021-04-11 07:41:34 -06:00
Mykola Grymalyuk
9f3ee178a5 Sync fix naming scheme 2021-04-11 07:41:09 -06:00
Mykola Grymalyuk
91335ab271 Sync DONATE.md 2021-04-11 00:01:09 -06:00
Mykola Grymalyuk
8320355925 Add support for partial HD5/6000 accel 2021-04-10 23:46:37 -06:00
Mykola Grymalyuk
0b225fbbbd Add AMD brightness control patches 2021-04-10 23:42:03 -06:00
Mykola Grymalyuk
6a18334663 Add user configurable Bootstrap setting
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/138
2021-04-10 22:45:22 -06:00
Mykola Grymalyuk
af940152a1 Merge pull request #136 from kommtzeitkonrad/mbp5,3-tested
Add MacBookPro5,3 to TESTED.md
2021-04-10 20:45:53 -06:00
kommtzeitkonrad
66f5e8d969 Fix typo 2021-04-11 04:26:53 +02:00
Mykola Grymalyuk
b3b7508237 Clean unused binaries 2021-04-10 19:22:58 -06:00
Mykola Grymalyuk
361f9767dd Add Brightness Control patches 2021-04-10 19:22:17 -06:00
Mykola Grymalyuk
f20c9808ed Update bug_report.md 2021-04-10 15:53:38 -06:00
Mykola Grymalyuk
b6ac9f3a6f Hide OpenShell.efi by default
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/139
2021-04-10 15:38:26 -06:00
Mykola Grymalyuk
8365144834 Fix MacBookPro4,1 17" audio support 2021-04-10 08:40:31 -06:00
Mykola Grymalyuk
85b422b0fb Fix MacBookPro4,1 audio support 2021-04-10 08:07:22 -06:00
kommtzeitkonrad
6ebc9a08ae Add MacBookPro5,3 to TESTED.md 2021-04-10 06:42:20 +02:00
Mykola Grymalyuk
b04e396351 Syn MODELS.md 2021-04-09 18:28:37 -06:00
Mykola Grymalyuk
1ec23e9ebb Add imac7,1 24” support AppleALC 2021-04-09 18:20:15 -06:00
Mykola Grymalyuk
44637967bc Sync changelog
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/102
2021-04-09 18:15:59 -06:00
Mykola Grymalyuk
7d93c96343 Add AppleAirPortBrcm43224 support 2021-04-09 18:02:18 -06:00
Mykola Grymalyuk
58a9f4dd0e Fix incorrectly setting layout 13 on non-MacPro3,1 2021-04-09 14:38:38 -06:00
Mykola Grymalyuk
d2c673d9e1 Add iMac8,1 20” support to AppleALC 2021-04-09 12:09:51 -06:00
Mykola Grymalyuk
0048559acb Add AppleALC support 2021-04-09 10:22:29 -06:00
Mykola Grymalyuk
88d7bf373b Fix table 2021-04-08 07:45:27 -06:00
Mykola Grymalyuk
28861ca1a8 Add basic Xserve2,1 support 2021-04-08 07:44:27 -06:00
Mykola Grymalyuk
86ae43dc1c Add more models 2021-04-07 19:34:52 -06:00
Mykola Grymalyuk
24d96c1d37 Add Macmini6,1 to tested 2021-04-07 14:51:28 -06:00
Mykola Grymalyuk
f62e9f5d21 Fix other typo 2021-04-07 12:58:00 -06:00
Mykola Grymalyuk
d23965f1c0 Fix version 2021-04-07 12:57:24 -06:00
Mykola Grymalyuk
e9397b0237 Update TESTED.md 2021-04-07 12:56:16 -06:00
Mykola Grymalyuk
8bf7c25f69 Add more tested machines 2021-04-07 11:51:11 -06:00
Mykola Grymalyuk
0a693806d4 Add MacBookPro8,1 to TESTED.md 2021-04-07 11:26:02 -06:00
Mykola Grymalyuk
12e8b8e0a9 Update TESTED.md 2021-04-07 11:09:37 -06:00
Mykola Grymalyuk
33d95fc237 Update TESTED.md list 2021-04-07 11:02:45 -06:00
Mykola Grymalyuk
b0ff0204bd Update TESTED.md 2021-04-07 10:48:20 -06:00
Mykola Grymalyuk
7704488e24 Add Tested Models docs to determine regression 2021-04-07 10:38:26 -06:00
Mykola Grymalyuk
bf2bd694bc Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher into main 2021-04-06 21:40:38 -06:00
Mykola Grymalyuk
200f6d17f9 Exclude CPUFriend from El Capitan-maxed Macs
iMac8,1 reported heavily degarded performace, most likely due to the data given to ResourceConverter.sh
2021-04-06 21:40:30 -06:00
Dhinak G
580f35bfce Another typo 2021-04-06 20:07:49 -04:00
Dhinak G
a6eda09158 Typos 2021-04-06 20:03:04 -04:00
Mykola Grymalyuk
a93da6cf9e Fix CPU Boosting on 2011 and older Macs 2021-04-06 17:15:19 -06:00
Mykola Grymalyuk
e715970b63 Add docs on how to update OpenCore 2021-04-06 12:17:50 -06:00
Mykola Grymalyuk
1b6d29d19b Fix networking support in Mojave and Catalina
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/131
2021-04-06 08:38:55 -06:00
Mykola Grymalyuk
e219ff809e Enable NSDefenestratorModeEnabled 2021-04-06 07:52:18 -06:00
Mykola Grymalyuk
a521667e54 Add ExFat support for models missing driver 2021-04-05 23:52:05 -06:00
Mykola Grymalyuk
7a41b0c4a5 Bump version 2021-04-05 22:59:53 -06:00
Mykola Grymalyuk
cc5d522cb9 Fix OpenCanopy and enhance build detection 2021-04-05 22:57:12 -06:00
Mykola Grymalyuk
57713ab195 Bump version 2021-04-05 15:55:14 -06:00
Mykola Grymalyuk
548dad7743 Clarify supported OSes
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/130
2021-04-05 15:17:13 -06:00
Mykola Grymalyuk
a5989e88a3 Constants.py: Fix version error 2021-04-05 13:46:46 -06:00
Mykola Grymalyuk
f91e7dc10d Update binaries 2021-04-05 13:35:37 -06:00
Dhinak G
c889f97a6c Fix table attempt 3 2021-04-05 15:12:49 -04:00
Dhinak G
ff8b2eff2c Fix even more broken table 2021-04-05 15:01:46 -04:00
Mykola Grymalyuk
23acd5b6cd Fix iMac12,x skipping Nvidia patch 2021-04-03 23:35:38 -06:00
Mykola Grymalyuk
50256b92c8 Set ProtectSecureBoot
As we expect users to use UEFI based Windows installs, we should avoid issues of breaking the install
2021-04-03 15:25:16 -06:00
Mykola Grymalyuk
4731c2c346 Clarify docs 2021-04-03 08:38:08 -06:00
Mykola Grymalyuk
122aec5ec3 Clarify post-install patch usage 2021-04-02 22:48:04 -06:00
Mykola Grymalyuk
e62ca075e8 Add basic download progress 2021-04-02 21:37:12 -06:00
Mykola Grymalyuk
e4d5c62ada Add RestrictEvents-MBP91.patch for easier tracking 2021-04-02 10:00:59 -06:00
Mykola Grymalyuk
9db76b5cca Fix Mac Pro output issues
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/123
2021-04-02 09:37:15 -06:00
Mykola Grymalyuk
df4f165122 Add Benefits and Drawbacks table
Allows us to be more transparent between patchers with our users
2021-04-01 22:54:51 -06:00
Mykola Grymalyuk
8331c23045 Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher into main 2021-04-01 21:38:31 -06:00
Mykola Grymalyuk
bb1132301a Add extra permission fixes 2021-04-01 21:38:21 -06:00
Dhinak G
f6dcc35b48 Fix broken table 2021-04-01 20:55:03 -04:00
Dhinak G
9f583eb590 Update DONATE.md
soon™️, hopefully
2021-04-01 20:54:49 -04:00
Mykola Grymalyuk
5a700c729e Fix pathing typo 2021-04-01 15:18:54 -06:00
Mykola Grymalyuk
4e40da79bb Add Brightness Control backend 2021-04-01 12:53:27 -06:00
Mykola Grymalyuk
53582efd02 Update docs, add info on Metal GPU upgrades 2021-04-01 11:47:45 -06:00
Mykola Grymalyuk
9b4c66f3d3 Fix Ironlake typo 2021-03-31 19:37:02 -06:00
Mykola Grymalyuk
5c6dcc3485 Update README.md 2021-03-31 09:30:04 -06:00
Mykola Grymalyuk
898b10f932 Fix MacPro5,1 wifi logic 2021-03-31 08:11:18 -06:00
Mykola Grymalyuk
5bcc6d58c3 Add MacBook4,1 support 2021-03-31 07:27:03 -06:00
Mykola Grymalyuk
eb907d17a0 Add note about MBR2GPT 2021-03-30 13:47:20 -06:00
Mykola Grymalyuk
5e3f476884 Update copyright 2021-03-30 11:34:55 -06:00
Mykola Grymalyuk
21cc355b03 Update docs 2021-03-30 09:49:14 -06:00
Mykola Grymalyuk
a22531e1d9 Fix permissions on external files 2021-03-29 22:28:14 -06:00
Mykola Grymalyuk
324188c039 Lax SIP requirement 2021-03-29 20:50:20 -06:00
Mykola Grymalyuk
ef06f096d0 Fix SIP detection 2021-03-29 20:35:32 -06:00
Mykola Grymalyuk
afeff753ef Update docs 2021-03-29 11:31:10 -06:00
Mykola Grymalyuk
bf8892878d Set iGPUless iMacs correctly
iMac15,1 expects an iGPU, so these models should be set to iMacPro1,1 instead
2021-03-29 10:52:16 -06:00
Mykola Grymalyuk
1f6dfbfd30 Temp work-around botched download 2021-03-28 21:51:03 -06:00
Mykola Grymalyuk
eeeb222896 Fix typo 2021-03-28 17:24:49 -06:00
Mykola Grymalyuk
41733124db Fix output on iMac7,1 and 8,1 2021-03-28 17:15:09 -06:00
Mykola Grymalyuk
c9d7267280 Sync changelog 2021-03-28 16:10:09 -06:00
Mykola Grymalyuk
bb3a7eccc7 Merge pull request #120 from dortania/remote-binaries
Support Remote binaries
2021-03-28 15:58:34 -06:00
Mykola Grymalyuk
a73d5c70d4 Add support for external repos 2021-03-28 15:56:54 -06:00
Mykola Grymalyuk
c48711c4c3 Remove all Apple Binaries 2021-03-28 13:20:28 -06:00
Mykola Grymalyuk
eebb098aed Fix typo in OpenCore names 2021-03-28 13:01:39 -06:00
Mykola Grymalyuk
06ae5350cb Fix CPU calculations on MCP79 chipsets 2021-03-28 12:40:02 -06:00
Mykola Grymalyuk
69a41b2951 Increment build 2021-03-27 15:32:42 -06:00
Mykola Grymalyuk
19e43d2850 Increment OpenCore 2021-03-27 13:12:18 -06:00
Mykola Grymalyuk
c32a3d89e9 Fix AppleHDA patch crashing 2021-03-27 10:05:01 -06:00
Mykola Grymalyuk
b227480e6c Fix Broadcom Ethernet on older Macs 2021-03-26 21:15:32 -06:00
Mykola Grymalyuk
fbae80ec26 Add custom SSD icon 2021-03-26 20:38:50 -06:00
Mykola Grymalyuk
299bb0be73 ix crashing when CD is present 2021-03-26 16:30:53 -06:00
Mykola Grymalyuk
7e22a0fe46 Add automatic notarization 2021-03-26 15:19:49 -06:00
Mykola Grymalyuk
f1d5adff7a Add custom SD Card icon 2021-03-26 10:48:24 -06:00
Mykola Grymalyuk
9b4fbdfb9a Handle spaces in path names 2021-03-26 09:11:55 -06:00
Mykola Grymalyuk
e1a8cdc1d5 Add dot_clean and clarify docs
Thanks OKonnel!
2021-03-26 07:49:02 -06:00
Mykola Grymalyuk
d13f96a454 Add iMac13,3 support 2021-03-25 22:45:11 -06:00
Mykola Grymalyuk
b6599a1357 Fix typo in AGDP, AGPM and AMC building 2021-03-24 18:16:02 -06:00
Mykola Grymalyuk
ce09ccf115 Add warnings to root patcher 2021-03-24 17:46:13 -06:00
Mykola Grymalyuk
04a039caf3 Fix GPU Switching in MacBookPro9,1
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/116
2021-03-24 17:00:12 -06:00
Mykola Grymalyuk
f006ee4569 Info.plist: Fix typos 2021-03-24 07:42:41 -06:00
Mykola Grymalyuk
c1b7e62a02 Fix variable naming for kernel versions 2021-03-23 22:28:32 -06:00
Mykola Grymalyuk
cf11a9e7a9 Fix blackscreen on MacBookPro9,1 2021-03-23 21:13:26 -06:00
Mykola Grymalyuk
ed14fbfff0 Opt for kernel detection 2021-03-23 19:33:17 -06:00
Mykola Grymalyuk
ebc39a58eb Refactor USB map building 2021-03-23 14:16:40 -06:00
Mykola Grymalyuk
6475b3f055 Add license to site 2021-03-23 08:39:33 -06:00
Mykola Grymalyuk
bd86a8cc04 Add backend for unpatching root volume 2021-03-22 21:33:10 -06:00
Mykola Grymalyuk
de2166915a Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher into main 2021-03-22 20:44:05 -06:00
Mykola Grymalyuk
bab6faac97 Set HibernateMode to Auto 2021-03-22 20:43:57 -06:00
Dhinak G
16b9cb44c2 Test self-hosted 2021-03-22 21:35:51 -04:00
Mykola Grymalyuk
3d9f3a1147 Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher into main 2021-03-22 19:05:29 -06:00
Mykola Grymalyuk
0b5c244a2e Add El Capitan and newer .app support
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/98
2021-03-22 19:05:21 -06:00
Mykola Grymalyuk
c94aebc369 Switch to self-hosted Mojave runner 2021-03-22 18:57:44 -06:00
Mykola Grymalyuk
8fc015a108 Clarify copyright status 2021-03-22 12:51:33 -06:00
Mykola Grymalyuk
f5ba7816d9 Fix duplication 2021-03-22 10:59:57 -06:00
Mykola Grymalyuk
37c0bf1e22 Expand documentation 2021-03-22 10:55:48 -06:00
Mykola Grymalyuk
e699b6f2cb Fix USB map formatting
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/112
2021-03-22 07:18:20 -06:00
Mykola Grymalyuk
2904ca702c Fix 10.13 bug 2021-03-21 20:56:58 -06:00
Dhinak G
8f10f1938e FIx partition selection issue, fix prompt cancel 2021-03-21 22:50:20 -04:00
Mykola Grymalyuk
b7f7489c5d Remove SSE4,1 comment
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/111
2021-03-21 19:14:48 -06:00
Mykola Grymalyuk
691c462bba build.py: Fix ElCap error 2021-03-21 18:53:31 -06:00
Mykola Grymalyuk
e51ec8eb8e build.py: Work around Sierra and older limitations 2021-03-21 18:45:33 -06:00
Mykola Grymalyuk
ee7bf05780 SysPatch.py: Clean up unnessary print statments 2021-03-20 16:50:53 -06:00
Mykola Grymalyuk
3223854cdd Remove X3000 bundles
Due to linking issues, HD 5000 and 6000 are currently unsupported
2021-03-20 16:08:20 -06:00
Mykola Grymalyuk
a35384e0b1 SysPatch.py: Fix AMD linking 2021-03-20 15:57:52 -06:00
Mykola Grymalyuk
faa0456ff7 SysPatch.py: Fix model detection on patch 2021-03-20 15:29:41 -06:00
Mykola Grymalyuk
5d0d1968f5 CHANGLOG: Fix typo 2021-03-20 15:26:24 -06:00
Mykola Grymalyuk
21277e5738 Support decoding SIP value 2021-03-20 14:56:58 -06:00
Mykola Grymalyuk
4f8748932d SysPatch.py: Fix Nvidia code path 2021-03-20 12:33:52 -06:00
Mykola Grymalyuk
1b1ca79374 Heavily refactor kext patch system 2021-03-19 19:13:04 -06:00
Mykola Grymalyuk
97ae6b587c Refactor CLI Menu 2021-03-19 15:31:11 -06:00
Mykola Grymalyuk
d22588b3cd Refactor SysPatch.py 2021-03-19 14:56:33 -06:00
Mykola Grymalyuk
8041dca103 SysPatch.py: Fix typo 2021-03-18 17:26:50 -06:00
Mykola Grymalyuk
6c304402dd Add backend for GPU accel patches 2021-03-18 16:04:28 -06:00
Mykola Grymalyuk
ec3ecdca38 Sync docs 2021-03-18 12:39:53 -06:00
Mykola Grymalyuk
0fe707637a Fix misc root patching issues 2021-03-18 12:19:48 -06:00
Mykola Grymalyuk
77b19688ae Fix indentation crash 2021-03-17 13:04:48 -06:00
Mykola Grymalyuk
0d6e159b72 Hid misleading print statement 2021-03-17 12:33:46 -06:00
Mykola Grymalyuk
1afb953f05 Fix typo 2021-03-17 12:27:54 -06:00
Mykola Grymalyuk
ee07dc9936 Add Root Volume patching for older machines
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/87
2021-03-17 12:27:11 -06:00
Mykola Grymalyuk
254267f1be Fix misc issues 2021-03-17 12:16:57 -06:00
Mykola Grymalyuk
b78247f9e8 Implement backend for Root patching
Note: Currently non-functional for end-users
2021-03-16 23:44:05 -06:00
Mykola Grymalyuk
5bfee53d99 Actually fix site button 2021-03-16 15:05:29 -06:00
Mykola Grymalyuk
5154492c97 Fix typo 2021-03-16 14:54:48 -06:00
Mykola Grymalyuk
5c97527038 Fix “Help us improve” button 2021-03-16 14:53:56 -06:00
Mykola Grymalyuk
3fd08803d6 VuePress is garbage… 2021-03-16 13:43:08 -06:00
Mykola Grymalyuk
de5cf6f93d Update misc docs 2021-03-16 13:37:11 -06:00
Mykola Grymalyuk
60b9d9d811 Clarify support models 2021-03-16 10:43:49 -06:00
Mykola Grymalyuk
8405a8162f Add SMC Spoof to avoid smcupdater
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/104
2021-03-16 08:47:18 -06:00
Mykola Grymalyuk
95558ab31e Merge pull request #106 from MikeBeaton/platform-feature
PlatformFeature -> new 0.6.7 OEM detect value
2021-03-16 07:32:49 -06:00
Mike Beaton
256bd8dd71 PlatformFeature -> new 0.6.7 OEM detect value 2021-03-16 13:28:53 +00:00
Mykola Grymalyuk
c960153442 Roll back previous commit 2021-03-15 08:50:09 -06:00
Mykola Grymalyuk
c712f33cf3 Force py3.6 for pip 2021-03-15 08:46:16 -06:00
Mykola Grymalyuk
4e659ebdbb Add docs on how to debug 2021-03-14 19:05:21 -06:00
Mykola Grymalyuk
ed55cc3bbd Remove broken GUI 2021-03-14 17:12:24 -06:00
Mykola Grymalyuk
df61370b7c Sync changelog 2021-03-14 14:39:15 -06:00
Mykola Grymalyuk
79ab028b0a Re-enable legacy networking patches
Reference: https://github.com/dortania/OpenCore-Legacy-Patcher/issues/102
2021-03-14 13:37:14 -06:00
Mykola Grymalyuk
444819b6a0 Clarify BCM94322 chipset support 2021-03-14 12:03:38 -06:00
Mykola Grymalyuk
079a1ac2ff Add custom EFI Boot icons per drive type 2021-03-14 11:27:15 -06:00
Dhinak G
9113dab049 Use python from brew 2021-03-13 23:15:45 -05:00
Mykola Grymalyuk
377b29f317 Set build target to python 3.6 2021-03-13 20:59:32 -07:00
Mykola Grymalyuk
be9bb8bef1 Fix typos and link 2021-03-13 11:13:47 -07:00
Mykola Grymalyuk
51c3921cf8 Add custom icon guide 2021-03-13 10:25:56 -07:00
Mykola Grymalyuk
6f5d5922dc Disable verbose and misc fixes
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/97
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/96
2021-03-13 08:52:53 -07:00
Mykola Grymalyuk
fa5266b069 Update issue templates 2021-03-13 08:04:32 -07:00
Mykola Grymalyuk
d619f15d36 Undo previous commit 2021-03-12 13:18:30 -07:00
Mykola Grymalyuk
3e9ec51ef5 Set macOS 10.13 building 2021-03-12 13:10:27 -07:00
Mykola Grymalyuk
0ac54c7ec4 Fix copying 2021-03-12 11:50:47 -07:00
Mykola Grymalyuk
6220d21a7b Fixes BootCamp BOOTx64 compatibility
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/94
2021-03-12 11:50:21 -07:00
Mykola Grymalyuk
7661b52a0a Disable Vault due to breaking installations 2021-03-11 20:27:50 -07:00
Mykola Grymalyuk
8c9b47b4d5 Add example video 2021-03-11 18:47:53 -07:00
Mykola Grymalyuk
92c02996ae Fix bug 2021-03-11 15:16:30 -07:00
Mykola Grymalyuk
92d7349ec0 Sync changelog 2021-03-11 15:10:26 -07:00
Mykola Grymalyuk
1e8c00071d “Fix” builds detection breaking 2021-03-11 15:09:26 -07:00
Mykola Grymalyuk
1bf4cf7dce Clean up README 2021-03-11 12:34:20 -07:00
Dhinak G
79559943ad Update config.js 2021-03-11 14:19:48 -05:00
Dhinak G
f5dc3d7939 Update config.js 2021-03-11 14:16:17 -05:00
Dhinak G
4ed36074e6 Fix typo 2021-03-11 14:12:06 -05:00
Dhinak G
608053b8e1 Update build_test_deploy.yml 2021-03-11 14:09:24 -05:00
Dhinak G
928d7ed759 Update build_test_deploy.yml 2021-03-11 14:09:10 -05:00
Mykola Grymalyuk
f68cfbcb69 Forward build to docs 2021-03-11 12:00:15 -07:00
Mykola Grymalyuk
0ad2fb53d2 Add VuePress site 2021-03-11 11:55:16 -07:00
Mykola Grymalyuk
13d1110b7a Increment build 2021-03-11 10:43:09 -07:00
Mykola Grymalyuk
629a1469cb Allow amfi_get_out_of_my_way=1 2021-03-11 10:31:50 -07:00
Mykola Grymalyuk
231d478ff3 Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher into main 2021-03-10 22:25:53 -07:00
Mykola Grymalyuk
b0d1e019f8 Fix icns and DefaultBackgroundColor 2021-03-10 22:25:42 -07:00
Dhinak G
1b6b6d75c6 Set theme jekyll-theme-minimal 2021-03-10 18:08:03 -05:00
Mykola Grymalyuk
112e4221b3 Add black background to OpenCanopy
Work-around Macs not respecting DefaultBackgroundColor
2021-03-10 10:37:50 -07:00
Mykola Grymalyuk
c18f2b6649 Remove iMac9,1 from Wifi patches
Due to stability issues
2021-03-10 09:07:56 -07:00
Mykola Grymalyuk
f3ed9f4077 Fix trailing whitespaces 2021-03-10 08:28:20 -07:00
Mykola Grymalyuk
8e22fc890b Add GopPassThrough Support to MacBookPro4,1 2021-03-10 07:24:50 -07:00
Mykola Grymalyuk
951c2b3a2a Fix GPU vendor user-configuration
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/89
2021-03-09 23:19:37 -07:00
Mykola Grymalyuk
d605e33a72 Add user-configurable SIP and SecureBootModel 2021-03-09 22:16:03 -07:00
Mykola Grymalyuk
0359141f26 Update docs 2021-03-09 18:46:46 -07:00
Mykola Grymalyuk
fef47af891 Add user-configurable Vaulting
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/86
2021-03-09 18:32:48 -07:00
Mykola Grymalyuk
062c93e77b Tweak settings menu 2021-03-09 14:57:25 -07:00
Mykola Grymalyuk
8b012bd940 Fix typo 2021-03-09 14:55:27 -07:00
Mykola Grymalyuk
7db3508387 Add user-configurable ShowPicker 2021-03-09 14:53:04 -07:00
Mykola Grymalyuk
a2c603d874 Fix typo 2021-03-09 14:06:10 -07:00
Mykola Grymalyuk
41091a3967 Fix External Display Support on MacBookPro10,1 2021-03-09 13:56:39 -07:00
Mykola Grymalyuk
b84f701ff4 Sync changelog 2021-03-09 07:47:12 -07:00
Mykola Grymalyuk
1563a57c33 Fix crash on MacBookPro4,1 2021-03-09 07:30:17 -07:00
Mykola Grymalyuk
61e815565a Add new SMBIOS patching options 2021-03-08 18:01:19 -07:00
Mykola Grymalyuk
04c88ab7af Increment build 2021-03-08 16:44:47 -07:00
Mykola Grymalyuk
fe107d271c Add HW_BID injection to fix boot.efi error
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/83
2021-03-08 16:35:36 -07:00
Mykola Grymalyuk
90274eef33 Fix ThirdPartyDrives model detection
Reference: https://github.com/dortania/Opencore-Legacy-Patcher/issues/83
2021-03-07 12:43:12 -07:00
Mykola Grymalyuk
65cb3cf7f0 Use patcher_version variable for .app 2021-03-07 10:39:15 -07:00
Mykola Grymalyuk
bcf86801db Clarify SIP usage 2021-03-06 19:22:47 -07:00
Mykola Grymalyuk
8d6ba46c6f Add PanicNoKextDump for cleaner kernel panics 2021-03-06 19:21:11 -07:00
Mykola Grymalyuk
c556d4dd15 Add user-configurable Wifi and GPU patches 2021-03-06 19:01:27 -07:00
Mykola Grymalyuk
90b7ae4898 Add user-configurable OpenCore DEBUG builds 2021-03-06 17:57:30 -07:00
Mykola Grymalyuk
0a8f018332 Reduce OpenCanopy Resources size to 1/3 2021-03-06 17:35:38 -07:00
Mykola Grymalyuk
43b55435ba Increment build version 2021-03-06 17:29:21 -07:00
Mykola Grymalyuk
690ff19b47 Add User-configurable verbose and debug
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/10
References https://github.com/dortania/Opencore-Legacy-Patcher/issues/74
2021-03-06 17:22:52 -07:00
Mykola Grymalyuk
00a1e232b4 Remove redundant hibernation patch 2021-03-06 15:31:01 -07:00
Mykola Grymalyuk
a7ebf72d1b Add NightShiftEnabler support
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/80
2021-03-06 15:22:47 -07:00
Mykola Grymalyuk
1af5182560 Add ForceBooterSignature support
Resolves hibernation issues
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/72
2021-03-06 14:58:04 -07:00
Mykola Grymalyuk
eb70e4611f Add iMacProMax1,1 support
Solely for easy debugging to catch most tests at once
2021-03-04 12:19:10 -07:00
Mykola Grymalyuk
c1a6a6b156 Enable ThirdPartyDrives 2021-03-04 11:59:45 -07:00
Mykola Grymalyuk
c90fdca19d Add model verification
Ref: https://github.com/dortania/Opencore-Legacy-Patcher/pull/39
2021-03-04 11:50:30 -07:00
Mykola Grymalyuk
3dcc0d0b0b Add basic debug toggle
Currently not accessible via user-input
2021-03-04 09:58:12 -07:00
Mykola Grymalyuk
5cff0a8c6c Increment build 2021-03-04 09:46:42 -07:00
Mykola Grymalyuk
b2de538e29 Remove BCM4328/4321 support
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/27
2021-03-04 09:39:32 -07:00
Mykola Grymalyuk
6451876f18 Merge pull request #77 from dortania/hibernation
Fix hibernation
2021-03-04 09:13:50 -07:00
Mykola Grymalyuk
31d31e1f3e Clean up code 2021-03-04 09:13:12 -07:00
Mykola Grymalyuk
7c3557ec46 Swap for DiscardHibernateMap 2021-03-04 09:00:45 -07:00
Mykola Grymalyuk
d78e5eaa90 Disable RequestBootVarRouting 2021-03-04 08:44:55 -07:00
Mykola Grymalyuk
66fdbe00b0 Disable OpenRuntime.efi 2021-03-04 08:42:00 -07:00
Mykola Grymalyuk
37c1c30a2a Clean config 2021-03-04 08:41:27 -07:00
Dhinak G
2fd02f6794 Fix WiFi patch logic 2021-03-04 09:08:04 -05:00
Mykola Grymalyuk
756d9cf248 Add CPUFriend support
Reference: https://github.com/dortania/Opencore-Legacy-Patcher/issues/72
2021-03-03 18:06:58 -07:00
Mykola Grymalyuk
52a323b269 Remove accidantal MBP3,1 support 2021-03-03 09:44:10 -07:00
Mykola Grymalyuk
7ef1688195 Increment build 2021-03-03 09:36:25 -07:00
Mykola Grymalyuk
4632371437 Misc file cleanup 2021-03-02 17:22:39 -07:00
Mykola Grymalyuk
b21b10d00b Remove old SMBIOS content 2021-03-02 16:45:40 -07:00
Mykola Grymalyuk
f93b62160a Fix sleep for iMac12,x with upgraded GPUs 2021-03-02 14:35:57 -07:00
Mykola Grymalyuk
bde44fc830 Add extras notes 2021-03-02 09:00:02 -07:00
Mykola Grymalyuk
08731521ad Add Backlight patches for modded Nvidia GPUs 2021-03-02 07:30:59 -07:00
Dhinak G
6c74bfd862 Fix typo in previous commit 2021-03-02 00:03:17 -05:00
Dhinak G
6750bdf9f1 Fix typo 2021-03-02 00:02:12 -05:00
Dhinak G
f0d8399610 Merge branch 'main' of github.com:dortania/Opencore-Legacy-Patcher into main 2021-03-02 00:01:10 -05:00
Dhinak G
8271db0d26 Package as .app 2021-03-02 00:01:06 -05:00
Mykola Grymalyuk
de77968cdb Increment version 2021-03-01 21:15:46 -07:00
Dhinak G
7b0321be65 Fix typo 2021-03-01 23:06:39 -05:00
Mykola Grymalyuk
39a9c80108 Merge pull request #13 from dortania/py3
Rewrite for Python 3 support
2021-03-01 21:00:37 -07:00
Mykola Grymalyuk
b8381a8a30 Fix typo 2021-03-01 20:57:53 -07:00
Mykola Grymalyuk
c47e21d02f Add Wifi card upgrade detection
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/70
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/62
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/55
2021-03-01 20:51:10 -07:00
Mykola Grymalyuk
83df3e3e12 Add upgraded GPU checks 2021-03-01 20:08:40 -07:00
Mykola Grymalyuk
9ce2e2add1 Update README 2021-03-01 17:29:12 -07:00
Mykola Grymalyuk
565589ae50 Rework SMBIOS to support original serials 2021-03-01 17:25:50 -07:00
Mykola Grymalyuk
e8c397b2a5 Remove board-id to avoid matching 2021-03-01 16:15:27 -07:00
Mykola Grymalyuk
831878494d Add universal map support 2021-03-01 16:13:57 -07:00
Mykola Grymalyuk
0cb98121e4 Inital changes for new USB map 2021-03-01 15:19:37 -07:00
Mykola Grymalyuk
5495c480d7 Fix USB map 2021-03-01 14:08:01 -07:00
Mykola Grymalyuk
2dda8e9167 Add extra version logging to config.plist 2021-03-01 13:49:03 -07:00
Mykola Grymalyuk
b7f895e940 Automatically add versioning to config.plist 2021-03-01 13:37:49 -07:00
Mykola Grymalyuk
655eac32b1 Remove old maps 2021-03-01 13:10:43 -07:00
Mykola Grymalyuk
83c678322f Forgot commit 2021-03-01 13:10:23 -07:00
Mykola Grymalyuk
1fc478feb2 Update config to 0.6.7 support 2021-03-01 13:10:11 -07:00
Mykola Grymalyuk
5c01aface2 Fix typo 2021-03-01 13:00:13 -07:00
Mykola Grymalyuk
a261ae4c83 Update binaries 2021-03-01 12:55:55 -07:00
Mykola Grymalyuk
8fe2963e2e Update docs to reflect py3 update 2021-03-01 12:11:43 -07:00
Dhinak G
6b6de4c559 Fix save 2021-03-01 12:56:57 -05:00
Dhinak G
9d151921cc Typo 2021-02-19 18:18:09 -05:00
Dhinak G
04905c6f1d Fix last 2021-02-19 17:27:54 -05:00
Dhinak G
8bbb24cece Remove directory 2021-02-19 17:27:22 -05:00
Dhinak G
37a15e2e64 Minor fixes 2021-02-19 17:24:14 -05:00
Dhinak G
7bf36a9689 set executable 2021-02-19 16:43:21 -05:00
Dhinak G
88b80e6354 Sha instead of ref 2021-02-19 16:37:37 -05:00
Dhinak G
036282a7e9 Add CI 2021-02-19 16:33:44 -05:00
Dhinak G
015701d80f Fix pyinstaller 2021-02-19 16:24:37 -05:00
Dhinak G
ae363102d7 Merge branch 'main' into py3 2021-02-19 16:21:13 -05:00
Dhinak G
8917368988 Radically revamp disk/partition selection process
Co-authored-by: Michael Eckhoff <mreckhof@gmail.com>
2021-02-19 15:40:08 -05:00
Mykola Grymalyuk
ca18f4fa9d Fix typo 2021-02-19 08:55:42 -07:00
Mykola Grymalyuk
ec0ecd5567 Replace mismatched 0.6.6 binary 2021-02-18 15:35:04 -07:00
Mykola Grymalyuk
90cd402c76 Merge pull request #57 from kommtzeitkonrad/main
Fix compatibility on older firmwares
2021-02-18 14:36:39 -07:00
Mykola Grymalyuk
b49ac3ee39 Increment OC to dbe046d
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/59
2021-02-18 14:20:09 -07:00
kommtzeitkonrad
0e9d00caf9 Fix compatibility on older firmwares
references https://github.com/dortania/Opencore-Legacy-Patcher/issues/59
references https://github.com/acidanthera/bugtracker/issues/1502
2021-02-18 22:14:28 +01:00
kommtzeitkonrad
079d4e0564 Fix typo 2021-02-11 22:42:07 +01:00
kommtzeitkonrad
39e2a16f8f Fix typo 2021-02-11 22:26:51 +01:00
Mykola Grymalyuk
75587ab345 Update config.plist
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/54
2021-02-09 07:10:11 -07:00
Mykola Grymalyuk
7d74495435 Add forgotten change 2021-02-08 11:53:12 -07:00
Mykola Grymalyuk
a78b201235 Re-add OpenCore GUI 2021-02-08 11:52:56 -07:00
Mykola Grymalyuk
74c0e9e717 Merge pull request #49 from BenSova/patch-1
Add a note about Big Sur not booting after removing Open Core.
2021-02-08 11:30:24 -07:00
Mykola Grymalyuk
8ed5fd8397 Misc fixes
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/53
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/47
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/52
2021-02-08 11:28:55 -07:00
Dhinak G
5bfa2afc38 Add flake8 2021-01-24 17:18:46 -05:00
Dhinak G
c9fea1fe6f Rename to constants 2021-01-24 17:18:42 -05:00
Dhinak G
e2d93744f7 Add version gating 2021-01-24 15:42:13 -05:00
Dhinak G
1e17eb88ed Remove old payloads 2021-01-24 15:14:19 -05:00
Dhinak G
328527a663 Fix pathing 2021-01-24 15:12:55 -05:00
Ben Sova
4dcebb4906 Add a note about Big Sur not booting after removing Open Core. 2021-01-24 12:57:24 -07:00
Dhinak G
a7e043bf4f Remove Build-App.command 2021-01-24 13:52:48 -05:00
Dhinak G
e94f68d6e3 Switch to Python 3, part 1 2021-01-24 13:51:38 -05:00
Mykola Grymalyuk
c655c4a910 Update README.md 2021-01-11 19:58:44 -07:00
khronokernel
50e3e08ff0 Resolves firmware bricking issues
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/43
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/42
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/40
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/38
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/32
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/15
2021-01-11 14:23:57 -07:00
Mykola Grymalyuk
3674ca47fa Update README.md 2021-01-01 23:58:38 -07:00
Dhinak G
0e7ecc58f8 Update README.md 2020-12-22 13:14:45 -05:00
Dhinak G
84d5b99b4a Update README.md 2020-12-22 13:14:14 -05:00
Mykola Grymalyuk
1c70521fa1 Update README.md 2020-12-21 08:19:19 -07:00
Mykola Grymalyuk
9faa8f82e8 Update ModelArray.py 2020-12-21 08:18:36 -07:00
Mykola Grymalyuk
647cc0a83a Add Ivy and Haswell notes 2020-12-21 08:17:37 -07:00
Mykola Grymalyuk
12347f866a Add HiDPI patch for UEFI
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/21
2020-12-15 15:32:26 -07:00
Mykola Grymalyuk
c6f84cc036 Fix USB Map
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/26
2020-12-15 15:13:26 -07:00
Mykola Grymalyuk
0c8bda59a1 Remove Build App command 2020-12-15 09:17:26 -07:00
Mykola Grymalyuk
9caa39c50d Add RestrictEvents kext
Ensures firmware updates cannot be performed even within the installer
2020-12-12 13:21:23 -07:00
Mykola Grymalyuk
48d714db61 Fix BlacklistAppleUpdate
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/17
2020-12-10 21:33:47 -07:00
Mykola Grymalyuk
59ac0c3fec Fix missing SSDT-CPBG patch 2020-12-06 09:01:25 -07:00
Mykola Grymalyuk
dc7560b142 Add MacPro3,1 to HID patch 2020-12-04 21:26:01 -07:00
Mykola Grymalyuk
0f0ca7d4ec Increment build version 2020-12-04 16:09:32 -07:00
Mykola Grymalyuk
6f4bface55 Sync changelog
Closes https://github.com/dortania/Opencore-Legacy-Patcher/issues/8
2020-12-04 16:03:43 -07:00
Mykola Grymalyuk
ad5004d3e8 Add temp workaround to macserial issue 2020-12-04 15:59:20 -07:00
Mykola Grymalyuk
fff9c4b75d Update BuildOpenCore.py 2020-12-04 15:33:21 -07:00
Mykola Grymalyuk
d6224db564 Update macserial 2020-12-04 15:27:19 -07:00
Mykola Grymalyuk
6b900d7aa8 Update README.md 2020-12-04 14:29:36 -07:00
Mykola Grymalyuk
217999a8e7 Update README.md 2020-12-04 14:29:18 -07:00
401 changed files with 75605 additions and 12063 deletions

4
.flake8 Normal file
View File

@@ -0,0 +1,4 @@
[flake8]
extend-ignore = E501, E203
per-file-ignores =
Resources/Constants.py:E704

34
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,34 @@
---
name: Bug report
about: Create a report to help notify of issues
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the issue is.
**To Reproduce**
Steps to reproduce the behavior:
1. Open app or .command '...'
2. Enter '....'
3. See error
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Build Folder**
If applicable, add the generated OpenCore Build to help explain your problem.
**Hardware (please complete the following information):**
- OS Running (ie. macOS 10.15.7, Catalina)
- OS Patching (ie. macOS 11.2.3, Big Sur)
- Model Patching (ie. MacPro5,1)
For in-depth hardware logs, we highly encourage users to run [IORegistryExplorer](https://github.com/khronokernel/IORegistryClone/blob/master/ioreg-210.zip?raw=true) and send the output
* ie. `File -> SaveAs`
**Additional context**
Add any other context about the problem here.

38
.github/workflows/build-app.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: CI - Build App
on:
push:
workflow_dispatch:
release:
types: [published]
jobs:
build:
name: Build App
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: Install Python Dependencies
run: pip3 install --upgrade pyinstaller requests
- run: pyinstaller OpenCore-Patcher.spec
- run: ./after_pyinstaller.sh
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --deep --timestamp --entitlements entitlements.plist -o runtime "dist/OpenCore-Patcher.app"'
- run: cd dist; zip ../OpenCore-Patcher.zip OpenCore-Patcher; zip -r ../OpenCore-Patcher.app.zip OpenCore-Patcher.app
- run: ./../sign-app.sh
- name: Upload App to Artifacts
uses: actions/upload-artifact@v2
with:
name: OpenCore-Patcher.app
path: OpenCore-Patcher.app.zip
- name: Upload to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: OpenCore-Patcher.app.zip
tag: ${{ github.ref }}
file_glob: true

32
.github/workflows/build-cli.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: CI - Build CLI
on:
push:
workflow_dispatch:
release:
types: [published]
jobs:
build:
name: Build CLI
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: Install Python Dependencies
run: pip3 install --upgrade pyinstaller requests
- run: pyinstaller OCLP-CLI.spec
- run: cd dist; zip ../OCLP-CLI.zip OCLP-CLI
- name: Upload Binary to Artifacts
uses: actions/upload-artifact@v2
with:
name: OCLP-CLI
path: OCLP-CLI.zip
- name: Upload to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: OCLP-CLI.zip
tag: ${{ github.ref }}
file_glob: true

35
.github/workflows/build-site.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
name: CI - Build Site
on:
push:
branches-ignore:
- gh-pages
workflow_dispatch:
pull_request:
jobs:
build:
name: Build Site and Deploy
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v2-beta
with:
node-version: '12'
- name: Checkout Repository
uses: actions/checkout@v2
with:
fetch-depth: '0'
persist-credentials: false
submodules: 'recursive'
- name: Install
run: npm install
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'}}
with:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
BRANCH: gh-pages
FOLDER: docs/.vuepress/dist/
CLEAN: true

14
.gitignore vendored
View File

@@ -1,7 +1,19 @@
.DS_Store
OCLP-GUI.command
/payloads/Apple
/payloads/Apple.zip
/payloads/__MACOSX
/App
/Build-Folder
/build
/dist
/.vscode
__pycache__/
*.kext
*.py[cod]
*$py.class
*$py.class
/docs/.vuepress/dist
/docs/.vuepress/.config.js.swp
/docs/yarn.lock
/docs/yarn-error.log
/docs/node_modules/

13
.pylintrc Normal file
View File

@@ -0,0 +1,13 @@
[MASTER]
init-hook="from pylint.config import find_pylintrc; import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"
[MESSAGES CONTROL]
disable=unused-import,
subprocess-run-check,
line-too-long,
too-few-public-methods,
missing-module-docstring,
missing-class-docstring,
missing-function-docstring

View File

@@ -1,52 +0,0 @@
#!/usr/bin/env python
from __future__ import print_function
from shutil import copy
from shutil import rmtree
from distutils.dir_util import copy_tree
import os
import json
import subprocess
import sys
import zipfile
os.chdir(os.path.dirname(os.path.realpath(__file__)))
current_path = os.getcwd()
print(current_path)
# File location
command_path = os.path.join(current_path, "OpenCore-Patcher.command")
resources_path = os.path.join(current_path, "Resources/")
payloads_path = os.path.join(current_path, "payloads/")
icns_path = os.path.join(current_path, "OC-Patcher.icns")
plist_path = os.path.join(current_path, "Info.plist")
app_path = os.path.join(current_path, "App/")
app_app_path = os.path.join(current_path, "App/OpenCore-Patcher.app/")
contents_path = os.path.join(current_path, "App/OpenCore-Patcher.app/Contents/")
app_macos_path = os.path.join(current_path, "App/OpenCore-Patcher.app/Contents/MacOS/")
app_macos_payload_path = os.path.join(current_path, "App/OpenCore-Patcher.app/Contents/MacOS/payloads")
app_macos_resources_path = os.path.join(current_path, "App/OpenCore-Patcher.app/Contents/MacOS/Resources")
app_resources_path = os.path.join(current_path, "App/OpenCore-Patcher.app/Contents/Resources/")
if os.path.exists(app_path):
print("Cleaning App folder")
rmtree(app_path)
print("Creating new App folder")
os.mkdir(app_path)
os.mkdir(app_app_path)
os.mkdir(contents_path)
os.mkdir(app_macos_path)
os.mkdir(app_resources_path)
copy(command_path, app_macos_path)
copy_tree(resources_path, app_macos_resources_path)
copy_tree(payloads_path, app_macos_payload_path)
copy(icns_path, app_resources_path)
copy(plist_path, contents_path)
copy(icns_path, app_macos_path)

View File

@@ -1,5 +1,330 @@
# OpenCore Legacy Patcher changelog
## 0.2.1
- Fix NVMe Crash on build
## 0.2.0
- Refactor device probe logic
- Implement PatcherSupportPkg v0.0.10
- Reduces binary sizes depending on OS
- Deprecates Apple-Binaries-OCLP
- Fix full screen and Airplay to Mac support for Intel HD4000 iGPUs in Monterey
- Automatically set `CMIO_Unit_Input_ASC.DoNotUseOpenCL` on TeraScale 2 GPUs
- Fix Country Code detection on Wireless Cards
- Add Windows detection and prompt during installation
- Fix Google Fonts rendering for Intel HD4000 iGPUs in Monterey
- Increment Binaries
- Lilu 1.5.4 rolling (f69a972 - 06-20-2021)
- RestrictEvents 1.0.3 rolling (3773ce2 - 06-20-2021)
- SidecarFixup 1.0.2 rolling (2c29166 - 06-21-2021)
- Allow AirPlay to Mac support on Skylake - Coffeelake Macs
## 0.1.9
- Fix incorrect AMFI and SIP detection
## 0.1.8
- Fix Kernel Panic in Big Sur and Monterey
- Increment binaries:
- Lilu (1.5.4 rolling - 06-15-2021)
## 0.1.7
- Add FireWire Boot Support for Catalina and newer
- Add NVMe firmware support for older models (ie. MacPro3,1)
- OpenCore must be stored on a bootable volume (ie. USB or SATA)
- Fix Thunderbolt Ethernet support on MacBookAir4,x
- Fix XHCI hangs on pre-2012 Machines
- XHCI boot support dropped due to instability
- Add beta macOS Monterey Support
- Fix iMac13,x sleep support
- Add support for following models:
- iMac14,4
- iMac15,1
- MacBook8,1
- MacBookAir6,1
- MacBookAir6,2
- MacBookPro11,1
- MacBookPro11,2
- MacBookPro11,3
- Increment binaries:
- OpenCore (0.7.0 release - 06-07-2021)
- AirportBrcmFixup (2.1.3 rolling - 06-08-2021)
- AppleALC (1.6.2 rolling - 06-08-2021)
- CPUFriend (1.2.4 rolling - 06-08-2021)
- Lilu (1.5.4 rolling - 06-11-2021)
- NVMeFix (1.0.9 rolling - 06-12-2021)
- WhateverGreen (1.5.1 rolling - 06-08-2021)
- RestrictEvents (1.0.3 rolling - 06-11-2021)
- Apple Binaries (0.0.18 release - 06-12-2021)
- MouSSE (0.95 release - 06-08-2021)
- SidecarFixup (1.0.2 rolling - 06-11-2021)
- Fix SSE4,2 Emulation
- Fix Sidecar and CPU renaming support in macOS Monterey
- Add AirPlay support to older Models
- Add Intel HD4000 Acceleration
- Big thanks to Jackluke, EduCovas, DhinakG, MykolaG!
- Add DebugEnhancer for better macOS Monterey logs
- DebugEnhancer (1.0.3 rolling - 06-08-2021)
- Add TeraScale 2 Graphics Acceleration to Big Sur
- User configurable, those prone to seizures are recommended to avoid or have another setup the machine due to initial colour strobing before forcing Million Colours on the display with SwitchResX or ResXtreme
## 0.1.6
- Add XHCI UEFI Driver for 3rd Party USB 3.0 Controllers
- Allows for Boot Support from OpenCore' Picker
- Fix UEFI output on MacPro3,1 with PC GPUs
- Increment binaries:
- OpenCore 4e0ff2d (0.7.0 rolling - 05-23-2021)
- Apple Binaries 59a52a3 (0.0.8 release - 05-24-2021)
- Allow legacy macOS Booting
- Fix Photos app distortion on legacy GPUs
- Fix device tree renaming on Mac Pros and Xserves
- Ensure no Acceleration Patches applied when no compatible GPU found
- Allow custom SMBIOS overriding
- Fix incorrectly setting CPU override for non-Minimal SMBIOS spoofs
- Support Minimal SMBIOS spoofing on El Capitan era Macs
- Fix GPU Switching on MacBookPro6,x
## 0.1.5
- Fix crashing when Wireless module not present
- Add iMac10,1 default dGPU pathing
- Add agdpmod=vit9696 to all Nvidia Metal iMacs
- Fixes external display support on Nvidia iMac12,x
- Remove reliance on AppleBacklightFixup
- Support space in path when downloading Root Patches
- Enable PanicNoKextDump by default
- Expand AppleGraphicsPowerManagement and AppleGraphicsDeviceControl Override support
- Fix MacBookPro8,2/3 Brightness Control
- dGPU must be disabled via NVRAM or deMUXed
- Increment binaries:
- Apple Binaries 478f6a6 (0.0.7 release - 05-16-2021)
- Add SeedUtil option to Advanced Patcher Settings
## 0.1.4
- Fix Device Path formatting on 2012+ iMacs
## 0.1.3
- Fix internal PCIe devices reporting as external
- Opt for `built-in` when device path is detectable
- Innie 0ccd95e (1.3.0 release - 01-16-2021)
- Fix MacBookPro5,4 audio support
- Increment binaries
- AppleALC 58b57ee (1.6.1 rolling - 05-07-2021)
- Apple Binaries 74bd80f (0.0.6 release - 05-09-2021)
- Support custom CPU names in About This Mac
- Fix NightShift accidentally disabling on Minimal SMBIOS configs
- Fix iMac9,1 audio support
- Heavily expand Graphics ID list
- Fix iMac7,1 and iMac8,1 audio support
- Work-around Bluetooth Kernel Panic on Apple's Bluetooth 2.0 Controllers (USB 05AC:8206)
- Affects iMac7,1 and MacPro3,1
- Fix iMac external display support
- Fix NVMe properties not applying when OpenCore is installed
## 0.1.2
- Fix IDE support on 2008 era MacBooks, iMacs and Xserves
- Fix reduced output speeds on BCM94360 series Wifi cards
- Fix accidentally disabling non-existent iGPU in iMac11,2
- Remove USB ACPI Patching requirement for Minimal SMBIOS setups
- Probe hardware for Backlight pathing on iMac10,1, iMac11,x and iMac12,x with Metal GPUs
- Add Windows UEFI Audio support to Sandy and Ivy Bridge Macs
- Add 3rd Party NVMe Power Management Patches
- NVMeFix fafc52d (1.0.7 release - 05-03-2021)
- Strip unused ACPI and Kernel entries during build
- Allow native Macs to use OpenCore
- Better 3rd party NVMe support
- Better Wireless networking support
- Fix MacBook6,1 audio support
- Increment binaries
- OpenCore 65cc81b (0.6.9 release - 05-03-2021)
- Lilu c77722d (1.5.3 release - 05-03-2021)
- AppleALC 84850d0 (1.6.0 rolling - 04-30-2021)
- RestrictEvents 9e2bb0f (1.0.1 release - 05-03-2021)
- Allow CPUFriend on all El-Capitan Era Macs
- Fix UEFI 2.0 Application support on upgraded Nvidia GPUs
- Add experimental Sidecar support
- Requires Mac with Metal Intel iGPU and the iPad to be directly plugged in, wireless highly unstable
- SidecarFixup efdf11c (1.0.0 release - 05-02-2021)
## 0.1.1
- Fix iMac11,3 GFX0 pathing
- Add MouSSE support to iMac10,1 with Metal AMD GPU
- Fix iMac11,1 and iMac11,3 Nvidia boot issues after PRAM reset
- Fix DRM support on Nvidia-only configurations
- Support optional setting between DRM and QuickSync support on iMacs13,x and iMac14,x
- Add public beta support for Legacy GPU Acceleration (v0.0.4)
- Note ATI/AMD TeraScale 2 unsupported (HD 5/6000)
- Add better kmutil crash handling
- Fix build crashing when no wifi card is present
- Allow Legacy Acceleration Patches on Mac Pros and Xserves
- Fix USB kernel panics on iMac7,1
- Fix AppleALC support in Mojave
- Fix TeraScale 1 GPU detection
- Enable Graphics Acceleration on legacy GPUs by default
- Fix incorrectly disabling SIP/SMB on Metal GPUs
- Fix error output when rebuilding kernel cache fails
- Fix Acceleration Linking for Intel Ironlake iGPUs
## 0.1.0
- Fix crash on iMacs with Metal GPUs
## 0.0.23
- Fix MacBookPro4,1 15" and 17" audio support
- Fix iMac7,1 24" and iMac9,1 24" audio support
- Fix Macmini4,1 audio support
- Increment binaries
- AppleALC 1a3e5cb (1.6.0 rolling - 04-14-2021)
- Enhance Wifi model detection
- Hide OpenShell.efi by default
- Add Brightness Control patches for legacy Nvidia, AMD and Intel GPUs
- Models with brightness control issues in Catalina partially supported
- Add user configurable Bootstrap setting
- Enhance GPU Detection logic
- Increment AppleBackLightFixup v1.0.1
- Add panel type F10T9cde
- Enhance HDMI audio support on Mac Pros and Xserves
- Strip unused kext entries during build
- Add gfxutil support for better DeviceProperty path detection
- Add basic CLI support
- Disable SIP and SecureBootModel by default on legacy GPUs
## 0.0.22
- Add ExFat support for models missing driver
- Aids BootCamp support for EFI based installs on 2010 and older Macs
- Fix CPU Boosting on 2011 and older Macs
- Add basic support for Xserve2,1
- Add AppleALC support(99b3662 - 1.6.0 rolling - 04-09-2021), remove AppleHDA patching requirement
- Add BCM94322 and BCM94321 chipset support
## 0.0.21
- Fix botched images in OpenCanopy
- Add support for 3rd party OpenCore usage detection during building
- Mainly for users transitioning from Ausdauersportler's OpenCore configuration
## 0.0.20
- Fix CPU Calculation on early MCP79 chipsets (ie. iMac9,1, MacBook5,x)
- Increment binaries
- OpenCore c528597 (0.6.8 release - 2021-04-05)
- Lilu 3ef7ca1 (1.5.2 release - 2021-04-05)
- WhateverGreen afcd687 (1.4.9 release - 2021-04-05)
- Move Apple binaries to dedicated repo and allow custom repos
- Reduces App size 1/5th compared to 0.0.19
- Fix OpenCanopy support on iMac7,1 and 8,1
- Set iGPU-less iMacs to iMacPro1,1
- Additionally fixes Bluetooth on older iMacs with BRCM2046 modules
- Add MacBook4,1 support
- Create dedicated RestrictEvents build for MacBookPro9,1
- Fix Mac Pro and Xserve output issues
## 0.0.19
- Add SMC-Spoof.kext to avoid triggering `smcupdater`
- Add Root Volume patching for older machines
- AppleHDA Patch for 2011 and older (Excluding MacPro4,1+)
- Fix CPU Speed reporting
- Increment binaries
- OpenCore 9cd61bb (0.6.8 rolling - 2021-03-27)
- Add Mavericks and newer .app support
- Refactor USB map building, fixes USB 3.0 displaying as USB 2.0
- Fix blackscreen on MacBookPro9,1
- Update RestrictEvents with custom build (1.0.1)
- Blocks `/usr/libexec/displaypolicyd` on MacBookPro9,1 to ensure smooth GPU switching
- Add custom SD Card icon
- Add automatic codesiging and notarization
- Fix crashing when CD is present
- Add custom SSD icon
- Fix Broadcom Ethernet on older 2009-2011 Macs
## 0.0.18
- Disable Vault by default due to breaking installations
- Move BOOTx64.efi to System/Library/CoreServices/ to support GPT BootCamp installs
- Disable verbose by default, still configurable by end-user
- Remove `AppleInternal`(0x10) from SIP value
- Add Mac Pro DRM patches for Metal GPUs
- Force `Moderate` SMBIOS replacement for models without native APFS support
- Re-enable legacy BCM94322 networking patches
- Add custom drive icons for external drives
## 0.0.17
- Fix build detection breaking on older OS
## 0.0.16
- Move Serial selection to Patcher Settings
- Add new SMBIOS patching options:
- Minimal: Only update board ID and BIOSVersion, keep original serials
- Moderate: Update entire SMBIOS, keep original serials
- Advanced: Update entire SMBIOS, generate new serials
- Fix crash on MacBookPro4,1
- Fix External Display Support on MacBookPro10,1
- Inject Patcher version into NVRAM for easier debugging
- Add user-configurable ShowPicker
- Add user-configurable Vaulting, enabled by default
- Add user-configurable SIP and SecureBootModel
- Fix USB Maps not working on "Minimal" SMBIOS
- Fix GPU vendor user-configuration
- Fix custom EFI Boot icon in Mac Boot Picker
- Enable UserInterfaceTheme to ensure DefaultBackgroundColor is respected
- Enable `amfi_get_out_of_my_way=1` when SIP is disabled
## 0.0.15
- Add user-configurable OpenCore DEBUG builds
- Add user-configurable Wifi and GPU patches
- Fix ThirdPartyDrives model detection
- Add HW_BID injection to fix boot.efi error
## 0.0.14
- Enable ThirdPartyDrives to aid with hibernation on 3rd party SATA drives
- Increment OpenCore 7bb41aa (0.6.8 rolling, 2021-03-06)
- Add ForceBooterSignature to resolve hibernation issues
- Add NightShiftEnabler (1.1.0 release e1639f9)
- Add user-configurable verbose and debug settings
- Add GopPassThrough quirk for UGA-based systems
## 0.0.13
- Add CPUFriend support to resolve X86PlatformPlugin clashes
- (1.2.3 c388a62 release)
- Fix crash with MacBookAir5,x
- Fix hibernation support
- Remove Wireless patches for BCM4328/4321(14e4:4328) due to boot issues
## 0.0.12
- Convert OpenCore-Patcher binary to OpenCore-Patcher.app
- Add Backlight patches for modded Nvidia GPUs in iMac10,x-12,x
- Fix sleep for iMac12,x with upgraded GPUs
## 0.0.11
- Re-add OpenCore GUI
- Rewrite in py3
- Add OpenCore-Patcher binary for releases avoiding local python requirement
- Increment binaries
- OpenCore cbd2fa3 (0.6.7 release)
- WhateverGreen 2e19d1b (1.4.8 release)
- Rework SMBIOS allowing both original and custom serials(Should resolve all iMessage issues)
- Support upgraded GPU detection in iMac10,x-12,x
- Add Wifi card upgrade detection
## 0.0.10
- Increment binaries
- OpenCore 43f5339 (0.6.6 release)
- Lilu d107554 (1.5.1 release)
- WhateverGreen 9e53d8a (1.4.7 release)
- Add IDE support to MacPro3,1
- Set SecureBootModel to iMac Pro(should aid in booting older OSes with OpenCore)
- Update MacBookPro SMBIOS
## 0.0.9
- Resolve firmware install issues bricking Macs
## 0.0.8
- Fix USB Map
- Add HiDPI patch
## 0.0.7
- Add MacPro3,1 to HID patch
- Fix missing SSDT-CPBG patch
- Fix BlacklistAppleUpdate
- Add RestrictEvents kext
## 0.0.6
- Fix macserial crashing
## 0.0.5
- Enable hibernation support
- Work around USB Map failing
@@ -19,4 +344,4 @@
- Add El Capitan era wireless cards
## 0.0.1
- Inital developer preview
- Initial developer preview

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>OpenCore-Patcher.command</string>
<key>CFBundleIconFile</key>
<string>OC-Patcher.icns</string>
<key>CFBundleIdentifier</key>
<string>com.dortania.OpenCore-Patcher</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>0.0</string>
<key>CFBundleName</key>
<string>OpenCore-Patcher</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.4</string>
<key>LSMultipleInstancesProhibited</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>Copyright 2020 Dortania</string>
</dict>
</plist>

219
OCLP-CLI.command Executable file
View File

@@ -0,0 +1,219 @@
#!/usr/bin/env python3
# Copyright (C) 2020-2021 Mykola Grymalyuk
from __future__ import print_function
import subprocess
import sys
import platform
import argparse
from pathlib import Path
from Resources import Build, ModelArray, Constants, SysPatch, device_probe, Utilities
class OpenCoreLegacyPatcher:
def __init__(self):
print("Loading...")
Utilities.disable_cls()
self.constants = Constants.Constants()
self.constants.computer = device_probe.Computer.probe()
self.computer = self.constants.computer
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
custom_cpu_model_value = Utilities.get_nvram("revcpuname", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
if custom_cpu_model_value is not None:
# TODO: Fix to not use two separate variables
self.constants.custom_cpu_model = 1
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
if "-v" in (Utilities.get_nvram("boot-args") or ""):
self.constants.verbose_debug = True
# Check if running in RecoveryOS
self.constants.recovery_status = Utilities.check_recovery()
parser = argparse.ArgumentParser()
# Generic building args
parser.add_argument("--build", help="Build OpenCore", action="store_true", required=False)
parser.add_argument("--verbose", help="Enable verbose boot", action="store_true", required=False)
parser.add_argument("--debug_oc", help="Enable OpenCore DEBUG", action="store_true", required=False)
parser.add_argument("--debug_kext", help="Enable kext DEBUG", action="store_true", required=False)
parser.add_argument("--skip_wifi", help="Skip wifi patches", action="store_true", required=False)
parser.add_argument("--hide_picker", help="Hide OpenCore picker", action="store_true", required=False)
parser.add_argument("--disable_sip", help="Disable SIP", action="store_true", required=False)
parser.add_argument("--disable_smb", help="Disable SecureBootModel", action="store_true", required=False)
parser.add_argument("--vault", help="Enable OpenCore Vaulting", action="store_true", required=False)
parser.add_argument("--support_all", help="Allow OpenCore on natively supported Models", action="store_true", required=False)
parser.add_argument("--firewire", help="Enable FireWire Booting", action="store_true", required=False)
parser.add_argument("--nvme", help="Enable NVMe Booting", action="store_true", required=False)
parser.add_argument("--disable_amfi", help="Disable AMFI", action="store_true", required=False)
# Building args requiring value values
parser.add_argument("--model", action="store", help="Set custom model", required=False)
parser.add_argument("--metal_gpu", action="store", help="Set Metal GPU Vendor", required=False)
parser.add_argument("--smbios_spoof", action="store", help="Set SMBIOS patching mode", required=False)
# SysPatch args
parser.add_argument("--patch_sys_vol", help="Patches root volume", action="store_true", required=False)
parser.add_argument("--unpatch_sys_vol", help="Unpatches root volume, EXPERIMENTAL", action="store_true", required=False)
parser.add_argument("--terascale_2", help="Enable TeraScale 2 Acceleration", action="store_true", required=False)
args = parser.parse_args()
self.constants.gui_mode = True
self.constants.current_path = Path.cwd()
if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"):
print("- Rerouting payloads location")
self.constants.payload_path = sys._MEIPASS / Path("payloads")
else:
print("- Using default payloads location")
if args.verbose:
print("- Set verbose configuration")
self.constants.verbose_debug = True
if args.debug_oc:
print("- Set OpenCore DEBUG configuration")
self.constants.opencore_debug = True
self.constants.opencore_build = "DEBUG"
if args.debug_kext:
print("- Set kext DEBUG configuration")
self.constants.kext_debug = True
if args.skip_wifi:
print("- Set wifi skip configuration")
self.constants.wifi_build = True
if args.hide_picker:
print("- Set HidePicker configuration")
self.constants.showpicker = False
if args.disable_sip:
print("- Set Disable SIP configuration")
self.constants.sip_status = False
if args.disable_smb:
print("- Set Disable SecureBootModel configuration")
self.constants.secure_status = False
if args.vault:
print("- Set Vault configuration")
self.constants.vault = True
if args.firewire:
print("- Set FireWire Boot configuration")
self.constants.firewire_boot = True
if args.nvme:
print("- Set NVMe Boot configuration")
self.constants.nvme_boot = True
if args.disable_amfi:
print("- Set Disable AMFI configuration")
self.constants.disable_amfi = True
if args.metal_gpu:
if args.metal_gpu == "Nvidia":
print("- Set Metal GPU patches to Nvidia")
self.constants.metal_build = True
self.constants.imac_vendor = "Nvidia"
elif args.metal_gpu == "AMD":
print("- Set Metal GPU patches to AMD")
self.constants.metal_build = True
self.constants.imac_vendor = "AMD"
else:
print(f"- Unknown GPU arg passed: {args.metal_gpu}")
self.constants.metal_build = False
self.constants.imac_vendor = "None"
if args.smbios_spoof:
if args.smbios_spoof == "Minimal":
self.constants.serial_settings = "Minimal"
elif args.smbios_spoof == "Moderate":
self.constants.serial_settings = "Moderate"
elif args.smbios_spoof == "Advanced":
self.constants.serial_settings = "Advanced"
else:
print(f"- Unknown SMBIOS arg passed: {args.smbios_spoof}")
if args.support_all:
print("- Building for natively supported model")
self.constants.allow_oc_everywhere = True
self.constants.serial_settings = "None"
if args.build:
if args.model:
print(f"- Using custom model: {args.model}")
self.constants.custom_model = args.model
self.set_defaults(self.constants.custom_model, False)
self.build_opencore()
elif self.computer.real_model not in ModelArray.SupportedSMBIOS and self.constants.allow_oc_everywhere is False:
print(
"""Your model is not supported by this patcher for running unsupported OSes!"
If you plan to create the USB for another machine, please select the "Change Model" option in the menu."""
)
sys.exit(1)
else:
print(f"- Using detected model: {self.constants.computer.real_model}")
self.build_opencore()
if args.patch_sys_vol:
if args.terascale_2:
print("- Set TeraScale 2 Accel configuration")
self.constants.terascale_2_patch = True
print("- Set System Volume patching")
self.patch_vol()
elif args.unpatch_sys_vol:
print("- Set System Volume unpatching")
self.unpatch_vol()
def set_defaults(self, model, host_is_target):
# Defaults
self.constants.sip_status = True
self.constants.secure_status = False # Default false for Monterey
self.constants.disable_amfi = False
if model in ModelArray.LegacyGPU:
if (
host_is_target
and self.computer.dgpu
and self.computer.dgpu.arch
in [
device_probe.AMD.Archs.Legacy_GCN,
device_probe.AMD.Archs.Polaris,
device_probe.AMD.Archs.Vega,
device_probe.AMD.Archs.Navi,
device_probe.NVIDIA.Archs.Kepler,
]
):
# Building on device and we have a native, supported GPU
self.constants.sip_status = True
# self.constants.secure_status = True # Monterey
self.constants.disable_amfi = False
else:
self.constants.sip_status = False # Unsigned kexts
self.constants.secure_status = False # Root volume modified
self.constants.disable_amfi = True # Unsigned binaries
if model in ModelArray.ModernGPU:
if host_is_target and model in ["iMac13,1", "iMac13,3"] and self.computer.dgpu:
# Some models have a supported dGPU, others don't
self.constants.sip_status = True
# self.constants.secure_status = True # Monterey
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
else:
self.constants.sip_status = False # Unsigned kexts
self.constants.secure_status = False # Modified root volume
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
if model == "MacBook8,1":
# MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
self.constants.serial_settings == "Moderate"
def patch_vol(self):
SysPatch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants).start_patch()
def unpatch_vol(self):
SysPatch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants).start_unpatch()
def build_opencore(self):
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).build_opencore()
def install_opencore(self):
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).copy_efi()
OpenCoreLegacyPatcher()
# Example arg for OCLP command line
# ./OCLP-CLI --build --verbose --debug_oc --debug_kext --model iMac11,2

34
OCLP-CLI.spec Normal file
View File

@@ -0,0 +1,34 @@
# -*- mode: python ; coding: utf-8 -*-
import sys, os
sys.path.append(os.path.abspath(os.getcwd()))
from Resources import Constants
block_cipher = None
a = Analysis(['OCLP-CLI.command'],
binaries=[],
datas=[('payloads', 'payloads'), ('Resources', 'Resources')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[('u', None, 'OPTION')],
name='OCLP-CLI',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )

View File

@@ -1,234 +1,296 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
from __future__ import print_function
from shutil import copy
from shutil import rmtree
import os
import json
import platform
import subprocess
import sys
import zipfile
from Resources import *
from Resources import Build, CliMenu, Constants, ModelArray, SysPatch, Utilities, device_probe
# Allow py2 and 3 support
try:
input = raw_input
except NameError:
pass
class OpenCoreLegacyPatcher:
def __init__(self):
print("Loading...")
self.constants = Constants.Constants()
self.constants.computer = device_probe.Computer.probe()
self.computer = self.constants.computer
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
self.set_defaults(self.computer.real_model, True)
# List build versions
patcher_version = "0.0.5"
custom_cpu_model_value = Utilities.get_nvram("revcpuname", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
if custom_cpu_model_value is not None:
# TODO: Fix to not use two separate variables
self.constants.custom_cpu_model = 1
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
CustomSMBIOS=False
MainMenu=True
MenuWidth = 52
header = '#' * MenuWidth
subheader = '-' * MenuWidth
if "-v" in (Utilities.get_nvram("boot-args") or ""):
self.constants.verbose_debug = True
while MainMenu:
os.system('clear')
# Check if running in RecoveryOS
self.constants.recovery_status = Utilities.check_recovery()
print(header)
print(" OpenCore Legacy patcher v%s" % patcher_version)
print(" Current Model: %s" % BuildOpenCore.current_model)
print(header)
print("")
if BuildOpenCore.current_model not in ModelArray.SupportedSMBIOS:
print(" Your model is not supported by this patcher!")
print("")
print(" If you plan to create the USB for another machine,")
print(" please select option 5")
print(subheader)
print("")
elif BuildOpenCore.current_model in ("MacPro3,1", "iMac7,1"):
print(" This model is supported")
print(" However please ensure the CPU have been upgraded")
print(" to support SSE4.1+")
print(subheader)
print("")
else:
print(" This model is supported")
print(subheader)
print("")
print(" 1. Build OpenCore")
print(" 2. Install OpenCore to USB/internal drive")
print(" 3. Change model")
print(" 4. Credits")
print(" 5. Exit")
print("")
def set_defaults(self, model, host_is_target):
# Defaults
self.constants.sip_status = True
self.constants.secure_status = False # Default false for Monterey
self.constants.disable_amfi = False
MainMenu = input('Please select an option: ')
if MainMenu=="1":
OpenCoreBuilderMenu=True
while OpenCoreBuilderMenu:
os.system('clear')
print(header)
print(" Build OpenCore v%s for model: %s" % (Versions.opencore_version, BuildOpenCore.current_model))
print(header)
print("")
print(" 1. Auto build OpenCore")
print(" 2. Change OpenCore version")
print(" 3. Return to main menu")
print("")
OpenCoreBuilderMenu = input('Please select an option: ')
if OpenCoreBuilderMenu=="1":
AutoBuilderMenu=True
while AutoBuilderMenu:
os.system('clear')
print(header)
print(" Building OpenCore for model: %s" % BuildOpenCore.current_model)
print(header)
print("")
print("The current working directory:")
print (" %s" % Versions.current_path)
print("")
BuildOpenCore.BuildEFI()
#BuildOpenCore.BuildGUI()
BuildOpenCore.BuildSMBIOS()
BuildOpenCore.SavePlist()
BuildOpenCore.CleanBuildFolder()
print("")
print("Your OpenCore EFI has been built at:")
print(" %s" % Versions.opencore_path_done)
print("")
AutoBuilderMenu = input("Press any key to return to previous menu: ")
if AutoBuilderMenu=="1":
print("Returning to previous menu...")
AutoBuilderMenu=False
OpenCoreBuilderMenu=False
elif OpenCoreBuilderMenu=="2":
ChangeOCversion=True
while ChangeOCversion:
os.system('clear')
print(header)
print(" Current OpenCore version: %s" % Versions.opencore_version)
print(header)
print("")
print(" Supported versions: 0.6.3, 0.6.4")
print("")
OpenCoreOption = input('Please enter the OpenCore you want (Press enter to exit): ')
if OpenCoreOption == "":
print("Exiting...")
ChangeOCversion=False
MainMenu=True
else:
print("")
print(" New SMBIOS: %s" % OpenCoreOption)
print("")
ChangeOCversionYN = input("Is this correct? (y/n)")
if ChangeOCversionYN in {"y", "Y", "yes", "Yes"}:
ChangeOCversion=False
Versions.opencore_version = OpenCoreOption
MainMenu=True
elif OpenCoreBuilderMenu=="3":
print("\n Returning to main menu...")
OpenCoreBuilderMenu=False
MainMenu=True
if model in ModelArray.LegacyGPU:
if (
host_is_target
and self.computer.dgpu
and self.computer.dgpu.arch
in [
device_probe.AMD.Archs.Legacy_GCN,
device_probe.AMD.Archs.Polaris,
device_probe.AMD.Archs.Vega,
device_probe.AMD.Archs.Navi,
device_probe.NVIDIA.Archs.Kepler,
]
):
# Building on device and we have a native, supported GPU
self.constants.sip_status = True
# self.constants.secure_status = True # Monterey
self.constants.disable_amfi = False
else:
print("\n Not Valid Choice Try again")
OpenCoreBuilderMenu = True
elif MainMenu=="2":
print("\n Not yet implemented")
OpenCoreInstallerMenu=True
while OpenCoreInstallerMenu:
os.system('clear')
print(header)
print(" Install OpenCore to drive")
print(header)
print("")
print(" 1. Install to USB/internal drive")
print(" 2. Return to main menu")
print("")
OpenCoreInstallerMenu = input('Please select an option: ')
if OpenCoreInstallerMenu=="1":
os.system('clear')
if os.path.exists(Versions.opencore_path_done):
print("Found OpenCore in Build Folder")
BuildOpenCore.ListDiskutil()
BuildOpenCore.MoveOpenCore()
else:
print("OpenCore folder missing!")
print("Please build OpenCore first")
print("")
OpenCoreInstallerMenu = input("Press any key to exit: ")
if OpenCoreInstallerMenu=="1":
print("Returning to main menu...")
OpenCoreInstallerMenu=False
elif OpenCoreInstallerMenu=="2":
print("\n Returning to main menu...")
OpenCoreInstallerMenu=False
MainMenu=True
self.constants.sip_status = False # Unsigned kexts
self.constants.secure_status = False # Root volume modified
self.constants.disable_amfi = True # Unsigned binaries
if model in ModelArray.ModernGPU:
if host_is_target and model in ["iMac13,1", "iMac13,3"] and self.computer.dgpu:
# Some models have a supported dGPU, others don't
self.constants.sip_status = True
# self.constants.secure_status = True # Monterey
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
else:
print("\n Not Valid Choice Try again")
OpenCoreInstallerMenu = True
self.constants.sip_status = False # Unsigned kexts
self.constants.secure_status = False # Modified root volume
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
if model == "MacBook8,1":
# MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
self.constants.serial_settings == "Moderate"
elif MainMenu=="3":
SMBIOSMenu=True
while SMBIOSMenu:
os.system('clear')
def build_opencore(self):
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).build_opencore()
print(header)
print(" Enter a new SMBIOS")
print(header)
print("")
print(" Tip: Run this command on the machine to find the SMBIOS")
print("")
print(" system_profiler SPHardwareDataType | grep 'Model Identifier'")
print("")
SMBIOSOption = input('Please enter the SMBIOS of your machine (Press enter to exit): ')
if SMBIOSOption == "":
print("Exiting...")
SMBIOSMenu=False
MainMenu=True
def install_opencore(self):
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).copy_efi()
def change_model(self):
Utilities.cls()
Utilities.header(["Select Different Model"])
print(
"""
Tip: Run the following command on the target machine to find the model identifier:
system_profiler SPHardwareDataType | grep 'Model Identifier'
"""
)
self.constants.custom_model = input("Please enter the model identifier of the target machine: ").strip()
if self.constants.custom_model not in ModelArray.SupportedSMBIOS:
print(
f"""
{self.constants.custom_model} is not a valid SMBIOS Identifier for macOS {self.constants.os_support}!
"""
)
print_models = input(f"Print list of valid options for macOS {self.constants.os_support}? (y/n)")
if print_models.lower() in {"y", "yes"}:
print("\n".join(ModelArray.SupportedSMBIOS))
input("\nPress [ENTER] to continue")
else:
self.set_defaults(self.constants.custom_model, False)
def patcher_settings(self):
response = None
while not (response and response == -1):
title = ["Adjust Patcher Settings"]
menu = Utilities.TUIMenu(title, "Please select an option: ", auto_number=True, top_level=True)
options = [
[f"Enable Verbose Mode:\t\tCurrently {self.constants.verbose_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_verbose],
[f"Enable OpenCore DEBUG:\t\tCurrently {self.constants.opencore_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_oc],
[f"Enable Kext DEBUG:\t\t\tCurrently {self.constants.kext_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_kext],
[f"Set ShowPicker Mode:\t\tCurrently {self.constants.showpicker}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_showpicker],
[f"Set Vault Mode:\t\t\tCurrently {self.constants.vault}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_vault],
[f"Allow FireWire Boot:\t\tCurrently {self.constants.firewire_boot}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_firewire],
[f"Allow NVMe Boot:\t\t\tCurrently {self.constants.nvme_boot}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_nvme],
[
f"Enable TeraScale 2 Acceleration:\tCurrently {self.constants.terascale_2_patch}",
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).enable_terascale,
],
[f"Disable AMFI:\t\t\tCurrently {self.constants.disable_amfi}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_amfi],
[
f"Set SIP and SecureBootModel:\tSIP: {self.constants.sip_status} SBM: {self.constants.secure_status}",
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_sip,
],
[
f"Allow OpenCore on native Models:\tCurrently {self.constants.allow_oc_everywhere}",
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_native_models,
],
["Advanced Patch Settings, for developers only", self.advanced_patcher_settings],
]
for option in options:
menu.add_menu_option(option[0], function=option[1])
response = menu.start()
def advanced_patcher_settings(self):
response = None
while not (response and response == -1):
title = ["Adjust Advanced Patcher Settings, for developers ONLY"]
menu = Utilities.TUIMenu(title, "Please select an option: ", auto_number=True, top_level=True)
options = [
[f"Assume Metal GPU Always:\t\tCurrently {self.constants.imac_vendor}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_metal],
[f"Set SMBIOS Mode:\t\t\tCurrently {self.constants.serial_settings}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_serial],
[f"DRM Preferences:\t\t\tCurrently {self.constants.drm_support}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).drm_setting],
[f"Set Generic Bootstrap:\t\tCurrently {self.constants.boot_efi}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).bootstrap_setting],
[
f"Disable CPU Friend:\t\t\tCurrently {self.constants.disallow_cpufriend}",
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).disable_cpufriend,
],
[f"Override SMBIOS Spoof:\t\tCurrently {self.constants.override_smbios}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_smbios],
[f"Set Custom name {self.constants.custom_cpu_model_value}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).custom_cpu],
["Set SeedUtil Status", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_seedutil],
]
for option in options:
menu.add_menu_option(option[0], function=option[1])
response = menu.start()
def credits(self):
Utilities.TUIOnlyPrint(
["Credits"],
"Press [Enter] to go back.\n",
[
"""Many thanks to the following:
- Acidanthera:\tOpenCore, kexts and other tools
- Khronokernel:\tWriting and maintaining this patcher
- DhinakG:\t\tWriting and maintaining this patcher
- ASentientBot:\tLegacy Acceleration Patches
- Ausdauersportler:\tLinking fixes for SNBGraphicsFB and AMDX3000
- Syncretic:\t\tAAAMouSSE and telemetrap
- cdf:\t\tNightShiftEnabler and Innie"""
],
).start()
def PatchVolume(self):
Utilities.cls()
Utilities.header(["Patching System Volume"])
big_sur = """Patches Root volume to fix misc issues such as:
- Graphics Acceleration for non-Metal GPUs
- Nvidia: Tesla - Fermi (8000-500 series)
- Intel: Ironlake - Sandy Bridge
- AMD: TeraScale 1 and 2 (2000-6000 series)
- Audio support for iMac7,1 and iMac8,1
WARNING: Root Volume Patching is still in active development, please
have all important user data backed up. Note when the system volume
is patched, you can no longer have Delta updates or have FileVault
enabled.
Supported Options:
1. Patch System Volume
2. Unpatch System Volume (Experimental)
B. Exit
"""
monterey = """Patches Root volume to fix misc issues such as:
- Graphics Acceleration
- Intel: Ivy Bridge (4000 series iGPUs)
- Basic Framebuffer and brightness Control (No acceleration)
- Nvidia: Tesla - Fermi (8000-500 series)
- Intel: Ironlake - Sandy Bridge
- AMD: TeraScale 1 and 2 (2000-6000 series)
- Audio support for iMac7,1 and iMac8,1
WARNING: Root Volume Patching is still in active development, please
have all important user data backed up. Note when the system volume
is patched, you can no longer have Delta updates or have FileVault
enabled.
Supported Options:
1. Patch System Volume
2. Unpatch System Volume (Experimental)
B. Exit
"""
default = """
This OS has no root patches available to apply, please ensure you're patching a booted
install that requires root patches such as macOS Big Sur or Monterey
Supported Options:
B. Exit
"""
no_patch = False
if self.constants.detected_os == self.constants.monterey:
print(monterey)
elif self.constants.detected_os == self.constants.big_sur:
print(big_sur)
else:
print(default)
no_patch = True
change_menu = input("Patch System Volume?: ")
if no_patch is not True and change_menu == "1":
SysPatch.PatchSysVolume(self.constants.custom_model or self.computer.real_model, self.constants).start_patch()
elif no_patch is not True and change_menu == "2":
SysPatch.PatchSysVolume(self.constants.custom_model or self.computer.real_model, self.constants).start_unpatch()
else:
print("Returning to main menu")
def main_menu(self):
response = None
while not (response and response == -1):
title = [
f"OpenCore Legacy Patcher v{self.constants.patcher_version}",
f"Selected Model: {self.constants.custom_model or self.computer.real_model}",
]
if (self.constants.custom_model or self.computer.real_model) not in ModelArray.SupportedSMBIOS and self.constants.allow_oc_everywhere is False:
in_between = [
"Your model is not supported by this patcher for running unsupported OSes!",
"",
'If you plan to create the USB for another machine, please select the "Change Model" option in the menu.',
]
elif not self.constants.custom_model and self.computer.real_model == "iMac7,1" and "SSE4.1" not in self.computer.cpu.flags:
in_between = [
"Your model requires a CPU upgrade to a CPU supporting SSE4.1+ to be supported by this patcher!",
"",
f'If you plan to create the USB for another {self.computer.real_model} with SSE4.1+, please select the "Change Model" option in the menu.',
]
elif self.constants.custom_model == "iMac7,1":
in_between = ["This model is supported", "However please ensure the CPU has been upgraded to support SSE4.1+"]
else:
print("")
print(" New SMBIOS: %s" % SMBIOSOption)
print("")
SMBIOSMenuYN = input("Is this correct? (y/n)")
if SMBIOSMenuYN in {"y", "Y", "yes", "Yes"}:
SMBIOSMenu=False
BuildOpenCore.current_model = SMBIOSOption
MainMenu=True
CustomSMBIOS=True
elif MainMenu=="4":
CreditMenu=True
while CreditMenu:
os.system('clear')
in_between = ["This model is supported"]
print(header)
print(" Credits")
print(header)
print("")
print(" Many thanks to the following:")
print("")
print(" - Acidanthera: OpenCore, kexts and other tools")
print(" - DhinakG: Writing and maintaining this Patcher")
print(" - Khronokernel: Writing and maintaining this Patcher")
print(" - Syncretic: AAAMouSSE and telemetrap")
print(" - Slice: VoodooHDA")
print("")
CreditMenu = input(" Press any key to exit: ")
print("Returning to main menu...")
CreditMenu=False
MainMenu=True
menu = Utilities.TUIMenu(title, "Please select an option: ", in_between=in_between, auto_number=True, top_level=True)
elif MainMenu=="5":
print("\n Closing program...")
sys.exit(1)
else:
print("\n Not Valid Choice Try again")
MainMenu=True
options = (
[["Build OpenCore", self.build_opencore]]
if ((self.constants.custom_model or self.computer.real_model) in ModelArray.SupportedSMBIOS) or self.constants.allow_oc_everywhere is True
else []
) + [
["Install OpenCore to USB/internal drive", self.install_opencore],
["Post-Install Volume Patch", self.PatchVolume],
["Change Model", self.change_model],
["Patcher Settings", self.patcher_settings],
["Credits", self.credits],
]
for option in options:
menu.add_menu_option(option[0], function=option[1])
response = menu.start()
if getattr(sys, "frozen", False) and self.constants.recovery_status is False:
subprocess.run("""osascript -e 'tell application "Terminal" to close first window' & exit""", shell=True)
OpenCoreLegacyPatcher().main_menu()

43
OpenCore-Patcher.spec Normal file
View File

@@ -0,0 +1,43 @@
# -*- mode: python ; coding: utf-8 -*-
import sys, os
sys.path.append(os.path.abspath(os.getcwd()))
from Resources import Constants
block_cipher = None
a = Analysis(['OpenCore-Patcher.command'],
binaries=[],
datas=[('payloads', 'payloads'), ('Resources', 'Resources')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='OpenCore-Patcher',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )
app = BUNDLE(exe,
name='OpenCore-Patcher.app',
icon="OC-Patcher.icns",
bundle_identifier=None,
info_plist={
"CFBundleShortVersionString": Constants.Constants().patcher_version,
"CFBundleExecutable": "MacOS/Launcher",
"NSHumanReadableCopyright": "Copyright 2020-2021 Dortania"
})

173
README.md
View File

@@ -1,139 +1,60 @@
# OpenCore Legacy Patcher
<div align="center">
<img src="images/OC-Patcher.png" alt="OpenCore Patcher Logo" width="256" />
<h1>OpenCore Legacy Patcher</h1>
</div>
<img src="OC-Patcher.png" width="256">
A python program for building and booting [OpenCore](https://github.com/acidanthera/OpenCorePkg) on both legacy and modern Macs, see our in-depth [Guide](https://dortania.github.io/OpenCore-Legacy-Patcher/) for more information.
A python script for building and booting OpenCore on legacy Macs, see [Supported SMBIOS](#supported-smbios) on whether your model is supported.
Supported features:
See [here](https://github.com/dortania/Opencore-Legacy-Patcher/issues/1) for current TO-DOs on this patcher.
* System Integrity Protection, FileVault 2, .im4m Secure Boot and Vaulting
* WPA Wifi and Personal Hotspot support
* Native OTA OS DELTA updates on all Macs
* Recovery OS, Safe Mode and Single-user Mode booting
* Zero firmware patching required (ie. APFS ROM patching)
* GPU Switching on MacBook Pro models (2012 and newer)
## Supported SMBIOS
Note: Only clean-installs and upgrades are supported, macOS Big Sur installs already patched with other patchers, such as [Patched Sur](https://github.com/BenSova/Patched-Sur) or [bigmac](https://github.com/StarPlayrX/bigmac), cannot be used due to broken file integrity with APFS snapshots and SIP.
Any hardware supporting SSE4.1 CPU and 64-Bit firmware work on this patcher. To check your hardware model, run the below command on the applicable machine:
* You can however reinstall macOS with this patcher and retain your original data
```bash
system_profiler SPHardwareDataType | grep 'Model Identifier'
```
Note 2: Currently OpenCore Legacy Patcher officially supports patching to run macOS 11, Big Sur installs. For older OSes, OpenCore may function however support is currently not provided from Dortania.
<details>
<summary>SMBIOS Support Table</summary>
* For Mojave and Catalina support, we recommend the use of [dosdude1's patchers](http://dosdude1.com)
```
MacBook5,1
MacBook5,2
MacBook6,1
MacBook7,1
## Support
MacBookAir2,1
MacBookAir3,1
MacBookAir3,2
MacBookAir4,1
MacBookAir4,2
MacBookAir5,1
MacBookAir5,2
To get aid with the patcher, we recommend joining the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN). We're actively there and is the quickest way to receive help. For bigger issues such as patcher crashing on build and such, we recommend opening an issue right here on GitHub(Please review [How to debug with OpenCore](https://dortania.github.io/OpenCore-Legacy-Patcher/DEBUG.html) before opening issues):
MacBookPro3,1
MacBookPro4,1
MacBookPro5,1
MacBookPro5,2
MacBookPro5,3
MacBookPro5,4
MacBookPro5,5
MacBookPro6,1
MacBookPro6,2
MacBookPro7,1
MacBookPro8,1
MacBookPro8,2
MacBookPro8,3
MacBookPro9,1
MacBookPro9,2
MacBookPro10,1
MacBookPro10,2
* [OpenCore Legacy Patcher's Issue's tab](https://github.com/dortania/OpenCore-Legacy-Patcher/issues)
Macmini3,1
Macmini4,1
Macmini5,1
Macmini5,2
Macmini5,3
Macmini6,1
Macmini6,2
Nightly builds can be found here courteous of nightly.link: [Nightly OpenCore-Patcher.app](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app/main/OpenCore-Patcher.app.zip)
iMac7,1
iMac8,1
iMac9,1
iMac10,1
iMac11,1
iMac11,2
iMac11,3
iMac12,1
iMac12,2
iMac13,1
iMac13,2
iMac14,1
iMac14,2
iMac14,3
## Credits
MacPro3,1
MacPro4,1
MacPro5,1
Xserve3,1
```
</details>
<br>
## How to run
Prerequists:
* Supported Mac(see above)
* macOS Installer installed to USB
* See here on how to download and create an installer: [Creating a macOS Installer](https://dortania.github.io/OpenCore-Install-Guide/installer-guide/mac-install.html)
* Blank USB drives formatted as GUID Partition Table are also supported
1. [Download the release](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
2. Run the `OpenCore-Patcher.command` file
3. Once opened, select option 1 and build your EFI
* if patching for a different patching, select option 3 first
4. Once finished, run option 2 a the main menu and install onto your desired drive
Once you're done making your OpenCore installer, you can simply reboot holding the Option key. In the picker, you should see a new EFI Boot Option. Boot it and from there you'll be in the OpenCore picker.
## How to uninstall OpenCore?
To remve OpenCore is actually quite simply:
1. Remove OpenCore either from the USB or internal drive
* You'll need to mount the drive's EFI partition, and delete the EFI folder
* [See here for example how to mount](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html)
2. Reset NVRAM
* [Reset NVRAM or PRAM on your Mac](https://support.apple.com/HT204063)
## Troubleshooting
Here are some common errors users may experience while using this patcher:
* [Stuck on `This version of Mac OS X is not supported on this platform`](#stuck-on-this-version-of-mac-os-x-is-not-supported-on-this-platform)
* [Cannot boot macOS without the USB](#cannot-boot-macos-without-the-usb)
### Stuck on `This version of Mac OS X is not supported on this platform`
This means macOS has detected a SMBIOS it does not support, to resolve this ensure you're booting OpenCore **before** the macOS installer in the boot picker. Reminder the option will be called `EFI Boot`
Once you've booted OpenCore at least once, your hardware should now auto boot it until either NVRAM reset or you remove the drive with OpenCore installed.
### Cannot boot macOS without the USB
At this time, the OpenCore Patcher won't install macOS onto the internal drive itself during installs. Instead, you'll need to either [manually transfer](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html) OpenCore to the internal drive's EFI or run this patcher's Option 2 again but 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 remenber this entry and auto boot from then on.
### OpenCore won't show up in the boot picker
If OpenCore refuses to show up in the boot picker even with the above troubleshooting step, you can try to disable SIP and run this command(With your EFI drive mounted):
```sh
sudo bless --verbose --file /Volumes/EFI/EFI/OC/Bootstrap/Bootstrap.efi --folder /Volumes/EFI/EFI/OC/Bootstrap --setBoot
```
* Note: NVRAM write is disabled with SIP, so disables SIP first before running
* [Acidanthera](https://github.com/Acidanthera)
* OpenCorePkg as well as many of the core kexts and tools
* [DhinakG](https://github.com/DhinakG)
* Main co-author
* [Khronokernel](https://github.com/Khronokernel)
* Main co-author
* [Ausdauersportler](https://github.com/Ausdauersportler)
* iMacs Metal GPUs Upgrade Patch set and documentation
* Great amounts of help debugging and code suggestions
* [vit9696](https://github.com/vit9696)
* Endless amount of help troubleshooting, determining fixes and writing patches
* [ASentientBot](https://github.com/ASentientBot)
* Legacy Acceleration Patch set and documentation
* [cdf](https://github.com/cdf)
* Mac Pro on OpenCore Patch set and documentation
* [Innie](https://github.com/cdf/Innie) and [NightShiftEnabler](https://github.com/cdf/NightShiftEnabler)
* [Syncretic](https://forums.macrumors.com/members/syncretic.1173816/)
* [AAAMouSSE](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/) and [telemetrap](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/post-28447707)
* [dosdude1](https://github.com/dosdude1) and [BarryKN](https://github.com/BarryKN)
* Development of previous patchers, laying out much of what needs to be patched
* [mario_bros_tech](https://github.com/mariobrostech) and the rest of the Unsupported Mac Discord
* Catalyst that started OpenCore Legacy Patcher
* MacRumors and Unsupported Mac Communities
* Endless testing, reporting issues
* Apple
* for macOS and many of the kexts, frameworks and other binaries we reimplemented into newer OSes

1032
Resources/Build.py Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,371 +0,0 @@
# Commands for building the EFI and SMBIOS
from __future__ import print_function
from shutil import copy
from shutil import rmtree
from distutils.dir_util import copy_tree
import os
import json
import subprocess
import sys
import zipfile
from Resources import Versions
from Resources import ModelArray
# Allow py2 and 3 support
try:
input = raw_input
except NameError:
pass
# Find SMBIOS of machine
opencore_model = subprocess.Popen(["NVRAM", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product"], stdout=subprocess.PIPE).communicate()[0]
if opencore_model not in ("NVRAM: Error getting variable - '4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product': (iokit/common) data was not found"):
print("Detected OpenCore machine")
opencore_model = subprocess.Popen("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product".split(), stdout=subprocess.PIPE)
opencore_model = [line.strip().split(":oem-product ", 1)[1] for line in opencore_model.stdout.read().split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
current_model = opencore_model
else:
print("No OpenCore detected")
current_model = subprocess.Popen("system_profiler SPHardwareDataType".split(), stdout=subprocess.PIPE)
current_model = [line.strip().split(": ", 1)[1] for line in current_model.stdout.read().split("\n") if line.strip().startswith("Model Identifier")][0]
print("Current Model: %s" % current_model)
OCExist = False
def BuildEFI():
if not os.path.exists(Versions.build_path):
os.makedirs(Versions.build_path)
print("Created Build Folder")
else:
print("Build Folder already present, skipping")
# Copy OpenCore into Build Folder
if os.path.exists(Versions.opencore_path_build):
print("Deleting old copy of OpenCore zip")
os.remove(Versions.opencore_path_build)
if os.path.exists(Versions.opencore_path_done):
print("Deleting old copy of OpenCore folder")
rmtree(Versions.opencore_path_done)
print("")
print("- Adding OpenCore v%s" % Versions.opencore_version)
copy(Versions.opencore_path, Versions.build_path)
zipfile.ZipFile(Versions.opencore_path_build).extractall(Versions.build_path)
print("- Adding config.plist v%s" % Versions.opencore_version)
# Setup config.plist for editing
copy(Versions.plist_path, Versions.plist_path_build)
with open(Versions.plist_path_build_full, 'r') as file :
Versions.plist_data = file.read()
print("- Adding Lilu %s" % Versions.lilu_version)
copy(Versions.lilu_path, Versions.kext_path_build)
print("- Adding WhateverGreen %s" % Versions.whatevergreen_version)
copy(Versions.whatevergreen_path, Versions.kext_path_build)
# Checks for kexts
# CPU Kext Patches
if current_model in ModelArray.DualSocket:
print("- Adding AppleMCEReporterDisabler v%s" % Versions.mce_version)
copy(Versions.mce_path, Versions.kext_path_build)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--AppleMCEReporterDisabler-->",
"<true/><!--AppleMCEReporterDisabler-->"
)
if current_model in ModelArray.SSEEmulator:
print("- Adding AAAMouSSE v%s" % Versions.mousse_version)
copy(Versions.mousse_path, Versions.kext_path_build)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--AAAMouSSE-->",
"<true/><!--AAAMouSSE-->"
)
if current_model in ModelArray.MissingSSE42:
print("- Adding telemetrap %s" % Versions.telemetrap_version)
copy(Versions.telemetrap_path, Versions.kext_path_build)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--telemetrap-->",
"<true/><!--telemetrap-->"
)
# Ethernet Patches
if current_model in ModelArray.EthernetNvidia:
print("- Adding nForceEthernet v%s" % Versions.nforce_version)
copy(Versions.nforce_path, Versions.kext_path_build)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--nForceEthernet-->",
"<true/><!--nForceEthernet-->"
)
if current_model in ModelArray.EthernetMarvell:
print("- Adding MarvelYukonEthernet v%s" % Versions.marvel_version)
copy(Versions.marvel_path, Versions.kext_path_build)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--MarvelYukonEthernet-->",
"<true/><!--MarvelYukonEthernet-->"
)
if current_model in ModelArray.EthernetBroadcom:
print("- Adding CatalinaBCM5701Ethernet %s" % Versions.bcm570_version)
copy(Versions.bcm570_path, Versions.kext_path_build)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--CatalinaBCM5701Ethernet-->",
"<true/><!--CatalinaBCM5701Ethernet-->"
)
# Wifi Patches
if current_model in ModelArray.WifiAtheros:
print("- Adding IO80211HighSierra v%s" % Versions.io80211high_sierra_version)
copy(Versions.io80211high_sierra_path, Versions.kext_path_build)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--IO80211HighSierra-->",
"<true/><!--IO80211HighSierra-->"
)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--AirPortAtheros40-->",
"<true/><!--AirPortAtheros40-->"
)
#if current_model in ModelArray.WifiBCM94328:
# print("- Wifi patches currently unsupported")
#if current_model in ModelArray.WifiBCM94322:
# print("- Adding IO80211Mojave %s" % Versions.io80211mojave_version)
# copy(Versions.io80211mojave_path, Versions.kext_path_build)
# Versions.plist_data = Versions.plist_data.replace(
# "<false/><!--IO80211Mojave-->",
# "<true/><!--IO80211Mojave-->"
# )
# Versions.plist_data = Versions.plist_data.replace(
# "<false/><!--AirPortBrcm4331-->",
# "<true/><!--AirPortBrcm4331-->"
# )
#if current_model in ModelArray.WifiBCM943224:
# print("- Adding IO80211Mojave %s" % Versions.io80211mojave_version)
# copy(Versions.io80211mojave_path, Versions.kext_path_build)
# Versions.plist_data = Versions.plist_data.replace(
# "<false/><!--IO80211Mojave-->",
# "<true/><!--IO80211Mojave-->"
# )
# Versions.plist_data = Versions.plist_data.replace(
# "<false/><!--AirPortBrcm4331-->",
# "<true/><!--AirPortBrcm4331-->"
# )
if current_model in ModelArray.WifiBCM94331:
print("- Adding AirportBrcmFixup and appling fake ID")
copy(Versions.airportbcrmfixup_path, Versions.kext_path_build)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--AirportBrcmFixup-->",
"<true/><!--AirportBrcmFixup-->"
)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--AirPortBrcmNIC_Injector-->",
"<true/><!--AirPortBrcmNIC_Injector-->"
)
if current_model in ModelArray.EthernetNvidia:
# Nvidia chipsets all have the same path to ARPT
Versions.plist_data = Versions.plist_data.replace(
"#PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)",
"PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)"
)
if current_model in ("MacBookAir2,1", "MacBookAir3,1", "MacBookAir3,2" ):
Versions.plist_data = Versions.plist_data.replace(
"#PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)",
"PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)"
)
elif current_model in ("iMac7,1", "iMac8,1" ):
Versions.plist_data = Versions.plist_data.replace(
"#PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)",
"PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)"
)
elif current_model in ("iMac13,1", "iMac13,2"):
Versions.plist_data = Versions.plist_data.replace(
"#PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)",
"PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)"
)
elif current_model in ("MacPro5,1"):
Versions.plist_data = Versions.plist_data.replace(
"#PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)",
"PciRoot(0x0)/Pci(0x1C,0x5)/Pci(0x0,0x0)"
)
else:
# Assumes we have a laptop with Intel chipset
Versions.plist_data = Versions.plist_data.replace(
"#PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)",
"PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)"
)
if current_model in ModelArray.LegacyHID:
print("- Adding legacy IOHIDFamily Patch")
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--IOHIDFamily-->",
"<true/><!--IOHIDFamily-->"
)
if current_model in ModelArray.LegacyAudio:
print("- Adding VoodooHDA v%s" % Versions.voodoohda_version)
copy(Versions.voodoohda_path, Versions.kext_path_build)
Versions.plist_data = Versions.plist_data.replace(
"<false/><!--VoodooHDA-->",
"<true/><!--VoodooHDA-->"
)
usb_map_path = os.path.join(Versions.current_path, "payloads/Kexts/Maps/Zip/" "USB-Map-%s.zip" % current_model)
if os.path.exists(usb_map_path):
print("- Adding USB Map for %s" % current_model)
copy(usb_map_path, Versions.kext_path_build)
map_name = ("USB-Map-%s.kext" % current_model)
Versions.plist_data = Versions.plist_data.replace(
"<<false/><!--USBmap-->",
"<true/><!--USBmap-->"
)
Versions.plist_data = Versions.plist_data.replace(
"USB-Map-SMBIOS.kext",
map_name
)
if current_model in ModelArray.DualGPUPatch:
print("- Adding dual GPU patch")
Versions.plist_data = Versions.plist_data.replace(
"debug=0x100",
"debug=0x100 agdpmod=pikera"
)
def BuildGUI():
print("- Adding OpenCanopy GUI")
rmtree(Versions.gui_path_build)
copy(Versions.gui_path, Versions.plist_path_build)
Versions.plist_data = Versions.plist_data.replace(
"#OpenCanopy.efi",
"OpenCanopy.efi"
)
def BuildSMBIOS():
# Set new SMBIOS
new_model = current_model
if current_model in ModelArray.MacBookAir61:
print("- Spoofing to MacBookAir6,1")
new_model = "MacBookAir6,1"
elif current_model in ModelArray.MacBookAir62:
print("- Spoofing to MacBookAir6,2")
new_model = "MacBookAir6,2"
elif current_model in ModelArray.MacBookPro111:
print("- Spoofing to MacBookPro11,1")
new_model = "MacBookPro11,1"
elif current_model in ModelArray.MacBookPro112:
print("- Spoofing to MacBookPro11,2")
new_model = "MacBookPro11,2"
elif current_model in ModelArray.Macmini71:
print("- Spoofing to Macmini7,1")
new_model = "Macmini7,1"
elif current_model in ModelArray.iMac151:
print("- Spoofing to iMac15,1")
new_model = "iMac15,1"
elif current_model in ModelArray.iMac144:
print("- Spoofing to iMac14,4")
new_model = "iMac14,4"
elif current_model in ModelArray.MacPro71:
print("- Spoofing to MacPro7,1")
new_model = "MacPro7,1"
# Grab serials from macserial
serialData = subprocess.Popen((r"./payloads/tools/macserial -g -m " + new_model + " -n 1").split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
serialData = serialData.stdout.read().strip().split(" | ")
# Patch SMBIOS
Versions.plist_data = Versions.plist_data.replace(
"iMac19,1",
new_model
)
# Patch Number Serial
Versions.plist_data = Versions.plist_data.replace(
"W00000000001",
serialData[0]
)
# Patch MLB
Versions.plist_data = Versions.plist_data.replace(
"M0000000000000001",
serialData[1]
)
# Patch UUID
uuidGen = subprocess.Popen(["uuidgen"], stdout=subprocess.PIPE).communicate()[0]
Versions.plist_data = Versions.plist_data.replace(
"00000000-0000-0000-0000-000000000000",
uuidGen
)
def SavePlist():
with open(Versions.plist_path_build_full, 'w') as file:
file.write(Versions.plist_data)
def CleanBuildFolder():
# Clean up Build Folder
print("")
print("Cleaning build folder")
os.chdir(Versions.kext_path_build)
for item in os.listdir(Versions.kext_path_build):
if item.endswith(".zip"):
file_name = os.path.abspath(item)
zip_ref = zipfile.ZipFile(file_name)
zip_ref.extractall(Versions.kext_path_build)
zip_ref.close()
os.remove(file_name)
# Clean up Python's unzip
if os.path.exists("__MACOSX"):
rmtree("__MACOSX")
os.chdir(Versions.plist_path_build)
os.chdir(Versions.plist_path_build)
for item in os.listdir(Versions.plist_path_build):
if item.endswith(".zip"):
file_name = os.path.abspath(item)
zip_ref = zipfile.ZipFile(file_name)
zip_ref.extractall(Versions.plist_path_build)
zip_ref.close()
os.remove(file_name)
if os.path.exists("__MACOSX"):
rmtree("__MACOSX")
os.chdir(Versions.build_path)
if os.path.exists("__MACOSX"):
rmtree("__MACOSX")
os.remove(Versions.opencore_path_build)
os.chdir(Versions.current_path)
def ListDiskutil():
DiskMenu = True
while DiskMenu:
os.system('clear')
print("Loading diskutil...(This may take some time)")
diskList = subprocess.Popen(["diskutil", "list"], stdout=subprocess.PIPE).communicate()[0]
print(diskList)
ChosenDisk = input('Please select the disk you want to install OpenCore to(ie. disk1): ')
ChosenDisk = ChosenDisk + "s1"
print("Trying to mount %s" % ChosenDisk)
diskMount = subprocess.Popen(["sudo", "diskutil", "mount", ChosenDisk], stdout=subprocess.PIPE).communicate()[0]
print(diskMount)
DiskMenu = input("Press any key to continue: ")
def MoveOpenCore():
print("")
efiVol = "/Volumes/EFI"
if os.path.exists(efiVol):
print("Coping OpenCore onto Volumes/EFI")
if os.path.exists("/Volumes/EFI/EFI"):
print("Cleaning EFI folder")
rmtree("/Volumes/EFI/EFI")
if os.path.exists(Versions.opencore_path_done):
copy_tree(Versions.opencore_path_done, efiVol)
copy(Versions.icon_path, efiVol)
print("OpenCore transfer complete")
print("")
else:
print("Couldn't find EFI partition")
print("Please ensure your drive is formatted as GUID Partition Table")
print("")
def MountOpenCore():
subprocess.Popen((r"sudo diskutil mount $(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/')").split())

479
Resources/CliMenu.py Normal file
View File

@@ -0,0 +1,479 @@
# Handle misc CLI menu options
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
from __future__ import print_function
import subprocess
from Resources import Constants, Utilities
class MenuOptions:
def __init__(self, model, versions):
self.model = model
self.constants: Constants.Constants = versions
def change_verbose(self):
Utilities.cls()
Utilities.header(["Set Verbose mode"])
change_menu = input("Enable Verbose mode(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.verbose_debug = True
elif change_menu in {"n", "N", "no", "No"}:
self.constants.verbose_debug = False
else:
print("Invalid option")
def change_oc(self):
Utilities.cls()
Utilities.header(["Set OpenCore DEBUG mode"])
change_menu = input("Enable OpenCore DEBUG mode(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.opencore_debug = True
self.constants.opencore_build = "DEBUG"
elif change_menu in {"n", "N", "no", "No"}:
self.constants.opencore_debug = False
self.constants.opencore_build = "RELEASE"
else:
print("Invalid option")
def change_kext(self):
Utilities.cls()
Utilities.header(["Set Kext DEBUG mode"])
change_menu = input("Enable Kext DEBUG mode(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.kext_debug = True
elif change_menu in {"n", "N", "no", "No"}:
self.constants.kext_debug = False
else:
print("Invalid option")
def change_metal(self):
Utilities.cls()
Utilities.header(["Assume Metal GPU Always in iMac"])
print(
"""This is for iMacs that have upgraded Metal GPUs, otherwise
Patcher assumes based on stock configuration (ie. iMac10,x-12,x)
Valid Options:
1. None(stock GPU)
2. Nvidia GPU
3. AMD GPU
Note: Patcher will detect whether hardware has been upgraded regardless, this
option is for those patching on a different machine or OCLP cannot detect.
"""
)
change_menu = input("Set GPU Patch type(ie. 1): ")
if change_menu == "1":
self.constants.metal_build = False
self.constants.imac_vendor = "None"
elif change_menu == "2":
self.constants.metal_build = True
self.constants.imac_vendor = "Nvidia"
elif change_menu == "3":
self.constants.metal_build = True
self.constants.imac_vendor = "AMD"
else:
print("Invalid option")
def change_serial(self):
Utilities.cls()
Utilities.header(["Set SMBIOS Mode"])
print(
"""This section is for setting how OpenCore generates the SMBIOS
Recommended for adanced users who want control how serials are handled
Valid options:
1. Minimal:\tUse original serials and minimally update SMBIOS
2. Moderate:\tReplace entire SMBIOS but keep original serials
3. Advanced:\tReplace entire SMBIOS and generate new serials
Note: For new users we recommend leaving as default(1. Minimal)
"""
)
change_menu = input("Set SMBIOS Mode(ie. 1): ")
if change_menu == "1":
self.constants.serial_settings = "Minimal"
elif change_menu == "2":
self.constants.serial_settings = "Moderate"
elif change_menu == "3":
self.constants.serial_settings = "Advanced"
else:
print("Invalid option")
def change_showpicker(self):
Utilities.cls()
Utilities.header(["Set OpenCore Picker mode"])
print(
"""By default, OpenCore will show its boot picker each time on boot up,
however this can be disabled by default and be shown on command by repeatedly
pressing the "Esc" key
"""
)
change_menu = input("Show OpenCore Picker by default(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.showpicker = True
elif change_menu in {"n", "N", "no", "No"}:
self.constants.showpicker = False
else:
print("Invalid option")
def change_vault(self):
Utilities.cls()
Utilities.header(["Set OpenCore Vaulting"])
print(
"""By default, this patcher will sign all your files and ensure none of the
contents can be tampered with. However for more advanced users, you may
want to be able to freely edit the config.plist and files.
Note: For security reasons, OpenShell will be disabled when Vault is set.
"""
)
change_menu = input("Enable Vault(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.vault = True
elif change_menu in {"n", "N", "no", "No"}:
self.constants.vault = False
else:
print("Invalid option")
def change_sip(self):
Utilities.cls()
Utilities.header(["Set SIP and SecureBootModel"])
print(
"""SIP and SecureBootModel are used to ensure proper OTA functionality,
however to patch the root volume both of these must be disabled.
Only disable is absolutely necessary. SIP value = 0xFEF
Valid options:
1. Enable Both
2. Disable SIP only
3. Disable SecureBootModel Only
4. Disable Both
"""
)
change_menu = input("Set SIP and SecureBootModel(ie. 1): ")
if change_menu == "1":
self.constants.sip_status = True
self.constants.secure_status = True
elif change_menu == "2":
self.constants.sip_status = False
self.constants.secure_status = True
elif change_menu == "3":
self.constants.sip_status = True
self.constants.secure_status = False
elif change_menu == "4":
self.constants.sip_status = False
self.constants.secure_status = False
else:
print("Invalid option")
def set_amfi(self):
Utilities.cls()
Utilities.header(["Disable AMFI"])
print(
"""Required for Root Patching non-Metal GPUs
in macOS Big Sur. Without this, will receive kernel panic once
Patcher finishes installing legacy acceleration patches.
"""
)
change_menu = input("Disable AMFI(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.disable_amfi = True
elif change_menu in {"n", "N", "no", "No"}:
self.constants.disable_amfi = False
else:
print("Invalid option")
def bootstrap_setting(self):
Utilities.cls()
Utilities.header(["Set Bootstrap method"])
print(
"""Sets OpenCore's bootstrap method, currently the patcher supports the
following options.
Valid options:
1. System/Library/CoreServices/boot.efi (default)
2. EFI/BOOT/BOOTx64.efi
3. Exit
Note: S*/L*/C*/boot.efi method is only installed to the EFI partition only
and not to macOS itself.
Recommended to set to BOOTx64.efi in situations where your Mac cannot
see the EFI Boot entry in the boot picker.
"""
)
change_menu = input("Set Bootstrap method: ")
if change_menu == "1":
self.constants.boot_efi = False
elif change_menu == "2":
self.constants.boot_efi = True
else:
print("Invalid option")
def drm_setting(self):
Utilities.cls()
Utilities.header(["Set DRM preferences"])
print(
"""Sets OpenCore's DRM preferences for iMac13,x and iMac14,x.
In Big Sur, some DRM based content may be broken by
default in AppleTV, Photobooth, etc.
To resolve, you can opt to disable Intel QuickSync support in
favor of Nvidia's Software rendering. This can aid in DRM however
greatly hampers Video rendering performance in Final Cut Pro and
other programs relying on such features.
Recommend only disabling if absolutely required.
"""
)
change_menu = input("Enable Nvidia's Software DRM rendering(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.drm_support = True
elif change_menu in {"n", "N", "no", "No"}:
self.constants.drm_support = False
else:
print("Invalid option")
def allow_native_models(self):
Utilities.cls()
Utilities.header(["Allow OpenCore on native Models"])
print(
"""Allows natively supported Macs to use OpenCore. Recommended
for users with 3rd Party NVMe SSDs to achieve improved overall
power usage.
"""
)
change_menu = input("Allow OpenCore on all Models(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.allow_oc_everywhere = True
self.constants.serial_settings = "None"
elif change_menu in {"n", "N", "no", "No"}:
self.constants.allow_oc_everywhere = False
self.constants.serial_settings = "Minimal"
else:
print("Invalid option")
def custom_cpu(self):
Utilities.cls()
Utilities.header(["Set custom CPU Model Name"])
print(
"""Change reported CPU Model name in About This Mac
Custom names will report as follows:
1: Original Name: 2.5 Ghz Dual-Core Intel Core i5
2. CPU name: Intel(R) Core(TM) i5-3210M CPU @ 2.50Ghz
3. Custom Name: 2.5Ghz Cotton Candy (example)
"""
)
if self.constants.custom_cpu_model_value == "":
if self.constants.custom_cpu_model == 0:
print("Currently using original name")
else:
print("Currently using CPU name")
else:
print(f"Custom CPU name currently: {self.constants.custom_cpu_model_value}")
change_menu = input("Set custom CPU Name(1,2,3): ")
if change_menu == "1":
self.constants.custom_cpu_model = 2
self.constants.custom_cpu_model_value = ""
elif change_menu == "2":
self.constants.custom_cpu_model = 0
self.constants.custom_cpu_model_value = ""
elif change_menu == "3":
self.constants.custom_cpu_model = 1
self.constants.custom_cpu_model_value = input("Enter new CPU Name: ")
else:
print("Invalid option")
def custom_color_thing(self):
Utilities.cls()
Utilities.header(["Set custom CPU Model Name"])
print(
"""Change reported CPU Model name in About This Mac
Custom names will report as follows:
1: Custom Color
2. Reset
"""
)
change_menu = input("Set custom CPU Name(1,2,3): ")
if change_menu == "1":
print("")
# temp_tk_root = tk.Tk()
# temp_tk_root.wm_withdraw()
# self.constants.custom_color = colorchooser.askcolor(title="Choose color")
# temp_tk_root.destroy()
elif change_menu == "2":
self.constants.custom_color = ""
else:
print("Invalid option")
def disable_cpufriend(self):
Utilities.cls()
Utilities.header(["Disable CPU Friend?"])
print(
"""Only recommended for advanced users
Disabling CPUFriend forces macOS into using a different
Mac's power profile for CPUs and GPUs, which can harm the
hardware
"""
)
change_menu = input("Disable CPU Friend?(y/n): ")
if change_menu == "y":
self.constants.disallow_cpufriend = True
elif change_menu == "n":
self.constants.disallow_cpufriend = False
else:
print("Invalid option")
def set_seedutil(self):
Utilities.cls()
Utilities.header(["Set SeedUtil Status"])
print(
"""Used for setting OS Update Preferences
Valid options:
1. Public Release Seed (Default)
2. Public Beta Seed
3. Developer Beta Seed
4. Check SeedUtil's current status
"""
)
change_menu = input("Set update status(Press [ENTER] to exit): ")
if change_menu == "1":
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
elif change_menu == "2":
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(
["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "enroll", "PublicSeed"], stdout=subprocess.PIPE
).stdout.decode().strip().encode()
elif change_menu == "3":
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(
["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "enroll", "DeveloperSeed"], stdout=subprocess.PIPE
).stdout.decode().strip().encode()
elif change_menu == "4":
result = subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "current"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
result = [i.partition(":")[2] for i in result.stdout.decode().split("\n") if "Currently enrolled in" in i][0]
print(f"SeedUtil Current Status: {result}")
input("\nPress [ENTER] to continue")
self.set_seedutil()
else:
print("Returning to main menu")
def set_smbios(self):
Utilities.cls()
Utilities.header(["Override SMBIOS Spoof"])
print(
"""Change model OpenCore spoofs Mac too
Valid options:
1. Default set by OpenCore (Default)
2. User Override
3. Disable all spoofing (unsupported configuration)
"""
)
change_menu = input("Set SMBIOS status: ")
if change_menu == "1":
print("Setting SMBIOS spoof to default mode")
self.constants.override_smbios = "Default"
elif change_menu == "2":
custom_smbios = input("Set new SMBIOS mode: ")
try:
test = self.constants.board_id[custom_smbios]
self.constants.override_smbios = custom_smbios
except KeyError:
print("Unsupported SMBIOS, defaulting to Default setting")
self.constants.override_smbios = "Default"
elif change_menu == "3":
print("Disabling SMBIOS spoof")
self.constants.override_smbios = self.model
else:
print("Returning to main menu")
def allow_firewire(self):
Utilities.cls()
Utilities.header(["Allow FireWire Boot Support"])
print(
"""
In macOS Catalina and newer, Apple restricted
usage of FireWire devices to boot macOS for
security concerns relating to DMA access.
If you are comfortable lowering the security,
you can re-enable FireWire support for Catalina
and newer.
Note: MacBook5,x-7,1 don't support FireWire boot
"""
)
change_menu = input("Enable FireWire Boot support?(y/n): ")
if change_menu == "y":
self.constants.firewire_boot = True
elif change_menu == "n":
self.constants.firewire_boot = False
else:
print("Invalid option")
def allow_nvme(self):
Utilities.cls()
Utilities.header(["Allow NVMe UEFI Support"])
print(
"""
For machines not natively supporting NVMe,
this option allows you to see and boot NVMe
drive in OpenCore's picker
Not required if your machine natively supports NVMe
Note: You must have OpenCore on a bootable volume
first, ie. USB or SATA drive. Once loaded,
OpenCore will enable NVMe support in it's picker
"""
)
change_menu = input("Enable NVMe Boot support?(y/n): ")
if change_menu == "y":
self.constants.nvme_boot = True
elif change_menu == "n":
self.constants.nvme_boot = False
else:
print("Invalid option")
def enable_terascale(self):
Utilities.cls()
Utilities.header(["Enable TeraScale 2 Acceleration"])
print(
"""
Currently TeraScale 2 graphics acceleration is in beta with
some unfortunate bugs on login including strobing colours
until the user forces Million Colours on the Display with
SwitchResX or resXtreme
Users sensitive to seizures should avoid using TeraScale 2
patches or ask someone to handle inital setup to ensure
no issues
Note: Acceleration only applies to macOS Big Sur
"""
)
change_menu = input("Enable TS2 Acceleration?(y/n): ")
if change_menu == "y":
self.constants.terascale_2_patch = True
elif change_menu == "n":
self.constants.terascale_2_patch = False
else:
print("Invalid option")

687
Resources/Constants.py Normal file
View File

@@ -0,0 +1,687 @@
# pylint: disable=multiple-statements
# Define Files
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
from __future__ import print_function
from pathlib import Path
from typing import Optional
from Resources import device_probe
class Constants:
def __init__(self):
self.patcher_version = "0.2.1"
self.opencore_commit = "4e0ff2d - 05-23-2021"
self.opencore_version = "0.7.0"
self.lilu_version = "1.5.4"
self.whatevergreen_version = "1.5.1"
self.airportbcrmfixup_version = "2.1.3"
self.bcm570_version = "1.0.1"
self.marvel_version = "1.0.0"
self.nforce_version = "1.0.0"
self.mce_version = "1.0.0"
self.mousse_version = "0.95"
self.telemetrap_version = "1.0.0"
self.corecaptureelcap_version = "1.0.0"
self.io80211elcap_version = "1.0.0"
self.io80211high_sierra_version = "1.0.0"
self.io80211mojave_version = "1.0.0"
self.applealc_version = "1.6.2"
self.restrictevents_version = "1.0.3"
self.restrictevents_mbp_version = "1.0.3"
self.piixata_version = "1.0.0"
self.backlight_version = "1.0.1"
self.backlight_injector_version = "1.0.0"
self.cpufriend_version = "1.2.4"
self.nightshift_version = "1.1.0"
self.smcspoof_version = "1.0.0"
self.nvmefix_version = "1.0.9"
self.sidecarfixup_version = "1.0.2"
self.debugenhancer_version = "1.0.3"
self.innie_version = "1.3.0"
self.fw_kext = "1.0.0"
self.patcher_support_pkg_version = "0.0.10" # PatcherSupportPkg
# Get resource path
self.current_path = Path(__file__).parent.parent.resolve()
self.payload_path = self.current_path / Path("payloads")
# Hardware
self.computer: device_probe.Computer = None # type: ignore
self.custom_model: Optional[str] = None
self.custom_mxm_gpu: bool = False
# Patcher Settings
self.opencore_debug = False
self.opencore_build = "RELEASE"
self.kext_debug = False
self.verbose_debug = False
self.os_support = 12.0
self.metal_build = False
self.imac_vendor = "None"
self.wifi_build = False
self.gui_mode = False
self.serial_settings = "Minimal"
self.showpicker = True
self.vault = False
self.sip_status = True
self.secure_status = False
self.detected_os = 0
self.boot_efi = False
self.drm_support = False
self.allow_oc_everywhere = False
self.custom_cpu_model = 2
self.custom_cpu_model_value = ""
self.custom_color = ""
self.download_ram = False
self.disallow_cpufriend = False
self.recovery_status = False
self.override_smbios = "Default"
self.apecid_support = False
self.firewire_boot = False
self.nvme_boot = False
self.disable_amfi = False
self.terascale_2_patch = False
# OS Versions
self.tiger = 8
self.leopard = 9
self.snow_leopard = 10
self.lion = 11
self.mountain_lion = 12
self.mavericks = 13
self.yosemite = 14
self.el_capitan = 15
self.sierra = 16
self.high_sierra = 17
self.mojave = 18
self.catalina = 19
self.big_sur = 20
self.monterey = 21
# Vendor IDs
self.pci_nvidia = "10DE"
self.pci_amd_ati = "1002"
self.pci_intel = "8086"
self.pci_broadcom = "14E4"
self.pci_atheros = "168C"
self.pci_apple = "106B"
# Class Codes
# https://pci-ids.ucw.cz/read/PD
self.classcode_sata = "01060100"
self.classcode_nvme = "02080100"
self.classcode_nvme_generic = "02800100"
self.classcode_wifi = "00800200"
self.classcode_gpu = "00000300"
self.classcode_gpu_variant = "00800300"
self.classcode_xhci = "30030C00"
# Nvidia GPU Architecture
self.arch_tesla = "NV50"
self.arch_fermi = "GF100"
self.arch_kepler = "GK100"
# External Files
self.url_patcher_support_pkg = "https://github.com/dortania/PatcherSupportPkg/releases/download/"
# Payload Location
# OpenCore
@property
def opencore_zip_source(self):
return self.payload_path / Path(f"OpenCore/OpenCore-{self.opencore_build}.zip")
@property
def plist_template(self):
return self.payload_path / Path("Config/config.plist")
# Mount Location
@property
def payload_mnt1_path(self):
return self.payload_path / Path("mnt1")
# ACPI
@property
def pci_ssdt_path(self):
return self.payload_path / Path("ACPI/SSDT-CPBG.aml")
@property
def windows_ssdt_path(self):
return self.payload_path / Path("ACPI/SSDT-PCI.aml")
# Drivers
@property
def nvme_driver_path(self):
return self.payload_path / Path("Drivers/NvmExpressDxe.efi")
@property
def exfat_legacy_driver_path(self):
return self.payload_path / Path("Drivers/ExFatDxeLegacy.efi")
@property
def xhci_driver_path(self):
return self.payload_path / Path("Drivers/XhciDxe.efi")
# Kexts
@property
def payload_kexts_path(self):
return self.payload_path / Path("Kexts")
@property
def lilu_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/Lilu-v{self.lilu_version}.zip")
@property
def whatevergreen_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/WhateverGreen-v{self.whatevergreen_version}.zip")
@property
def airportbcrmfixup_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/AirportBrcmFixup-v{self.airportbcrmfixup_version}.zip")
@property
def restrictevents_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-v{self.restrictevents_version}.zip")
@property
def restrictevents_mbp_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-MBP91-v{self.restrictevents_mbp_version}.zip")
@property
def bcm570_path(self):
return self.payload_kexts_path / Path(f"Ethernet/CatalinaBCM5701Ethernet-v{self.bcm570_version}.zip")
@property
def marvel_path(self):
return self.payload_kexts_path / Path(f"Ethernet/MarvelYukonEthernet-v{self.marvel_version}.zip")
@property
def nforce_path(self):
return self.payload_kexts_path / Path(f"Ethernet/nForceEthernet-v{self.nforce_version}.zip")
@property
def mce_path(self):
return self.payload_kexts_path / Path(f"Misc/AppleMCEReporterDisabler-v{self.mce_version}.zip")
@property
def mousse_path(self):
return self.payload_kexts_path / Path(f"SSE/AAAMouSSE-v{self.mousse_version}.zip")
@property
def telemetrap_path(self):
return self.payload_kexts_path / Path(f"SSE/telemetrap-v{self.telemetrap_version}.zip")
@property
def corecaptureelcap_path(self):
return self.payload_kexts_path / Path(f"Wifi/corecaptureElCap-v{self.corecaptureelcap_version}.zip")
@property
def io80211elcap_path(self):
return self.payload_kexts_path / Path(f"Wifi/IO80211ElCap-v{self.io80211elcap_version}.zip")
@property
def io80211high_sierra_path(self):
return self.payload_kexts_path / Path(f"Wifi/IO80211HighSierra-v{self.io80211high_sierra_version}.zip")
@property
def io80211mojave_path(self):
return self.payload_kexts_path / Path(f"Wifi/IO80211Mojave-v{self.io80211mojave_version}.zip")
@property
def applealc_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/AppleALC-v{self.applealc_version}.zip")
@property
def piixata_path(self):
return self.payload_kexts_path / Path(f"Misc/AppleIntelPIIXATA-v{self.piixata_version}.zip")
@property
def backlight_path(self):
return self.payload_kexts_path / Path(f"Misc/AppleBacklightFixup-v{self.backlight_version}.zip")
@property
def backlight_injector_path(self):
return self.payload_kexts_path / Path(f"Misc/BacklightInjector-v{self.backlight_injector_version}.zip")
@property
def cpufriend_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/CPUFriend-v{self.cpufriend_version}.zip")
@property
def nightshift_path(self):
return self.payload_kexts_path / Path(f"Misc/NightShiftEnabler-v{self.nightshift_version}.zip")
@property
def smcspoof_path(self):
return self.payload_kexts_path / Path(f"Misc/SMC-Spoof-v{self.smcspoof_version}.zip")
@property
def nvmefix_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/NVMeFix-v{self.nvmefix_version}.zip")
@property
def sidecarfixup_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/SidecarFixup-v{self.sidecarfixup_version}.zip")
@property
def debugenhancer_path(self):
return self.payload_kexts_path / Path(f"Acidanthera/DebugEnhancer-v{self.debugenhancer_version}.zip")
@property
def innie_path(self):
return self.payload_kexts_path / Path(f"Misc/Innie-v{self.innie_version}.zip")
@property
def plist_folder_path(self):
return self.payload_kexts_path / Path("Plists")
@property
def platform_plugin_plist_path(self):
return self.plist_folder_path / Path("PlatformPlugin")
@property
def fw_family_path(self):
return self.payload_kexts_path / Path(f"FireWire/IOFireWireFamily-v{self.fw_kext}.zip")
@property
def fw_sbp2_path(self):
return self.payload_kexts_path / Path(f"FireWire/IOFireWireSBP2-v{self.fw_kext}.zip")
@property
def fw_bus_path(self):
return self.payload_kexts_path / Path(f"FireWire/IOFireWireSerialBusProtocolTransport-v{self.fw_kext}.zip")
# Build Location
@property
def build_path(self):
return self.current_path / Path("Build-Folder/")
@property
def opencore_release_folder(self):
return self.build_path / Path(f"OpenCore-{self.opencore_build}")
@property
def opencore_zip_copied(self):
return self.build_path / Path(f"OpenCore-{self.opencore_build}.zip")
@property
def oc_folder(self):
return self.opencore_release_folder / Path("EFI/OC/")
@property
def plist_path(self):
return self.oc_folder / Path("config.plist")
@property
def acpi_path(self):
return self.oc_folder / Path("ACPI")
@property
def drivers_path(self):
return self.oc_folder / Path("Drivers")
@property
def kexts_path(self):
return self.oc_folder / Path("Kexts")
@property
def resources_path(self):
return self.oc_folder / Path("Resources")
@property
def map_kext_folder(self):
return self.kexts_path / Path("USB-Map.kext")
@property
def map_contents_folder(self):
return self.map_kext_folder / Path("Contents")
@property
def pp_kext_folder(self):
return self.kexts_path / Path("CPUFriendDataProvider.kext")
@property
def pp_contents_folder(self):
return self.pp_kext_folder / Path("Contents")
@property
def agdp_kext_folder(self):
return self.kexts_path / Path("AGDP-Override.kext")
@property
def agdp_contents_folder(self):
return self.agdp_kext_folder / Path("Contents")
@property
def agpm_kext_folder(self):
return self.kexts_path / Path("AGPM-Override.kext")
@property
def agpm_contents_folder(self):
return self.agpm_kext_folder / Path("Contents")
@property
def amc_kext_folder(self):
return self.kexts_path / Path("AMC-Override.kext")
@property
def amc_contents_folder(self):
return self.amc_kext_folder / Path("Contents")
# Tools
@property
def macserial_path(self):
return self.payload_path / Path("Tools/macserial")
@property
def gfxutil_path(self):
return self.payload_path / Path("Tools/gfxutil")
@property
def vault_path(self):
return self.payload_path / Path("Tools/CreateVault/sign.command")
# Icons
@property
def app_icon_path(self):
return self.current_path / Path("OC-Patcher.icns")
@property
def icon_path_external(self):
return self.payload_path / Path("Icon/External/.VolumeIcon.icns")
@property
def icon_path_internal(self):
return self.payload_path / Path("Icon/Internal/.VolumeIcon.icns")
@property
def icon_path_sd(self):
return self.payload_path / Path("Icon/SD-Card/.VolumeIcon.icns")
@property
def icon_path_ssd(self):
return self.payload_path / Path("Icon/SSD/.VolumeIcon.icns")
@property
def gui_path(self):
return self.payload_path / Path("Icon/Resources.zip")
# Apple Payloads Paths
@property
def payload_apple_root_path_zip(self):
return self.payload_path / Path("Apple.zip")
@property
def payload_apple_root_path(self):
return self.payload_path / Path("Apple")
@property
def payload_apple_kexts_path(self):
return self.payload_apple_root_path / Path("Extensions")
@property
def payload_apple_frameworks_path(self):
return self.payload_apple_root_path / Path("Frameworks")
@property
def payload_apple_frameworks_path_accel(self):
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration")
@property
def payload_apple_frameworks_path_accel_ts2(self):
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
@property
def payload_apple_frameworks_path_accel_ivy(self):
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-Ivy-Bridge")
@property
def payload_apple_lauchd_path(self):
return self.payload_apple_root_path / Path("LaunchDaemons")
@property
def payload_apple_lauchd_path_accel(self):
return self.payload_apple_lauchd_path / Path("Graphics-Acceleration")
@property
def payload_apple_private_frameworks_path(self):
return self.payload_apple_root_path / Path("PrivateFrameworks")
@property
def payload_apple_private_frameworks_path_accel(self):
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration")
@property
def payload_apple_private_frameworks_path_accel_ts2(self):
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
@property
def payload_apple_private_frameworks_path_brightness(self):
return self.payload_apple_private_frameworks_path / Path("Brightness-Control")
# Apple Extensions
@property
def audio_path(self):
return self.payload_apple_kexts_path / Path("Audio")
# GPU Kexts and Bundles
@property
def legacy_graphics(self):
return self.payload_apple_kexts_path / Path("Graphics-Acceleration")
@property
def legacy_nvidia_path(self):
return self.legacy_graphics / Path("Nvidia-Tesla-Fermi")
@property
def legacy_nvidia_kepler_path(self):
return self.legacy_graphics / Path("Nvidia-Kepler")
@property
def legacy_amd_path(self):
return self.legacy_graphics / Path("AMD-TeraScale")
@property
def legacy_amd_path_ts2(self):
return self.legacy_graphics / Path("AMD-TeraScale-2")
@property
def legacy_intel_gen1_path(self):
return self.legacy_graphics / Path("Intel-Gen5-Ironlake")
@property
def legacy_intel_gen2_path(self):
return self.legacy_graphics / Path("Intel-Gen6-SandyBridge")
@property
def legacy_intel_gen3_path(self):
return self.legacy_graphics / Path("Intel-Gen7-IvyBridge")
@property
def legacy_general_path(self):
return self.legacy_graphics / Path("General-Patches")
@property
def legacy_brightness(self):
return self.payload_apple_kexts_path / Path("Brightness-Control")
csr_values = {
"CSR_ALLOW_UNTRUSTED_KEXTS": False, # 0x1 - Allows Unsigned Kexts - Introduced in El Capitan # noqa: E241
"CSR_ALLOW_UNRESTRICTED_FS": False, # 0x2 - File System Access - Introduced in El Capitan # noqa: E241
"CSR_ALLOW_TASK_FOR_PID": False, # 0x4 - Unrestricted Debugging - Introduced in El Capitan # noqa: E241
"CSR_ALLOW_KERNEL_DEBUGGER": False, # 0x8 - Allow Kernel Debugger - Introduced in El Capitan # noqa: E241
"CSR_ALLOW_APPLE_INTERNAL": False, # 0x10 - Set AppleInternal Features - Introduced in El Capitan # noqa: E241
"CSR_ALLOW_UNRESTRICTED_DTRACE": False, # 0x20 - Unrestricted DTrace usage - Introduced in El Capitan # noqa: E241
"CSR_ALLOW_UNRESTRICTED_NVRAM": False, # 0x40 - Unrestricted NVRAM write - Introduced in El Capitan # noqa: E241
"CSR_ALLOW_DEVICE_CONFIGURATION": False, # 0x80 - Allow Device Configuration(?) - Introduced in El Capitan # noqa: E241
"CSR_ALLOW_ANY_RECOVERY_OS": False, # 0x100 - Disable BaseSystem Verification - Introduced in Sierra # noqa: E241
"CSR_ALLOW_UNAPPROVED_KEXTS": False, # 0x200 - Allow Unapproved Kexts - Introduced in High Sierra # noqa: E241
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE": False, # 0x400 - Override Executable Policy - Introduced in Mojave # noqa: E241
"CSR_ALLOW_UNAUTHENTICATED_ROOT": False, # 0x800 - Allow Root Volume Mounting - Introduced in Big Sur # noqa: E241
}
root_patch_sip_mojave = [
# Variables required to root patch in Mojave and Catalina
"CSR_ALLOW_UNTRUSTED_KEXTS",
"CSR_ALLOW_UNRESTRICTED_FS",
"CSR_ALLOW_UNAPPROVED_KEXTS",
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE",
]
root_patch_sip_big_sur = [
# Variables required to root patch in Big Sur and Monterey
"CSR_ALLOW_UNTRUSTED_KEXTS",
"CSR_ALLOW_UNRESTRICTED_FS",
"CSR_ALLOW_UNAPPROVED_KEXTS",
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE",
"CSR_ALLOW_UNAUTHENTICATED_ROOT",
]
sbm_values = [
"j137",
"j680",
"j132",
"j174",
"j140k",
"j780",
"j213",
"j140a",
"j152f",
"j160",
"j230k",
"j214k",
"j223",
"j215",
"j185",
"j185f",
]
board_id = {
"MacBook1,1": "Mac-F4208CC8",
"MacBook2,1": "Mac-F4208CA9",
"MacBook3,1": "Mac-F22788C8",
"MacBook4,1": "Mac-F22788A9",
"MacBook5,1": "Mac-F42D89C8",
"MacBook5,2": "Mac-F22788AA",
"MacBook6,1": "Mac-F22C8AC8",
"MacBook7,1": "Mac-F22C89C8",
"MacBook8,1": "Mac-BE0E8AC46FE800CC",
"MacBook9,1": "Mac-9AE82516C7C6B903",
"MacBook10,1": "Mac-EE2EBD4B90B839A8",
"MacBookAir1,1": "Mac-F42C8CC8",
"MacBookAir2,1": "Mac-F42D88C8",
"MacBookAir3,1": "Mac-942452F5819B1C1B",
"MacBookAir3,2": "Mac-942C5DF58193131B",
"MacBookAir4,1": "Mac-C08A6BB70A942AC2",
"MacBookAir4,2": "Mac-742912EFDBEE19B3",
"MacBookAir5,1": "Mac-66F35F19FE2A0D05",
"MacBookAir5,2": "Mac-2E6FAB96566FE58C",
"MacBookAir6,1": "Mac-35C1E88140C3E6CF",
"MacBookAir6,2": "Mac-7DF21CB3ED6977E5",
"MacBookAir7,1": "Mac-9F18E312C5C2BF0B",
"MacBookAir7,2": "Mac-937CB26E2E02BB01",
"MacBookAir8,1": "Mac-827FAC58A8FDFA22",
"MacBookAir8,2": "Mac-226CB3C6A851A671",
"MacBookAir9,1": "Mac-0CFF9C7C2B63DF8D",
"MacBookPro1,1": "Mac-F425BEC8",
"MacBookPro1,2": "Mac-F42DBEC8",
"MacBookPro2,1": "Mac-F42189C8",
"MacBookPro2,2": "Mac-F42187C8",
"MacBookPro3,1": "Mac-F4238BC8",
"MacBookPro4,1": "Mac-F42C89C8",
"MacBookPro5,1": "Mac-F42D86C8",
"MacBookPro5,2": "Mac-F2268EC8",
"MacBookPro5,3": "Mac-F22587C8",
"MacBookPro5,4": "Mac-F22587A1",
"MacBookPro5,5": "Mac-F2268AC8",
"MacBookPro6,1": "Mac-F22589C8",
"MacBookPro6,2": "Mac-F22586C8",
"MacBookPro7,1": "Mac-F222BEC8",
"MacBookPro8,1": "Mac-94245B3640C91C81",
"MacBookPro8,2": "Mac-94245A3940C91C80",
"MacBookPro8,3": "Mac-942459F5819B171B",
"MacBookPro9,1": "Mac-4B7AC7E43945597E",
"MacBookPro9,2": "Mac-6F01561E16C75D06",
"MacBookPro10,1": "Mac-C3EC7CD22292981F",
"MacBookPro10,2": "Mac-AFD8A9D944EA4843",
"MacBookPro11,1": "Mac-189A3D4F975D5FFC",
"MacBookPro11,2": "Mac-3CBD00234E554E41",
"MacBookPro11,3": "Mac-2BD1B31983FE1663",
"MacBookPro11,4": "Mac-06F11FD93F0323C5",
"MacBookPro11,5": "Mac-06F11F11946D27C5",
"MacBookPro12,1": "Mac-E43C1C25D4880AD6",
"MacBookPro13,1": "Mac-473D31EABEB93F9B",
"MacBookPro13,2": "Mac-66E35819EE2D0D05",
"MacBookPro13,3": "Mac-A5C67F76ED83108C",
"MacBookPro14,1": "Mac-B4831CEBD52A0C4C",
"MacBookPro14,2": "Mac-CAD6701F7CEA0921",
"MacBookPro14,3": "Mac-551B86E5744E2388",
"MacBookPro15,1": "Mac-937A206F2EE63C01",
"MacBookPro15,2": "Mac-827FB448E656EC26",
"MacBookPro15,3": "Mac-1E7E29AD0135F9BC",
"MacBookPro15,4": "Mac-53FDB3D8DB8CA971",
"MacBookPro16,1": "Mac-E1008331FDC96864",
"MacBookPro16,2": "Mac-5F9802EFE386AA28",
"MacBookPro16,3": "Mac-E7203C0F68AA0004",
"MacBookPro16,4": "Mac-A61BADE1FDAD7B05",
"Macmini1,1": "Mac-F4208EC8",
"Macmini2,1": "Mac-F4208EAA",
"Macmini3,1": "Mac-F22C86C8",
"Macmini4,1": "Mac-F2208EC8",
"Macmini5,1": "Mac-8ED6AF5B48C039E1",
"Macmini5,2": "Mac-4BC72D62AD45599E",
"Macmini5,3": "Mac-7BA5B2794B2CDB12",
"Macmini6,1": "Mac-031AEE4D24BFF0B1",
"Macmini6,2": "Mac-F65AE981FFA204ED",
"Macmini7,1": "Mac-35C5E08120C7EEAF",
"Macmini8,1": "Mac-7BA5B2DFE22DDD8C",
"iMac4,1": "Mac-F42786C8",
"iMac4,2": "Mac-F4218EC8",
"iMac5,1": "Mac-F4228EC8",
"iMac5,2": "Mac-F4218EC8",
"iMac6,1": "Mac-F4218FC8",
"iMac7,1": "Mac-F42386C8",
"iMac8,1": "Mac-F227BEC8",
"iMac9,1": "Mac-F2218FA9",
"iMac10,1": "Mac-F221DCC8",
# "iMac10,1": "Mac-F2268CC8",
"iMac11,1": "Mac-F2268DAE",
"iMac11,2": "Mac-F2238AC8",
"iMac11,3": "Mac-F2238BAE",
"iMac12,1": "Mac-942B5BF58194151B",
"iMac12,2": "Mac-942B59F58194171B",
"iMac13,1": "Mac-00BE6ED71E35EB86",
"iMac13,2": "Mac-FC02E91DDD3FA6A4",
"iMac13,3": "Mac-7DF2A3B5E5D671ED",
"iMac14,1": "Mac-031B6874CF7F642A",
"iMac14,2": "Mac-27ADBB7B4CEE8E61",
"iMac14,3": "Mac-77EB7D7DAF985301",
"iMac14,4": "Mac-81E3E92DD6088272",
"iMac15,1": "Mac-42FD25EABCABB274",
"iMac16,1": "Mac-A369DDC4E67F1C45",
"iMac16,2": "Mac-FFE5EF870D7BA81A",
"iMac17,1": "Mac-DB15BD556843C820",
"iMac18,1": "Mac-4B682C642B45593E",
"iMac18,2": "Mac-77F17D7DA9285301",
"iMac18,3": "Mac-BE088AF8C5EB4FA2",
"iMac19,1": "Mac-AA95B1DDAB278B95",
"iMac19,2": "Mac-63001698E7A34814",
"iMac20,1": "Mac-CFF7D910A743CAAF",
"iMac20,2": "Mac-AF89B6D9451A490B",
"iMacPro1,1": "Mac-7BA5B2D9E42DDD94",
"MacPro1,1": "Mac-F4208DC8",
"MacPro2,1": "Mac-F4208DA9",
"MacPro3,1": "Mac-F42C88C8",
"MacPro4,1": "Mac-F221BEC8",
"MacPro5,1": "Mac-F221BEC8",
"MacPro6,1": "Mac-F60DEB81FF30ACF6",
"MacPro7,1": "Mac-27AD2F918AE68F61",
"Xserve1,1": "Mac-F4208AC8",
"Xserve2,1": "Mac-F42289C8",
"Xserve3,1": "Mac-F223BEC8",
}

File diff suppressed because it is too large Load Diff

794
Resources/PCIIDArray.py Normal file
View File

@@ -0,0 +1,794 @@
# Array of Device IDs for different devices
class nvidia_ids:
# Courteous of envytools as well as Macrumors:
# https://envytools.readthedocs.io/en/latest/hw/pciid.html
# https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/
tesla_ids = [
# G80
0x0190, # G80 [GeForce 8800 GTS / 8800 GTX]
0x0191, # G80 [GeForce 8800 GTX]
0x0193, # G80 [GeForce 8800 GTS]
0x0194, # G80 [GeForce 8800 Ultra]
0x019E, # G80GL [Quadro FX 4600]
0x019D, # G80GL [Quadro FX 5600]
# G84
0x0400, # G84 [8600 GTS]
0x0401, # G84 [8600 GT]
0x0402, # G84 [8600 GT]
0x0403, # G84 [8600 GS]
0x0404, # G84 [8400 GS]
0x0405, # G84 [9500M GS]
0x0406, # G84 [8300 GS]
0x0407, # G84 [8600M GT]
0x0408, # G84 [9650M GS]
0x0409, # G84 [8700M GT]
0x040A, # G84 [FX 370]
0x040B, # G84 [NVS 320M]
0x040C, # G84 [FX 570M]
0x040D, # G84 [FX 1600M]
0x040E, # G84 [FX 570]
0x040F, # G84 [FX 1700]
# G86
0x0420, # G86 [8400 SE]
0x0421, # G86 [8500 GT]
0x0422, # G86 [8400 GS]
0x0423, # G86 [8300 GS]
0x0424, # G86 [8400 GS]
0x0425, # G86 [8600M GS]
0x0426, # G86 [8400M GT]
0x0427, # G86 [8400M GS]
0x0428, # G86 [8400M G]
0x0429, # G86 [NVS 140M]
0x042A, # G86 [NVS 130M]
0x042B, # G86 [NVS 135M]
0x042C, # G86 [9400 GT]
0x042D, # G86 [FX 360M]
0x042E, # G86 [9300M G]
0x042F, # G86 [NVS 290]
# G92
0x0410, # G92 [GT 330]
0x0600, # G92 [8800 GTS 512]
0x0601, # G92 [9800 GT]
0x0602, # G92 [8800 GT]
0x0603, # G92 [GT 230]
0x0604, # G92 [9800 GX2]
0x0605, # G92 [9800 GT]
0x0606, # G92 [8800 GS]
0x0607, # G92 [GTS 240]
0x0608, # G92 [9800M GTX]
0x0609, # G92 [8800M GTS]
0x060A, # G92 [GTX 280M]
0x060B, # G92 [9800M GT]
0x060C, # G92 [8800M GTX]
0x060F, # G92 [GTX 285M]
0x0610, # G92 [9600 GSO]
0x0611, # G92 [8800 GT]
0x0612, # G92 [9800 GTX/9800 GTX+]
0x0613, # G92 [9800 GTX+]
0x0614, # G92 [9800 GT]
0x0615, # G92 [GTS 250]
0x0617, # G92 [9800M GTX]
0x0618, # G92 [GTX 260M]
0x0619, # G92 [FX 4700 X2]
0x061A, # G92 [FX 3700]
0x061B, # G92 [VX 200]
0x061C, # G92 [FX 3600M]
0x061D, # G92 [FX 2800M]
0x061E, # G92 [FX 3700M]
0x061F, # G92 [FX 3800M]
# G94
0x0621, # G94 [GT 230]
0x0622, # G94 [9600 GT]
0x0623, # G94 [9600 GS]
0x0624, # G94 [9600 GT Green Edition]
0x0625, # G94 [9600 GSO 512]
0x0626, # G94 [GT 130]
0x0627, # G94 [GT 140]
0x0628, # G94 [9800M GTS]
0x062A, # G94 [9700M GTS]
0x062B, # G94 [9800M GS]
0x062C, # G94 [9800M GTS ]
0x062D, # G94 [9600 GT]
0x062E, # G94 [9600 GT]
0x062F, # G94 [9800 S]
0x0631, # G94 [GTS 160M]
0x0635, # G94 [9600 GSO]
0x0637, # G94 [9600 GT]
0x0638, # G94 [FX 1800]
0x063A, # G94 [FX 2700M]
# G96
0x0640, # G96 [9500 GT]
0x0641, # G96 [9400 GT]
0x0643, # G96 [9500 GT]
0x0644, # G96 [9500 GS]
0x0645, # G96 [9500 GS]
0x0646, # G96 [GT 120]
0x0647, # G96 [9600M GT]
0x0648, # G96 [9600M GS]
0x0649, # G96 [9600M GT]
0x064A, # G96 [9700M GT]
0x064B, # G96 [9500M G]
0x064C, # G96 [9650M GT]
0x0651, # G96 [G 110M]
0x0652, # G96 [GT 130M]
0x0653, # G96 [GT 120M]
0x0654, # G96 [GT 220M]
0x0655, # G96 [GT 120]
0x0656, # G96 [GT 120 ]
0x0658, # G96 [FX 380]
0x0659, # G96 [FX 580]
0x065A, # G96 [FX 1700M]
0x065B, # G96 [9400 GT]
0x065C, # G96 [FX 770M]
0x065F, # G96 [G210]
# G98
0x06E0, # G98 [9300 GE]
0x06E1, # G98 [9300 GS]
0x06E2, # G98 [8400]
0x06E3, # G98 [8400 SE]
0x06E4, # G98 [8400 GS]
0x06E5, # G98M [9300M GS]
0x06E6, # G98 [G100]
0x06E7, # G98 [9300 SE]
0x06E8, # G98 [9200M GS]
0x06E9, # G98 [9300M GS]
0x06EA, # G98 [NVS 150M]
0x06EB, # G98 [NVS 160M]
0x06EC, # G98 [G 105M]
0x06ED, # G98 [9600 GT / 9800 GT]
0x06EF, # G98 [G 103M]
0x06F1, # G98 [G105M]
0x06F8, # G98 [NVS 420]
0x06F9, # G98 [FX 370 LP]
0x06FA, # G98 [NVS 450]
0x06FB, # G98 [FX 370M]
0x06FD, # G98 [NVS 295]
0x06FF, # G98 [HICx16]
# GT200
0x05E0, # GT200 [GTX 295]
0x05E1, # GT200 [GTX 280]
0x05E2, # GT200 [GTX 260]
0x05E3, # GT200 [GTX 285]
0x05E6, # GT200 [GTX 275]
0x05E7, # GT200 [C1060]
0x05E9, # GT200 [CX]
0x05EA, # GT200 [GTX 260]
0x05EB, # GT200 [GTX 295]
0x05ED, # GT200 [FX 5800]
0x05EE, # GT200 [FX 4800]
0x05EF, # GT200 [FX 3800]
0x05FD, # GT200GL [Quadro FX 5800]
0x05FE, # GT200GL [Quadro FX 4800]
0x05FF, # GT200GL [Quadro FX 3800]
# MCP77 GPU
0x0840, # MCP77 GPU [8200M]
0x0844, # MCP77 GPU [9100M G]
0x0845, # MCP77 GPU [8200M G]
0x0846, # MCP77 GPU [9200]
0x0847, # MCP77 GPU [9100]
0x0848, # MCP77 GPU [8300]
0x0849, # MCP77 GPU [8200]
0x084A, # MCP77 GPU [730A]
0x084B, # MCP77 GPU [9200]
0x084C, # MCP77 GPU [980A/780A SLI]
0x084D, # MCP77 GPU [750A SLI]
0x084F, # MCP77 GPU [8100 / 720A]
# MCP79 GPU
0x0860, # MCP79 GPU [9400]
0x0861, # MCP79 GPU [9400]
0x0862, # MCP79 GPU [9400M G]
0x0863, # MCP79 GPU [9400M]
0x0864, # MCP79 GPU [9300]
0x0865, # MCP79 GPU [ION]
0x0866, # MCP79 GPU [9400M G]
0x0867, # MCP79 GPU [9400]
0x0868, # MCP79 GPU [760i SLI]
0x0869, # MCP79 GPU [9400]
0x086A, # MCP79 GPU [9400]
0x086C, # MCP79 GPU [9300 / 730i]
0x086D, # MCP79 GPU [9200]
0x086E, # MCP79 GPU [9100M G]
0x086F, # MCP79 GPU [8200M G]
0x0870, # MCP79 GPU [9400M]
0x0871, # MCP79 GPU [9200]
0x0872, # MCP79 GPU [G102M]
0x0873, # MCP79 GPU [G102M]
0x0874, # MCP79 GPU [ION]
0x0876, # MCP79 GPU [ION]
0x087A, # MCP79 GPU [9400]
0x087D, # MCP79 GPU [ION]
0x087E, # MCP79 GPU [ION LE]
0x087F, # MCP79 GPU [ION LE]
# GT215
0x0CA0, # GT215 [GT 330]
0x0CA2, # GT215 [GT 320]
0x0CA3, # GT215 [GT 240]
0x0CA4, # GT215 [GT 340]
0x0CA5, # GT215 [GT 220]
0x0CA7, # GT215 [GT 330]
0x0CA9, # GT215 [GTS 250M]
0x0CAC, # GT215 [GT 220]
0x0CAF, # GT215 [GT 335M]
0x0CB0, # GT215 [GTS 350M]
0x0CB1, # GT215 [GTS 360M]
0x0CBC, # GT215 [FX 1800M]
# GT216
0x0A20, # GT216 [GT 220]
0x0A22, # GT216 [315]
0x0A23, # GT216 [210]
0x0A26, # GT216 [405]
0x0A27, # GT216 [405]
0x0A28, # GT216 [GT 230M]
0x0A29, # GT216 [GT 330M]
0x0A2A, # GT216 [GT 230M]
0x0A2B, # GT216 [GT 330M]
0x0A2C, # GT216 [NVS 5100M]
0x0A2D, # GT216 [GT 320M]
0x0A32, # GT216 [GT 415]
0x0A34, # GT216 [GT 240M]
0x0A35, # GT216 [GT 325M]
0x0A38, # GT216 [400]
0x0A3C, # GT216 [FX 880M]
# GT218
0x0A60, # GT218 [G210]
0x0A62, # GT218 [205]
0x0A63, # GT218 [310]
0x0A64, # GT218 [ION]
0x0A65, # GT218 [210]
0x0A66, # GT218 [310]
0x0A67, # GT218 [315]
0x0A68, # GT218 [G105M]
0x0A69, # GT218 [G105M]
0x0A6A, # GT218 [NVS 2100M]
0x0A6C, # GT218 [NVS 3100M]
0x0A6E, # GT218 [305M]
0x0A6F, # GT218 [ION]
0x0A70, # GT218 [310M]
0x0A71, # GT218 [305M]
0x0A72, # GT218 [310M]
0x0A73, # GT218 [305M]
0x0A74, # GT218 [G210M]
0x0A75, # GT218 [310M]
0x0A76, # GT218 [ION]
0x0A78, # GT218 [FX 380 LP]
0x0A7A, # GT218 [315M]
0x0A7C, # GT218 [FX 380M]
0x10C0, # GT218 [9300 GS]
0x10C3, # GT218 [8400GS]
0x10C5, # GT218 [405]
0x10D8, # GT218 [NVS 300]
# MCP89 GPU
0x08A0, # MCP89 GPU [320M]
0x08A2, # MCP89 GPU [320M]
0x08A3, # MCP89 GPU [320M]
0x08A4, # MCP89 GPU [320M]
]
fermi_ids = [
# GF100
0x06C0, # GF100 [GTX 480]
0x06C4, # GF100 [GTX 465]
0x06CA, # GF100 [GTX 480M]
0x06CB, # GF100 [GTX 480]
0x06CD, # GF100 [GTX 470]
0x06D1, # GF100 [C2050 / C2070]
0x06D2, # GF100 [M2070]
0x06D8, # GF100 [6000]
0x06D9, # GF100 [5000]
0x06DA, # GF100 [5000M]
0x06DC, # GF100 [6000]
0x06DD, # GF100 [4000]
0x06DE, # GF100 [T20]
0x06DF, # GF100 [M2070-Q]
# GF104
0x0E22, # GF104 [GTX 460]
0x0E23, # GF104 [GTX 460 SE]
0x0E24, # GF104 [GTX 460 OEM]
0x0E30, # GF104 [GTX 470M]
0x0E31, # GF104 [GTX 485M]
0x0E3A, # GF104 [3000M]
0x0E3B, # GF104 [4000M]
# GF114
0x1200, # GF114 [GTX 560 Ti]
0x1201, # GF114 [GTX 560]
0x1202, # GF114 [GTX 560 Ti OEM]
0x1203, # GF114 [GTX 460 SE v2]
0x1205, # GF114 [GTX 460 v2]
0x1206, # GF114 [GTX 555]
0x1207, # GF114 [GT 645 OEM]
0x1208, # GF114 [GTX 560 SE]
0x1210, # GF114 [GTX 570M]
0x1211, # GF114 [GTX 580M]
0x1212, # GF114 [GTX 675M]
0x1213, # GF114 [GTX 670M]
# GF106
0x0DC0, # GF106 [GT 440]
0x0DC4, # GF106 [GTS 450]
0x0DC5, # GF106 [GTS 450]
0x0DC6, # GF106 [GTS 450]
0x0DCD, # GF106 [GT 555M]
0x0DCE, # GF106 [GT 555M]
0x0DD1, # GF106 [GTX 460M]
0x0DD2, # GF106 [GT 445M]
0x0DD3, # GF106 [GT 435M]
0x0DD6, # GF106 [GT 550M]
0x0DD8, # GF106 [2000]
0x0DDA, # GF106 [2000M]
# GF116
0x1241, # GF116 [GT 545 OEM]
0x1243, # GF116 [GT 545]
0x1244, # GF116 [GTX 550 Ti]
0x1245, # GF116 [GTS 450 Rev. 2]
0x1246, # GF116 [GT 550M]
0x1247, # GF116 [GT 635M]
0x1248, # GF116 [GT 555M]
0x1249, # GF116 [GTS 450 Rev. 3]
0x124B, # GF116 [GT 640 OEM]
0x124D, # GF116 [GT 555M]
0x1251, # GF116 [GTX 560M]
# GF108
0x0DE0, # GF108 [GT 440]
0x0DE1, # GF108 [GT 430]
0x0DE2, # GF108 [GT 420]
0x0DE3, # GF108 [GT 635M]
0x0DE4, # GF108 [GT 520]
0x0DE5, # GF108 [GT 530]
0x0DE8, # GF108 [GT 620M]
0x0DE9, # GF108 [GT 630M]
0x0DEA, # GF108 [610M]
0x0DEB, # GF108 [GT 555M]
0x0DEC, # GF108 [GT 525M]
0x0DED, # GF108 [GT 520M]
0x0DEE, # GF108 [GT 415M]
0x0DEF, # GF108 [NVS 5400M]
0x0DF0, # GF108 [GT 425M]
0x0DF1, # GF108 [GT 420M]
0x0DF2, # GF108 [GT 435M]
0x0DF3, # GF108 [GT 420M]
0x0DF4, # GF108 [GT 540M]
0x0DF5, # GF108 [GT 525M]
0x0DF6, # GF108 [GT 550M]
0x0DF7, # GF108 [GT 520M]
0x0DF8, # GF108 [600]
0x0DF9, # GF108 [500M]
0x0DFA, # GF108 [1000M]
0x0DFC, # GF108 [NVS 5200M]
0x0F00, # GF108 [GT 630]
0x0F01, # GF108 [GT 620]
0x0F02, # GF108 [GT 730]
# GF110
0x1080, # GF110 [GTX 580]
0x1081, # GF110 [GTX 570]
0x1082, # GF110 [GTX 560 Ti]
0x1084, # GF110 [GTX 560]
0x1086, # GF110 [GTX 570]
0x1087, # GF110 [GTX 560 Ti]
0x1088, # GF110 [GTX 590]
0x1089, # GF110 [GTX 580]
0x108B, # GF110 [GTX 580]
0x1091, # GF110 [M2090]
0x1096, # GF110GL [Tesla C2050 / C2075]
0x109A, # GF110 [5010M]
0x109B, # GF110 [7000]
# GF119
0x1040, # GF119 [GT 520]
0x1042, # GF119 [510]
0x1048, # GF119 [605]
0x1049, # GF119 [GT 620]
0x104A, # GF119 [GT 610]
0x104B, # GF119 [GT 625 OEM]
0x104C, # GF119 [GT 705]
0x1050, # GF119 [GT 520M]
0x1051, # GF119 [GT 520MX]
0x1052, # GF119 [GT 520M]
0x1054, # GF119 [410M]
0x1055, # GF119 [410M]
0x1056, # GF119 [NVS 4200M]
0x1057, # GF119 [NVS 4200M]
0x1058, # GF119 [610M]
0x1059, # GF119 [610M]
0x105A, # GF119 [610M]
0x105B, # GF119M [705M]
0x107C, # GF119 [NVS 315]
0x107D, # GF119 [NVS 310]
# GF117
0x1140, # GF117 [GT 620M]
]
kepler_ids = [
# GK104
0x1180, # GK104 [GTX 680]
0x1183, # GK104 [GTX 660 Ti]
0x1184, # GK104 [GTX 770]
0x1185, # GK104 [GTX 660]
0x1186, # GK104 [GTX 660 Ti]
0x1187, # GK104 [GTX 760]
0x1188, # GK104 [GTX 690]
0x1189, # GK104 [GTX 670]
0x118E, # GK104 [GTX 760 OEM]
0x118F, # GK104GL [Tesla K10]
0x1198, # GTX 880M
0x1199, # GK104 [GTX 870M]
0x119A, # GTX 860M
0x119D, # GK104M [GTX 775M Mac Edition]
0x119E, # GTX 780M
0x119F, # GK104 [GTX 780M]
0x11A0, # GK104 [GTX 680M]
0x11A1, # GK104 [GTX 670MX]
0x11A2, # GK104 [GTX 675MX]
0x11A3, # GK104 [GTX 680MX]
0x11A7, # GK104 [GTX 675MX]
0x11A9, # GTX 870M
0x11B4, # GK104GL [Quadro K4200]
0x11B6, # Quadro K3100M
0x11B7, # Quadro K4100M
0x11B8, # Quadro K5100M
0x11BA, # GK104 [K5000]
0x11BC, # GK104 [K5000M]
0x11BD, # GK104 [K4000M]
0x11BE, # GK104 [K3000M]
0x11BF, # GK104 [GRID K2]
# GK106
0x11C0, # GK106 [GTX 660]
0x11C2, # GK106 [GTX 650 Ti BOOST]
0x11C6, # GK106 [GTX 650 Ti]
0x11E0, # GK106 [GTX 770M]
0x11E1, # GTX 765M
0x11E2, # GTX 765M
0x11FA, # GK106 [K4000]
0x11FC, # Quadro K2100M
# GK107
0x0FC0, # GK107 [GT 640]
0x0FC1, # GK107 [GT 640]
0x0FC2, # GK107 [GT 630]
0x0FC6, # GK107 [GTX 650]
0x0FC8, # GK107 [GT 740]
0x0FCD, # GK107M [GT 755M]
0x0FD1, # GK107 [GT 650M]
0x0FD2, # GK107 [GT 640M]
0x0FD3, # GK107 [GT 640M LE]
0x0FD4, # GK107 [GTX 660M]
0x0FD5, # GK107 [GT 650M]
0x0FD8, # GK107 [GT 640M]
0x0FD9, # GK107 [GT 645M]
0x0FDF, # GK107M [ GT 740M]
0x0FE0, # GK107 [GTX 660M]
0x0FE1, # GK107M [GT 730M]
0x0FE3, # GK107M [GT 745M]
0x0FE4, # GK107M [GT 750M]
0x0FE9, # GK107 [GT 750M Mac Edition]
0x0FEA, # GK107M [GT 755M Mac Edition]
0x0FEE, # GK107M [810M]
0x0FF2, # GK107GL [GRID K1]
0x0FF3, # GK107GL [Quadro K420]
0x0FF6, # Quadro K1100M
0x0FF9, # GK107 [K2000D]
0x0FFA, # GK107 [K600]
0x0FFB, # GK107 [K2000M]
0x0FFC, # GK107 [K1000M]
0x0FFD, # GK107 [NVS 510]
0x0FFE, # GK107 [K2000]
0x0FFF, # GK107 [410]
# GK110
0x1001, # GK110B [GTX TITAN Z]
0x1003, # GK110 [GTX Titan LE]
0x1004, # GK110 [GTX 780]
0x1005, # GK110 [GTX Titan]
0x1007, # GK110 [GTX 780 Rev. 2]
0x100A, # GK110B [GTX 780 Ti]
0x100C, # GK110B [GTX TITAN Black]
0x101F, # GK110 [TEslA K20]
0x1020, # GK110 [TEslA K2]
0x1021, # GK110 [TEslA K2m]
0x1022, # GK110 [TEslA K20C]
0x1023, # GK110BGL [Tesla K40m]
0x1024, # GK180GL [Tesla K40c]
0x1026, # GK110 [TEslA K20s]
0x1028, # GK110 [TEslA K20m]
0x102D, # GK210GL [Tesla K80]
0x103C, # GK110GL [Quadro K5200]
# GK208
0x1280, # GK208 [GT 635]
0x1281, # GK208 [GT 710]
0x1282, # GK208 [GT 640 REv. 2]
0x1284, # GK208 [GT 630 REv. 2]
0x1286, # GK208 [GT 720]
0x1287, # GK208B [GT 730]
0x1288, # GK208B [GT 720]
0x1289, # GK208 [GT 710]
0x128B, # GK208B [GT 710]
0x1290, # GK208 [GT 730M]
0x1291, # GK208 [GT 735M]
0x1292, # GK208 [GT 740M]
0x1293, # GK208 [GT 730M]
0x1294, # GK208 [GT 740M]
0x1295, # GK208 [710M]
0x1296, # GK208M [825M]
0x1298, # GK208M [GT 720M]
0x1299, # GK208BM [920M]
0x129A, # GK208BM [910M]
0x12B9, # GK208 [K610M]
0x12BA, # GK208 [K510M]
]
class amd_ids:
legacy_gcn_ids = [
# AMDRadeonX4000
# AMDBonaireGraphicsAccelerator
0x6640,
0x6641,
0x6646,
0x6647,
0x6650,
0x6651,
0x665C,
0x665D,
# AMDFijiGraphicsAccelerator
0x7300,
0x730F,
# AMDHawaiiGraphicsAccelerator
0x67B0,
# AMDPitcairnGraphicsAccelerator
0x6800,
0x6801,
0x6806,
0x6808,
0x6810,
0x6818,
0x6819,
# AMDTahitiGraphicsAccelerator
0x6790,
0x6798,
0x679A,
0x679E,
0x6780,
# AMDTongaGraphicsAccelerator
0x6920,
0x6921,
0x6930,
0x6938,
0x6939,
# AMDVerdeGraphicsAccelerator
0x6820,
0x6821,
0x6823,
0x6825,
0x6827,
0x682B,
0x682D,
0x682F,
0x6835,
0x6839,
0x683B,
0x683D,
0x683F,
]
polaris_ids = [
# AMDRadeonX4000
# AMDBaffinGraphicsAccelerator
0x67E0,
0x67E3,
0x67E8,
0x67EB,
0x67EF,
0x67FF,
0x67E1,
0x67E7,
0x67E9,
# AMDEllesmereGraphicsAccelerator
0x67C0,
0x67C1,
0x67C2,
0x67C4,
0x67C7,
0x67DF,
0x67D0,
0x67C8,
0x67C9,
0x67CA,
0x67CC,
0x67CF,
]
vega_ids = [
# AMDRadeonX5000
# AMDVega10GraphicsAccelerator
0x6860,
0x6861,
0x6862,
0x6863,
0x6864,
0x6867,
0x6868,
0x6869,
0x686A,
0x686B,
0x686C,
0x686D,
0x686E,
0x686F,
0x687F,
# AMDVega12GraphicsAccelerator
0x69A0,
0x69A1,
0x69A2,
0x69A3,
0x69AF,
# AMDVega20GraphicsAccelerator
0x66A0,
0x66A1,
0x66A2,
0x66A3,
0x66A7,
0x66AF,
]
navi_ids = [
# AMDRadeonX6000
# AMDNavi10GraphicsAccelerator
0x7310,
0x7312,
0x7318,
0x7319,
0x731A,
0x731B,
0x731F,
# AMDNavi12GraphicsAccelerator
0x7360,
# AMDNavi14GraphicsAccelerator
0x7340,
0x7341,
0x7343,
0x7347,
0x734F,
# AMDNavi21GraphicsAccelerator
0x73A2,
0x73AB,
0x73BF,
]
terascale_1_ids = [
0x9400,
0x9401,
0x9402,
0x9403,
0x9581,
0x9583,
0x9588,
0x94C8,
0x94C9,
0x9500,
0x9501,
0x9505,
0x9507,
0x9504,
0x9506,
0x9598,
0x9488,
0x9599,
0x9591,
0x9593,
0x9440,
0x9442,
0x944A,
0x945A,
0x9490,
0x949E,
0x9480,
0x9540,
0x9541,
0x954E,
0x954F,
0x9552,
0x9553,
0x94A0,
]
terascale_2_ids = [
0x6738,
0x6739,
0x6720,
0x6722,
0x6768,
0x6770,
0x6779,
0x6760,
0x6761,
0x68E0,
0x6898,
0x6899,
0x68B8,
0x68B0,
0x68B1,
0x68A0,
0x68A1,
0x6840,
0x6841,
0x68D8,
0x68C0,
0x68C1,
0x68D9,
0x6750,
0x6758,
0x6759,
0x6740,
0x6741,
0x6745,
]
class intel_ids:
iron_ids = [
# AppleIntelHDGraphics IDs
0x0044,
0x0046,
]
sandy_ids = [
# AppleIntelHD3000Graphics IDs
# AppleIntelSNBGraphicsFB IDs
0x0106,
0x0601,
0x0116,
0x0102,
0x0126,
]
ivy_ids = [
# AppleIntelHD4000Graphics IDs
# AppleIntelFramebufferCapri IDs
0x0152,
0x0156,
0x0162,
0x0166,
]
class broadcom_ids:
AirPortBrcmNIC = [
# AirPortBrcmNIC IDs
0x43BA, # BCM43602
0x43A3, # BCM4350
0x43A0, # BCM4360
]
AirPortBrcm4360 = [
# AirPortBrcm4360 IDs (removed duplicates for 4360 class cards)
0x4331, # BCM94331
0x4353, # BCM943224
]
AirPortBrcm4331 = [
# AirPortBrcm4331 IDs (removed duplicates for 4331 class cards)
0x432B, # BCM94322
]
AppleAirPortBrcm43224 = [
# AppleAirPortBrcm43224 IDs
0x4311, # BCM4311 - never used by Apple
0x4312, # BCM4311 - never used by Apple
0x4313, # BCM4311 - never used by Apple
0x4318, # BCM4318 - never used by Apple
0x4319, # BCM4318 - never used by Apple
0x431A, # Unknown - never used by Apple
0x4320, # BCM4306 - never used by Apple
0x4324, # BCM4309 - never used by Apple
0x4325, # BCM4306 - never used by Apple
0x4328, # BCM4328
0x432C, # BCM4322 - never used by Apple
0x432D, # BCM4322 - never used by Apple
]
class atheros_ids:
AtherosWifi = [
# AirPortAtheros40 IDs
0x0030, # AR93xx
0x002A, # AR928X
0x001C, # AR242x / AR542x
0x0023, # AR5416 - never used by Apple
0x0024, # AR5418
]

499
Resources/SysPatch.py Normal file
View File

@@ -0,0 +1,499 @@
# Framework for mounting and patching macOS root volume
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
# Missing Features:
# - Full System/Library Snapshotting (need to research how Apple achieves this)
# - Temporary Work-around: sudo bless --mount /System/Volumes/Update/mnt1 --bootefi --last-sealed-snapshot
# - Work-around battery throttling on laptops with no battery (IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/)
import hashlib
import os
import requests
import shutil
import subprocess
import zipfile
from pathlib import Path
from Resources import Constants, device_probe, ModelArray, SysPatchArray, Utilities
class PatchSysVolume:
def __init__(self, model, versions):
self.model = model
self.constants: Constants.Constants = versions
self.root_mount_path = None
self.sip_enabled = True
self.sbm_enabled = True
self.amfi_enabled = True
self.fv_enabled = True
self.nvidia_legacy = False
self.amd_ts1 = False
self.amd_ts2 = False
self.iron_gpu = False
self.sandy_gpu = False
self.ivy_gpu = False
self.nvidia_legacy = False
self.brightness_legacy = False
self.legacy_audio = False
self.added_kexts = False
self.amfi_must_disable = False
self.no_patch = True
if self.constants.detected_os > self.constants.catalina:
# Big Sur and newer use APFS snapshots
self.mount_location = "/System/Volumes/Update/mnt1"
else:
self.mount_location = "/"
self.mount_extensions = f"{self.mount_location}/System/Library/Extensions"
self.mount_frameworks = f"{self.mount_location}/System/Library/Frameworks"
self.mount_lauchd = f"{self.mount_location}/System/Library/LaunchDaemons"
self.mount_private_frameworks = f"{self.mount_location}/System/Library/PrivateFrameworks"
def elevated(self, *args, **kwargs) -> subprocess.CompletedProcess:
if os.getuid() == 0:
return subprocess.run(*args, **kwargs)
else:
return subprocess.run(["sudo"] + [args[0][0]] + args[0][1:], **kwargs)
def find_mount_root_vol(self, patch):
self.root_mount_path = Utilities.get_disk_path()
if self.root_mount_path.startswith("disk"):
print(f"- Found Root Volume at: {self.root_mount_path}")
if Path(self.mount_extensions).exists():
print("- Root Volume is already mounted")
if patch is True:
self.patch_root_vol()
return True
else:
self.unpatch_root_vol()
return True
else:
if self.constants.detected_os > self.constants.catalina:
print("- Mounting APFS Snapshot as writable")
self.elevated(["mount", "-o", "nobrowse", "-t", "apfs", f"/dev/{self.root_mount_path}", self.mount_location], stdout=subprocess.PIPE).stdout.decode().strip().encode()
elif self.constants.detected_os == self.constants.catalina:
print("- Mounting Root Volume as writable")
self.elevated(["mount", "-uw", "/"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
if Path(self.mount_extensions).exists():
print("- Successfully mounted the Root Volume")
if patch is True:
self.patch_root_vol()
return True
else:
self.unpatch_root_vol()
return True
else:
print("- Failed to mount the Root Volume")
print("- Recommend rebooting the machine and trying to patch again")
if self.constants.gui_mode is False:
input("- Press [ENTER] to exit: ")
else:
print("- Could not find root volume")
if self.constants.gui_mode is False:
input("- Press [ENTER] to exit: ")
def unpatch_root_vol(self):
print("- Reverting to last signed APFS snapshot")
self.elevated(["bless", "--mount", self.mount_location, "--bootefi", "--last-sealed-snapshot"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
def rebuild_snapshot(self):
if self.constants.gui_mode is False:
input("Press [ENTER] to continue with cache rebuild: ")
print("- Rebuilding Kernel Cache (This may take some time)")
if self.constants.detected_os > self.constants.catalina:
result = self.elevated(["kmutil", "install", "--volume-root", self.mount_location, "--update-all"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
else:
result = self.elevated(["kextcache", "-i", "/"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if result.returncode != 0:
self.success_status = False
print("- Unable to build new kernel cache")
print("\nPlease report this to Github")
print("Reason for Patch Failure:")
print(result.stdout.decode())
print("")
print("\nPlease reboot the machine to avoid potential issues rerunning the patcher")
if self.constants.gui_mode is False:
input("Press [ENTER] to continue")
else:
self.success_status = True
print("- Successfully built new kernel cache")
if self.constants.gui_mode is False and self.constants.detected_os > self.constants.catalina:
input("Press [ENTER] to continue with snapshotting")
if self.constants.detected_os > self.constants.catalina:
print("- Creating new APFS snapshot")
self.elevated(["bless", "--folder", f"{self.mount_location}/System/Library/CoreServices", "--bootefi", "--create-snapshot"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
self.unmount_drive()
print("- Patching complete")
print("\nPlease reboot the machine for patches to take effect")
if self.constants.gui_mode is False:
input("Press [ENTER] to continue")
def unmount_drive(self):
print("- Unmounting Root Volume (Don't worry if this fails)")
self.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
def delete_old_binaries(self, vendor_patch):
for delete_current_kext in vendor_patch:
delete_path = Path(self.mount_extensions) / Path(delete_current_kext)
if Path(delete_path).exists():
print(f"- Deleting {delete_current_kext}")
self.elevated(["sudo", "rm", "-R", delete_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
else:
print(f"- Couldn't find {delete_current_kext}, skipping")
def add_new_binaries(self, vendor_patch, vendor_location):
for add_current_kext in vendor_patch:
existing_path = Path(self.mount_extensions) / Path(add_current_kext)
if Path(existing_path).exists():
print(f"- Found conflicting kext, Deleting Root Volume's {add_current_kext}")
self.elevated(["rm", "-R", existing_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
print(f"- Adding {add_current_kext}")
self.elevated(["cp", "-R", f"{vendor_location}/{add_current_kext}", self.mount_extensions], stdout=subprocess.PIPE).stdout.decode().strip().encode()
self.elevated(["chmod", "-Rf", "755", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
self.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
def add_brightness_patch(self):
self.delete_old_binaries(SysPatchArray.DeleteBrightness)
self.add_new_binaries(SysPatchArray.AddBrightness, self.constants.legacy_brightness)
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_private_frameworks_path_brightness}/", self.mount_private_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
self.elevated(["chmod", "-Rf", "755", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
self.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
def add_audio_patch(self):
self.delete_old_binaries(SysPatchArray.DeleteVolumeControl)
self.add_new_binaries(SysPatchArray.AddVolumeControl, self.constants.audio_path)
def gpu_accel_legacy_nvidia_big_sur(self):
self.delete_old_binaries(SysPatchArray.DeleteNvidiaAccel11)
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(SysPatchArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
def gpu_framebuffer_legacy_nvidia(self):
self.add_new_binaries(SysPatchArray.AddNvidiaBrightness, self.constants.legacy_nvidia_path)
def gpu_accel_legacy_ts1_big_sur(self):
self.delete_old_binaries(SysPatchArray.DeleteAMDAccel11)
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(SysPatchArray.AddAMDAccel11, self.constants.legacy_amd_path)
def gpu_accel_legacy_ts2_big_sur(self):
self.delete_old_binaries(SysPatchArray.DeleteAMDAccel11)
self.delete_old_binaries(SysPatchArray.DeleteAMDAccel11TS2)
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(SysPatchArray.AddAMDAccel11, self.constants.legacy_amd_path)
def gpu_framebuffer_legacy_amd(self):
self.add_new_binaries(SysPatchArray.AddAMDBrightness, self.constants.legacy_amd_path)
def gpu_accel_legacy_ironlake_big_sur(self):
self.delete_old_binaries(SysPatchArray.DeleteNvidiaAccel11)
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(SysPatchArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
def gpu_framebuffer_legacy_ironlake(self):
self.add_new_binaries(SysPatchArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
def gpu_accel_legacy_sandybridge_big_sur(self):
self.delete_old_binaries(SysPatchArray.DeleteNvidiaAccel11)
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(SysPatchArray.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
def gpu_framebuffer_legacy_sandybridge(self):
self.add_new_binaries(SysPatchArray.AddIntelGen2Accel, self.constants.legacy_intel_gen1_path)
def gpu_framebuffer_ivybridge_big_sur(self):
self.add_new_binaries(SysPatchArray.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
print("- Fixing Acceleration in CoreMedia")
subprocess.run(["defaults", "write", "com.apple.coremedia", "hardwareVideoDecoder", "-string", "disable"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
print("- Merging Ivy Bridge Frameworks")
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_frameworks_path_accel_ivy}/", self.mount_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
def gpu_accel_legacy_extended(self):
print("- Merging general legacy Frameworks")
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_frameworks_path_accel}/", self.mount_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
if Path(self.mount_lauchd / Path("HiddHack.plist")).exists():
print("- Removing legacy HiddHack")
self.elevated(["rm", f"{self.mount_lauchd}/HiddHack.plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
print("- Adding IOHID-Fixup.plist")
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_lauchd_path_accel}/", self.mount_lauchd], stdout=subprocess.PIPE).stdout.decode().strip().encode()
self.elevated(["chmod", "755", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
self.elevated(["chown", "root:wheel", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
print("- Merging general legacy PrivateFrameworks")
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_private_frameworks_path_accel}/", self.mount_private_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
def gpu_accel_legacy_extended_ts2(self):
print("- Merging TeraScale 2 legacy Frameworks")
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_frameworks_path_accel_ts2}/", self.mount_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
print("- Merging TeraScale 2 PrivateFrameworks")
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_private_frameworks_path_accel_ts2}/", self.mount_private_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
print("- Fixing Acceleration in CMIO")
subprocess.run(["defaults", "write", "com.apple.cmio", "CMIO_Unit_Input_ASC.DoNotUseOpenCL", "-bool", "true"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
def patch_root_vol(self):
print(f"- Running patches for {self.model}")
# Graphics patches
if self.nvidia_legacy is True:
print("- Installing legacy Nvidia Patches")
if self.constants.detected_os == self.constants.big_sur:
print("- Detected Big Sur, installing Acceleration patches")
self.gpu_accel_legacy_nvidia_big_sur()
self.added_kexts = True
else:
print("- Detected unsupported OS, installing Basic Framebuffer")
self.gpu_framebuffer_legacy_nvidia()
if self.amd_ts1 is True:
print("- Installing legacy TeraScale 1 Patches")
if self.constants.detected_os == self.constants.big_sur:
print("- Detected Big Sur, installing Acceleration patches")
self.gpu_accel_legacy_ts1_big_sur()
self.added_kexts = True
else:
print("- Detected unsupported OS, installing Basic Framebuffer")
self.gpu_framebuffer_legacy_amd()
if self.amd_ts2 is True:
print("- Installing legacy TeraScale 2 Patches")
if self.constants.detected_os == self.constants.big_sur:
print("- Detected Big Sur, installing Acceleration patches")
self.gpu_accel_legacy_ts2_big_sur()
self.added_kexts = True
else:
print("- Detected unsupported OS, installing Basic Framebuffer")
self.gpu_framebuffer_legacy_amd()
if self.iron_gpu is True:
print("- Installing legacy Ironlake Patches")
if self.constants.detected_os == self.constants.big_sur:
print("- Detected Big Sur, installing Acceleration patches")
self.gpu_accel_legacy_ironlake_big_sur()
self.added_kexts = True
else:
print("- Detected unsupported OS, installing Basic Framebuffer")
self.gpu_framebuffer_legacy_ironlake()
if self.sandy_gpu is True:
print("- Installing legacy Sandy Bridge Patches")
if self.constants.detected_os == self.constants.big_sur:
print("- Detected Big Sur, installing Acceleration patches")
self.gpu_accel_legacy_sandybridge_big_sur()
self.added_kexts = True
else:
print("- Detected unsupported OS, installing Basic Framebuffer")
self.gpu_framebuffer_legacy_sandybridge()
if self.ivy_gpu is True:
print("- Installing Ivy Bridge Patches")
self.gpu_framebuffer_ivybridge_big_sur()
if self.amd_ts2 is True:
# TeraScale 2 patches must be installed after Intel HD3000
self.add_new_binaries(SysPatchArray.AddAMDAccel11TS2, self.constants.legacy_amd_path_ts2)
if self.added_kexts is True:
self.gpu_accel_legacy_extended()
if self.amd_ts2 is True:
self.gpu_accel_legacy_extended_ts2()
# Misc patches
if self.brightness_legacy is True:
print("- Installing legacy Brightness Control")
self.add_brightness_patch()
if self.legacy_audio is True:
print("- Fixing Volume Control Support")
self.add_audio_patch()
self.rebuild_snapshot()
def check_files(self):
if Path(self.constants.payload_apple_root_path).exists():
print("- Found Apple Binaries")
if self.constants.gui_mode is False:
patch_input = input("Would you like to redownload?(y/n): ")
if patch_input in {"y", "Y", "yes", "Yes"}:
shutil.rmtree(Path(self.constants.payload_apple_root_path))
self.download_files()
else:
self.download_files()
else:
print("- Apple binaries missing")
self.download_files()
def download_files(self):
if self.constants.detected_os == self.constants.monterey:
os_ver = "12-Monterey"
elif self.constants.detected_os == self.constants.big_sur:
os_ver = "11-Big-Sur"
elif self.constants.detected_os == self.constants.catalina:
os_ver = "10.15-Catalina"
elif self.constants.detected_os == self.constants.mojave:
os_ver = "10.14-Mojave"
link = f"{self.constants.url_patcher_support_pkg}{self.constants.patcher_support_pkg_version}/{os_ver}.zip"
if Path(self.constants.payload_apple_root_path).exists():
print("- Removing old Apple Binaries folder")
Path(self.constants.payload_apple_root_path).unlink()
if Path(self.constants.payload_apple_root_path_zip).exists():
print("- Removing old Apple Binaries zip")
Path(self.constants.payload_apple_root_path_zip).unlink()
Utilities.download_file(link, self.constants.payload_apple_root_path_zip)
if self.constants.payload_apple_root_path_zip.exists():
print("- Download completed")
print("- Unzipping download...")
try:
subprocess.run(["unzip", self.constants.payload_apple_root_path_zip], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path).stdout.decode()
print("- Renaming folder")
os.rename(self.constants.payload_path / Path(os_ver), self.constants.payload_apple_root_path)
Path(self.constants.payload_apple_root_path_zip).unlink()
print("- Binaries downloaded to:")
print(self.constants.payload_path)
if self.constants.gui_mode is False:
input("Press [ENTER] to continue")
except zipfile.BadZipFile:
print("- Couldn't unzip")
return
else:
print("- Download failed, please verify the below link works:")
print(link)
input("Press [ENTER] to continue")
def detect_gpus(self):
dgpu = self.constants.computer.dgpu
igpu = self.constants.computer.igpu
if dgpu:
print(f"- Found GFX0: {Utilities.friendly_hex(dgpu.vendor_id)}:{Utilities.friendly_hex(dgpu.device_id)}")
if dgpu.arch in [device_probe.NVIDIA.Archs.Tesla, device_probe.NVIDIA.Archs.Fermi]:
if self.constants.detected_os > self.constants.catalina:
self.nvidia_legacy = True
self.amfi_must_disable = True
elif dgpu.arch == device_probe.AMD.Archs.TeraScale_1:
if self.constants.detected_os > self.constants.catalina:
self.amd_ts1 = True
self.amfi_must_disable = True
# TODO: Enable TS2 support
elif dgpu.arch == device_probe.AMD.Archs.TeraScale_2:
# Requires manual permission from user to avoid medical issues
if self.constants.detected_os > self.constants.catalina and self.constants.terascale_2_patch is True:
self.amd_ts2 = True
self.amfi_must_disable = True
if igpu and igpu.class_code != 0xFFFFFF:
print(f"- Found IGPU: {Utilities.friendly_hex(igpu.vendor_id)}:{Utilities.friendly_hex(igpu.device_id)}")
if igpu.arch == device_probe.Intel.Archs.Iron_Lake:
if self.constants.detected_os > self.constants.catalina:
self.iron_gpu = True
self.amfi_must_disable = True
elif igpu.arch == device_probe.Intel.Archs.Sandy_Bridge:
if self.constants.detected_os > self.constants.catalina:
self.sandy_gpu = True
self.amfi_must_disable = True
elif igpu.arch == device_probe.Intel.Archs.Ivy_Bridge:
if self.constants.detected_os > self.constants.big_sur:
self.ivy_gpu = True
elif isinstance(igpu, device_probe.NVIDIA):
if self.constants.detected_os > self.constants.catalina:
self.nvidia_legacy = True
self.amfi_must_disable = True
def detect_patch_set(self):
self.detect_gpus()
if self.model in ModelArray.LegacyBrightness:
if self.constants.detected_os > self.constants.catalina:
self.brightness_legacy = True
if self.model in ["iMac7,1", "iMac8,1"]:
if self.constants.detected_os > self.constants.catalina:
self.legacy_audio = True
Utilities.cls()
print("The following patches will be applied:")
if self.nvidia_legacy is True:
print("- Add Legacy Nvidia Tesla Graphics Patch")
elif self.amd_ts1 is True:
print("- Add Legacy ATI TeraScale 1 Graphics Patch")
elif self.amd_ts2 is True:
print("- Add Legacy ATI TeraScale 2 Graphics Patch")
if self.iron_gpu is True:
print("- Add Legacy Intel IronLake Graphics Patch")
elif self.sandy_gpu is True:
print("- Add Legacy Intel Sandy Bridge Graphics Patch")
elif self.ivy_gpu is True:
print("- Add Legacy Intel Ivy Bridge Graphics Patch")
if self.brightness_legacy is True:
print("- Add Legacy Brightness Control")
if self.legacy_audio is True:
print("- Add legacy Audio Control")
self.no_patch = not any(
[
self.nvidia_legacy,
self.amd_ts1,
self.amd_ts2,
self.iron_gpu,
self.sandy_gpu,
self.ivy_gpu,
self.brightness_legacy,
self.legacy_audio,
]
)
def verify_patch_allowed(self):
self.sip_enabled, self.sbm_enabled, self.amfi_enabled, self.fv_enabled = Utilities.patching_status()
if self.sip_enabled is True:
print("\nCannot patch! Please disable System Integrity Protection (SIP).")
print("Disable SIP in Patcher Settings and Rebuild OpenCore\n")
print("Ensure the following bits are set for csr-active-config:")
print("\n".join(self.constants.root_patch_sip_big_sur if self.constants.detected_os > self.constants.catalina else self.constants.root_patch_sip_mojave))
print("For Hackintoshes, please set csr-active-config to '030A0000' (0xA03)")
print("For non-OpenCore Macs, please run 'csrutil disable' and \n'csrutil authenticated-root disable' in RecoveryOS")
if self.sbm_enabled is True:
print("\nCannot patch! Please disable Apple Secure Boot.")
print("Disable SecureBootModel in Patcher Settings and Rebuild OpenCore")
print("For Hackintoshes, set SecureBootModel to Disabled")
if self.fv_enabled is True:
print("\nCannot patch! Please disable FileVault.")
print("Go to System Preferences -> Security and disable FileVault")
if self.amfi_enabled is True and self.amfi_must_disable is True:
print("\nCannot patch! Please disable AMFI.")
print("For Hackintoshes, please add amfi_get_out_of_my_way=1 to boot-args")
if any([self.sip_enabled, self.sbm_enabled, self.fv_enabled, self.amfi_enabled if self.amfi_must_disable else False]):
return False
else:
return True
# Entry Function
def start_patch(self):
print("- Starting Patch Process")
print(f"- Determinging Required Patch set for Darwin {self.constants.detected_os}")
self.detect_patch_set()
if self.no_patch is False and self.constants.gui_mode is False:
change_menu = input("Would you like to continue with Root Volume Patching?(y/n): ")
else:
change_menu = None
print("- No Root Patches required for your machine!")
if self.constants.gui_mode is False:
input("\nPress [ENTER] to return to the main menu: ")
if change_menu in ["y", "Y"]:
print("- Continuing with Patching")
print("- Verifying whether Root Patching possible")
if self.verify_patch_allowed() is True:
print("- Patcher is capable of patching")
self.check_files()
self.find_mount_root_vol(True)
elif self.constants.gui_mode is False:
input("\nPress [ENTER] to return to the main menu: ")
else:
print("- Returning to main menu")
def start_unpatch(self):
print("- Starting Unpatch Process")
if self.verify_patch_allowed() is True:
self.find_mount_root_vol(False)
if self.constants.gui_mode is False:
input("\nPress [ENTER] to return to the main menu")

192
Resources/SysPatchArray.py Normal file
View File

@@ -0,0 +1,192 @@
# Lists Root patches used by SysPatch.py
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
DeleteNvidiaAccel11 = [
"AMDRadeonX4000.kext",
"AMDRadeonX4000HWServices.kext",
"AMDRadeonX5000.kext",
"AMDRadeonX5000HWServices.kext",
"AMDRadeonX6000.kext",
"AMDRadeonX6000Framebuffer.kext",
"AMDRadeonX6000HWServices.kext",
"AppleIntelBDWGraphics.kext",
"AppleIntelBDWGraphicsFramebuffer.kext",
"AppleIntelCFLGraphicsFramebuffer.kext",
"AppleIntelHD4000Graphics.kext",
"AppleIntelHD5000Graphics.kext",
"AppleIntelICLGraphics.kext",
"AppleIntelICLLPGraphicsFramebuffer.kext",
"AppleIntelKBLGraphics.kext",
"AppleIntelKBLGraphicsFramebuffer.kext",
"AppleIntelSKLGraphics.kext",
"AppleIntelSKLGraphicsFramebuffer.kext",
"AppleIntelFramebufferAzul.kext",
"AppleIntelFramebufferCapri.kext",
"AppleParavirtGPU.kext",
"GeForce.kext",
"IOAcceleratorFamily2.kext",
"IOGPUFamily.kext",
]
DeleteAMDAccel11 = [
"AMDRadeonX4000.kext",
"AMDRadeonX4000HWServices.kext",
"AMDRadeonX5000.kext",
"AMDRadeonX5000HWServices.kext",
"AMDRadeonX6000.kext",
"AMDRadeonX6000Framebuffer.kext",
"AMDRadeonX6000HWServices.kext",
"AMD7000Controller.kext", # AMDSupport Dependency
"AMD8000Controller.kext", # AMDSupport Dependency
"AMD9000Controller.kext", # AMDSupport Dependency
"AMD9500Controller.kext", # AMDSupport Dependency
"AMD10000Controller.kext", # AMDSupport Dependency
"AppleIntelBDWGraphics.kext",
"AppleIntelBDWGraphicsFramebuffer.kext",
"AppleIntelCFLGraphicsFramebuffer.kext",
"AppleIntelHD4000Graphics.kext",
"AppleIntelHD5000Graphics.kext",
"AppleIntelICLGraphics.kext",
"AppleIntelICLLPGraphicsFramebuffer.kext",
"AppleIntelKBLGraphics.kext",
"AppleIntelKBLGraphicsFramebuffer.kext",
"AppleIntelSKLGraphics.kext",
"AppleIntelSKLGraphicsFramebuffer.kext",
"AppleIntelFramebufferAzul.kext",
"AppleIntelFramebufferCapri.kext",
"AppleParavirtGPU.kext",
"GeForce.kext",
"IOGPUFamily.kext",
]
DeleteAMDAccel11TS2 = [
"AppleCameraInterface.kext",
]
AddNvidiaAccel11 = [
"GeForceGA.bundle",
"GeForceTesla.kext",
"GeForceTeslaGLDriver.bundle",
"GeForceTeslaVADriver.bundle",
"NVDANV50HalTesla.kext",
"NVDAResmanTesla.kext",
"IOSurface.kext",
]
AddNvidiaBrightness = [
"GeForceGA.bundle",
"GeForceTesla.kext",
"GeForceTeslaGLDriver.bundle",
"GeForceTeslaVADriver.bundle",
"NVDANV50HalTesla.kext",
"NVDAResmanTesla.kext",
]
AddNvidiaKeplerAccel11 = [
"GeForce.kext",
"GeForceAIRPlugin.bundle",
"GeForceGLDriver.bundle",
"GeForceMTLDriver.bundle",
"GeForceVADriver.bundle",
"NVDAGF100Hal.kext",
"NVDAGK100Hal.kext",
"NVDAResman.kext",
"NVDAStartup.kext",
"NVSMU.kext",
]
AddAMDAccel11 = [
"AMD2400Controller.kext",
"AMD2600Controller.kext",
"AMD3800Controller.kext",
"AMD4600Controller.kext",
"AMD4800Controller.kext",
"AMD5000Controller.kext",
"AMD6000Controller.kext",
"AMDFramebuffer.kext",
"AMDLegacyFramebuffer.kext",
"AMDLegacySupport.kext",
"AMDRadeonVADriver.bundle",
"AMDRadeonVADriver2.bundle",
"AMDRadeonX3000.kext",
"AMDRadeonX3000GLDriver.bundle",
"AMDShared.bundle",
"AMDSupport.kext",
"ATIRadeonX2000.kext",
"ATIRadeonX2000GA.plugin",
"ATIRadeonX2000GLDriver.bundle",
"ATIRadeonX2000VADriver.bundle",
]
AddAMDBrightness = [
"AMD2400Controller.kext",
"AMD2600Controller.kext",
"AMD3800Controller.kext",
"AMD4600Controller.kext",
"AMD4800Controller.kext",
"AMD5000Controller.kext",
"AMD6000Controller.kext",
"AMDLegacyFramebuffer.kext",
"AMDLegacySupport.kext",
"AMDRadeonVADriver.bundle",
"AMDRadeonVADriver2.bundle",
# "AMDRadeonX3000.kext",
# "AMDRadeonX3000GLDriver.bundle",
"AMDShared.bundle",
"ATIRadeonX2000.kext",
"ATIRadeonX2000GA.plugin",
"ATIRadeonX2000GLDriver.bundle",
"ATIRadeonX2000VADriver.bundle",
]
AddAMDAccel11TS2 = [
"IOSurface.kext",
]
AddIntelGen1Accel = [
"AppleIntelHDGraphics.kext",
"AppleIntelHDGraphicsFB.kext",
"AppleIntelHDGraphicsGA.plugin",
"AppleIntelHDGraphicsGLDriver.bundle",
"AppleIntelHDGraphicsVADriver.bundle",
]
AddIntelGen2Accel = [
"AppleIntelHD3000Graphics.kext",
"AppleIntelHD3000GraphicsGA.plugin",
"AppleIntelHD3000GraphicsGLDriver.bundle",
"AppleIntelHD3000GraphicsVADriver.bundle",
"AppleIntelSNBGraphicsFB.kext",
"AppleIntelSNBVA.bundle",
]
AddIntelGen3Accel = [
"AppleIntelFramebufferCapri.kext",
"AppleIntelHD4000Graphics.kext",
"AppleIntelHD4000GraphicsGLDriver.bundle",
"AppleIntelHD4000GraphicsMTLDriver.bundle",
"AppleIntelHD4000GraphicsVADriver.bundle",
"AppleIntelIVBVA.bundle",
"AppleIntelGraphicsShared.bundle",
]
AddGeneralAccel = ["IOAcceleratorFamily2.kext", "IOSurface.kext"]
DeleteBrightness = ["AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext"]
AddBrightness = [
"AppleBacklight.kext",
"AppleBacklightExpert.kext",
]
AddVolumeControl = [
"AppleHDA.kext",
"IOAudioFamily.kext",
]
DeleteVolumeControl = [
"AppleVirtIO.kext",
"AppleVirtualGraphics.kext",
"AppleVirtualPlatform.kext",
"ApplePVPanic.kext",
"AppleVirtIOStorage.kext",
]

260
Resources/Utilities.py Normal file
View File

@@ -0,0 +1,260 @@
# Copyright (C) 2020-2021, Dhinak G
from __future__ import print_function
import os
import math
from pathlib import Path
import plistlib
import subprocess
import requests
import hashlib
import requests
from Resources import Constants
def hexswap(input_hex: str):
hex_pairs = [input_hex[i : i + 2] for i in range(0, len(input_hex), 2)]
hex_rev = hex_pairs[::-1]
hex_str = "".join(["".join(x) for x in hex_rev])
return hex_str.upper()
def header(lines):
lines = [i for i in lines if i is not None]
total_length = len(max(lines, key=len)) + 4
print("#" * (total_length))
for line in lines:
left_side = math.floor(((total_length - 2 - len(line.strip())) / 2))
print("#" + " " * left_side + line.strip() + " " * (total_length - len("#" + " " * left_side + line.strip()) - 1) + "#")
print("#" * total_length)
RECOVERY_STATUS = None
def check_recovery():
global RECOVERY_STATUS # pylint: disable=global-statement # We need to cache the result
if RECOVERY_STATUS is None:
RECOVERY_STATUS = Path("/System/Library/BaseSystem").exists()
return RECOVERY_STATUS
def get_disk_path():
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
root_mount_path = root_partition_info["DeviceIdentifier"]
root_mount_path = root_mount_path[:-2] if root_mount_path.count("s") > 1 else root_mount_path
return root_mount_path
def csr_decode(csr_active_config):
if csr_active_config is None:
csr_active_config = b"\x00\x00\x00\x00"
sip_int = int.from_bytes(csr_active_config, byteorder="little")
i = 0
for current_sip_bit in Constants.Constants.csr_values:
if sip_int & (1 << i):
Constants.Constants.csr_values[current_sip_bit] = True
i = i + 1
# Can be adjusted to whatever OS needs patching
sip_needs_change = all(Constants.Constants.csr_values[i] for i in Constants.Constants.root_patch_sip_big_sur)
if sip_needs_change is True:
return False
else:
return True
def friendly_hex(integer: int):
return "{:02X}".format(integer)
def patching_status():
# Detection for Root Patching
sip_enabled = True # System Integrity Protection
sbm_enabled = True # Secure Boot Status (SecureBootModel)
amfi_enabled = True # Apple Mobile File Integrity
fv_enabled = True # FileVault
amfi_1 = "amfi_get_out_of_my_way=0x1"
amfi_2 = "amfi_get_out_of_my_way=1"
if get_nvram("boot-args", decode=False) and amfi_1 in get_nvram("boot-args", decode=False) or amfi_2 in get_nvram("boot-args", decode=False):
amfi_enabled = False
if get_nvram("HardwareModel", "94B73556-2197-4702-82A8-3E1337DAFBFB", decode=False) not in Constants.Constants.sbm_values:
sbm_enabled = False
if get_nvram("csr-active-config", decode=False) and csr_decode(get_nvram("csr-active-config", decode=False)) is False:
sip_enabled = False
fv_status: str = subprocess.run("fdesetup status".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
if fv_status.startswith("FileVault is Off"):
fv_enabled = False
return sip_enabled, sbm_enabled, amfi_enabled, fv_enabled
clear = True
def disable_cls():
global clear
clear = False
def cls():
global clear
if not clear:
return
if not check_recovery():
os.system("cls" if os.name == "nt" else "clear")
else:
print("\u001Bc")
def get_nvram(variable: str, uuid: str = None, *, decode: bool = False):
# TODO: Properly fix for El Capitan, which does not print the XML representation even though we say to
if uuid is not None:
uuid += ":"
else:
uuid = ""
result = subprocess.run(f"nvram -x {uuid}{variable}".split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.strip()
try:
value = plistlib.loads(result)[f"{uuid}{variable}"]
except plistlib.InvalidFileException:
return None
if decode:
value = value.strip(b"\0").decode()
return value
def download_file(link, location):
print("- Attempting download from following link:")
print(link)
if Path(location).exists():
print("- Removing old file")
Path(location).unlink()
response = requests.get(link, stream=True)
with location.open("wb") as file:
count = 0
for chunk in response.iter_content(1024 * 1024 * 4):
file.write(chunk)
count += len(chunk)
cls()
print(f"- Downloading package")
print(f"- {count / 1024 / 1024}MB Downloaded")
checksum = hashlib.sha256()
with location.open("rb") as file:
chunk = file.read(1024 * 1024 * 16)
while chunk:
checksum.update(chunk)
chunk = file.read(1024 * 1024 * 16)
print(f"- Checksum: {checksum.hexdigest()}")
# def menu(title, prompt, menu_options, add_quit=True, auto_number=False, in_between=[], top_level=False):
# return_option = ["Q", "Quit", None] if top_level else ["B", "Back", None]
# if add_quit: menu_options.append(return_option)
# cls()
# header(title)
# print()
# for i in in_between: print(i)
# if in_between: print()
# for index, option in enumerate(menu_options):
# if auto_number and not (index == (len(menu_options) - 1) and add_quit):
# option[0] = str((index + 1))
# print(option[0] + ". " + option[1])
# print()
# selected = input(prompt)
# keys = [option[0].upper() for option in menu_options]
# if not selected or selected.upper() not in keys:
# return
# if selected.upper() == return_option[0]:
# return -1
# else:
# menu_options[keys.index(selected.upper())][2]() if menu_options[keys.index(selected.upper())][2] else None
class TUIMenu:
def __init__(self, title, prompt, options=None, return_number_instead_of_direct_call=False, add_quit=True, auto_number=False, in_between=None, top_level=False, loop=False):
self.title = title
self.prompt = prompt
self.in_between = in_between or []
self.options = options or []
self.return_number_instead_of_direct_call = return_number_instead_of_direct_call
self.auto_number = auto_number
self.add_quit = add_quit
self.top_level = top_level
self.loop = loop
self.added_quit = False
def add_menu_option(self, name, description="", function=None, key=""):
self.options.append([key, name, description, function])
def start(self):
return_option = ["Q", "Quit"] if self.top_level else ["B", "Back"]
if self.add_quit and not self.added_quit:
self.add_menu_option(return_option[1], function=None, key=return_option[0])
self.added_quit = True
while True:
cls()
header(self.title)
print()
for i in self.in_between:
print(i)
if self.in_between:
print()
for index, option in enumerate(self.options):
if self.auto_number and not (index == (len(self.options) - 1) and self.add_quit):
option[0] = str((index + 1))
print(option[0] + ". " + option[1])
for i in option[2]:
print("\t" + i)
print()
selected = input(self.prompt)
keys = [option[0].upper() for option in self.options]
if not selected or selected.upper() not in keys:
if self.loop:
continue
else:
return
if self.add_quit and selected.upper() == return_option[0]:
return -1
elif self.return_number_instead_of_direct_call:
return self.options[keys.index(selected.upper())][0]
else:
self.options[keys.index(selected.upper())][3]() if self.options[keys.index(selected.upper())][3] else None
if not self.loop:
return
class TUIOnlyPrint:
def __init__(self, title, prompt, in_between=None):
self.title = title
self.prompt = prompt
self.in_between = in_between or []
def start(self):
cls()
header(self.title)
print()
for i in self.in_between:
print(i)
if self.in_between:
print()
return input(self.prompt)

View File

@@ -1,75 +0,0 @@
# Define Files
from __future__ import print_function
from shutil import copy
from shutil import rmtree
import os
import json
import subprocess
import sys
# List build versions
opencore_version = "0.6.4"
lilu_version = "1.4.9"
whatevergreen_version = "1.4.4"
airportbcrmfixup_version = "2.1.1"
bcm570_version = "1.0.0"
marvel_version = "1.0.0"
nforce_version = "1.0.0"
mce_version = "1.0.0"
mousse_version = "0.93"
telemetrap_version = "1.0.0"
io80211high_sierra_version = "1.0.0"
io80211mojave_version = "1.0.0"
voodoohda_version = "296"
# List current location
os.chdir(os.path.dirname(os.path.realpath(__file__)))
os.chdir("..")
current_path = os.getcwd()
# Payload Location
# OpenCore
opencore_path = os.path.join(current_path, "payloads/OpenCore/" "OpenCore-v%s.zip" % opencore_version)
plist_path = os.path.join(current_path, "payloads/Config/v%s/" "config.plist" % opencore_version)
# ACPI
pci_ssdt_path = os.path.join(current_path, "payloads/ACPI/" "SSDT-CPBG.aml")
# Drivers
nvme_driver_path = os.path.join(current_path, "payloads/Drivers/" "NvmExpressDxe.efi")
# Kexts
lilu_path = os.path.join(current_path, "payloads/Kexts/Acidanthera/" "Lilu-v%s.zip" % lilu_version)
whatevergreen_path = os.path.join(current_path, "payloads/Kexts/Acidanthera/" "WhateverGreen-v%s.zip" % whatevergreen_version)
airportbcrmfixup_path = os.path.join(current_path, "payloads/Kexts/Acidanthera/" "AirportBrcmFixup-v%s.zip" % airportbcrmfixup_version)
bcm570_path = os.path.join(current_path, "payloads/Kexts/Ethernet/" "CatalinaBCM5701Ethernet-v%s.zip" % bcm570_version)
marvel_path = os.path.join(current_path, "payloads/Kexts/Ethernet/" "MarvelYukonEthernet-v%s.zip" % marvel_version)
nforce_path = os.path.join(current_path, "payloads/Kexts/Ethernet/" "nForceEthernet-v%s.zip" % nforce_version)
mce_path = os.path.join(current_path, "payloads/Kexts/Misc/" "AppleMCEReporterDisabler-v%s.zip" % mce_version)
mousse_path = os.path.join(current_path, "payloads/Kexts/SSE/" "AAAMouSSE-v%s.zip" % mousse_version)
telemetrap_path = os.path.join(current_path, "payloads/Kexts/SSE/" "telemetrap-v%s.zip" % telemetrap_version)
io80211high_sierra_path = os.path.join(current_path, "payloads/Kexts/Wifi/" "IO80211HighSierra-v%s.zip" % io80211high_sierra_version)
io80211mojave_path = os.path.join(current_path, "payloads/Kexts/Wifi/" "IO80211Mojave-v%s.zip" % io80211mojave_version)
voodoohda_path = os.path.join(current_path, "payloads/Kexts/Audio/" "VoodooHDA-v%s.zip" % voodoohda_version)
# Build Location
opencore_path_build = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s.zip" % opencore_version)
plist_path_build = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s/EFI/OC/" % opencore_version)
plist_path_build_full = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s/EFI/OC/config.plist" % opencore_version)
acpi_path_build = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s/EFI/OC/ACPI" % opencore_version)
drivers_path_build = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s/EFI/OC/Drivers" % opencore_version)
kext_path_build = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s/EFI/OC/Kexts" % opencore_version)
opencore_path_done = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s" % opencore_version)
build_path = os.path.join(current_path, r'Build-Folder/')
gui_path_build = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s/EFI/OC/Resources" % opencore_version)
# Tools
macserial_path = os.path.join(current_path, "payloads/" "Tools")
# Icons
app_icon_path = os.path.join(current_path, "OC-Patcher.icns")
icon_path = os.path.join(current_path, "payloads/Icon/" ".VolumeIcon.icns")
gui_path = os.path.join(current_path, "payloads/Icon/" "Resources.zip")

383
Resources/device_probe.py Normal file
View File

@@ -0,0 +1,383 @@
import binascii
import enum
import itertools
import plistlib
import subprocess
from dataclasses import dataclass, field
from typing import Any, ClassVar, Optional, Type
from Resources import PCIIDArray, Utilities, ioreg
@dataclass
class CPU:
name: str
flags: list[str]
@dataclass
class PCIDevice:
VENDOR_ID: ClassVar[int] # Default vendor id, for subclasses.
vendor_id: int # The vendor ID of this PCI device
device_id: int # The device ID of this PCI device
class_code: int # The class code of this PCI device
# ioregistryentry: Optional[ioreg.IORegistryEntry] = None
name: Optional[str] = None # Name of IORegistryEntry
model: Optional[str] = None # model property
pci_path: Optional[str] = None
# def __getstate__(self):
# state = self.__dict__.copy()
# state.pop("ioregistryentry")
# return state
@classmethod
def from_ioregistry(cls, entry: ioreg.IORegistryEntry, anti_spoof=False):
if anti_spoof and "IOName" in entry.properties:
vendor_id, device_id = (int(i, 16) for i in entry.properties["IOName"][3:].split(","))
else:
vendor_id, device_id = [int.from_bytes(entry.properties[i][:4], byteorder="little") for i in ["vendor-id", "device-id"]]
device = cls(vendor_id, device_id, int.from_bytes(entry.properties["class-code"][:6], byteorder="little"), name=entry.name)
if "model" in entry.properties:
device.model = entry.properties["model"].strip(b"\0").decode()
device.populate_pci_path(entry)
return device
# @staticmethod
# def vendor_detect_old(device):
# for i in [NVIDIA, AMD]:
# if i.detect(device):
# return i
# return None
def vendor_detect(self, *, inherits: ClassVar[Any] = None, classes: list = None):
for i in classes or itertools.chain.from_iterable([subclass.__subclasses__() for subclass in PCIDevice.__subclasses__()]):
if issubclass(i, inherits or object) and i.detect(self):
return i
return None
@classmethod
def detect(cls, device):
return device.vendor_id == cls.VENDOR_ID and ((device.class_code == cls.CLASS_CODE) if getattr(cls, "CLASS_CODE", None) else True) # type: ignore # pylint: disable=no-member
# def acpi_path(self):
# # Eventually
# raise NotImplementedError
def populate_pci_path(self, entry: ioreg.IORegistryEntry):
# Based off gfxutil logic, seems to work.
paths = []
while entry:
if entry.entry_class == "IOPCIDevice":
location = [hex(int(i, 16)) for i in entry.location.split(",") + ["0"]]
paths.append(f"Pci({location[0]},{location[1]})")
elif entry.entry_class == "IOACPIPlatformDevice":
paths.append(f"PciRoot({hex(int(entry.properties.get('_UID', 0)))})")
break
elif entry.entry_class in ["IOPCI2PCIBridge", "IOPCIBridge", "AppleACPIPCI"]:
pass
else:
# There's something in between that's not PCI! Abort
paths = []
break
entry = entry.parent
self.pci_path = "/".join(reversed(paths))
@dataclass
class GPU(PCIDevice):
arch: enum.Enum = field(init=False) # The architecture, see subclasses.
def __post_init__(self):
self.detect_arch()
def detect_arch(self):
raise NotImplementedError
@dataclass
class WirelessCard(PCIDevice):
CLASS_CODE: ClassVar[int] = 0x028000 # 00800200 hexswapped
country_code: str = field(init=False)
chipset: enum.Enum = field(init=False)
def __post_init__(self):
system_profiler = plistlib.loads(subprocess.run("system_profiler -xml SPAirPortDataType".split(), stdout=subprocess.PIPE).stdout)
self.country_code = system_profiler[0]["_items"][0]["spairport_airport_interfaces"][0]["spairport_wireless_country_code"]
self.detect_chipset()
def detect_chipset(self):
raise NotImplementedError
@dataclass
class NVMeController(PCIDevice):
CLASS_CODE: ClassVar[int] = 0x010802
aspm: Optional[int] = None
parent_aspm: Optional[int] = None
@dataclass
class SATAController(PCIDevice):
CLASS_CODE: ClassVar[int] = 0x010601
@dataclass
class NVIDIA(GPU):
VENDOR_ID: ClassVar[int] = 0x10DE
class Archs(enum.Enum):
# pylint: disable=invalid-name
Fermi = "Fermi"
Tesla = "Tesla"
Kepler = "Kepler"
Unknown = "Unknown"
arch: Archs = field(init=False)
def detect_arch(self):
# G80/G80GL
if self.device_id in PCIIDArray.nvidia_ids.tesla_ids:
self.arch = NVIDIA.Archs.Tesla
elif self.device_id in PCIIDArray.nvidia_ids.fermi_ids:
self.arch = NVIDIA.Archs.Fermi
elif self.device_id in PCIIDArray.nvidia_ids.kepler_ids:
self.arch = NVIDIA.Archs.Kepler
else:
self.arch = NVIDIA.Archs.Unknown
@dataclass
class AMD(GPU):
VENDOR_ID: ClassVar[int] = 0x1002
class Archs(enum.Enum):
# pylint: disable=invalid-name
Legacy_GCN = "Legacy GCN"
TeraScale_1 = "TeraScale 1"
TeraScale_2 = "TeraScale 2"
Polaris = "Polaris"
Vega = "Vega"
Navi = "Navi"
Unknown = "Unknown"
arch: Archs = field(init=False)
def detect_arch(self):
if self.device_id in PCIIDArray.amd_ids.legacy_gcn_ids:
self.arch = AMD.Archs.Legacy_GCN
elif self.device_id in PCIIDArray.amd_ids.terascale_1_ids:
self.arch = AMD.Archs.TeraScale_1
elif self.device_id in PCIIDArray.amd_ids.terascale_2_ids:
self.arch = AMD.Archs.TeraScale_2
elif self.device_id in PCIIDArray.amd_ids.polaris_ids:
self.arch = AMD.Archs.Polaris
elif self.device_id in PCIIDArray.amd_ids.vega_ids:
self.arch = AMD.Archs.Vega
elif self.device_id in PCIIDArray.amd_ids.navi_ids:
self.arch = AMD.Archs.Navi
else:
self.arch = AMD.Archs.Unknown
@dataclass
class Intel(GPU):
VENDOR_ID: ClassVar[int] = 0x8086
class Archs(enum.Enum):
# pylint: disable=invalid-name
Iron_Lake = "Iron Lake"
Sandy_Bridge = "Sandy Bridge"
Ivy_Bridge = "Ivy Bridge"
Unknown = "Unknown"
arch: Archs = field(init=False)
def detect_arch(self):
if self.device_id in PCIIDArray.intel_ids.iron_ids:
self.arch = Intel.Archs.Iron_Lake
elif self.device_id in PCIIDArray.intel_ids.sandy_ids:
self.arch = Intel.Archs.Sandy_Bridge
elif self.device_id in PCIIDArray.intel_ids.ivy_ids:
self.arch = Intel.Archs.Ivy_Bridge
else:
self.arch = Intel.Archs.Unknown
@dataclass
class Broadcom(WirelessCard):
VENDOR_ID: ClassVar[int] = 0x14E4
class Chipsets(enum.Enum):
# pylint: disable=invalid-name
AirportBrcmNIC = "AirportBrcmNIC supported"
AirPortBrcm4360 = "AirPortBrcm4360 supported"
AirPortBrcm4331 = "AirPortBrcm4331 supported"
AirPortBrcm43224 = "AppleAirPortBrcm43224 supported"
Unknown = "Unknown"
chipset: Chipsets = field(init=False)
def detect_chipset(self):
if self.device_id in PCIIDArray.broadcom_ids.AirPortBrcmNIC:
self.chipset = Broadcom.Chipsets.AirportBrcmNIC
elif self.device_id in PCIIDArray.broadcom_ids.AirPortBrcm4360:
self.chipset = Broadcom.Chipsets.AirPortBrcm4360
elif self.device_id in PCIIDArray.broadcom_ids.AirPortBrcm4331:
self.chipset = Broadcom.Chipsets.AirPortBrcm4331
elif self.device_id in PCIIDArray.broadcom_ids.AppleAirPortBrcm43224:
self.chipset = Broadcom.Chipsets.AirPortBrcm43224
else:
self.chipset = Broadcom.Chipsets.Unknown
@dataclass
class Atheros(WirelessCard):
VENDOR_ID: ClassVar[int] = 0x168C
class Chipsets(enum.Enum):
# pylint: disable=invalid-name
# Well there's only one model but
AirPortAtheros40 = "AirPortAtheros40 supported"
Unknown = "Unknown"
chipset: Chipsets = field(init=False)
def detect_chipset(self):
if self.device_id in PCIIDArray.atheros_ids.AtherosWifi:
self.chipset = Atheros.Chipsets.AirPortAtheros40
else:
self.chipset = Atheros.Chipsets.Unknown
@dataclass
class Computer:
real_model: Optional[str] = None
real_board_id: Optional[str] = None
reported_model: Optional[str] = None
reported_board_id: Optional[str] = None
gpus: list[GPU] = field(default_factory=list)
igpu: Optional[GPU] = None # Shortcut for IGPU
dgpu: Optional[GPU] = None # Shortcut for GFX0
storage: list[PCIDevice] = field(default_factory=list)
wifi: Optional[WirelessCard] = None
cpu: Optional[CPU] = None
oclp_version: Optional[str] = None
ioregistry: Optional[ioreg.IOReg] = None
@staticmethod
def probe():
computer = Computer()
computer.ioregistry = ioreg.IOReg()
computer.gpu_probe()
computer.dgpu_probe()
computer.igpu_probe()
computer.wifi_probe()
computer.storage_probe()
computer.smbios_probe()
computer.cpu_probe()
return computer
def gpu_probe(self):
# Chain together two iterators: one for class code 00000300, the other for class code 00800300
devices = itertools.chain(self.ioregistry.find(property=("class-code", binascii.a2b_hex("00000300"))), self.ioregistry.find(property=("class-code", binascii.a2b_hex("00800300"))))
for device in devices:
vendor: Type[GPU] = PCIDevice.from_ioregistry(device).vendor_detect(inherits=GPU) # type: ignore
if vendor:
self.gpus.append(vendor.from_ioregistry(device)) # type: ignore
def dgpu_probe(self):
device = next(self.ioregistry.find(name="GFX0"), None)
if not device:
# No devices
return
vendor: Type[GPU] = PCIDevice.from_ioregistry(device).vendor_detect(inherits=GPU) # type: ignore
if vendor:
self.dgpu = vendor.from_ioregistry(device) # type: ignore
def igpu_probe(self):
device = next(self.ioregistry.find(name="IGPU"), None)
if not device:
# No devices
return
vendor: Type[GPU] = PCIDevice.from_ioregistry(device).vendor_detect(inherits=GPU) # type: ignore
if vendor:
self.igpu = vendor.from_ioregistry(device) # type: ignore
def wifi_probe(self):
# result = subprocess.run("ioreg -r -c IOPCIDevice -a -d2".split(), stdout=subprocess.PIPE).stdout.strip()
devices = self.ioregistry.find(property=("class-code", binascii.a2b_hex(Utilities.hexswap(hex(WirelessCard.CLASS_CODE)[2:].zfill(8)))))
# if not result:
# # No devices
# print("A")
# return
# devices = plistlib.loads(result)
# devices = [i for i in devices if i["class-code"] == binascii.a2b_hex("00800200")]
# if not devices:
# # No devices
# print("B")
# return
for device in devices:
vendor: Type[WirelessCard] = PCIDevice.from_ioregistry(device, anti_spoof=True).vendor_detect(inherits=WirelessCard) # type: ignore
if vendor:
self.wifi = vendor.from_ioregistry(device, anti_spoof=True) # type: ignore
break
def storage_probe(self):
sata_controllers = self.ioregistry.find(entry_class="IOPCIDevice", property=("class-code", binascii.a2b_hex(Utilities.hexswap(hex(SATAController.CLASS_CODE)[2:].zfill(8)))))
nvme_controllers = itertools.chain.from_iterable(
[
# self.ioregistry.find(entry_class="IOPCIDevice", property=("class-code", binascii.a2b_hex(Utilities.hexswap(hex(NVMeController.CLASS_CODE)[2:].zfill(8))))),
self.ioregistry.find(entry_class="IOPCIDevice", children={"entry_class": "IONVMeController"}),
]
)
for device in sata_controllers:
self.storage.append(SATAController.from_ioregistry(device))
for device in nvme_controllers:
aspm = device.properties.get("pci-aspm-default", 0)
if isinstance(aspm, bytes):
aspm = int.from_bytes(aspm, byteorder="little")
if device.parent.parent.entry_class == "IOPCIDevice":
parent_aspm = device.parent.parent.properties.get("pci-aspm-default", 0)
if isinstance(parent_aspm, bytes):
parent_aspm = int.from_bytes(parent_aspm, byteorder="little")
else:
parent_aspm = None
controller = NVMeController.from_ioregistry(device)
controller.aspm = aspm
controller.parent_aspm = parent_aspm
if controller.vendor_id != 0x106B:
self.storage.append(controller)
def smbios_probe(self):
# Reported model
entry = next(self.ioregistry.find(name="Root")).children[0]
self.reported_model = entry.properties["model"].strip(b"\0").decode()
self.reported_board_id = entry.properties.get("board-id", entry.properties.get("target-type", b"")).strip(b"\0").decode()
# Real model
# TODO: We previously had logic for OC users using iMacPro1,1 with incorrect ExposeSensitiveData. Add logic?
self.real_model = Utilities.get_nvram("oem-product", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True) or self.reported_model
self.real_board_id = Utilities.get_nvram("oem-board", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True) or self.reported_board_id
# OCLP version
self.oclp_version = Utilities.get_nvram("OCLP-Version", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
def cpu_probe(self):
self.cpu = CPU(
subprocess.run("sysctl machdep.cpu.brand_string".split(), stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip(),
subprocess.run("sysctl machdep.cpu.features".split(), stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip().split(" "),
)

83
Resources/ioreg.py Normal file
View File

@@ -0,0 +1,83 @@
from __future__ import annotations
from dataclasses import dataclass
import plistlib
import subprocess
from typing import Generator
@dataclass
class IORegistryEntry:
name: str
entry_class: str
properties: dict
location: str
children: list[IORegistryEntry]
parent: IORegistryEntry
class IOReg:
def __init__(self):
self.ioreg = plistlib.loads(subprocess.run("ioreg -a -l".split(), stdout=subprocess.PIPE).stdout.strip())
self.tree = self.recurse(self.ioreg, None)
def recurse(self, entry, parent):
converted = IORegistryEntry(
entry["IORegistryEntryName"],
entry["IOObjectClass"],
{
i: v
for i, v in entry.items()
if i
not in [
"IOServiceBusyState",
"IOServiceBusyTime",
"IOServiceState",
"IORegistryEntryLocation",
"IORegistryEntryName",
"IORegistryEntryID",
"IOObjectClass",
"IORegistryEntryChildren",
"IOObjectRetainCount",
]
},
entry.get("IORegistryEntryLocation"),
[],
parent,
)
for i in entry.get("IORegistryEntryChildren", []):
converted.children.append(self.recurse(i, converted))
return converted
def parse_conditions(self, entry: IORegistryEntry, **kwargs):
conditions = []
if "parent" in kwargs:
conditions.append(self.parse_conditions(entry.parent, **kwargs["parent"]))
if "children" in kwargs:
conditions.append(any(self.parse_conditions(i, **kwargs["children"]) for i in entry.children))
if "name" in kwargs:
conditions.append(kwargs["name"] == entry.name)
if "entry_class" in kwargs:
conditions.append(kwargs["entry_class"] == entry.entry_class)
if "key" in kwargs:
conditions.append(kwargs["key"] in entry.properties)
if "property" in kwargs:
conditions.append(kwargs["property"][0] in entry.properties and entry.properties[kwargs["property"][0]] == kwargs["property"][1])
return all(conditions)
def find(self, root: IORegistryEntry = None, **kwargs) -> Generator[IORegistryEntry, None, None]:
if not root:
root = self.tree
if not kwargs:
return
if self.parse_conditions(root, **kwargs):
yield root
for i in root.children:
for j in self.find(i, **kwargs):
yield j

View File

@@ -1,303 +0,0 @@
[
{
"models": [
"MacBook5,1",
"MacBook5,2"
],
"patches": [
"WifiBCM94322",
"LegacyAudio",
"MissingSSE42",
"EthernetNvidia",
"LegacyGPU"
]
},
{
"models": [
"MacBook6,1",
"MacBook7,1"
],
"patches": [
"WifiBCM943224",
"LegacyAudio",
"MissingSSE42",
"EthernetNvidia",
"LegacyGPU"
]
},
{
"models": [
"MacBookAir2,1",
"MacBookAir3,1",
"MacBookAir3,2"
],
"patches": [
"WifiBCM94322",
"LegacyAudio",
"MissingSSE42",
"LegacyGPU"
]
},
{
"models": [
"MacBookAir4,1",
"MacBookAir4,2"
],
"patches": [
"WifiBCM94322",
"LegacyAudio",
"LegacyGPU"
]
},
{
"models": [
"MacBookAir5,1",
"MacBookAir5,2"
],
"patches": [
"WifiBCM94322"
]
},
{
"models": [
"MacBookPro3,1"
],
"patches": [
"WifiAtheros",
"EthernetMarvell",
"LegacyAudio",
"MissingSSE42",
"LegacyGPU"
]
},
{
"models": [
"MacBookPro4,1"
],
"patches": [
"WifiBCM94328",
"EthernetMarvell",
"LegacyAudio",
"MissingSSE42",
"LegacyGPU"
]
},
{
"models": [
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro5,4",
"MacBookPro5,5"
],
"patches": [
"WifiBCM94322",
"EthernetNvidia",
"LegacyAudio",
"MissingSSE42",
"LegacyGPU"
]
},
{
"models": [
"MacBookPro6,1",
"MacBookPro6,2"
],
"patches": [
"WifiBCM943224",
"EthernetBroadcom",
"LegacyAudio",
"LegacyGPU",
"PCIBridge"
]
},
{
"models": [
"MacBookPro7,1"
],
"patches": [
"WifiBCM94322",
"EthernetNvidia",
"LegacyAudio",
"MissingSSE42",
"LegacyGPU"
]
},
{
"models": [
"MacBookPro8,1",
"MacBookPro8,2",
"MacBookPro8,3"
],
"patches": [
"WifiBCM94331",
"EthernetBroadcom",
"LegacyAudio",
"LegacyGPU"
]
},
{
"models": [
"MacBookPro9,1",
"MacBookPro9,2",
"MacBookPro10,1",
"MacBookPro10,2"
],
"patches": [
"WifiBCM94331"
]
},
{
"models": [
"MacMini3,1",
"MacMini4,1"
],
"patches": [
"WifiBCM943224",
"EthernetNvidia",
"LegacyAudio",
"MissingSSE42",
"LegacyGPU"
]
},
{
"models": [
"Macmini5,1",
"Macmini5,2",
"Macmini5,3"
],
"patches": [
"WifiBCM94331",
"EthernetBroadcom",
"LegacyAudio",
"LegacyGPU"
]
},
{
"models": [
"MacMini6,1",
"MacMini6,2"
],
"patches": [
"WifiBCM94331"
]
},
{
"models": [
"iMac7,1",
"iMac8,1"
],
"patches": [
"WifiBCM94328",
"EthernetNvidia",
"LegacyAudio",
"MissingSSE42",
"LegacyGPU"
]
},
{
"models": [
"iMac9,1"
],
"patches": [
"WifiBCM94322",
"EthernetNvidia",
"LegacyAudio",
"MissingSSE42",
"LegacyGPU"
]
},
{
"models": [
"iMac10,1"
],
"patches": [
"WifiAtheros",
"EthernetNvidia",
"LegacyAudio",
"MissingSSE42",
"LegacyGPU"
]
},
{
"models": [
"iMac11,1",
"iMac11,2",
"iMac11,3"
],
"patches": [
"WifiAtheros",
"EthernetBroadcom",
"LegacyAudio",
"LegacyGPU",
"PCIBridge"
]
},
{
"models": [
"iMac12,1",
"iMac12,2"
],
"patches": [
"WifiAtheros",
"EthernetBroadcom",
"LegacyAudio",
"LegacyGPU"
]
},
{
"models": [
"iMac13,1",
"iMac13,2"
],
"patches": [
"WifiBCM94331"
]
},
{
"models": [
"iMac14,1",
"iMac14,2",
"iMac14,3"
],
"patches": []
},
{
"models": [
"MacPro3,1"
],
"patches": [
"WifiAtheros",
"LegacyAudio",
"MissingSSE42",
"SSEEmulator",
"DualSocket"
]
},
{
"models": [
"MacPro4,1"
],
"patches": [
"WifiAtheros",
"DualSocket"
]
},
{
"models": [
"MacPro5,1"
],
"patches": [
"WifiBCM94322",
"DualSocket"
]
},
{
"models": [
"Xserve3,1"
],
"patches": [
"DualSocket"
]
}
]

2
after_pyinstaller.sh Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/sh
cp launcher.sh dist/OpenCore-Patcher.app/Contents/MacOS/Launcher

14
docs/.markdownlint.json Normal file
View File

@@ -0,0 +1,14 @@
{
"default": true,
"line_length": false,
"no-alt-text": false,
"no-inline-html": false,
"header-increment": false,
"no-duplicate-header": false,
"fenced-code-language": false,
"no-emphasis-as-heading": false,
"single-title": false,
"ul-style": {
"style": "asterisk"
}
}

10
docs/.markdownlintignore Normal file
View File

@@ -0,0 +1,10 @@
/node_modules/
/_book/
*.json
/extra-files/
/.git/
/icons/
/images/
/styles/
/.github/
/.vuepress/

154
docs/.vuepress/config.js Executable file
View File

@@ -0,0 +1,154 @@
const {
description
} = require('../package')
module.exports = {
title: 'OpenCore Legacy Patcher',
head: [
['meta', {
name: 'theme-color',
content: '#3eaf7c'
}],
['meta', {
name: 'apple-mobile-web-app-capable',
content: 'yes'
}],
['meta', {
name: 'apple-mobile-web-app-status-bar-style',
content: 'black'
}],
["link", {
rel: "'stylesheet",
href: "/styles/website.css"
},]
],
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));
if (element && element.scrollIntoView) {
element.scrollIntoView();
}
}
});
}
}
},
markdown: {
extendMarkdown: md => {
md.use(require('markdown-it-multimd-table'), {
rowspan: true,
});
}
},
theme: 'vuepress-theme-succinct',
globalUIComponents: [
'ThemeManager'
],
themeConfig: {
lastUpdated: true,
repo: 'https://github.com/dortania/OpenCore-Legacy-Patcher/',
docsDir: 'docs',
docsBranch: 'main',
editLinks: true,
editLinkText: 'Help us improve this page!',
logo: 'homepage.png',
sidebar: [{
title: 'Introduction',
collapsable: false,
sidebarDepth: 1,
children: [
'START',
'MODELS',
['BENIFITS', 'Benefits and drawbacks'],
]
},
{
title: 'Setting up',
collapsable: false,
sidebarDepth: 1,
children: [
'INSTALLER',
'BUILD',
]
},
{
title: 'Installation',
collapsable: false,
sidebarDepth: 1,
children: [
'BOOT',
'POST-INSTALL',
]
},
{
title: 'macOS Monterey',
collapsable: false,
sidebarDepth: 1,
children: [
'MONTEREY-DROP',
]
},
{
title: 'Misc',
collapsable: false,
sidebarDepth: 1,
children: [
'ACCEL',
'TROUBLESHOOTING',
'DEBUG',
'UPDATE',
'UNINSTALL',
'ICNS',
'WINDOWS',
]
},
{
title: 'Credit',
collapsable: false,
sidebarDepth: 1,
children: [
'DONATE',
'LICENSE',
]
},
{
title: 'Documentation',
collapsable: false,
sidebarDepth: 1,
children: [
'TESTED',
'TERMS',
'HOW',
'PATCHEXPLAIN',
'CLI',
]
},
],
},
plugins: [
'@vuepress/plugin-back-to-top',
'vuepress-plugin-smooth-scroll',
['vuepress-plugin-medium-zoom',
{
selector: "img",
options: {
background: 'var(--bodyBgColor)'
}
}],
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 270 KiB

View File

@@ -0,0 +1,49 @@
/**
* Custom Styles here.
*
* refhttps://v1.vuepress.vuejs.org/config/#index-styl
*/
[data-theme='light']
--sideBgColor $sideBgColor
[data-theme='dark']
--sideBgColor $sideBgColorDark
--dropShadowColor $dropShadowColor
.home .hero img
max-width 450px!important
.navbar
filter drop-shadow(0px 1px 1px var(--dropShadowColor))
.sidebar
background-color var(--sideBgColor)
div[class*="language-"]
pre, pre[class*="language-"]
margin-top 0
html {
overflow-y: scroll;
overflow-x: hidden;
background-color: unset;
}
::-webkit-scrollbar {
width 0px
background transparent /* make scrollbar transparent */
}
tr
&:nth-child(1n)
background-color var(--bodyBgColor)
&:nth-child(2n)
background-color var(--sideBgColor)
.dropdown-wrapper .nav-dropdown
border 1px solid var(--sideBgColor)!important
background-color var(--sideBgColor)!important
box-shadow 0px 0px 2px var(--bodyBgColor)
right -12%!important

View File

@@ -0,0 +1,23 @@
/**
* Custom palette here.
*
* refhttps://v1.vuepress.vuejs.org/zh/config/#palette-styl
*/
$bodyFontSize = 16px
$fallbackTheme = 'dark'
$dropShadowColor = #111112
// Light Theme
$accentColor = #19b3e7
$textColor = #2c3e50
$bodyBgColor = #fff
$sideBgColor = #fff
$badgeTipColor = #caf2ff
// Dark Theme
$accentColorDark = #30BCD5
$textColorDark = #ccc
$bodyBgColorDark = #2d3033
$sideBgColorDark = #363b40
$badgeTipColorDark = #023e52

74
docs/ACCEL.md Normal file
View File

@@ -0,0 +1,74 @@
# Working Around Legacy Acceleration Issues
* [Downloading older non-Metal Apps](#downloading-older-non-metal-apps)
* [Unable to run Zoom](#unable-to-run-zoom)
* [Unable to grant special permissions to apps (ie. Camera Access to Zoom)](#unable-to-grant-special-permissions-to-apps-ie-camera-access-to-zoom)
* [Keyboard Backlight broken](#keyboard-backlight-broken)
* [Photos and Maps Apps Heavily Distorted](#photos-and-maps-apps-heavily-distorted)
* [Cannot press "Done" when editing a Sidebar Widget](#cannot-press-done-when-editing-a-sidebar-widget)
* [Wake from sleep heavily distorted on AMD/ATI in macOS 11.3 and newer](#wake-from-sleep-heavily-distorted-on-amd-ati-in-macos-11-3-and-newer)
* [Unable to achieve GPU Acceleration on 2011 15" and 17" MacBook Pros](#unable-to-achieve-gpu-acceleration-on-2011-15-and-17-macbook-pros)
The below page is for users experiencing issues with their overall usage of macOS Big Sur and the Legacy Graphics Acceleration patches. Note that the following GPUs currently do not have acceleration support in Big Sur:
* AMD/ATI TeraScale 2 - HD5/6000 series
* Intel 3rd and 4th Gen - GMA series
## Downloading older non-Metal Apps
Many Apple apps now have direct reliance on Metal for proper functioning, however legacy builds of these apps still do work in Big Sur. See below for archive of many apps such as Pages, iMovie, GarageBand.
* [Apple Apps for Non-Metal Macs](https://archive.org/details/apple-apps-for-non-metal-macs)
Note: This archive assumes that you own these copies of these apps through the Mac App Store, Dortania does not condone piracy
## Unable to run Zoom
Currently Zoom relies partially on Metal and so needs a small binary patch. Dosdude1 has provided a nice script for this:
* [Zoom Non-Metal Fix](http://dosdude1.com/catalina/zoomnonmetal-new.command.zip)
## Unable to grant special permissions to apps (ie. Camera Access to Zoom)
Due to the usage of `amfi_get_out_of_my_way=1`, macOS will fail to prompt users for special permissions upon application start as well as omit the entires in System Preferences. To work around this, we recommend users install [tccplus](https://github.com/jslegendre/tccplus) to manage permissions.
Example usage with Discord and microphone permissions:
```sh
# Open Terminal and run the following commands
cd ~/Downloads/
chmod +x tccplus
./tccplus add Microphone com.hnc.Discord
```
## Keyboard Backlight broken
Due to forcing `hidd` into spinning up with the fallback mode enabled, this can break the OS's recognition of backlight keyboards. Thankfully the drivers themselves still do operate so applications such as [LabTick](https://www.macupdate.com/app/mac/22151/lab-tick) are able to set the brightness manually.
## Photos and Maps Apps Heavily Distorted
Due to the Metal Backend, the enhanced color output of these apps seems to heavily break overall UI usage. To work around this, [users reported](https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/post-29870324) forcing the color output of their monitor from Billions to Millions of colors helped greatly. Apps easily allowing this customization are [SwitchResX](https://www.madrau.com), [ResXreme](https://macdownload.informer.com/resxtreme/) and [EasyRes](http://easyresapp.com).
## Cannot press "Done" when editing a Sidebar Widget
To work around this, simply press Tab to hover over and press spacebar to simulate a click.
## Wake from sleep heavily distorted on AMD/ATI in macOS 11.3 and newer
Unfortunately a very well known issue the community is investigating, current known solution is to simply downgrade to 11.2.3 or older until a proper fix can be found.
In the event Apple removes 11.2.3 from their catalogue, we've provided a mirror below:
* [Install macOS 11.2.3 20D91](https://archive.org/details/install-mac-os-11.2.3-20-d-91)
## Unable to achieve GPU Acceleration on 2011 15" and 17" MacBook Pros
Currently OpenCore Legacy Patcher doesn't have support for the TeraScale 2 series dGPUs found in the 15" and 17" models. Currently the best way to achieve graphics acceleration is to simply disable the dGPU and force the iGPU always.
The best way to achieve this is to boot Recovery (or Single User Mode if the dGPU refuses to function at all) and run the following command:
```sh
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%01%00%00%00
```
This will disable the dGPU and allow graphics acceleration in Big Sur. Note that external display outputs are directly routed to the dGPU and therefore can no longer be used. Solutions such as a [DisplayLink Adapters](https://www.displaylink.com/products/usb-adapters) can work around this limitation.

24
docs/BENIFITS.md Normal file
View File

@@ -0,0 +1,24 @@
# Benefits and Drawbacks between OpenCore Legacy Patcher and other patchers
With OpenCore Legacy Patcher we recommend users go through the below table to understand what the benefits and drawbacks are compared to other patchers. There are positive and negatives to each and we feel transparency is most important when patching another users machine. There should be no grey areas where users may be mislead.
* Note: [Patched Sur](https://github.com/BenSova/Patched-Sur) and [MicropatcherAutomator](https://github.com/moosethegoose2213/automator-for-barrykn-micropatcher) are iterations of [BarryKN's micropatcher](https://github.com/barrykn/big-sur-micropatcher) and therefore share many of the same benefits and limitations. Patched Sur is used for this comparison as it's the most common form of BarryKN's patcher users will find.
| Features | [OpenCore Legacy Patcher](https://github.com/dortania/OpenCore-Legacy-Patcher/) | [Patched Sur](https://github.com/BenSova/Patched-Sur) |
| :--- | :--- | :--- |
| Over The Air Updates | <span style="color:#30BCD5">Native System Preferences, additionally supports Deltas (~2GB) for Metal GPUs</span> | <span style="color:red">Inside Patcher Sur app (~12GB), only available when InstallAssistants release.</span> InstallAssistants generally available same day as System Preference updates, however developer betas will lag behind by 1 day compared to OTAs |
| FileVault | <span style="color:#30BCD5">Supported on Metal GPUs</span> | <span style="color:red">Not supported</span> |
| System Integrity Protection | <span style="color:#30BCD5">Fully enabled on Metal GPUs</span> | <span style="color:red">Disabled for early 2013 and older during the patching process and first boot afterwards, otherwise enabled</span> |
| APFS Snapshots | <span style="color:#30BCD5">Fully enabled</span> | <span style="color:red">Disabled</span> |
| User facing | <span style="color:red">TUI interface</span> | <span style="color:#30BCD5">SwiftUI interface, more user friendly</span> |
| Supported OSes | <span style="color:#30BCD5">10.7-11</span> | <span style="color:red">10.15-11</span> |
| Firmware Patching | <span style="color:#30BCD5">None required</span> | <span style="color:red">Required for models without native APFS support</span> |
| BootCamp Switching | <span style="color:red">Requires EFI Conversion for Start Disk support, otherwise still supported</span> | <span style="color:#30BCD5">Native</span> |
| Legacy GPU Acceleration | <span style="color:#30BCD5">In active development</span>, see Acceleration Progress Tracker: [Link](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) | <span style="color:red">Currently not researching</span> |
| El Capitan-era Wifi cards | <span style="color:#30BCD5">Supported</span> | <span style="colorred">Not supported</span> |
| WPA Wireless Support | <span style="color:#30BCD5">Supported</span> | <span style="color:red">Minority may experience issues on early 2013 and older Models</span> |
| Personal Hotspot Support | <span style="color:#30BCD5">Native</span> | <span style="color:red">Often requires extra steps to achieve on early 2013 and older Models</span> |
| HEVC/H.265 Support for Mac Pros and iMacs with Polaris+ GPUs | <span style="color:#30BCD5">Supported</span> | <span style="color:red">Not supported</span> |
| Big Sur-styled Boot Picker | <span style="color:#30BCD5">Available</span>, though as a shim to the original boot picker | <span style="color:red">Not available</span> |
| Hibernation Support | <span style="color:#30BCD5">Supports 3rd party SATA SSDs on 2011 and older models in addition to stock drives</span> | <span style="color:red">Only supports stock drives on 2011 and older models</span> |
| Sidecar Support | <span style="color:#30BCD5">Supports any Mac with Metal Intel iGPU</span>, artifacting way exhibited on high movement screen content | <span style="color:red">Not supported at all</span> |

21
docs/BOOT.md Normal file
View File

@@ -0,0 +1,21 @@
# Booting OpenCore and macOS
Now we finally get to boot OpenCore!
Reboot machine while holding `Option` to select the EFI Boot entry with the OpenCore icon (holding the `Control` key will make this the default boot entry):
* This will be the Mac Boot Picker
![](../images/efi-boot.png)
Now that you've loaded OpenCore, now select Install macOS!:
* This will be the OpenCore Picker
![](../images/oc-boot.png)
After plenty of verbose booting, you will reach the installer 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)
# Once installed and booting, head to [Post-Installation](./POST-INSTALL.md)

36
docs/BUILD.md Normal file
View File

@@ -0,0 +1,36 @@
# Building and installing OpenCore
Now that we have a macOS installer, lets now build our OpenCore configuration!
First Download the latest release:
* [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
Next, run the `OpenCore-Patcher.app`:
![](../images/first-run.png)
From here you have a couple important options:
* Build OpenCore
* Install OpenCore to USB/internal drive
* Change Model
* Patcher Settings
If you're patching for a different machine than you're running, please select "Change Model" and enter the updated SMBIOS. For more advanced users, you may also tweak the patcher's build settings via "Patcher Settings"
Now lets enter "Build OpenCore":
![](../images/build-efi.png)
The process should be quite quick to build, once finished you'll be plopped back to the main menu.
Next lets run `Install OpenCore to USB/internal drive`:
| Select Drive | Select EFI/FAT32 Partition |
| :--- | :--- |
| ![](../images/disk-start.png) | ![](../images/disk-efi.png) |
* If you have issues, please ensure you install OpenCore onto a FAT32 partition to ensure your Mac is able to boot it. You will need to format your drive as GUID/GPT in Disk Utility
# Once finished, head to [Booting OpenCore and macOS](./BOOT.md)

41
docs/CLI.md Normal file
View File

@@ -0,0 +1,41 @@
# Command Line Args
With OpenCore Legacy Patcher, we include an extra binary called [OCLP-CLI](https://github.com/dortania/OpenCore-Legacy-Patcher/releases/). The purpose of this binary is to easily run our OpenCore build process for other programs to hook onto. Below is documentation on currently supported arguments.
### Build Arguments
* **--build**: Build OpenCore
* **--model xxxx**: override default model detection
* ex. **--model iMac11,2**
* **--metal_gpu xxxx**: override default GPU detection (ie. Nvidia, AMD)
* **--metal_gpu Nvidia**
* **--smbios_spoof xxxx**: set spoofing mode, defaults to Minimal if no arg provided (ie. Minimal, Moderate, Advanced)
* ex. **--smbios_spoof Moderate**
* **--verbose**: enable verbose booting
* **--debug_oc**: enable debug OpenCore
* **--debug_kext**: enable debug kexts
* **--skip_wifi**: skip wifi patch
* **--hide_picker**: hide OpenCore's picker
* **--disable_sip**: disables SIP
* **--disable_smb**: disables SecureBootModel
* **--vault**: enable OpenCore vaulting
Example usage:
```bash
./OCLP-CLI --build --verbose --debug_oc --debug_kext --model iMac11,2
```
Note, when building OpenCore the output folder will be next to the OCLP binary as OpenCore-RELEASE or OpenCore-DEBUG folder.
### Patch System Arguments
* **--patch_sys_vol**: patches root volume with detected hardware
Example usage:
```bash
sudo ./OCLP-CLI --patch_sys_vol
```
Note, root volume patching needs to be run as sudo

48
docs/DEBUG.md Normal file
View File

@@ -0,0 +1,48 @@
# How to debug with OpenCore
For those who've hit an odd bug and unsure if it's user error or patcher, the below will tell you how to get more verbose debug information as well as logs to help [file issues with us](https://github.com/dortania/OpenCore-Legacy-Patcher/issues)
* For users who are less experienced, we recommend asking on the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN) for help.
## Debugging yourself
The easiest way to debug yourself is via Patcher Settings. Here there are many different settings however the 3 main options that will help are:
* "Enable Verbose Mode"
* "Enable OpenCore DEBUG"
* "Enable Kext DEBUG"
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.
## Obtaining OpenCore logs from disk
With "Enable OpenCore DEBUG" set, every boot there will be a .txt file generated in your disk. To grab these logs, [download and run MountEFI](https://github.com/corpnewt/MountEFI):
![](../images/mountefi.png)
Once you've mounted the EFI Partition of the drive you have macOS on, you should see some nice logs:
![](../images/logs-efi.png)
## Obtaining Kernel logs from macOS
With "Enable Kext DEBUG" set, every boot will now have much more detailed logs stored in the OS. To get these logs, simply run the below command:
```sh
sudo dmesg > ~/Desktop/DMESG.txt
```
From there, you'll have a log on your desktop.
## Filing an issue with us
Now that you have proper logs, you can now [file issues with us](https://github.com/dortania/OpenCore-Legacy-Patcher/issues). Reminder we want the following info:
* Model patching for (ie. MacBookPro10,1)
* Target OS (ie. macOS 11.2.3)
* Host OS (ie. macOS 10.15.7)
* Upload of your OpenCore Build Folder
* Upload of your OpenCore log (if applicable)
* Upload of your Kernel log (if applicable)
Additionally, please search whether the issue has been reported before. This avoids having duplicate issues.

35
docs/DONATE.md Normal file
View File

@@ -0,0 +1,35 @@
# 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.
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.
Main sections of help we'd appreciate:
* Donating any Mac you own
* Does require SSE4,1 CPU to test on Sierra and newer however
* Donating any spare SATA SSDs
* Having extra SSDs on hand allows us to quickly and easily test specific builds of macOS without having to wipe drives and reinstall as much
* Aiding by buying items in our Amazon Wishlist
* Currently we have a few members within Dortania testing so we recommend messaging the email listed below to see which member at the time would require something purchased the most
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 what to buy us something, please contact us at the following email:
* khronokernel@icloud.com
Current hardware we own:
| Model | CPU | GPU | Owner | Notes |
| :--- | :--- | :--- | :--- | :--- |
| MacBook7,1 | Penryn | GT320M | Dhinak | N/A |
| MacBook7,1 | Penryn | GT320M | Mykola | N/A |
| MacBookPro5,3 | Penryn | 9400M + 9600M | Dhinak | Display's partially broken |
| Macmini4,1 | Penryn | GT320M | Dhinak | N/A |
| iMac11,2 | Clarksdale | HD4670 | Mykola | N/A |
| MacPro3,1 | Penryn | HD5770, RX570, GT710 | Mykola | N/A |

9
docs/HOW.md Normal file
View File

@@ -0,0 +1,9 @@
# Boot Process with OpenCore Legacy Patcher
OpenCore Legacy Patcher itself is actually quite a "dumb" program, and essentially edits a config.plist file and moves files around, it actually has little logic regarding the boot process. The real magic of OCLP is [OpenCorePkg](https://github.com/acidanthera/OpenCorePkg), our back-end and what makes this patcher so powerful.
## Boot Process with OpenCore
To understand a bit more of how OpenCore is able revive older Macs in such a native-like way, we need to go over *how* OpenCore works with your Mac:
![](../images/oc-explained.png)

103
docs/ICNS.md Normal file
View File

@@ -0,0 +1,103 @@
# Creating custom icons for OpenCore and Mac Boot Picker
For users who want to customize your setup to be more personal, OpenCore does allow for custom icons and images in the boot picker.
* [Custom OpenCore icons](#custom-opencore-icons)
* [Custom Mac Boot Picker icons](#custom-mac-boot-picker-icons)
* [Installing updated icons](#installing-updated-icons)
# Custom OpenCore icons
To generate custom OpenCore icons, you'll need the following:
* Images in PNG format
* Each image, with the following res:
* Cursor — Mouse cursor (mandatory, up to 144x144).
* Selected — Selected item (mandatory, 144x144).
* Selector — Selecting item (mandatory, up to 144x40).
* Left — Scrolling left (mandatory, 40x40).
* Right — Scrolling right (mandatory, 40x40).
* HardDrive — Generic OS (mandatory, 128x128).
* Background — Centred background image. (Recommended max size 1920x1080)
* Apple — Apple OS (128x128).
* AppleRecv — Apple Recovery OS (128x128).
* AppleTM — Apple Time Machine (128x128).
* Windows — Windows (128x128).
* Other — Custom entry (see [Entries](https://dortania.github.io/docs/latest/Configuration.html), 128x128).
* 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)
Now `cd` this folder in terminal and run the following:
```sh
./icnspack Background.icns <insert_x1_image> <insert_x2_image>
```
Once done, you'll see your custom icon generated in `icnspack`'s folder:
![](../images/icnspack-done.png)
# Custom Mac Boot Picker icons
Custom boot picker icons is much more complicated on Legacy Macs, on late 2013+ Macs the [Custom OpenCore icons](#custom-opencore-icons) method will work just fine. However on many 2012 and older Macs, the icons generated will be incompatible with the firmware.
To generate legacy icons, you'll need the following:
* A machine running macOS 10.4 through 10.11
* Icon Composer.app (Requires Apple Developer Account for official download)
* Users without the developer account can find a mirrors here:
* [Icon Composer 10.6](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/main/docs/Icon-Composer-10.6.zip)
* [Icon Composer 10.11](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/main/docs/Icon-Composer-10.11.zip)
* PNG Image you wish to convert
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)
Once downloaded, open the disk image and you'll find Icon Composer.app:
![Graphics Open](../images/graphics-open.png)
Now run the app and simply drag the images to each section as so:
![](../images/icon-SL.png)
Now save and export the new icns
# Installing updated icons
To install, please ensure that Vault is disabled when you built OpenCore. If you're unsure, simply rebuild OpenCore with the Patcher setting "Vault" set to false.
* <span style="color:red"> Warning</span>: Editing your OpenCore EFI incorrectly can result in a bricked install. Please ensure you have a natively supported version of macOS installed to boot into in case of issues.
Now that you've verified 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)
Select the drive you installed OpenCore to and mount it.
* [Updating OpenCore icons](#updating-opencore-icons)
* [Updating Mac Boot Picker icons](#updating-mac-boot-picker-icons)
### Updating OpenCore icons
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)
Now reboot and you should see your updated icon(s)!
### Updating Mac Boot Picker icons
To update the Mac Boot Picker icons is actually quite simple, on the root of your drive simply drop the icon onto the root of the drive with the name `.VolumeIcon.icns`
![](../images/mac-icns-drive.png)
Now reboot and you'll see the new icon!

59
docs/INSTALLER.md Normal file
View File

@@ -0,0 +1,59 @@
# Download and build macOS Installers
* [Downloading](#downloading)
* [Building](#building)
This doc is centered around downloading and writing the macOS installer to a USB. If you're already familiar with how to do this, you can skip.
* Note: 16GB+ USB will be required for the installer
## Downloading
The simplest way to download macOS installs would be to use installinstallmacos:
```sh
[ ! -d ~/macOS-installer/ ] && mkdir ~/macOS-installer; cd ~/macOS-installer; [ ! -f ~/macOS-installer/installinstallmacos.py ] && curl -O https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py; sudo python installinstallmacos.py
```
* Note: On El Capitan (10.11) and older, you'll need to specify a catalog at the end of the command:
```
--catalogurl https://swscan.apple.com/content/catalogs/others/index-11-10.15-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog
```
![](../images/munki.png)
As you can see, we get a nice list of macOS installers. If you need a particular versions of macOS, you can select it by typing the number next to it. For this example we'll choose 10:
![](../images/munki-process.png)
This is going to take a while as we're downloading the entire 12GB+ macOS installer.
Once finished, you'll find in your `~/macOS-Installer/` folder a DMG containing the macOS Installer, called `Install_macOS_11.1-20C69.dmg` for example. Mount it and you'll find the installer application.
* Note: We recommend to move the Install macOS.app into the `/Applications` folder, as we'll be executing commands from there.
* Note 2: Running Cmd+Shift+G in Finder will allow you to easily jump to `~/macOS-installer`
![](../images/munki-done-2.png)
![](../images/munki-dmg.png)
## Building
Now we'll be formatting the USB to prep for both the macOS installer and OpenCore. We'll want to use macOS Extended (HFS+) with a GUID partition map(Using GUID is important for the patcher). This will create two partitions: the main `MyVolume` and a second called `EFI` which is used as a boot partition where your Mac's firmware will check for boot files. `EFI` partitions will be hidden by default, so don't worry if you don't immediately see them.
* Note: By default, Disk Utility only shows partitions press Cmd/Win+2 to show all devices (alternatively you can press the View button)
![Formatting the USB](../images/format-usb.png)
Next run the `createinstallmedia` command provided by [Apple](https://support.apple.com/en-us/HT201372). Note that the command is made for USB's formatted with the name `MyVolume`:
```sh
sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
```
* Note: You can also replace the `createinstallmedia` path with that of where your installer's located (same idea with the drive name).
![](../images/createinstallmedia.png)
# Once finished, head to [Building and installing OpenCore](./BUILD.md)

Binary file not shown.

BIN
docs/Icon-Composer-10.6.zip Normal file

Binary file not shown.

22
docs/LICENSE.md Normal file
View File

@@ -0,0 +1,22 @@
# OpenCore Legacy Patcher Licence
This patcher is made of multiple external applications from different people and organizations. See each program for their licensing:
* BSD 3-Clause "New" or "Revised" License
* [OpenCorePkg](https://github.com/acidanthera/OpenCorePkg/blob/master/LICENSE.txt)
* [Lilu](https://github.com/acidanthera/Lilu/blob/master/LICENSE.txt)
* [WhateverGreen](https://github.com/acidanthera/WhateverGreen/blob/master/LICENSE.txt)
* [AirportBrcmFixup](https://github.com/acidanthera/AirportBrcmFixup/blob/master/LICENSE.txt)
* [CPUFriend](https://github.com/acidanthera/CPUFriend/blob/master/LICENSE)
* [RestrictEvents](https://github.com/acidanthera/RestrictEvents/blob/master/LICENSE.txt)
* [NightShiftEnabler](https://github.com/cdf/NightShiftEnabler/blob/master/LICENSE.txt)
* [Innie](https://github.com/cdf/Innie/blob/master/LICENSE.txt)
* GPL 2.0
* [NVMeFix](https://github.com/acidanthera/NVMeFix/blob/master/LICENSE.txt)
* All rights reserved to respective authors
* [AAAMouSSE](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/) - Syncretic
* [telemetrap](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/post-28447707) - Syncretic
* [SidecarFixup](https://github.com/khronokernel/SidecarFixup) - Khronokernel
* Apple Binaries - Apple Inc.
Remaining files within OpenCore Legacy Patcher are copyrighted 2020-2021 Mykola Grymalyuk & Dhinak G. For integration into other projects, please request written permission.

137
docs/MODELS.md Normal file
View File

@@ -0,0 +1,137 @@
# Supported Models
Any hardware supporting SSE4.1 CPU and 64-Bit firmware work on this patcher. To check your hardware model, run the below command on the applicable machine in terminal:
```bash
system_profiler SPHardwareDataType | grep 'Model Identifier'
```
The below table will list all supported and unsupported functions of the patcher currently:
* [MacBook](#macbook)
* [MacBook Air](#macbook-air)
* [MacBook Pro](#macbook-pro)
* [Mac mini](#mac-mini)
* [iMac](#imac)
* [Mac Pro](#mac-pro)
* [Xserve](#xserve)
Regarding OS support, see below:
| Support Entry | Supported OSes | Description | Comment |
| :--- | :--- | :--- | :--- |
| HostOS | macOS 10.9 - macOS 11 | Refers to OSes where running OpenCore-Patcher.app are supported | Supports 10.7+ if [Python 3.9 or higher](https://www.python.org/downloads/) is manually installed, simply run the `OpenCore-Patcher.command` located in the repo |
| TargetOS | macOS 11 | 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. |
### 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 | <span style="color:#30BCD5"> YES </span> | - No GPU Acceleration in Mavericks and newer<br/>- No Keyboard and Trackpad<br/>- No USB |
| MacBook5,1 | Late 2008 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> |
| MacBook5,2 | Early 2009 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- Trackpad is recognized as mouse<br/>- Brightness control partially supported |
| MacBook6,1 | Late 2009 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> |
| MacBook7,1 | Mid-2010 | ^^ | ^^ |
### 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)) |
| MacBookAir3,1 | Late 2010 | ^^ | ^^ |
| MacBookAir3,2 | ^^ | ^^ | ^^ |
| MacBookAir4,1 | Mid-2011 | ^^ | ^^ |
| MacBookAir4,2 | ^^ | ^^ | ^^ |
| MacBookAir5,1 | Mid-2012 |^^ | <span style="color:green"> Everything is supported</span> |
| MacBookAir5,2 | ^^ | ^^ | ^^ |
### 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)) |
| MacBookPro5,1 | Late 2008 | ^^ | ^^ |
| MacBookPro5,2 | Early 2009 | ^^ | ^^ |
| MacBookPro5,3 | Mid-2009 | ^^ | ^^ |
| MacBookPro5,4 | ^^ | ^^ | ^^ |
| MacBookPro5,5 | ^^ | ^^ | ^^ |
| MacBookPro6,1 | Mid-2010 | ^^ | ^^ |
| MacBookPro6,2 | ^^ | ^^ | ^^ |
| MacBookPro7,1 | ^^ | ^^ | ^^ |
| MacBookPro8,1 | Early 2011 | ^^ | ^^ |
| 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 | ^^ | ^^ |
### 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)) |
| Macmini4,1 | Mid-2010 | ^^ | ^^ |
| Macmini5,1 | Mid-2011 | ^^ | ^^ |
| Macmini5,2 | ^^ | ^^ | ^^ |
| Macmini5,3 | ^^ | ^^ | ^^ |
| Macmini6,1 | Late 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
| Macmini6,2 | ^^ | ^^ | ^^ |
### 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/>- Brightness control partially supported on Nvidia GPUs, AMD unsupported<br/>- Stock Bluetooth 2.0 card non-functional |
| iMac8,1 | Early 2008 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)))<br/>- Brightness control partially supported on Nvidia GPUs, AMD unsupported |
| 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)) |
| iMac11,1 | ^^ | ^^ | ^^ |
| 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 | ^^ | ^^ | ^^ |
* 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)
### 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> | - Potential boot issues with built-in USB 1.1 ports (recommend using a USB 2.0 hub or dedicated USB PCIe controller)<br/>- Potential boot issues with stock Bluetooth card, recommend removing to avoid kernel panics |
| MacPro4,1 | Early 2009 | ^^ | <span style="color:green"> Everything is supported as long as GPU is Metal capable </span> |
| MacPro5,1 | Mid-2010, Mid-2012 | ^^ | ^^ |
### 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> | <span style="color:green"> Everything is supported as long as GPU is Metal capable </span> |
| Xserve3,1 | Early 2009 | ^^ | ^^ |
# Once you've verified your hardware is supported, head to [Download and build macOS Installers](./INSTALLER.md)

120
docs/MONTEREY-DROP.md Normal file
View File

@@ -0,0 +1,120 @@
# macOS Monterey Support
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.
Current models with full, unhindered support in OpenCore Legacy Patcher are the following:
* iMac13,x and newer
* iMac10,1-12,x included if Wireless Card and Bluetooth upgraded as well as Metal GPU
* Macmini7,1 and newer
* MacBook8,1 and newer
* MacBookAir6,x and newer
* MacBookPro11,x and newer
* MacPro3,1 and newer
* Requires Wireless Card and Bluetooth upgrade for 3,1-5,1 as well as Metal GPU
## Current Hardware Drawbacks:
Below is a list of hardware that currently has issues with Monterey:
* [Acceleration Support Dropped](#acceleration-support-dropped)
* [Metal GPUs](#metal-gpus)
* [Non-Metal GPUs](#non-metal-gpus)
* [Bluetooth Support Dropped](#bluetooth-support-dropped)
* [Wireless Support Dropped](#wireless-support-dropped)
## Acceleration Support Dropped
### Metal GPUs
* Intel HD4000 iGPUs lost support
By default these machines require root volume patches to gain graphics acceleration in Monterey. OpenCore Legacy Patcher supports readding support however SIP and FileVault can no longer be enabled due to root patching:
* Macmini6,x
* MacBookAir5,x
* MacBookPro9,x
* MacBookPro10,x
Note: Currently HD 4000 support in Monterey is not perfect, following are broken:
::: details HD 4000 Issues
* Photo Booth app crashing
* Safari sites crash if request camera access
* Full Screen recoding crashing with Screenshot app
* AirPlay to Mac crashes
* Full Screen apps crashes
* Disable "Hide menubar in Full Screen" to avoid crash
:::
### Non-Metal GPUs
* Non-Metal GPUs no longer have working acceleration patches:
* Intel Ironlake and Sandy Bridge iGPUs
* Nvidia Tesla and Fermi GPUs
* AMD TeraScale 1 and 2 GPUs
The following machines cannot gain graphics acceleration at all in Monterey, only basic framebuffer and brightness control (iMac8,1/9,1 and MacBook5,2 excluded):
* iMac12,x and older
* Macmini5,x and older
* MacBook7,1 and older
* MacBookAir4,x and older
* MacBookPro8,x and older
Note: iMac10,1 through iMac12,x can be upgraded with Metal GPUs, [see here for more info](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/)
## Bluetooth Support Dropped
* BRCM2046 and BRCM2070 Bluetooth Chipsets lost support
The following models lost Bluetooth support in macOS Monterey due to their legacy Bluetooth chipset:
* iMac12,x and older
* Macmini5,1 and older
* MacBook7,1 and older
* MacBookAir4,1 and older
* MacBookPro8,1 and older
* MacPro5,1 and older
::: details Dropped Firmwares
Here are the firmwares macOS Monterey Dropped (previously located within IOBluetoothUSBDFU.kext):
* 2046_820F.dfu
* 2046_8210.dfu
* 2046_8213.dfu
* 2046_8215.dfu
* 2046_8216.dfu
* 2046_8217.dfu
* 2070_821A.dfu
* 2070_821B.dfu
* 2070_8218.dfu
* 20702_821D.dfu
* 20702_821F.dfu
* 20702_828A.dfu
* 20702_828B.dfu
* 20702_828C.dfu
* 20702_8281.dfu
* 20702_8286.dfu
:::
Note: Native BRCM20702 and BRCM20703 are still fully support by OpenCore Legacy Patcher
## Wireless Support Dropped
* Broadcom BCM94328, BCM94322 and Atheros Wireless Chipsets lost support
The following models lost Bluetooth support in macOS Monterey due to their legacy Wireless chipset:
* iMac12,x and older
* Macmini3,1 and older
* MacBook5,x and older
* MacBookAir2,1 and older
* MacBookPro7,1 and older
* MacPro5,1 and older
Note: BCM943224, BCM94331, BCM94360 and BCM943602 are still fully support by OpenCore Legacy Patcher

301
docs/PATCHEXPLAIN.md Normal file
View File

@@ -0,0 +1,301 @@
# Explaining the patches in OpenCore Legacy Patcher
In our patcher, there are numerous patches used to ensure a stable system. Here we're going to go over what patches are used and why we recommend or even require them.
* [OpenCore Settings](#opencore-settings)
* [Injected Kexts](#injected-kexts)
* [On-Disk Patches](#on-disk-patches)
## OpenCore Settings
Below is a run down of the main logic OpenCore Legacy Patcher uses to gain native support in macOS. Note OpenCore's configuration is documented within [OpenCorePkg](https://github.com/acidanthera/OpenCorePkg) as well as an online version provided by us:
* [OpenCorePkg Online Docs](https://dortania.github.io/docs/latest/Configuration.html)
::: details Configuration Explanation
### ACPI -> Patch
* EHCx and XHC1 Patches
* Reason: Required for proper USB operation
* Logic: Avoids USB maps of newer models attaching and breaking USB port functionality
* Models: All models require
### Booter -> Quirks
* ForceBooterSignature
* Reason: Required to ensure Hibernation support
* Logic: Tricks boot.efi into thinking OpenCore is Apple's firmware
* Models: All models require
### DeviceProperties -> Add
* `PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)`
* `PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)`
* `PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)`
* `PciRoot(0x0)/Pci(0x1C,0x5)/Pci(0x0,0x0)`
* `PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)`
* Reason: Required to ensure Wifi works with full, native support
* Logic: Tricks AirPortBrcmNIC.kext into thinking our device is a BCM94360 (`14e4,43ba`)
* Models: Machines with BCM943224 and BCM94331 chipsets
* `PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)`
* `PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)`
* Reason: Required to ensure Brightness Control works on upgraded iMacs
* Logic: Sets AppleBackLight properties
* Models: iMac11,x and iMac12,x with upgraded Nvidia Metal GPUs
* `PciRoot(0x0)/Pci(0x2,0x0)`
* Reason: Disables internal GPU to fix sleep issues on upgrades iMacs
* Logic: Tricks macOS into thinking iGPU is a generic PCI device
* Models: iMac12,x with upgraded Metal GPUs
### Kernel -> Patch
* SMC Patch
* Reason: Required to avoid SMC Firmware updates
* Logic: Patches out `smc-version` in AppleSMC.kext, requires SMC-Spoof.kext for full functionality
* Models: All models require
* IOHIDFamily Patch
* Reason: Required for HID peripheral support in macOS on older hardware
* Logic: Tricks IOHIDFamily into thinking it's always booting recovery
* Models: [2010 and older](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/79ab028b0a039e97a528e0b99c876d95d9c2d41d/Resources/ModelArray.py#L310-L332)
### Kernel -> Quirks
* ThridPartyDrives
* Reason: Required to avoid Hibernation wake issues on 3rd party drives
* Logic: Patches AppleAHCIPort.kext into support
* Models: All models with standard SATA ports
* PanicNoKextDump
* Reason: Avoids kext dump on kernel panics, easier kernel debugging
* Logic: Patches Kernel to not dump dump unnecessary info
* Models: Only set when Verbose Boot is enabled by the user
### Misc -> Security
* SecureBootModel
* Reason: Required to ensure seamless OS updates with Big Sur
* Logic: Sets iMacPro1,1's Secure Enclave Identifier (j137)
* Models: All models require
### NVRAM -> Add
* `-v debug=0x100`
* Reason: Used to see debug info of macOS's kernel and kexts, and avoids reboots on panic
* Logic: Adds args to NVRAM
* Models: Only set when Verbose Boot is enabled by the user
* `-liludbgall`
* Reason: Enables Lilu and plugin debug logging
* Logic: Adds args to NVRAM
* Models: Only set when Kext DEBUG is enabled by the user
* `msgbuf=1048576`
* Reason: Sets message buffer size to 1MB, ensures boot logs are retained
* Logic: Adds args to NVRAM
* Models: Only set when Kext DEBUG is enabled by the user
* `agdpmod=pikera`
* Reason: Fixes GPU switching on MacBookPro9,x
* Logic: Adds args to NVRAM
* Models: MacBookPro9,x
* `shikigva=80 unfairgva=1`
* `shikigva=128 unfairgva=1 -wegtree`
* Reason: Fixes DRM support on models with upgraded AMD Metal GPUs
* Logic: Adds args to NVRAM
* Models: Models with upgraded AMD Metal GPUs
### UEFI -> ProtocolOverrides
* GopPassThrough
* Reason: Used for proper output on machines with UGA firmware but GOP GPU
* Logic: Provide GOP protocol instances on top of UGA protocol instances
* Models: MacPro3,1, MacBook4,1 iMac7,1-8,1
:::
## Injected Kext
Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into memory on boot-up.
::: details Injected Kext Explanation
### Acidanthera
* Lilu
* Reason: Patching engine for other kexts
* Models: All models require
* WhateverGreen
* Reason: Patches GPU Frameworks and kext to ensure proper support
* Models: All models require
* CPUFriend
* Reason: Patches IOx86PlatformPlugin to restore previous CPU profiles
* Models: 2012 and newer models
* AirportBrcmFixup
* Reason: Patches IO80211 and co to fix networking support for unsupported cards
* Models: BCM943224 and BCM94331
* RestrictEvents
* Reason: Disables memory errors on MacPro7,1
* Models: Mac Pros and Xserves
### Ethernet
* nForceEthernet
* Reason: Inject old Nvidia Ethernet kext to resolve networking in Catalina and newer
* Models: 2010 and older Nvidia Ethernet require
* MarvelYukonEthernet
* Reason: Inject old Marvel Ethernet kext to resolve networking in Catalina and newer
* Models: 2008 and older Marvel Ethernet require
* CatalinaBCM5701Ethernet
* Reason: Inject old Broadcom Ethernet kext to resolve networking in Big Sur
* Logic: Patch out conflicting symbols to not colide existing BCM5701Ethernet
* Models: 2011 and older Broadcom Ethernet require
### Maps
* USBMap
* Reason: Inject old USB map profiles to fix USB
* Models: All models require
### SSE
* AAMouSSE
* Reason: Translates SSE4.2 instructions to compatible code for SSE4,1 CPUs, required for AMD Metal drives
* Models: MacPro3,1
* telemetrap
* Reason: Ensures temelemtry.plugin doesn't run, required for SSE4,1 CPUs
* Models: Penryn CPUs
### Wifi
* IO80211HighSierra
* Reason: Re-inject Atheros wifi drivers from High Sierra
* Logic: Patch out conflicting symbols to not colide existing IO80211Family
* Models: Atheros cards
* IO80211Mojave
* Reason: Re-inject Broadcom wifi drivers from Mojave
* Logic: Patch out conflicting symbols to not colide existing IO80211Family
* Models: BCM94322
### Misc
* AppleBackLightFixup
* Reason: Patch AppleBacklight for iMacs with Nvidia Metal GPU upgrades
* Models: iMac11,x, iMac12,x with upgraded Nvidia Metal GPUs
* AppleIntelPIIXATA
* Reason: Fix IDE support on MacPro3,1
* Models: MacPro3,1
* AppleIntelMCEDisabler
* Reason: Fix dual socket support in Catalina and newer
* Models: Mac Pros and Xserves
* NightShiftEnabler
* Reason: Enables NightShift support on unsupported models
* Models: 2011 and older, MacBookPro9,x included
* SMC-Spoof
* Reason: Spoofs SMC version to 9.9999
* Models: All models require
:::
## On-Disk Patches
Unfortunately certain on-disk patches are required to achieve full functionality. Below is a breakdown of patches supported
Note, GPU Acceleration Patches are not public yet, the below section is simply documentation for easier research with new aids.
::: details Audio Patches
### Extensions
* AppleHDA
* Reason: Re-add High Sierra's AppleHDA to achieve audio support
* Models: 2011 and older Macs (excluding MacPro4,1+)
:::
::: details Acceleration Patches
### Extensions
#### General Patches
* IOSurface.kext
* Reason: Fixes immediate logout on login
* Logic: Downgrade to Catalina IOSurface
* Note: For AMD and Intel, additional `addMemoryRegion/removeMemoryRegion` patch added changing the first conditional jump to non conditional jump
* At Offset `0xdb52` and `0xdbc6`, replace following bytes with `0xeb`
#### Dropped Acceleration Binaries
* Nvidia Binaries
* GeForceGA.bundle
* GeForceTesla.kext
* Skip IOFree Panic - Mojave+
* At Offset `0x5CF9A` replace following bytes with `0xEB`
* Avoids `addMemoryRegion/removeMemoryRegion` calls
* At Offset `0x5527` and `0x77993`, replace following bytes with `0x909090909090`
* GeForceTeslaGLDriver.bundle
* GeForceTeslaVADriver.bundle
* NVDANV50HalTesla.kext
* NVDAResmanTesla.kext
* 0x1ea59a - 0x1ea5b3: nop
* Replace VSLGestalt to IOLockLock or any other known symbol of the same length.
* AMD/ATI Binaries
* AMD2400Controller.kext
* AMD2600Controller.kext
* AMD3800Controller.kext
* AMD4600Controller.kext
* AMD4800Controller.kext
* AMD5000Controller.kext
* AMD6000Controller.kext
* AMDFramebuffer.kext
* AMDLegacyFramebuffer.kext
* AMDLegacySupport.kext
* AMDRadeonVADriver.bundle
* AMDRadeonVADriver2.bundle
* AMDRadeonX3000.kext
* AMDRadeonX3000GLDriver.bundle
* AMDShared.bundle
* AMDSupport.kext
* ATIRadeonX2000.kext
* ATIRadeonX2000GA.plugin
* ATIRadeonX2000GLDriver.bundle
* ATIRadeonX2000VADriver.bundle
* Intel 5th Gen Binaries
* AppleIntelFramebufferAzul.kext
* AppleIntelFramebufferCapri.kext
* AppleIntelHDGraphics.kext
* AppleIntelHDGraphicsFB.kext
* AppleIntelHDGraphicsGA.plugin
* AppleIntelHDGraphicsGLDriver.bundle
* AppleIntelHDGraphicsVADriver.bundle
* Intel 6th Gen Binaries
* AppleIntelHD3000Graphics.kext
* AppleIntelHD3000GraphicsGA.plugin
* AppleIntelHD3000GraphicsGLDriver.bundle
* AppleIntelHD3000GraphicsVADriver.bundle
* AppleIntelSNBGraphicsFB.kext
* Board ID Patch
* Replace original Board ID with updated model
* AppleIntelSNBVA.bundle
### Frameworks
* CoreDisplay.framework
* Logic: Copied from Mojave, heavy modifications/shims
* IOSurface.framework
* OpenGL.framework
* Logic: Copied from Mojave
### PrivateFrameworks
* GPUSupport.framework
* Logic: Copied from Mojave
* SkyLight.framework
* Logic: Copied from Mojave, heavy modifications/shims
### LaunchDaemons
* HiddHack.plist
* Reason: Fixes unresponsive input when patching Skylight
* Logic: Forces `hidd` to register events, as Skylight handles them by default in Big Sur
:::

54
docs/POST-INSTALL.md Normal file
View File

@@ -0,0 +1,54 @@
# Post-Installation
* [Booting without USB drive](#booting-without-usb-drive)
* [Booting seamlessly without Verbose or OpenCore Picker](#booting-seamlessly-without-verbose-or-opencore-picker)
* [Applying Post Install Volume Patches](#applying-post-install-volume-patches)
## Booting without USB drive
Once you've installed macOS through OpenCore, you can boot up and go through the regular install process. To boot without the USB drive plugged in is quite simple:
* Download OpenCore Legacy Patcher
* Change Patcher settings as you'd like
* Build OpenCore again
* Install OpenCore to internal drive
* Reboot holding Option, and select the internal EFI
And voila! No more USB drive required
## Booting seamlessly without Verbose or OpenCore Picker
To do this, run the OpenCore Patcher and head to Patcher Settings:
![](../images/settings.png)
Here you can change different patcher settings, however the main interest is:
* Set ShowPicker Mode
Once you've toggled them both 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, then you can release the "ESC" key when you see the cursor arrow at the top left.
## Enabling SIP
For many users, SIP will be enabled by default on build. For Intel HD 4000 users, you may have noticed that SIP is 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.
Note: Machines with non-Metal GPUs cannot enable SIP in Big Sur either due to patched root volume
## Applying Post Install Volume Patches
**Note**: For users who need Post-Install Volume patches for legacy video acceleration support, you **must** disable the following settings in "Patcher Settings" when building and installing your new OpenCore:
* SIP: Disabled
* SecureBootModel: Disabled
Once set, rebuild OpenCore, install to drive and reboot. Then, Post-Install Volume patches will run just fine
To apply the Post-Install Volume patches [to test out the Beta Graphics Acceleration Patches system](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108), select option #3 as shown below:
![](../images/root-patch.png)
And go ahead to option #1 and let the OCLP patcher apply the needed legacy video patches.
![](../images/root-patcher-2.png)
Reboot your system and check out the now working graphics acceleration on your legacy system. This is still Beta software.

20
docs/README.md Normal file
View File

@@ -0,0 +1,20 @@
---
home: true
heroImage: /homepage.png
heroText: OpenCore Legacy Patcher
actionText: Getting Started→
actionLink: START.md
meta:
- name: description
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. You're just as secure as a supported Mac
- title: Native OTA updates
details: Install updates the moment they come out just like on a supported Mac, and no more 12GB+ updates.
- title: Zero firmware patching
details: No need to patch APFS ROM support, all protocol upgrades are done in memory and never permanent.
footer: Copyright © Dortania 2020-2021
---

31
docs/START.md Normal file
View File

@@ -0,0 +1,31 @@
# What is OpenCore?
This is a sophisticated boot loader used to inject and patch data in memory, instead of on disk. This means we're able to get near-native experience on many unsupported Macs with Metal GPUs. This includes many of the long desired features of other patchers such as:
* System Integrity Protection, FileVault 2, .im4m Secure Boot and Vaulting
* Native OTA OS DELTA updates on all Macs
* Recovery OS, Safe Mode and Single-user Mode booting
* WPA Wifi and Personal Hotspot support
While many PC users from the Hackintosh community are familiar with OpenCore, OpenCore was designed as Mac and PC agnostic ensuring both platforms can use it easily. And with OpenCore Legacy Patcher, we help automate the process making running with OpenCore that much easier.
For advanced troubleshooting, we highly recommend users check out the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN) as this is generally the quickest way to get a hold of us developers and get help from the community.
For those who wish to support this patcher, please see the [Supporting the Patcher page](./DONATE.md)
## Patcher Warnings
Since this patcher tricks macOS into thinking you're running a newer Mac, certain functionality may be broken:
* Boot Camp Assistant.app
* We recommend following our [guide on getting a UEFI Windows Install working](./WINDOWS.md). Legacy MBR Based installs won't show up in OpenCore
## How do I get started?
1. The first step of ensuring whether your model is support is checking here:
* [Supported Models](./MODELS.md)
2. [Download and build macOS Installer](./INSTALLER.md)
3. [Run the `OpenCore-Patcher.app`](./BUILD.md)
4. [Reboot and boot OpenCore](./BOOT.md)

39
docs/TERMS.md Normal file
View File

@@ -0,0 +1,39 @@
# OpenCore Patcher Terminology
With OpenCore Legacy Patcher, we use a lot of different terms to refer to hardware including `SSE4.1`, `32-Bit Firmware`, etc. This page is to help users understand what all these confusing words mean.
# Terminology
Term | Description
--- | ---
**macOS** | Apple's own UNIX based OS used for Mac machines and "What makes a Mac a Mac".
**Windows** | Microsoft's proprietary OS that is used and supported on a wide range of devices
**Linux** | Family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution. Note that while macOS and Linux may be UNIX-based, they're vastly different.
**Bootloader** | Piece of software that loads an OS, usually made by the OS creators. OpenCore is technically not a bootloader per se (see boot manager explanation down below). Apple's Boot.efi would be the actual boot loader in a Mac.
**Boot Manager** | Piece of software that manages bootloaders we have many of these: Clover, systemd-boot, OpenCore, rEFInd, rEFIt... These are generally seen as prepping the system for the actual boot loader.
---
Term | Description
--- | ---
**OpenCore** | The new hotness on the scene, made with security in mind by the [Acidanthera team](https://github.com/acidanthera), has faster booting and lighter weight than previous boot managers. Supports many native Mac features such as SIP, FileVault, Secure Boot, etc
**ACPI** | Tables defined in your firmware defining your hardware and different methods, tied directly to how IOKit/IOService handles device setup
**NVRAM** | Non-volitile storage, where many variables are stored including default boot options, Hibernation keys, Secure Boot information, etc
---
Term | Description
--- | ---
**XNU** | Also known as **X** is **N**ot **U**nix, XNU is referred to as macOS's "kernel" and the heart of what makes macOS tick
**Kexts** | Also known as **K**ernel **Ext**ensions, are macOS's drivers. They're used to perform different tasks like device drivers or for a different purpose (in this patcher) like patching the OS, injecting information or running tasks.
**KernelCollection** | Also known as the ImmutableKernel and PrelinkedKernel, this is a bundle of the kernel(XNU) and kernel extensions(Kexts) that we use to boot macOS. This is also what OpenCore patches in memory to allow us to have a seamless experience <br/>- PrelinkedKernel: Default caching system since 10.7 <br/>- ImmutableKernel: Secure Boot based caching system since 10.13 <br/>- KernelCollection: Merge of both Prelinked and ImmutableKernel's since macOS 11, Big Sur
**IOKit** | Backbone of how Kernel Extentions (Kexts) probe and attach onto hardware, starts quickly after kernel initates
**WindowServer** | Backbone of the GUI interface in macOS, one of the first userfacing userspace programs to kick-in
**OTA** | Short for **O**ver **T**he **A**ir, refers to native OS updates via System Preferences like a supported Mac
**DELTA** | Often used with OTA, refers to OS updates that much smaller than full installers (generally ~3GB), note Deltas require the root volume to be unmotified otherwise ~12GB updates will occur.
---
Term | Description
--- | ---
**EFI** | It can denote two things: <br/>- Mac's firmware, which is the same as UEFI, but pretty modified for Macs only, so not so "Universal" <br/>- The partition on your hard drive that stores software read by the UEFI to load OSes (like the Windows bootloader) or UEFI Applications (like OpenCore), it's FAT32 formatted and has an ID type of EF00 (in hex). It can be named ESP or SYSTEM, and it's usually from 100MB to 400MB in size but the size doesn't reflect upon anything.
**HFS+** | Also known as MacOS Journaled, this was the default macOS drive format up until macOS 10.13, format was designed around spinning disks
**APFS** | This was the default macOS drive from macOS 10.13 and onwards for SSDs, and standard for all drives in Mojave. Format was designed around SSDs primarily.
**32 and 64-Bit CPU** | The bit number of a CPU determines how much data a CPU can address. <br/>- 32-Bit CPUs were only supported up-to Mac OS X 10.6, Snow Leopard.
**32-Bit Firmware** | The bit number of a Firmware determines how much data the firmware can address. In some older Macs, it's common to have a 64-Bit CPU can have a 32-Bit firmware<br/>- 32-Bit Firmwares were only supported up-to Mac OS X 10.7, Lion.
**SSE Instructions** | Also known as **S**IMD **S**ingle-Precision Floating-Point **I**nstructions, these are defined as instruction sets supported by your CPU. In macOS, there are a certain number of instruction sets required for normal operation: <br/>- SSE3: Required for all Intel CPUs since Mac OS X 10.4, Tiger <br/>- SSSE3: Required for all Intel 64-Bit CPUs since Mac OS X 10.6, Snow Leopard <br/>- SSE4.1: Required for all Intel CPUs since macOS 10.12, Sierra
---

118
docs/TESTED.md Normal file
View File

@@ -0,0 +1,118 @@
# 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.
### MacBook
| SMBIOS | Tested | Tester | Comment |
| :--- | :--- | :--- | :--- |
| MacBook4,1 | <span style="color:#30BCD5"> YES </span> | Mami | - Stock Model<br/>- Couldn't install due to broke USB support |
| MacBook5,1 | ^^ | air.man | - Stock Model<br/>- Patcher version 0.0.19 |
| MacBook5,2 | ^^ | Finder352 | ^^ |
| MacBook6,1 | ^^ | Finder352 | ^^ |
| MacBook7,1 | ^^ | MykolaG | ^^ |
| ^^ | ^^ | Jazzzny | ^^ |
| ^^ | ^^ | AlexSakha67 | - Stock Model<br/>- Patcher version 0.0.20 |
### MacBook Air
| SMBIOS | Tested | Tester | Comment |
| :--- | :--- | :--- | :--- |
| MacBookAir2,1 | No reports | N/A | N/A |
| MacBookAir3,1 | ^^ | ^^ | ^^ |
| MacBookAir3,2 | <span style="color:#30BCD5"> YES </span> | houser42 | - Stock model <br/>- Patcher version unknown |
| MacBookAir4,1 | No reports | N/A | N/A |
| MacBookAir4,2 | ^^ | ^^ | ^^ |
| MacBookAir5,1 | <span style="color:#30BCD5"> YES </span> | Ausdauersportler | - Stock Model<br/>- Patcher version 0.0.9 |
| ^^ | ^^ | webg3 | Stock Model |
| MacBookAir5,2 | ^^ | Bab-droid | - Stock Model<br/>- Patcher version 0.0.19 |
| ^^ | ^^ | K-Hobert | - Stock model <br/>- Patcher version unknown |
| ^^ | ^^ | cboukouv | - Stock model <br/>- Patcher version 0.0.21 |
### MacBook Pro
| SMBIOS | Tested | Tester | Comment |
| :--- | :--- | :--- | :--- |
| MacBookPro4,1 | <span style="color:#30BCD5"> YES </span> | cboukouv | - Stock model <br/>- Patcher version 0.0.19 |
| MacBookPro5,1 | ^^ | GURU_Jasho#5736 | - Stock model <br/>- Patcher version 0.0.21 |
| MacBookPro5,2 | ^^ | hvds | ^^ |
| MacBookPro5,3 | ^^ | kommtzeitkonrad | - Stock model <br/>- Patcher version 0.0.22 |
| MacBookPro5,4 | No reports | N/A | N/A |
| MacBookPro5,5 | ^^ | ^^ | ^^ |
| MacBookPro6,1 | ^^ | ^^ | ^^ |
| MacBookPro6,2 | <span style="color:#30BCD5"> YES </span> | Jakeluke | - Stock model, dGPU broken <br/>- Patcher version unknown |
| MacBookPro7,1 | ^^ | fussel132 | - Stock model <br/>-Patcher version v0.1.2 |
| MacBookPro8,1 | ^^ | AvaQueen | - Stock model <br/>- Patcher version 0.0.19 |
| MacBookPro8,2 | ^^ | air.man | - Stock model, dGPU disabled <br/>- Patcher version 0.0.22 |
| ^^ | ^^ | cboukouv | - Stock model <br/>- Patcher version 0.0.19 |
| MacBookPro8,3 | ^^ | lulujyc | - Stock model, dGPU disabled <br/>- Patcher version 0.1.4 |
| MacBookPro9,1 | <span style="color:#30BCD5"> YES </span> | jbdamiano | - Stock model <br/>- Patcher version 0.0.19 |
| ^^ | ^^ | dennes544 | ^^|
| ^^ | ^^ | cgrazy | ^^ |
| ^^ | ^^ | LIPA85 | ^^ |
| MacBookPro9,2 | ^^ | alexx17xx | - Stock model <br/>- Patcher version 0.0.19 |
| ^^ | ^^ | Arvxistanx | ^^ |
| ^^ | ^^ | CyberDroid1 | - Stock model<br/>- Patcher version 0.0.16 |
| ^^ | ^^ | woefi | - BCM94331CAX upgrade<br/>- Patcher version 0.0.13 |
| ^^ | ^^ | whgmkeller | - Stock model<br/>- Patcher version 0.0.11 |
| ^^ | ^^ | vinaypundith | - Patcher version 0.0.7 |
| MacBookPro10,1 | ^^ | traviswparker | - Stock model <br/>- Patcher version 0.0.14 |
| ^^ | ^^ | il-rollino | - Upgraded BCM94360CSAX <br/>- Patcher version 0.0.21 |
| MacBookPro10,2 | No reports | N/A | N/A |
### Mac mini
| SMBIOS | Tested | Tester | Comment |
| :--- | :--- | :--- | :--- |
| Macmini3,1 | No reports | N/A | N/A |
| Macmini4,1 | ^^ | ^^ | ^^ |
| Macmini5,1 | ^^ | ^^ | ^^ |
| Macmini5,2 | ^^ | ^^ | ^^ |
| Macmini5,3 | ^^ | ^^ | ^^ |
| Macmini6,1 | <span style="color:#30BCD5"> YES </span> | cicofz | - Stock model <br/>- Patcher version 0.0.21 |
| ^^ | ^^ | Stig124 | - Stock model <br/>- Patcher version 0.0.19 |
| ^^ | ^^ | mwidjaya | - Stock model <br/>- Patcher version 0.0.18 |
| Macmini6,2 | ^^ | Shelbs | - Stock model <br/>- Patcher version 0.0.16 |
### iMac
| SMBIOS | Tested | Tester | Comment |
| :--- | :--- | :--- | :--- |
| iMac7,1 | No reports | N/A | N/A |
| iMac8,1 | <span style="color:#30BCD5"> YES </span> | EduCovas | - Stock Model<br/>- Patcher version 0.0.21 |
| iMac9,1 | ^^ | Allanrfox | ^^ |
| ^^ | ^^ | Jakeluke | ^^ |
| iMac10,1 | ^^ | Ausdauersportler | - Upgraded with WX4150 |
| iMac11,1 | ^^ | internetzel | - Upgraded with RX580 mobile |
| iMac11,2 | ^^ | MykolaG | - Stock Model<br/>- Patcher version 0.0.21 |
| ^^ | ^^ | iMac-iPad | - Stock Model<br/>- Patcher version 0.0.21 |
| ^^ | ^^ | vinaypundith | - Patcher version 0.0.19 |
| iMac11,3 | ^^ | Ausdauersportler | - Upgraded with Polaris GPU<br/>- Upgraded BCM943602CDP<br/>- Patcher version 0.0.21 |
| iMac12,1 | ^^ | shnockdu | - Upgraded with Kepler GPU<br/>- Patcher version 0.0.21 |
| ^^ | ^^ | StephN999 | - Upgraded WX4150 GPU<br/>- Upgraded BCM94360CD<br/>- Patcher version 0.0.21 |
| iMac12,2 | ^^ | Ausdauersportler | - Upgraded with Polaris GPU<br/>- Upgraded BCM943602CDP<br/>- Patcher version 0.0.21 |
| iMac13,1 | ^^ | alexx17xx | - Stock Model<br/>- Patcher version 0.0.19 |
| iMac13,2 | ^^ | Alain13 | ^^ |
| ^^ | ^^ | algernonpule | - Stock Model<br/>- Patcher version 0.0.19 |
| iMac13,3 | No reports | N/A | N/A |
| iMac14,1 | <span style="color:#30BCD5"> YES </span> | woefi | - Upgraded NVMe<br/>- Patcher version 0.0.21 |
| ^^ | ^^ | mikeboss | - Stock Model<br/>- Patcher version 0.0.19 |
| iMac14,2 | ^^ | OKonnel | - Stock Model<br/>- Patcher version 0.0.22 |
| ^^ | ^^ | mibaxx | - Stock Model<br/>- Patcher version 0.0.21 |
| iMac14,3 | No reports | N/A | N/A |
### Mac Pro
| SMBIOS | Tested | Tester | Comment |
| :--- | :--- | :--- | :--- |
| MacPro3,1 | <span style="color:#30BCD5"> YES </span> | MykolaG | - Upgraded with RX 470 and BCM94360CD<br/>- Stock Bluetooth card removed<br/>- Patcher version 0.1.6 |
| ^^ | ^^ | christiann | - Upgraded with RX 560 and BCM94322<br/>- Stock Bluetooth card removed<br/>- Patcher version 0.0.21 |
| ^^ | ^^ | gw463 | - Upgraded GTX 680<br/>- Upgraded BCM94360<br/>- Patcher version 0.0.22 |
| ^^ | ^^ | AlexSakha67 | - Upgraded R9 280<br/>- Patcher version 0.0.20 |
| ^^ | ^^ | nekton1 | - Upgraded GTX 680<br/>- Patcher version 0.0.20 |
| ^^ | ^^ | Pri-est | - Patcher version 0.0.9 |
| ^^ | ^^ | vinaypundith | - Upgraded GTX 680<br/>- Upgraded BCM94360CD<br/>- Patcher version 0.0.6 |
| MacPro4,1 | ^^ | ^^ | - Patcher version 0.0.9 |
| MacPro5,1 | ^^ | woefi | - Upgraded with RX 580<br/>- Patcher version 0.0.21 |
| ^^ | ^^ | Mabrouk Oscar | - Patcher version 0.0.21 |
| ^^ | ^^ | astuffedtiger | - MacPro4,1 flashed to 5,1<br/>- Patcher version 0.0.18 |

70
docs/TROUBLESHOOTING.md Normal file
View File

@@ -0,0 +1,70 @@
# Troubleshooting
Here are some common errors users may experience while using this patcher:
* [Stuck on `This version of Mac OS X is not supported on this platform`](#stuck-on-this-version-of-mac-os-x-is-not-supported-on-this-platform)
* [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)
* [Booting with a non-flashed GPU](#booting-with-a-non-flashed-gpu)
* [How to Boot Big Sur Recovery](#how-to-boot-big-sur-recovery)
* [Stuck on "Your Mac needs a firmware update"](#stuck-on-your-mac-needs-a-firmware-update)
* [No Brightness Control](#no-brightness-control)
## Stuck on `This version of Mac OS X is not supported on this platform`
This means macOS has detected a SMBIOS it does not support, to resolve this ensure you're booting OpenCore **before** the macOS installer in the boot picker. Reminder the option will be called `EFI Boot`
Once you've booted OpenCore at least once, your hardware should now auto boot it until either NVRAM reset or you remove the drive with OpenCore installed.
## Cannot boot macOS without the USB
By default, the OpenCore Patcher won't install OpenCore onto the internal drive itself during installs. Instead, you'll need to either [manually transfer](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html) OpenCore to the internal drive's EFI or run this patcher's Option 2 again but 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, simply uninstall OpenCore and [reset NVRAM](https://support.apple.com/en-mide/HT201255).
* Note: Machines with modded root volumes will also result in infinite recovery 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), temporary fix is to disable Hibernation:
```
sudo pmset -a hibernatemode 0
```
## Booting with a non-flashed GPU
For Mac Pro, Xserve and iMac users with non-flashed GPUs, you can still easily boot OpenCore and view the entire boot process. To do so, make sure SIP is disabled(to allow NVRAM write access) and run the following:
```sh
sudo bless --verbose --file /Volumes/VOLNAME/EFI/OC/OpenCore.efi --folder /Volumes/VOLNAME/EFI/OC --setBoot
```
* Note you will need to replace `VOLNAME` with the Volume name of your USB or hard drive with OpenCore
* Note 2: Once done, you can re-enable SIP
* Note 3: The EFI partition OpenCore was installed on must be mounted, if it's unmounted simply rerun "Install OpenCore to drive"
Once you boot OpenCore for the first time, LauncherOption will install itself as the top boot priority making OpenCore always launch. Combined with `RequestBootVar`, all boot options must go through OpenCore ensuring seamless usage even with OS installation and updates.
## How to Boot Big Sur Recovery
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" 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 the firmware to not have full APFS support. To resolve is quite simple, when building OpenCore head to "Patcher Settings" and enable "Moderate SMBIOS Patching" or higher. This will ensure that the firmware reported will show as supporting 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.
To work-around, we recommend user try out the below app:
* [Brightness Slider](https://actproductions.net/free-apps/brightness-slider/)

15
docs/UNINSTALL.md Normal file
View File

@@ -0,0 +1,15 @@
# Uninstalling OpenCore
To remove OpenCore is actually quite simply:
1. Remove OpenCore either from the USB or internal drive
* You'll need to mount the drive's EFI partition, and delete the EFI/OC folder as well as the System folder
* Note **do not** delete the entire EFI folder, this will likely break any existing Windows and Linux installations
* [See here for example how to mount](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html)
2. Reset NVRAM
* [Reset NVRAM or PRAM on your Mac](https://support.apple.com/HT204063)
Know 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.

22
docs/UPDATE.md Normal file
View File

@@ -0,0 +1,22 @@
# Updating OpenCore and Co
With OpenCore Legacy Patcher, generally there's very little reason for users to update the OpenCore installed on their machine unless you feel there's a benefit with new versions for your setup.
For those who do wish to update, it's actually quite easy. Simply [download the latest release](https://github.com/dortania/OpenCore-Legacy-Patcher/releases) and rerun the patcher:
![](../images/first-run.png)
Then simply rebuild your OpenCore build and install again. Then voila, OpenCore is updated!
To check what version of OpenCore and Patcher version you're currently running, you can run the following in 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 we're running a RELEASE version of OpenCore 0.6.8 built on March 27th, 2021 with Patcher Version 0.0.20!

88
docs/WINDOWS.md Normal file
View File

@@ -0,0 +1,88 @@
# Installing UEFI Windows 10
* Guide based off of [cdf's Mac Pro Thread](https://forums.macrumors.com/threads/opencore-on-the-mac-pro.2207814/)
To install UEFI is actually super simple! All it requires is to boot Windows' Installer through OpenCore to force a UEFI setup. Here we'll be going a bit more step by step in the process including partitioning and such.
* Note: UEFI Windows is generally quite usable for Arrendale and newer models, however machines with Penryn CPUs may experience issues
* Recommended Models:
* MacBookAir4,x and newer
* MacBookPro8,x and newer
* Macmini5,x and newer
* iMac11,x and newer
* MacPro4,1 and newer
* Xserve3,1 and newer
Once you know your model is supported, you're good to go with the rest of this guide
## Disk Formatting
To start off, we'll need the following:
* An 8GB USB drive for the Windows Installer
* Minimum of 30GB of free space on whatever drive you want to install Windows too
First, lets format out drives as follows:
### USB Drive Formatting
Open Disk Utility in macOS and format the USB Drive as ExFat with MBR Scheme:
![](../images/windows-mbr-format.png)
### Disk Formatting
Next, grab the drive you wish to install Windows on and partition it as ExFat (If formatting entire drive, ensure it's GUID Partition Table):
![](../images/windows-partition-1.png)
If you plan to use the same hard drive for macOS and Windows, we recommend creating a dedicated partition just for OpenCore. This lets Windows have the ESP to itself and OpenCore can stay within it's own bubble.
Recommended size is 200MB and the partition format **must** be FAT32 for OpenCore to operate correctly. You will next want to install OpenCore onto the new partition, either moving from the ESP with [MountEFI](https://github.com/corpnewt/MountEFI) or rerunning the OpenCore-Patcher.app
* Note: For machines with dedicated drives for Windows, having different partitions for OpenCore is not required
* Note 2: 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)
## Creating the Installer
First up, lets grab Windows's Installer at the below link:
* [Download Windows 10 Disc Image (ISO File)](https://www.microsoft.com/en-ca/software-download/windows10ISO)
Next, mount the Windows 10 ISO:
![](../images/windows-iso.png)
The open terminal and run `rsync` on the USB drive (replace CCCOMA_X64 with the mounted ISO's name, as well as replacing W10USB with your USB drive's name):
```
rsync -r -P /Volumes/CCCOMA_X64/ /Volumes/W10USB
```
![](../images/rsync-progess.png)
Command will take some time, so sit back and get some coffee. Once finished, the root of the USB drive should look as follows:
* Ensure that these folders and files are on the root, otherwise the USB will not boot
![](../images/windows-rsync-done.png)
Once done, lets reboot into OpenCore's Menu and you'll see a new Windows' entry:
* Note: Do not boot the installer outside of OpenCore as this will default back to the old MBR BIOS setup. Booting through OpenCore ensures Windows uses UEFI
![](../images/oc-windows.png)
From there, install Windows as normal and you'll get a new BootCamp entry in OpenCore's picker when done!
* Don't forget to run BootCamp's utilities installer as well to ensure Wifi and such are functioning correctly. This can be downloaded from the BootCamp Assistant app in macOS
![](../images/oc-windows-done.png)
## Troubleshooting
### iMac12,x Bluescreen after driver installation
Currently Intel's iGPU drivers for the HD 3000 series do not support UEFI booting in Windows. Recommended solution is to simply disable: [iMac 12,1 Windows 10 Boot Loop Fix Intel Graphics issue](https://zzq.org/?p=39)

12795
docs/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

51
docs/package.json Normal file
View File

@@ -0,0 +1,51 @@
{
"name": "OpenCore-Legacy-Patcher",
"version": "0.0.1",
"description": "Guide to put macOS on unsupported devices",
"main": "",
"author": {
"name": "Dortania",
"url": "https://github.com/dortania"
},
"repository": {
"type": "git",
"url": "git+https://github.com/dortania/OpenCore-Legacy-Patcher.git"
},
"scripts": {
"dev": "vuepress dev",
"build": "vuepress build",
"fix-lint": "run-script-os",
"fix-lint:default": "(echo Attempting to fix lint... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' -f && echo Fixed successfully, please commit.) || (echo Fix failed! && exit 1)",
"fix-lint:win32": "(echo Attempting to fix lint... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md -f && echo Fixed successfully, please commit.) || (echo Fix failed! && exit 1)",
"lint": "run-script-os",
"lint:default": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' && echo Lint passed.) || (echo Lint failed! Please review and fix errors. && exit 1)",
"lint:win32": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md && echo Lint passed.) || (echo Lint failed! Please review and fix errors. && exit 1)",
"lint-ci": "run-script-os",
"lint-ci:default": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' && echo Lint passed.) || ((echo Lint failed, attempting fix... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' -f && echo Fix generated successfully. Please apply the following diff using git apply && git diff) || echo Fix failed! && exit 1)",
"lint-ci:win32": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md && echo Lint passed.) || ((echo Lint failed, attempting fix... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md -f && echo Fix generated successfully. Please apply the following diff using git apply && git diff) || echo Fix failed! && exit 1)",
"sort-dict": "node ./scripts/sortDict.js",
"spellcheck": "run-script-os",
"spellcheck:default": "(spellchecker --plugins spell indefinite-article repeated-words syntax-urls --dictionaries dictionary/dictionary.txt dictionary/opencorekeys.txt --files '**/*.md' && echo Spellcheck passed.) || (echo Spellcheck failed! Please review and fix errors/add words to dictionary as needed. && exit 1)",
"spellcheck:win32": "(spellchecker --plugins spell indefinite-article repeated-words syntax-urls --dictionaries dictionary/dictionary.txt dictionary/opencorekeys.txt --files **/*.md && echo Spellcheck passed.) || (echo Spellcheck failed! Please review and fix errors/add words to dictionary as needed. && exit 1)",
"test": "run-script-os",
"test:default": "npm run lint --silent; npm run spellcheck --silent",
"test:win32": "npm run lint --silent & npm run spellcheck --silent"
},
"license": "CC-BY-NC-SA-4.0",
"devDependencies": {
"@vuepress/plugin-back-to-top": "^1.7.1",
"markdown-it-multimd-table": "^4.0.3",
"markdown-link-check": "^3.8.5",
"markdownlint-cli": "^0.26.0",
"run-script-os": "^1.1.4",
"spellchecker-cli": "^4.4.0",
"vuepress": "^1.7.1",
"vuepress-plugin-medium-zoom": "^1.1.9",
"vuepress-plugin-zooming": "^1.1.8",
"vuepress-theme-book": "0.0.5",
"vuepress-theme-dark-new": "^0.1.2",
"vuepress-theme-succinct": "^1.6.4",
"vuepress-theme-yuu": "^2.3.0"
},
"homepage": "https://dortania.github.io/OpenCore-Legacy-Patcher/"
}

View File

@@ -0,0 +1,9 @@
from pathlib import Path
import subprocess
for i in [i for i in list(Path().resolve().glob("**/*.md")) if "node_modules" not in str(i.parent) and "_book" not in str(i.parent)]:
#bert = subprocess.run(['npx', 'markdown-link-check', '"' + str(i) + '"', '-c', '.markdownlinkcheck.json'], capture_output=True, shell=True, cwd=Path().resolve())
bert = subprocess.run('npx markdown-link-check "' + str(i) + '"', stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, cwd=Path().resolve())
outpot = bert.stdout.decode().replace("\r", "").split("\n")
outpot = [i for i in outpot if ("FILE: " in i or " → Status: " in i) and " → Status: 429" not in i]
[print(i) for i in outpot]

26
docs/scripts/sortDict.js Normal file
View File

@@ -0,0 +1,26 @@
const fs = require("fs");
process.chdir(__dirname);
console.log("Reading dictionary.txt");
let dictionary = fs.readFileSync("../dictionary/dictionary.txt", { encoding: "UTF8" })
.replace("\r", "").split("\n");
let ocDictionary = fs.readFileSync("../dictionary/opencorekeys.txt", { encoding: "UTF8" })
.replace("\r", "").split("\n");
dictionary = dictionary.filter(string => string != "");
ocDictionary = ocDictionary.filter(string => string != "");
dictionary = dictionary.filter((string, index) => dictionary.indexOf(string) == index);
ocDictionary = ocDictionary.filter((string, index) => ocDictionary.indexOf(string) == index);
dictionary = dictionary.filter(string => !ocDictionary.includes(string));
console.log("Sorting...");
dictionary.sort();
ocDictionary.sort();
console.log("Writing dictionary.txt");
fs.writeFileSync("../dictionary/dictionary.txt", dictionary.join("\n"));
fs.writeFileSync("../dictionary/opencorekeys.txt", ocDictionary.join("\n"));

10
entitlements.plist Normal file
View File

@@ -0,0 +1,10 @@
<?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>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
</dict>
</plist>

BIN
images/OC-Build.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
images/OC-Patcher.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

BIN
images/OC-Picker-SD.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
images/OC-Picker-SSD.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
images/background-moved.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
images/build-efi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

BIN
images/disk-efi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 KiB

BIN
images/disk-start.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

BIN
images/efi-boot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
images/first-run.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

BIN
images/format-usb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

BIN
images/graphics-open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 KiB

BIN
images/icns-sl-save.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
images/icnspack-done.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

BIN
images/icnspack-folder.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 KiB

BIN
images/icon-SL.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

BIN
images/logs-efi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 KiB

BIN
images/mac-icns-drive.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

BIN
images/mountefi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
images/munki-dmg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

BIN
images/munki-done-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

BIN
images/munki-process.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 KiB

BIN
images/munki.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

BIN
images/oc-boot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
images/oc-explained.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB

BIN
images/oc-windows-done.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
images/oc-windows.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
images/oclp-version.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
images/root-patch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

BIN
images/root-patcher-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

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