Compare commits

...

543 Commits
0.1.4 ... 0.3.1

Author SHA1 Message Date
Mykola Grymalyuk
113156c94c Sync changelog 2021-10-25 15:13:38 -06:00
Mykola Grymalyuk
e1cb78fa0b Merge pull request #614 from akidone/patch-1
TESTED.md
2021-10-24 09:23:41 -06:00
akidone
6109d8c92f TESTED.md
Added my good old MacBookPro10,2 to the list, as it works perfectly with patcher 0.3.0.
2021-10-24 11:20:27 +02:00
Mykola Grymalyuk
b473d189dd Sync PatcherSupportPkg 2021-10-23 22:05:31 -06:00
Mykola Grymalyuk
3b89fc2950 Sync PatcherSupportPkg 2021-10-22 16:12:59 -06:00
Mykola Grymalyuk
1b4fd73673 Add TS2 MacBook Pro troubleshooting 2021-10-21 15:50:16 -06:00
Mykola Grymalyuk
ca2fd695b3 Fix crashing on dict append
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/597
2021-10-21 11:34:46 -06:00
Mykola Grymalyuk
9669196a07 Add ADP2,1 data set 2021-10-20 20:44:40 -06:00
Mykola Grymalyuk
88696c7047 Add MacBookPro18,x data set 2021-10-20 14:27:21 -06:00
Mykola Grymalyuk
8706959f65 Sync PatchSupportPkg 2021-10-20 14:25:40 -06:00
Mykola Grymalyuk
a63d1953b4 Fix non-Metal Control Center 2021-10-19 13:18:11 -06:00
Mykola Grymalyuk
6d129505ea Fix non-Metal acceleration crashing on 12.0.1 2021-10-18 21:53:31 -06:00
Mykola Grymalyuk
6bc36c737c Remove legacy GMUX patch set for MacBookPro5,x
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/584
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/580
2021-10-17 15:53:38 -06:00
Mykola Grymalyuk
5f07e9ffd9 Drop CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE usage 2021-10-17 15:48:08 -06:00
Mykola Grymalyuk
0ff6a18e83 Avoid erroring on odd length values 2021-10-17 10:10:40 -06:00
Mykola Grymalyuk
a153b500b9 Remove garbage 2021-10-17 00:14:32 -06:00
Mykola Grymalyuk
db617db1fd Allow for setting custom SIP values via TUI
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/516
2021-10-17 00:13:49 -06:00
Mykola Grymalyuk
69e50aeb6d Fix incorrectly parsing SecureBootModel status
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/581
2021-10-16 23:21:29 -06:00
Mykola Grymalyuk
eaa686e045 Add saftey check for Vault configurations 2021-10-16 21:51:55 -06:00
Mykola Grymalyuk
68d25d30b4 Merge pull request #579 from educovas/main
Update documentation
2021-10-16 13:55:22 -06:00
educovas
16a666e836 2 2021-10-16 16:48:04 -03:00
educovas
5e91ea181b typo 2021-10-16 16:47:39 -03:00
educovas
f4e487c648 More changes 2021-10-16 16:24:59 -03:00
educovas
d1fbeba50f Add Safari extensions workaround / + 2021-10-16 16:20:32 -03:00
educovas
8c138658e2 Update supported Ones 2021-10-16 16:06:32 -03:00
educovas
729feba2ba Update host and target OS 2021-10-16 16:04:12 -03:00
educovas
978d2fda26 Fix typo 2021-10-16 15:58:51 -03:00
educovas
5e0354531a Monterey legacy WiFi workaround 2021-10-16 15:53:02 -03:00
educovas
19ed65968d Merge pull request #1 from dortania/main
Update
2021-10-16 15:39:55 -03:00
Mykola Grymalyuk
5aee1aa60f Fix GMUX switching
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/574
2021-10-16 08:59:33 -06:00
Mykola Grymalyuk
ab22a225c4 Increment build 2021-10-15 19:54:38 -06:00
Mykola Grymalyuk
a97a32730a Fix function cast 2021-10-15 16:09:47 -06:00
Mykola Grymalyuk
0b3e45f7ba Fix board ID call
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/571
2021-10-15 09:33:34 -06:00
Mykola Grymalyuk
fa89865552 Fix Beta 10 Bluetooth 2021-10-15 09:23:05 -06:00
Mykola Grymalyuk
f58de2e000 Sync PatcherSupportPkg
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/569
2021-10-14 19:05:34 -06:00
Mykola Grymalyuk
f9c1d96aea Fix ADP3,2 ID 2021-10-13 15:06:43 -06:00
Mykola Grymalyuk
30121d869f Add basic GPU data sets 2021-10-12 21:44:32 -06:00
Mykola Grymalyuk
bb62eded77 Add Curie and Comet Lake IDs 2021-10-12 21:42:33 -06:00
Mykola Grymalyuk
dd43a0f243 Add ATI R500 IDs 2021-10-12 21:03:23 -06:00
Mykola Grymalyuk
ce6195529b Add GMA data set 2021-10-12 20:48:52 -06:00
Mykola Grymalyuk
f26e494450 Add Legacy GCN iMac patches
Co-authored-by @Ausdauersportler
2021-10-12 13:20:02 -06:00
Mykola Grymalyuk
82fe98a93c Add Software Based deMUX
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/559
2021-10-11 15:50:07 -06:00
Mykola Grymalyuk
47a2f71612 Add firmware throttle patch
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/555
2021-10-10 20:42:05 -06:00
Mykola Grymalyuk
12e0ffff71 Fix offline releases 2021-10-10 16:46:30 -06:00
Mykola Grymalyuk
d7f3bb7d53 Add missing Macmini5,2 patch 2021-10-09 11:38:53 -06:00
Mykola Grymalyuk
06e0e9a2c0 Fix formatting 2021-10-09 11:19:39 -06:00
Mykola Grymalyuk
12998bc7e1 Fix return code error 2021-10-08 15:02:25 -06:00
Mykola Grymalyuk
68d13775d9 Work around erroring when single element in array 2021-10-08 15:00:58 -06:00
Mykola Grymalyuk
86694de7df Add error handling for bless failure 2021-10-08 12:53:06 -06:00
Mykola Grymalyuk
96fd706ead Implement EFICheckDisabler
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/552
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/551
2021-10-08 08:42:29 -06:00
Mykola Grymalyuk
a0fa3a8808 Fix desync off vmm branch
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/549
2021-10-06 19:23:52 -06:00
Mykola Grymalyuk
27383b5bc7 Update docs 2021-10-06 18:08:11 -06:00
Mykola Grymalyuk
75c6d10089 Fix accidental deletion 2021-10-06 10:37:11 -06:00
Mykola Grymalyuk
ee77f76c3a Add AppleGVA patch set 2021-10-06 09:44:00 -06:00
Mykola Grymalyuk
ae2a015c67 Fix references
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/545
2021-10-05 22:16:50 -06:00
Mykola Grymalyuk
9cbfe5be6a Add TS2 comments 2021-10-05 21:19:13 -06:00
Mykola Grymalyuk
b6297d6b63 Add Panel ID 9cd6 for iMac11,3
Co-authored-by @Ausdauersportler

Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/538
2021-10-05 11:49:02 -06:00
Mykola Grymalyuk
f6ef7583ee Merge pull request #528 from dortania/refactor
Refactor Constants
2021-10-04 13:02:24 -06:00
Mykola Grymalyuk
e8d2b4f63e Fix on-model building with CLI 2021-10-04 12:47:27 -06:00
Mykola Grymalyuk
e210c0cbe6 I need sleep 2021-10-04 12:21:32 -06:00
Mykola Grymalyuk
9184302c18 Fix logic 2021-10-04 12:11:54 -06:00
Mykola Grymalyuk
fdfbbf6ae1 Fix clear screen usage in GUI 2021-10-04 11:52:42 -06:00
Mykola Grymalyuk
4f9abbaa49 Fix root patching from CLI 2021-10-04 11:21:59 -06:00
Mykola Grymalyuk
f524c4441b Update pci comment 2021-10-04 11:18:01 -06:00
Mykola Grymalyuk
5ca30e8ffe Fix spec 2021-10-04 11:13:24 -06:00
Mykola Grymalyuk
5742f745b1 Merge branch 'refactor' of https://github.com/dortania/OpenCore-Legacy-Patcher into refactor 2021-10-04 10:52:33 -06:00
Mykola Grymalyuk
91d20b2ad0 Rework args check 2021-10-04 10:52:11 -06:00
Mykola Grymalyuk
8272c092ad Fix init 2021-10-03 18:15:14 -06:00
Mykola Grymalyuk
3790555dec Fix init 2021-10-03 18:01:34 -06:00
Mykola Grymalyuk
3537725a13 Adjust build to py scheme 2021-10-03 14:14:55 -06:00
Mykola Grymalyuk
991a089c45 Tmp 2021-10-03 14:14:39 -06:00
Mykola Grymalyuk
8a6faa0836 Adjust utilities to py scheme 2021-10-03 14:12:11 -06:00
Mykola Grymalyuk
8e1923ee21 Tmp 2021-10-03 14:11:20 -06:00
Mykola Grymalyuk
a2f73a7bdc Adjust Constants to python scheme 2021-10-03 14:10:56 -06:00
Mykola Grymalyuk
2164463e3b Tmp 2021-10-03 14:09:40 -06:00
Mykola Grymalyuk
a980ba95f9 Fix typo 2021-10-03 13:57:17 -06:00
Mykola Grymalyuk
a70b18dd50 Convert additional files to snake naming scheme 2021-10-03 13:54:12 -06:00
Mykola Grymalyuk
e33997320b Use snake nameing scheme 2021-10-03 13:35:01 -06:00
Mykola Grymalyuk
b9a5ba7897 Rename to tmp folders
Work around git not checking case
2021-10-03 13:31:19 -06:00
Mykola Grymalyuk
c0350e036e Enforce Snake Style naming scheme for files 2021-10-03 13:24:51 -06:00
Mykola Grymalyuk
a5f489d48b Depreciate dedicated OCLP-CLI binary
OpenCore-Patcher now supports both CLI and TUI mode
2021-10-03 10:44:13 -06:00
Mykola Grymalyuk
426c572ce2 Fix AppleALC building 2021-10-01 18:00:53 -06:00
Mykola Grymalyuk
9f4ac80083 Update SMBIOS data
Include Ethernet and Chipset information
2021-10-01 12:28:28 -06:00
Mykola Grymalyuk
2e613600de Sync changelog 2021-10-01 10:22:12 -06:00
Mykola Grymalyuk
3a28ba699f Allow iGPU always on iMac13,x 2021-10-01 10:16:30 -06:00
Mykola Grymalyuk
fe359f7ea6 Move FirmwareFeature generation 2021-10-01 09:58:31 -06:00
Mykola Grymalyuk
0e07273c8e Move SMBIOS generation to dedicated file 2021-10-01 09:45:34 -06:00
Mykola Grymalyuk
8b41cc6ff5 Update .spec to include Data folder 2021-10-01 00:17:47 -06:00
Mykola Grymalyuk
d563011c72 Refactor SMBIOS table 2021-10-01 00:04:55 -06:00
Mykola Grymalyuk
06824e6757 Update MONTEREY-DROP.md 2021-09-30 12:09:15 -06:00
Mykola Grymalyuk
cc8bff1e1f Avoid Updating DataHub
Works around hibernation issue
2021-09-29 13:11:06 -06:00
Mykola Grymalyuk
6102bba478 Ensure overrides get RestrictEvents 2021-09-29 12:39:24 -06:00
Mykola Grymalyuk
dd40ddc452 Fix OTA updates on T2 SMBIOS
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/471
2021-09-29 11:49:30 -06:00
Mykola Grymalyuk
8d02a7984d Limit MacBookPro6,2 G State
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/520
2021-09-29 11:31:41 -06:00
Mykola Grymalyuk
61281f597a Add Legacy GMUX patch sets 2021-09-29 11:29:05 -06:00
Mykola Grymalyuk
11e795026b Ensure SMBIOS data is correctly updated 2021-09-27 12:34:58 -06:00
Mykola Grymalyuk
d58e0e3972 Avoid erroring 2021-09-27 09:25:21 -06:00
Mykola Grymalyuk
453703d402 Add SurPlus patch 2021-09-27 09:22:55 -06:00
Mykola Grymalyuk
dfb84ec72b Fix Kepler DisplayPort output 2021-09-27 08:35:30 -06:00
Mykola Grymalyuk
8f98cac918 Misc fixes
- Adjust MacPro/Xserve SMBIOS spoof
- Lower SIP bits flipped
- Force delete SIP on each boot (avoids user error)

Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/510
2021-09-25 11:49:05 -06:00
Mykola Grymalyuk
c053fb7244 Fix formatting 2021-09-24 10:31:14 -06:00
Mykola Grymalyuk
0ccb2c74d2 Allow configuring GMUX usage for Windows
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/502
2021-09-24 10:29:43 -06:00
Mykola Grymalyuk
2683b7a7f0 Add forgotten commit 2021-09-24 09:16:04 -06:00
Mykola Grymalyuk
86dcf9fb5b Fix Beta 7 Acceleration on Nvidia Tesla 2021-09-24 07:47:31 -06:00
Mykola Grymalyuk
e31519ac96 Avoid patching Metal and non-metal together 2021-09-23 11:58:48 -06:00
Mykola Grymalyuk
49fa20ecc3 Disable SIP on legacy Wifi Macs 2021-09-23 11:48:10 -06:00
Mykola Grymalyuk
3364ed702a Probe per GPU detected
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/501
2021-09-22 20:57:10 -06:00
Mykola Grymalyuk
32a0289af3 Fix Music.app support
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/497
2021-09-22 19:25:29 -06:00
Mykola Grymalyuk
a3208acbfe Add iMac7,1 USB map 2021-09-22 19:04:01 -06:00
Mykola Grymalyuk
983a7bf8d3 Merge pull request #499 from dortania/2012-bt
Add Transport Exemption to BlueToolFixup
2021-09-22 13:31:17 -06:00
Mykola Grymalyuk
5d85a98637 Adjust logic 2021-09-22 13:30:20 -06:00
Mykola Grymalyuk
ba2149407d Update comments 2021-09-22 13:28:29 -06:00
Mykola Grymalyuk
458a2a406a Add FirmwareFeature upgrading to all Models 2021-09-22 12:46:23 -06:00
Mykola Grymalyuk
374263f926 Fix AMFI check 2021-09-22 12:35:53 -06:00
Mykola Grymalyuk
1b5fb1cef6 Add additional bluetooth checks 2021-09-21 21:41:29 -06:00
Mykola Grymalyuk
e7897ae857 Fix defaults 2021-09-21 21:29:10 -06:00
Mykola Grymalyuk
b34239fb8e Add Kepler Acceleration for Monterey Beta 7 2021-09-21 21:25:49 -06:00
Mykola Grymalyuk
53ea72ed93 Fix another typo 2021-09-21 20:34:15 -06:00
Mykola Grymalyuk
462e268d0d Fix typo 2021-09-21 20:20:38 -06:00
Mykola Grymalyuk
df709afa8d Add AMFI check 2021-09-21 20:08:54 -06:00
Mykola Grymalyuk
7b332e87c4 Fix crash 2021-09-21 19:26:23 -06:00
Mykola Grymalyuk
1b2eea6b50 Add better FV patch detection 2021-09-21 18:59:50 -06:00
Mykola Grymalyuk
0077d6267c Test transport omission 2021-09-19 23:36:22 -06:00
Mykola Grymalyuk
b18236b237 Test BT patch for 2012 Macs 2021-09-19 21:00:07 -06:00
Mykola Grymalyuk
c748b03544 Merge pull request #496 from dortania/Disable-LV
Disable Library Validation Enforcement
2021-09-19 16:18:55 -06:00
Mykola Grymalyuk
81369d1bab Update docs 2021-09-19 16:17:31 -06:00
Mykola Grymalyuk
bf3cc2c9d1 Adjust LV check 2021-09-19 15:29:48 -06:00
Mykola Grymalyuk
159f624060 Sync changelog 2021-09-19 14:38:07 -06:00
Mykola Grymalyuk
8234738403 Remove AMFI requirement for root patching 2021-09-19 14:22:16 -06:00
Mykola Grymalyuk
bf19adef35 Cleanup unneeded variables 2021-09-19 13:16:20 -06:00
Mykola Grymalyuk
6c2ed9ad5a Update SysPatch.py 2021-09-18 22:39:52 -06:00
Mykola Grymalyuk
ac4b796c95 Fix typo 2021-09-18 21:10:37 -06:00
Mykola Grymalyuk
afdf49a074 Add TeraScale 2 Acceleration for Monterey 2021-09-18 16:33:02 -06:00
Mykola Grymalyuk
48c838d92b Use stock BlueToolFixup 2021-09-18 15:41:00 -06:00
Mykola Grymalyuk
3e453f4789 Fix CoreCapture max kernel 2021-09-18 15:28:11 -06:00
Mykola Grymalyuk
c7b282b53c Update documentation 2021-09-18 11:32:43 -06:00
Mykola Grymalyuk
8c6c723e13 Increment Latebloom to 0.22 2021-09-18 10:54:04 -06:00
Mykola Grymalyuk
9dfe616af8 Clean Apple Kexts
Remove unused files including codesignature, Version.plist, Resources, etc as these are not needed for injection via OpenCore
2021-09-18 10:49:00 -06:00
Mykola Grymalyuk
fb9634d29b Add permission fixes for Wifi patches 2021-09-18 10:08:57 -06:00
Mykola Grymalyuk
4edbf9df60 Update Root Patch comment 2021-09-17 23:53:41 -06:00
Mykola Grymalyuk
cd45f7b04c Fix typo 2021-09-17 23:42:55 -06:00
Mykola Grymalyuk
6a5ac03c72 Merge pull request #492 from dortania/Bluetooth-patch
Fix Monterey Bluetooth Support
2021-09-17 22:44:18 -06:00
Mykola Grymalyuk
81ecf14bab Merge branch 'main' into Bluetooth-patch 2021-09-17 22:44:12 -06:00
Mykola Grymalyuk
d84990e91d Add IO80211ElCap verification 2021-09-17 22:41:33 -06:00
Mykola Grymalyuk
d1726f95fc Add Legacy Wireless support for Monterey
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/365
2021-09-17 22:17:41 -06:00
Mykola Grymalyuk
45332d2cf9 Add offline TUI 2021-09-17 13:42:27 -06:00
Mykola Grymalyuk
9e7ad38020 Merge branch 'Bluetooth-patch' of https://github.com/dortania/Opencore-Legacy-Patcher into Bluetooth-patch 2021-09-16 19:26:13 -06:00
Mykola Grymalyuk
18805c8e78 Fix typo 2021-09-16 19:25:42 -06:00
Mykola Grymalyuk
98b7824619 Fix typo 2021-09-16 19:14:06 -06:00
Mykola Grymalyuk
438ae23ee7 Rework BlueToolFixup patch 2021-09-16 15:43:04 -06:00
Mykola Grymalyuk
0e22a9fb00 Fix ModelArray 2021-09-16 14:33:55 -06:00
Mykola Grymalyuk
f78e8edf4e Fix typo 2021-09-16 12:21:52 -06:00
Mykola Grymalyuk
986878055f Add basic hardware detection 2021-09-16 12:21:14 -06:00
Mykola Grymalyuk
1da93b1ca0 Fix Monterey Bluetooth 2021-09-16 10:06:59 -06:00
Mykola Grymalyuk
950f645f02 Merge pull request #488 from mikebeaton/main
Update Big Sur+ Hackintosh SIP instructions
2021-09-13 10:05:44 -06:00
Mykola Grymalyuk
f0c73164d9 Ensure correct accel patches apply in Monterey
Thanks Larsvonhier for pointing this out!
2021-09-13 10:01:37 -06:00
MikeBeaton
5b3425d0c4 Update Big Sur+ Hackintosh SIP instructions to 0xE03 (include required CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE) 2021-09-13 15:12:48 +01:00
Mykola Grymalyuk
0e1aaf0bbd Lax AMFI requirements for Mojave/Catalina 2021-09-12 22:44:29 -06:00
Mykola Grymalyuk
ff685e3504 Merge pull request #485 from dortania/filevault-test
Allow FileVault on Root Patched Macs
2021-09-12 22:37:18 -06:00
Mykola Grymalyuk
bae1a19cfe Lax FileVault requirement for root patching 2021-09-12 22:36:25 -06:00
Mykola Grymalyuk
76aa3bb80f Clean up code 2021-09-12 11:31:31 -06:00
Mykola Grymalyuk
ab4089c37b Allow FileVault on Root Patched systems 2021-09-12 10:34:28 -06:00
Mykola Grymalyuk
a907e05bca Add latebloom repository 2021-09-12 10:32:17 -06:00
Mykola Grymalyuk
8944c789b0 Update PatcherSupportPkg 2021-09-09 09:05:59 -06:00
Mykola Grymalyuk
600e71581c Allow Trackpad gestures on MacBook4,1 and MacBook5,2 2021-09-08 22:17:05 -06:00
Mykola Grymalyuk
15e4650785 Organize Constants.py 2021-09-08 22:09:58 -06:00
Mykola Grymalyuk
201bc141bb Increment PatcherSupportPkg 2021-09-07 16:13:18 -06:00
Mykola Grymalyuk
3c69cb6c65 Increment PatcherSupportPkg 2021-09-06 22:52:29 -06:00
Mykola Grymalyuk
9955b76c1e Add Monterey WebKit patch to legacy GPUs 2021-09-06 22:40:54 -06:00
Mykola Grymalyuk
d77680f25c Increment binaries 2021-09-06 16:54:08 -06:00
Mykola Grymalyuk
10354d717e Add non-Metal Monterey accel 2021-09-05 13:17:39 -06:00
Mykola Grymalyuk
0b51a7e9c8 Fix path error 2021-09-05 11:45:35 -06:00
Mykola Grymalyuk
372ad31d83 Adjust patcher settings 2021-09-05 10:48:46 -06:00
Mykola Grymalyuk
d4836514fd Add import error handling and clean CLI menu 2021-09-04 22:31:20 -06:00
Mykola Grymalyuk
077af5afb3 Add ACPI path verification for DeviceProperty injection
Ref: https://github.com/dortania/OpenCore-Legacy-Patcher/issues/451
2021-08-30 17:36:06 -06:00
Mykola Grymalyuk
6ca3e3524e Update PatcherSupportPkg 2021-08-28 13:14:40 -06:00
Mykola Grymalyuk
8c646b7897 Fix scope typo 2021-08-28 12:55:34 -06:00
Mykola Grymalyuk
90a9ff8bb2 Allow FileVault on Catalina and older 2021-08-28 11:37:16 -06:00
Mykola Grymalyuk
1198a37969 Update MONTEREY-DROP.md
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/455
2021-08-26 09:04:57 -06:00
Mykola Grymalyuk
296978676a Add pikera patch for iMacPro1,1 2021-08-18 18:18:48 -06:00
Mykola Grymalyuk
29fa274096 Add 5700XT/Westmere test data 2021-08-18 11:26:38 -06:00
Mykola Grymalyuk
dfdf4529d2 Add Windows GPU switching 2021-08-15 13:48:58 -06:00
Mykola Grymalyuk
28746bbe2b Fix country code device ID injection
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/435
2021-08-12 09:04:49 -06:00
Mykola Grymalyuk
60c8cd12cd Merge pull request #425 from samplenull/patch-1
Update INSTALLER.md
2021-08-11 23:19:59 -06:00
Mykola Grymalyuk
71a045fb13 Fix typo in previous commit 2021-08-11 22:32:41 -06:00
Mykola Grymalyuk
10d11c3b1b Add validation check to CI 2021-08-11 22:30:46 -06:00
Mykola Grymalyuk
f0c282cbbc Increment Binaries 2021-08-11 22:24:33 -06:00
Mykola Grymalyuk
7b0b9ea18b Merge pull request #432 from dortania/wifi-test
Allow plist override for BCM943224 and BCM94331 Wireless cards
2021-08-11 20:14:30 -06:00
Mykola Grymalyuk
3f6d8c2283 Fix country code support 2021-08-11 20:13:43 -06:00
Mykola Grymalyuk
ff5a7f3a35 Adjust AirportBrcmFixup injection 2021-08-11 20:09:20 -06:00
Mykola Grymalyuk
515bd5950f Fix thing 2021-08-11 13:48:17 -06:00
Mykola Grymalyuk
b1d5851131 Inject device ID via Info.plist 2021-08-10 20:20:49 -06:00
Mykola Grymalyuk
3298625351 Set iMacPro1,1 SMBIOS for Mac Pro and Xserve 2021-08-10 16:02:45 -06:00
Mykola Grymalyuk
ff4a19b268 Sync changelog 2021-08-10 10:51:09 -06:00
Mykola Grymalyuk
9b4a1e992b Merge pull request #430 from dortania/thunderbolt
Allow disabling of Thunderbolt on 2013-2014 MacBook Pros
2021-08-10 09:47:31 -07:00
Mykola Grymalyuk
fc59cfffa1 Add configuration option for users 2021-08-10 10:06:45 -06:00
Mykola Grymalyuk
cf884532d7 Disable TB2 in 2013-2014 Pros 2021-08-09 10:43:14 -06:00
Mykola Grymalyuk
0b1092d4b9 Merge pull request #428 from satmandu/patch-1
Add current release to Issue Template
2021-08-09 09:21:39 -07:00
satmandu
cddd7af701 Make suggested changes 2021-08-09 12:19:51 -04:00
satmandu
6cb2141654 Add current release to Issue Template 2021-08-09 11:47:57 -04:00
Mykola Grymalyuk
a5fcc35d3c Add MacPro4,1 data set 2021-08-09 09:19:48 -06:00
Denis Kazimirov
8cc22fd88a Update INSTALLER.md
Add space to fix 404 error when download installinstallmacos.py
2021-08-07 16:11:54 +03:00
Mykola Grymalyuk
66435c7c08 Add Ethernet data sets 2021-08-06 10:27:06 -06:00
Mykola Grymalyuk
3569a265e6 Force pyinstaller path 2021-08-05 17:57:55 -06:00
Mykola Grymalyuk
3515d81c26 Avoid upgrading dependancies 2021-08-05 17:45:23 -06:00
Mykola Grymalyuk
3416a4bbdd Transfer runner 2021-08-05 17:27:10 -06:00
Dhinak G
6a5787abae Return checksum in download_file 2021-08-04 14:08:07 -04:00
Mykola Grymalyuk
a104316037 Add missing x86legacy entry 2021-08-04 11:37:24 -06:00
Mykola Grymalyuk
cabdfe9a27 Lax rsync verification
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/418
2021-08-04 08:36:40 -06:00
Mykola Grymalyuk
c535609a32 Fix latebloom typo in arguments 2021-08-03 10:07:25 -06:00
Mykola Grymalyuk
a095edc380 Allow Root Patching on Mojave and Catalina 2021-08-02 21:06:33 -06:00
Mykola Grymalyuk
f1ac88d23b Fix iMac17,1 TB2 typo 2021-08-02 20:47:33 -06:00
Mykola Grymalyuk
4a1918238e Fix formatting 2021-08-02 16:46:15 -06:00
Mykola Grymalyuk
33653a7108 Implement Root Volume backups
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/378
2021-08-02 16:34:19 -06:00
Mykola Grymalyuk
03f65d1766 Implement Latebloom configuration via cli 2021-07-31 22:57:33 -06:00
Mykola Grymalyuk
cb7d62f2ee Update docs to better reflect current state 2021-07-31 22:27:40 -06:00
Mykola Grymalyuk
4139e555cc Add remaining iGPU archs to device_probe 2021-07-31 21:20:17 -06:00
Mykola Grymalyuk
244d7cfbf9 Increment build 2021-07-31 10:39:08 -06:00
Mykola Grymalyuk
d9dcfc6125 Fix iMac13,x crash on prebuilt models 2021-07-31 10:35:01 -06:00
Mykola Grymalyuk
c41ffaafc2 Add Latebloom detection to CLI 2021-07-30 09:37:19 -06:00
Mykola Grymalyuk
741eda5fd8 Fix iMac13,3 spoof 2021-07-30 09:16:41 -06:00
Dhinak G
1678005ceb Don't run the site on self-hosted 2021-07-29 19:37:15 -04:00
Dhinak G
df029110c7 Update to not run on M1 machine 2021-07-29 19:36:12 -04:00
Mykola Grymalyuk
59f43e0ea0 Add more Model dumps 2021-07-29 17:25:29 -06:00
Mykola Grymalyuk
9bdc5148c4 Adjust MinKernel 2021-07-28 16:43:17 -06:00
Mykola Grymalyuk
3283cf514b Fix MacBook8,1 Modertate SMBIOS setting 2021-07-26 15:17:45 -06:00
Mykola Grymalyuk
991e449d26 Disable USB Map injection when unneeded
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/384
2021-07-26 15:15:20 -06:00
Mykola Grymalyuk
f880751539 Sync changelog
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/358
2021-07-26 12:55:55 -06:00
Mykola Grymalyuk
8eade66017 Sync PatcherSupportPkg
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/405
2021-07-25 23:15:59 -06:00
Mykola Grymalyuk
bb09b0432f Add AMFI detection on build 2021-07-25 23:15:23 -06:00
Mykola Grymalyuk
eca98c65d3 Merge pull request #398 from dortania/latebloom
Add Latebloom support
2021-07-25 15:45:27 -06:00
Mykola Grymalyuk
3af8687f42 Fix print formatting 2021-07-24 23:14:18 -06:00
Mykola Grymalyuk
0af93e7936 Test Wake on WLAN support again 2021-07-24 10:31:14 -06:00
Mykola Grymalyuk
b8904387f3 Add Sandy Bridge comment 2021-07-24 09:48:05 -06:00
Mykola Grymalyuk
91b2a8b673 Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher 2021-07-23 11:07:40 -06:00
Dhinak G
96748952d3 Update BENIFITS.md 2021-07-22 13:39:15 -04:00
Mykola Grymalyuk
5eddcadaac Add additional error handling on system calls 2021-07-21 21:57:36 -06:00
Mykola Grymalyuk
43131150a4 Fix Mojave/Catalina kextcache error handling 2021-07-21 21:55:43 -06:00
Mykola Grymalyuk
5fefc7185e Add validation checker in CLI
Currently fails due to bootstrap path, will be resolved in future
2021-07-21 19:30:54 -06:00
Mykola Grymalyuk
ff00e2683e Add better variable presentation 2021-07-20 09:30:14 -06:00
Mykola Grymalyuk
e94264f039 Allow latebloom support 2021-07-20 09:07:29 -06:00
Mykola Grymalyuk
7fc36ac098 Merge pull request #381 from ylluminate/patch-1
Update TCC modification in ACCEL.md for Big Sur
2021-07-20 08:57:23 -06:00
Mykola Grymalyuk
8711b4069a Update ACCEL.md 2021-07-20 08:57:06 -06:00
Mykola Grymalyuk
70cb12413a Update ACCEL.md 2021-07-20 08:56:38 -06:00
Mykola Grymalyuk
a6dc58a81d Merge pull request #390 from lulujyc/patch-2
Update ACCEL.md -- don't waste money buying DisplayLink adapters
2021-07-20 08:52:47 -06:00
Mykola Grymalyuk
f8da16bf0a Fix Thunderbolt Array typo (Thanks @woefi) 2021-07-20 08:52:03 -06:00
Mykola Grymalyuk
e43fecb4bc Clean up formatting 2021-07-19 15:42:01 -06:00
Mykola Grymalyuk
d6ed03eb8a Revert Kryptonite backend 2021-07-19 12:01:05 -06:00
Mykola Grymalyuk
49e1fb1ad2 Fix RaceCondition ModelArray 2021-07-19 10:43:19 -06:00
Mykola Grymalyuk
ab1dab7fe5 Backend for Kryptonite support 2021-07-19 10:37:34 -06:00
Mykola Grymalyuk
6c44472e00 Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher 2021-07-19 09:35:26 -06:00
Mykola Grymalyuk
d1f545e356 Merge pull request #397 from educovas/main
Updated HD4000 Monterey support - MONTEREY-DROP.md
2021-07-19 09:13:05 -06:00
educovas
e61544dcb9 Update MONTEREY-DROP.md 2021-07-19 12:02:32 -03:00
Mykola Grymalyuk
889293ca8a Fix formatting 2021-07-19 07:44:37 -06:00
Mykola Grymalyuk
a280e22cdb Adjust csr formatting 2021-07-18 11:40:30 -06:00
lulujyc
bb26a5a5d8 Update ACCEL.md -- don't waste money buying DisplayLink adapters 2021-07-17 17:31:22 +08:00
Mykola Grymalyuk
ba543ca5cf TUI Workflow: Force overwrite existing signature 2021-07-15 16:47:52 -06:00
Mykola Grymalyuk
592b0a707f Fix typos 2021-07-15 09:45:24 -06:00
Mykola Grymalyuk
8da87aea28 Add dosdude patch detection 2021-07-14 09:59:56 -06:00
Mykola Grymalyuk
4842028516 Add better unpatch error handling 2021-07-13 20:20:27 -06:00
Mykola Grymalyuk
8b6bcd47d2 Add minor kernel version detection 2021-07-13 20:11:46 -06:00
Mykola Grymalyuk
081bb56dd0 Add backend to support latebloom
Kext currently not enabled until ready for mass community usage
2021-07-12 19:13:30 -06:00
Mykola Grymalyuk
418de07f84 Fix Wake on WLAN typo
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/383
2021-07-12 12:03:41 -06:00
Mykola Grymalyuk
18e3fa37ff Fix BlessOverride typo
Ref: https://github.com/dortania/OpenCore-Legacy-Patcher/issues/382
2021-07-11 17:08:38 -06:00
ylluminate
c36296f2a0 Update TCC modification in ACCEL.md for Big Sur 2021-07-11 14:57:55 -04:00
Mykola Grymalyuk
8159761833 Fix formatting 2021-07-11 12:28:52 -06:00
Mykola Grymalyuk
87526226cd Fix Windows scanning in OpenCore menu 2021-07-11 12:25:02 -06:00
Mykola Grymalyuk
1cf1e3491d Merge branch 'main' of https://github.com/dortania/Opencore-Legacy-Patcher 2021-07-11 10:27:38 -06:00
Dhinak G
9cf19319c5 Attempt to fix pickle issues 2021-07-10 01:38:41 -04:00
Mykola Grymalyuk
8b47c4fe7b Remove unnecessary sudo 2021-07-09 13:29:52 -06:00
Mykola Grymalyuk
3b3f5b3290 Enhance OS patching detection 2021-07-08 22:55:00 -06:00
Mykola Grymalyuk
637981b405 Add better Mojave/Catalina error handling 2021-07-08 15:43:59 -06:00
Mykola Grymalyuk
20b40f33ce Renove unused libraries 2021-07-08 15:42:15 -06:00
Mykola Grymalyuk
9a388009cd Add better SIP var detection 2021-07-08 15:39:14 -06:00
Mykola Grymalyuk
a4bcefd748 Fix AMFI dectection 2021-07-08 15:22:35 -06:00
Dhinak G
7885673363 Fix CLI when no patches are required 2021-07-08 17:20:14 -04:00
Mykola Grymalyuk
d7aa3889f9 Add FeatureUnlock
Creates less confusion with new name
2021-07-08 10:14:25 -06:00
Mykola Grymalyuk
4dc76e26fc Fix formatting 2021-07-07 18:54:55 -06:00
Mykola Grymalyuk
648bb67b73 Sync changelog 2021-07-07 10:47:39 -06:00
Mykola Grymalyuk
686698272b Merge pull request #371 from dortania/drm-test
Add DRM support for Intel HD4000
2021-07-07 09:16:37 -06:00
Mykola Grymalyuk
6349b64faf Re-enable Safari patch 2021-07-07 09:15:25 -06:00
Mykola Grymalyuk
09b9194b91 Fix crash on Apple Silicon 2021-07-06 22:42:32 -06:00
Mykola Grymalyuk
827aa96168 Update device_probe.py 2021-07-06 22:02:17 -06:00
Mykola Grymalyuk
02ae3c8393 Update SysPatch.py
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/368
2021-07-06 20:26:22 -06:00
Mykola Grymalyuk
8f6bd87721 Fix typo 2021-07-06 14:50:30 -06:00
Mykola Grymalyuk
cef684beb9 Allow hardware decode 2021-07-06 14:39:52 -06:00
Mykola Grymalyuk
6c7c60fb62 Test HD4000 DRM 2021-07-06 14:35:19 -06:00
Mykola Grymalyuk
1b786e57c3 Add board ID check for Sandy Bridge patch 2021-07-06 14:33:51 -06:00
Mykola Grymalyuk
35e6104786 Fix Country Code 2021-07-06 09:31:32 -06:00
Mykola Grymalyuk
ed7c0c6760 Fix CLI crash 2021-07-05 19:08:50 -06:00
Mykola Grymalyuk
25522069dc Update config.yml 2021-07-05 18:29:22 -06:00
Mykola Grymalyuk
cbbbe16031 Update config.yml 2021-07-05 18:28:49 -06:00
Mykola Grymalyuk
8ed540c7b4 Disable blank issues 2021-07-05 17:40:36 -06:00
Mykola Grymalyuk
467016521f Update bug_report.yml 2021-07-05 12:23:02 -06:00
Mykola Grymalyuk
33d166a4f8 Add Bug Form 2021-07-05 12:12:10 -06:00
Mykola Grymalyuk
a03623e678 Merge pull request #360 from SquiDual/patch-1
Update TERMS.md
2021-07-05 11:23:06 -06:00
Mykola Grymalyuk
bb424e8ab9 Add WLAN patch
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/353
2021-07-05 11:21:40 -06:00
Mykola Grymalyuk
9e98121e45 Adjust for GUI 2021-07-05 10:09:50 -06:00
SquiDual
f7d842a7f4 Update TERMS.md
Fix typo
2021-07-05 15:31:26 +08:00
Mykola Grymalyuk
a1981ab56d Fix NightShift in Monterey 2021-07-03 15:04:02 -06:00
Mykola Grymalyuk
e820a9ecc8 Fix AirPlay to Mac patch on 2017 iMacs 2021-07-03 13:21:05 -06:00
Mykola Grymalyuk
b13d47df08 Sync CLI 2021-06-28 09:42:23 -06:00
Dhinak G
e6adcdabac Fix typo
closes #351
2021-06-28 11:23:51 -04:00
Mykola Grymalyuk
3c4795fb47 Fix typo 2021-06-28 00:21:54 -06:00
Mykola Grymalyuk
aaf74b2b6a Fix typo 2021-06-28 00:13:55 -06:00
Mykola Grymalyuk
2c4b29400e Enable TeraScale 2 patches by default on desktops 2021-06-27 23:09:28 -06:00
Mykola Grymalyuk
98da3a16a8 Fix Wifi build crash 2021-06-27 22:30:58 -06:00
Mykola Grymalyuk
b24ee0e38c Fix symlinks with rsync 2021-06-27 22:16:47 -06:00
Mykola Grymalyuk
f557b10c3c Merge pull request #339 from dortania/ioreg-rewrite
Completely revamp IOReg probing
2021-06-27 10:32:58 -06:00
Mykola Grymalyuk
b876eda144 Update POST-INSTALL.md 2021-06-26 14:48:32 -06:00
Mykola Grymalyuk
4c8e256e7e Fix SIP typo for hackintosh 2021-06-26 13:51:40 -06:00
Dhinak G
447afac6eb Update build scripts 2021-06-25 09:13:17 -04:00
Dhinak G
657fc97f4f Completely revamp IOReg probing 2021-06-24 19:55:22 -04:00
Mykola Grymalyuk
1d8f87fb78 Reflect new GUI 2021-06-24 16:05:14 -06:00
Mykola Grymalyuk
c6a34ddeb8 Fix build version 2021-06-24 09:52:01 -06:00
Mykola Grymalyuk
694d0397ea Sync docs
Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/146
2021-06-24 09:43:02 -06:00
Mykola Grymalyuk
9cbc243581 Merge pull request #333 from dortania/gui-ci
Implement OpenCore GUI
2021-06-24 09:26:48 -06:00
Mykola Grymalyuk
04a83462c3 Add notarization to TUI
TUI is deprecated, binary will be dropped in the future
2021-06-24 09:19:27 -06:00
Dhinak G
2e3152f23b Fix more IORegistry issues 2021-06-24 09:06:31 -04:00
Mykola Grymalyuk
ba1ac0501b Merge branch 'main' into gui-ci 2021-06-23 22:12:56 -06:00
Mykola Grymalyuk
3ce8b18ecb Update CI 2021-06-23 22:11:45 -06:00
Mykola Grymalyuk
baaa897d10 Add disk type detection 2021-06-23 21:46:42 -06:00
Mykola Grymalyuk
86ffb83c86 Update Constants.py 2021-06-23 20:33:49 -06:00
Mykola Grymalyuk
db708022e9 Fix model issue 2021-06-23 16:20:45 -06:00
Mykola Grymalyuk
cc2eebfd42 Test 2021-06-23 14:34:37 -06:00
Mykola Grymalyuk
8490893960 Fix error 2021-06-23 14:22:34 -06:00
Mykola Grymalyuk
15a5e54cbb Fix zip 2021-06-23 14:06:13 -06:00
Mykola Grymalyuk
1bc9f3d396 Fix 2021-06-23 13:59:24 -06:00
Mykola Grymalyuk
ca22da4ebb Test 2021-06-23 13:58:12 -06:00
Mykola Grymalyuk
e609866c5e Extra codesigning 2021-06-23 13:50:29 -06:00
Mykola Grymalyuk
bb5673e770 Force codesign 2021-06-23 13:15:10 -06:00
Mykola Grymalyuk
024d41c946 Fix incorrect file path 2021-06-23 13:12:12 -06:00
Mykola Grymalyuk
44c4a488f4 Add codesign to GUI 2021-06-23 13:09:42 -06:00
Mykola Grymalyuk
5c09c10301 Fix typo 2021-06-23 12:57:31 -06:00
Mykola Grymalyuk
4f74629e3f Fix CI 2021-06-23 12:54:34 -06:00
Mykola Grymalyuk
56194be716 Fix CI 2021-06-23 12:51:47 -06:00
Mykola Grymalyuk
8cfa90f352 Update CI 2021-06-23 12:34:05 -06:00
Mykola Grymalyuk
1064be45df Add basic GUI to CI pipeline 2021-06-23 11:55:37 -06:00
Mykola Grymalyuk
0428244e60 Update CLI 2021-06-22 22:48:16 -06:00
Mykola Grymalyuk
135125bae6 Update CLI 2021-06-22 22:35:14 -06:00
Mykola Grymalyuk
120f893d1f Fix Root Patch Failure on Nvidia Tesla GPUs 2021-06-22 20:31:41 -06:00
Mykola Grymalyuk
a33c19448f Avoid double sudo in CLI 2021-06-22 16:55:12 -06:00
Mykola Grymalyuk
b8e29eca28 Fix SysPatch 2021-06-22 16:47:30 -06:00
Mykola Grymalyuk
d4873f8070 Fix CLI Root Patching 2021-06-22 16:43:05 -06:00
Dhinak G
c42ec31415 Fix IORegistry issue 2021-06-22 16:25:50 -04:00
Mykola Grymalyuk
8f251c1214 Increment build 2021-06-22 10:19:48 -06:00
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
156 changed files with 15427 additions and 5392 deletions

View File

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

View File

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

143
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,143 @@
name: Bug Report
description: File a bug report
title: "[Bug]: "
labels: [bug]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: dropdown
id: machine
attributes:
label: Machine Model
description: What model was being patched?
options:
- MacBook4,1
- MacBook5,1
- MacBook5,2
- MacBook6,1
- MacBook7,1
- MacBook8,1
- MacBookAir2,1
- MacBookAir3,1
- MacBookAir3,2
- MacBookAir4,1
- MacBookAir4,2
- MacBookAir5,1
- MacBookAir5,2
- MacBookAir6,1
- MacBookAir6,2
- 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
- MacBookPro11,1
- MacBookPro11,2
- MacBookPro11,3
- Macmini3,1
- Macmini4,1
- Macmini5,1
- Macmini5,2
- Macmini5,3
- Macmini6,1
- Macmini6,2
- iMac7,1
- iMac8,1
- iMac9,1
- iMac10,1
- iMac11,1
- iMac11,2
- iMac11,3
- iMac12,1
- iMac12,2
- iMac13,1
- iMac13,2
- iMac13,3
- iMac14,1
- iMac14,2
- iMac14,3
- iMac14,4
- iMac15,1
- MacPro3,1
- MacPro4,1
- MacPro5,1
- Xserve2,1
- Xserve3,1
- Other/Non-Applicable
validations:
required: true
- type: dropdown
id: version
attributes:
label: Application Version
description: What build version of our software are you running?
options:
- Latest Build (nightly)
- Latest Release
validations:
required: true
- type: dropdown
id: variant
attributes:
label: Application Variant
description: What variant of our software are you running?
options:
- GUI (Graphical User Interface)
- TUI (Text User Interface)
- CLI (Command Line Interface)
- Other/Non-Applicable
validations:
required: true
- type: dropdown
id: os-version
attributes:
label: What versions of macOS are you seeing the problem on?
multiple: true
options:
- macOS 12, Monterey
- macOS 11, Big Sur
- macOS 10.15, Catalina
- macOS 10.14, Mojave
- macOS 10.13, High Sierra
- macOS 10.12, Sierra
- macOS 10.11, El Capitan
- Other/Non-Applicable
validations:
required: true
- type: dropdown
id: where-issue
attributes:
label: Where does this issue happen?
multiple: true
options:
- Between booting macOS and Login Screen
- Within macOS (Before Logging in)
- Within macOS (After Logging in)
- Other/Non-Applicable
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: What is the Isssue?
description: Additionally, explain what you expected to happen?
value: "Please clearly explain the issue"
validations:
required: true
- type: textarea
id: extra-info
attributes:
label: Any Additional Information

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1 @@
blank_issues_enabled: false

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

@@ -0,0 +1,33 @@
name: CI - Build Offline TUI
on:
push:
workflow_dispatch:
release:
types: [published]
jobs:
build:
name: Build Offline TUI
runs-on: x86_64_mojave
steps:
- uses: actions/checkout@v2
- run: python3 create_offline_build.py
- run: /Library/Frameworks/Python.framework/Versions/3.9/bin/pyinstaller OpenCore-Patcher.spec
- run: ./after_pyinstaller.sh
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements ./payloads/entitlements.plist -o runtime "dist/OpenCore-Patcher.app"'
- run: cd dist; zip -r ../OpenCore-Patcher-TUI-Offline.app.zip OpenCore-Patcher.app
- name: Upload App to Artifacts
uses: actions/upload-artifact@v2
with:
name: OpenCore-Patcher-TUI-Offline.app
path: OpenCore-Patcher-TUI-Offline.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-TUI-Offline.app.zip
tag: ${{ github.ref }}
file_glob: true

View File

@@ -1,4 +1,4 @@
name: CI - Build App
name: CI - Build TUI
on:
push:
@@ -8,38 +8,26 @@ on:
jobs:
build:
name: Build App
runs-on: self-hosted
name: Build TUI
runs-on: x86_64_mojave
steps:
- uses: actions/checkout@v2
# - name: Install Python Dependencies
# run: |
# python3 -m pip install -U pip
# pip3 install pyinstaller
- run: pyinstaller OpenCore-Patcher.spec
- run: /Library/Frameworks/Python.framework/Versions/3.9/bin/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 Binary to Artifacts
uses: actions/upload-artifact@v2
with:
name: OpenCore-Patcher
path: OpenCore-Patcher.zip
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements ./payloads/entitlements.plist -o runtime "dist/OpenCore-Patcher.app"'
- run: cd dist; zip -r ../OpenCore-Patcher-TUI.app.zip OpenCore-Patcher.app
- run: ./../sign-tui.sh
- name: Upload App to Artifacts
uses: actions/upload-artifact@v2
with:
name: OpenCore-Patcher.app
path: OpenCore-Patcher.app.zip
name: OpenCore-Patcher-TUI.app
path: OpenCore-Patcher-TUI.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
file: OpenCore-Patcher-TUI.app.zip
tag: ${{ github.ref }}
file_glob: true

View File

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

49
.github/workflows/build-gui.yml vendored Normal file
View File

@@ -0,0 +1,49 @@
name: CI - Build GUI
on:
push:
workflow_dispatch:
release:
types: [published]
jobs:
build:
name: Build GUI
runs-on: x86_64_mojave
steps:
- uses: actions/checkout@v2
- run: /Library/Frameworks/Python.framework/Versions/3.9/bin/pyinstaller OpenCore-Patcher.spec
- run: cd dist; cp OpenCore-Patcher ../; cd ..; mv OpenCore-Patcher OCLP-CLI
- name: Download latest nightly OCLP-GUI
run: curl -S -L https://nightly.link/dortania/OCLP-GUI/workflows/build-app/master/OpenCore-Patcher-GUI.app.zip --output ./OpenCore-Patcher-GUI.app.zip --insecure
- run: unzip -o OpenCore-Patcher-GUI.app.zip
- run: unzip OpenCore-Patcher-GUI.app.zip; rm OpenCore-Patcher-GUI.app.zip
- name: Merge new GUI
run: cp OCLP-CLI OpenCore\ Patcher.app/Contents/Resources/
- run: python3 merge_gui.py
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements ./payloads/entitlements.plist -o runtime "OpenCore Patcher.app/Contents/Resources/OCLP-CLI"'
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements ./payloads/entitlements.plist -o runtime "OpenCore Patcher.app/Contents/Resources/oclpd"'
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements ./payloads/entitlements.plist -o runtime "OpenCore Patcher.app"'
- run: ditto -c -k --sequesterRsrc --keepParent OpenCore\ Patcher.app OpenCore-Patcher-GUI.app.zip
- run: ./../sign-gui.sh
- name: Upload GUI to Artifacts
uses: actions/upload-artifact@v2
with:
name: OpenCore-Patcher-GUI.app
path: OpenCore-Patcher-GUI.app.zip
- name: Upload CLI to Artifacts
uses: actions/upload-artifact@v2
with:
name: OCLP-CLI
path: OCLP-CLI
- name: Upload to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: OpenCore-Patcher-GUI.app.zip
tag: ${{ github.ref }}
file_glob: true
- name: Validate OpenCore
run: ./OCLP-CLI --validate

1
.gitignore vendored
View File

@@ -1,6 +1,7 @@
.DS_Store
OCLP-GUI.command
/payloads/Apple
/payloads/*.zip
/payloads/__MACOSX
/App
/Build-Folder

View File

@@ -1,9 +1,265 @@
# OpenCore Legacy Patcher changelog
## 0.3.1
- Allow for setting custom SIP values via TUI
- Drop `CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE` requirement for root patching
- Lowers default SIP Disabled value to 0xA03
- Update Legacy GMUX patchset to latest Sierra Secuirty Update
- [Source](https://github.com/HackintoshHD/mbp5x-instant-gpu-switching)
- Fix non-Metal acceleration crashing on 12.0.1
- Yes Apple adding a notch broke our accel patches
- Fix non-Metal Control Center crashing on 12.0 Beta 10+
- Increment Binaries:
- PatcherSupportPkg 0.1.12
## 0.3.0
- Fix Nvidia Tesla Acceleration in Monterey Beta 7+
- Add missing NVDAStartup
- Allow configuring GMUX usage for Windows
- Applicable for iGPU+dGPU MacBook Pros
- Allow usage of legacy AppleHDA
- Only use for machines that cannot achieve audio support normally
- Main usage for Macs without boot screen output
- Revert iMacPro1,1 SMBIOS usage on Mac Pros and Xserves
- Resolves display output issues on Legacy GCN
- Limit SIP bits flipped when disabled
- 0xFEF -> 0xE03
- `CSR_ALLOW_UNTRUSTED_KEXTS`
- `CSR_ALLOW_UNRESTRICTED_FS`
- `CSR_ALLOW_UNAPPROVED_KEXTS`
- `CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE`
- `CSR_ALLOW_UNAUTHENTICATED_ROOT`
- Fix Kepler DisplayPort output
- Apply `agdpmod=vit9696` patch
- Add Syncretic's SurPlus 11.3+ Race Condition Patch
- [Source](https://github.com/reenigneorcim/SurPlus)
- Downgrade Nvidia Kepler Bundles to 11.0 Beta 3
- Resolves crashing at high loads, credit to [Jackluke](https://github.com/jacklukem) for discovery
- Add Legacy GMUX patchsets
- Applicable for dual GPU MacBookPro5,x and demuxed MacBookPro8,x
- Increment Binaries:
- PatcherSupportPkg 0.1.7 release
- RestrictEvents 1.0.5 rolling (2430ed0)
- Limit MacBookPro6,2 G State
- Works around crashing when switching GPUs
- Fix OTA updates on T2 SMBIOS
- Allow iMac13,x iGPU usage always
- Due to both Kepler and Ivy needing root patching, no benefit to disable the iGPU
- Refactor Hardware Model building
- Resolve dGPU output on MacBookPro10,1
- Add Panel ID `9cd6` for iMac11,3
- Resolves Brightness control
- Add AppleGVA patch set for HD3000 machines
- Mainly applicable for iMac12,x and iGPU-only MacBooks
- Add EFICheckDisabler
- Based off stripped RestrictEvents.kext
- Add SimpleMSR to disable missing battery throttling on Nehalem+ MacBooks
- Implement software demux patch set for 2011 15/17" MacBook Pros
- Alternative to hardware demux
- Adds [AMDGPUWakeHandler](https://github.com/blackgate/AMDGPUWakeHandler)
- Add Legacy GCN support for iMac11,x and iMac12,x with upgraded GPUs
- Note: iMac12,x with legacy GCN will fail to wake
- Fix Beta 10 Bluetooth
- Works around new Broadcom/CSR vendor checks in `bluetoothd`
## 0.2.5
- Implement Latebloom configuration via command line tool
- Implement Root Volume backups in addition to APFS snapshot reversions
- Backups applicable to machines with sealed APFS snapshots
- Allow Root Patching on Mojave and Catalina
- Currently experimental
- Allow disabling of faulty Thunderbolt controllers on 2013-2014 MacBook Pros
- Currently limited to MacBookPro11,x
- Set iMacPro1,1 SMBIOS for Mac Pro and Xserve models
- Allows for wider array of OS support (High Sierra+)
- Use plist override for BCM943224 and BCM94331 support in Big Sur+
- Allows for older OS support through OpenCore
- Increment Binaries:
- OpenCore 0.7.2 release
- Lilu 1.5.5 release
- AppleALC 1.6.3 release
- WhateverGreen 1.5.2 release
- FeatureUnlock 1.0.3 release
- PatcherSupportPkg 0.1.2 release
- Allow iGPU/dGPU switching in Windows
- Applicable to MacBook Pros with Intel iGPU and Nvidia/AMD dGPU
- Clean up Patcher Settings
- Allow disabling of TeraScale 2 Acceleration during root volume patch
- Use for MacBookPro8,x with heavily degraded dGPUs
- Add non-Metal Monterey Acceleration
- Currently supports:
- Intel Ironlake and Sandy Bridge
- Nvidia Tesla
- AMD TeraScale 1 and 2
- Allow Trackpad gestures on MacBook4,1 and MacBook5,2
- System Preferences will not report settings however
- Allow Root Volume Patched Systems to use FileVault 2
- Requires macOS 11.3 (20E232) or newer
- Add offline TUI build
- Allows for root patching without network connection
- Add Legacy Wireless support for Monterey
- Applicable for BCM94328, BCM94322 and Atheros chipsets
- Add Legacy Bluetooth support for Monterey
- Applicable for BRCM2046 and BRCM2070 chipsets
- Disable Library Validation allowing for AMFI usage
- Remove reliance on amfi_get_out_of_my_way=1
- Add Kepler Accleration Patches for Monterey Beta 7 and newer
- Add FirmwareFeature upgrading to all Models
- Fixes Monterey Beta 7 installation issues
- Add iMac7,1 USB map
## 0.2.4
- Fix BlessOverride typo
- Fix Wake on WLAN typo
- Fix Catalyst App crashing in macOS 11.5 (ie. Messages.app)
- Increment Binaries
- PatcherSupportPkg 0.0.15 release
- Implement Latebloom.kext support (v0.19)
- Work around macOS 11.3+ race condition on pre-Sandy Bridge Macs
- Disable USB Map injection when unneeded
## 0.2.3
- Fix more IORegistry issues
- Implement OpenCore GUI
- Ensure symlinks are preserved
- Enable TeraScale 2 patches by default on all models
- Fix NightShift support for macOS Monterey
- Add UniversalControl support
- Currently not enabled by Apple in macOS Monterey Beta 2/iOS 15 Beta 2
- Add optional Wake in WLAN setting
- Note: enabling may create network instability
- Increment Binaries
- OpenCore 0.7.1 release (07-05-2021)
- FeatureUnlock 1.0.3 rolling (07-07-2021)
- Previously known as SidecarFixup
- Lilu 1.5.4 release (07-05-2021)
- AppleALC 1.6.2 release
- WhateverGreen 1.6.2 release
- PatcherSupportPkg 0.0.13 release
- Fix Intel HD4000 DRM Support in macOS Monterey (thanks EduCovas!)
- Support optionally re-enabling iGPU in iMac14,x with dGPUs
- Fix Windows scanning in OpenCore menu when Windows and macOS are stored on the same ESP
## 0.2.2
- Fix IORegistry issue
- Fix Root Patch Failure on Nvidia Tesla GPUs
## 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)
- PatcherSupportPkg 0.0.18
- 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)
@@ -22,6 +278,7 @@
- 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
@@ -47,6 +304,7 @@
- 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
@@ -66,9 +324,11 @@
- 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
@@ -89,6 +349,7 @@
- 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
@@ -97,11 +358,13 @@
- 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)
@@ -117,6 +380,7 @@
- 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+)
@@ -135,6 +399,7 @@
- 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
@@ -145,12 +410,14 @@
- 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
- 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
@@ -166,12 +433,14 @@
- 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
@@ -180,70 +449,83 @@
- Add GopPassThrough quirk for UGA-based systems
## 0.0.13
- Add CPUFriend support to resolve X86PlatformPlugin clashes
- (1.2.3 c388a62 release)
- (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)
- 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)
- 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
- Add checks whether booting with OpenCore
- Fix MouSSE injection
## 0.0.4
- Add basic audio support for legacy chipsets
- Add patch for dual GPU machines
## 0.0.3
- Fix Wireless patch logic
## 0.0.2
- Expand IOHIDFamily Patch to all Nvidia chipsets
- Fix Airdrop 1.0 support
- Add El Capitan era wireless cards
## 0.0.1
- Initial developer preview

View File

@@ -1,193 +0,0 @@
#!/usr/bin/env python3
# Copyright (C) 2020-2021 Mykola Grymalyuk
from __future__ import print_function
import binascii
import plistlib
import subprocess
import sys
import time
import platform
import argparse
from pathlib import Path
from Resources import Build, ModelArray, PCIIDArray, Constants, SysPatch, Utilities, CliMenu, DeviceProbe
class OpenCoreLegacyPatcher():
def __init__(self):
self.constants = Constants.Constants()
self.current_model: str = None
opencore_model: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
if not opencore_model.startswith("nvram: Error getting variable"):
opencore_model = [line.strip().split(":oem-product ", 1)[1] for line in opencore_model.split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
self.current_model = opencore_model
else:
self.current_model = subprocess.run("system_profiler SPHardwareDataType".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
self.current_model = [line.strip().split(": ", 1)[1] for line in self.current_model.stdout.decode().split("\n") if line.strip().startswith("Model Identifier")][0]
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
if self.current_model in ModelArray.NoAPFSsupport:
self.constants.serial_settings = "Moderate"
if self.current_model in ModelArray.LegacyGPU:
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
if dgpu_vendor:
if (dgpu_vendor == self.constants.pci_amd_ati and (dgpu_device in PCIIDArray.amd_ids().polaris_ids or dgpu_device in PCIIDArray.amd_ids().vega_ids or dgpu_device in PCIIDArray.amd_ids().navi_ids or dgpu_device in PCIIDArray.amd_ids().legacy_gcn_ids)) or (dgpu_vendor == self.constants.pci_nvidia and dgpu_device in PCIIDArray.nvidia_ids().kepler_ids):
self.constants.sip_status = True
self.constants.secure_status = True
else:
self.constants.sip_status = False
self.constants.secure_status = False
# Logic for when user runs custom OpenCore build and do not expose it
# Note: This logic currently only applies for iMacPro1,1 users, see below threads on the culprits:
# - https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/post-17425857
# - https://forums.macrumors.com/threads/opencore-on-the-mac-pro.2207814/
# PLEASE FOR THE LOVE OF GOD JUST SET ExposeSensitiveData CORRECTLY!!!
if self.current_model == "iMacPro1,1":
serial: str = subprocess.run("system_profiler SPHardwareDataType | grep Serial".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
serial = [line.strip().split("Number (system): ", 1)[1] for line in serial.split("\n") if line.strip().startswith("Serial")][0]
true_model = subprocess.run([str(self.constants.macserial_path), "--info", str(serial)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
true_model = [i.partition(" - ")[2] for i in true_model.stdout.decode().split("\n") if "Model: " in i][0]
print(f"True Model: {true_model}")
if not true_model.startswith("Unknown"):
self.current_model = true_model
custom_cpu_model_value: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:revcpuname".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
if not custom_cpu_model_value.startswith("nvram: Error getting variable"):
custom_cpu_model_value = [line.strip().split(":revcpuname ", 1)[1] for line in custom_cpu_model_value.split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
if custom_cpu_model_value.split("%00")[0] != "":
self.constants.custom_cpu_model = 1
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
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('--force_legacy', help='Allow acceleration on Mac Pros and Xserves', 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)
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.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.force_legacy:
print("- Allowing legacy acceleration patches on newer models")
self.constants.assume_legacy = True
if args.build:
if args.model:
print(f"- Using custom model: {args.model}")
self.constants.custom_model = args.model
self.build_opencore()
else:
print(f"- Using detected model: {self.current_model}")
self.build_opencore()
if args.patch_sys_vol:
print("- Set System Volume patching")
self.patch_vol()
elif args.unpatch_sys_vol:
print("- Set System Volume unpatching")
self.unpatch_vol()
def hexswap(self, 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 patch_vol(self):
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_patch()
def unpatch_vol(self):
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_unpatch()
def build_opencore(self):
Build.BuildOpenCore(self.constants.custom_model or self.current_model, self.constants).build_opencore()
def install_opencore(self):
Build.BuildOpenCore(self.constants.custom_model or self.current_model, self.constants).copy_efi()
OpenCoreLegacyPatcher()
# Example arg for OCLP command line
# ./OCLP-CLI --build --verbose --debug_oc --debug_kext --model iMac11,2

View File

@@ -1,34 +0,0 @@
# -*- 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,
[],
name='OCLP-CLI',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )

View File

@@ -3,223 +3,80 @@
from __future__ import print_function
import binascii
import plistlib
import subprocess
import sys
import time
import platform
from pathlib import Path
from Resources import Build, ModelArray, PCIIDArray, Constants, SysPatch, Utilities, CliMenu, DeviceProbe
from resources import build, cli_menu, constants, utilities, device_probe, os_probe, defaults, arguments
from data import model_array
class OpenCoreLegacyPatcher():
class OpenCoreLegacyPatcher:
def __init__(self):
self.constants = Constants.Constants()
self.current_model: str = None
opencore_model: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
if not opencore_model.startswith("nvram: Error getting variable"):
opencore_model = [line.strip().split(":oem-product ", 1)[1] for line in opencore_model.split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
self.current_model = opencore_model
print("- Loading...")
self.constants = constants.Constants()
self.generate_base_data()
if utilities.check_cli_args() is None:
self.main_menu()
def generate_base_data(self):
self.constants.detected_os = os_probe.detect_kernel_major()
self.constants.detected_os_minor = os_probe.detect_kernel_minor()
self.constants.detected_os_build = os_probe.detect_kernel_build()
self.constants.computer = device_probe.Computer.probe()
self.constants.recovery_status = utilities.check_recovery()
self.computer = self.constants.computer
defaults.generate_defaults.probe(self.computer.real_model, True, self.constants)
if utilities.check_cli_args() is not None:
print("- Detected arguments, switching to CLI mode")
self.constants.gui_mode = True # Assumes no user interaction is required
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")
arguments.arguments().parse_arguments(self.constants)
else:
self.current_model = plistlib.loads(subprocess.run("system_profiler -detailLevel mini -xml SPHardwareDataType".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.strip())[0]["_items"][0]["machine_model"]
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
if self.current_model in ModelArray.NoAPFSsupport:
self.constants.serial_settings = "Moderate"
if self.current_model in ModelArray.LegacyGPU:
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
if (dgpu_vendor == self.constants.pci_amd_ati and (dgpu_device in PCIIDArray.amd_ids().polaris_ids or dgpu_device in PCIIDArray.amd_ids().vega_ids or dgpu_device in PCIIDArray.amd_ids().navi_ids or dgpu_device in PCIIDArray.amd_ids().legacy_gcn_ids)) or (dgpu_vendor == self.constants.pci_nvidia and dgpu_device in PCIIDArray.nvidia_ids().kepler_ids):
self.constants.sip_status = True
self.constants.secure_status = True
else:
self.constants.sip_status = False
self.constants.secure_status = False
# Logic for when user runs custom OpenCore build and do not expose it
# Note: This logic currently only applies for iMacPro1,1 users, see below threads on the culprits:
# - https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/post-17425857
# - https://forums.macrumors.com/threads/opencore-on-the-mac-pro.2207814/
# PLEASE FOR THE LOVE OF GOD JUST SET ExposeSensitiveData CORRECTLY!!!
if self.current_model == "iMacPro1,1":
serial: str = subprocess.run("system_profiler SPHardwareDataType | grep Serial".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
serial = [line.strip().split("Number (system): ", 1)[1] for line in serial.split("\n") if line.strip().startswith("Serial")][0]
true_model = subprocess.run([str(self.constants.macserial_path), "--info", str(serial)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
true_model = [i.partition(" - ")[2] for i in true_model.stdout.decode().split("\n") if "Model: " in i][0]
print(f"True Model: {true_model}")
if not true_model.startswith("Unknown"):
self.current_model = true_model
custom_cpu_model_value: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:revcpuname".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
if not custom_cpu_model_value.startswith("nvram: Error getting variable"):
custom_cpu_model_value = [line.strip().split(":revcpuname ", 1)[1] for line in custom_cpu_model_value.split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
if custom_cpu_model_value.split("%00")[0] != "":
self.constants.custom_cpu_model = 1
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
def hexswap(self, 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 build_opencore(self):
Build.BuildOpenCore(self.constants.custom_model or self.current_model, self.constants).build_opencore()
def install_opencore(self):
Build.BuildOpenCore(self.constants.custom_model or self.current_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 in {"y", "Y", "yes", "Yes"}:
print("\n".join(ModelArray.SupportedSMBIOS))
input("Press any key to continue...")
if self.constants.custom_model in ModelArray.NoAPFSsupport:
self.constants.serial_settings = "Moderate"
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 = [
# TODO: Enable setting OS target when more OSes become supported by the patcher
#[f"Change OS version:\t\t\tCurrently macOS {self.constants.os_support}", self.change_os],
[f"Enable Verbose Mode:\t\tCurrently {self.constants.verbose_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_verbose],
[f"Enable OpenCore DEBUG:\t\tCurrently {self.constants.opencore_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_oc],
[f"Enable Kext DEBUG:\t\t\tCurrently {self.constants.kext_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_kext],
[f"Set ShowPicker Mode:\t\tCurrently {self.constants.showpicker}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_showpicker],
[f"Set Vault Mode:\t\t\tCurrently {self.constants.vault}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_vault],
[f"Set SIP and SecureBootModel:\tSIP: {self.constants.sip_status} SBM: {self.constants.secure_status}", CliMenu.MenuOptions(self.constants.custom_model or self.current_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.current_model, self.constants).allow_native_models],
[f"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.current_model, self.constants).change_metal],
[f"Assume Upgraded Wifi Always:\tCurrently {self.constants.wifi_build}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_wifi],
[f"Set SMBIOS Mode:\t\t\tCurrently {self.constants.serial_settings}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_serial],
[f"DRM Preferences:\t\t\tCurrently {self.constants.drm_support}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).drm_setting],
[f"Set Generic Bootstrap:\t\tCurrently {self.constants.boot_efi}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).bootstrap_setting],
[f"Assume Legacy GPU:\t\t\tCurrently {self.constants.assume_legacy}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).force_accel_setting],
#[f"Download more RAM:\t\t\tCurrently {self.constants.download_ram}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).download_more_ram_dot_com],
[f"Disable CPU Friend:\t\t\tCurrently {self.constants.disallow_cpufriend}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).disable_cpufriend],
[f"Set Custom name {self.constants.custom_cpu_model_value}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).custom_cpu],
]
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"])
print("""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 (2000-4000 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
""")
change_menu = input("Patch System Volume?: ")
if change_menu == "1":
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_patch()
elif change_menu == "2":
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_unpatch()
else:
print("Returning to main menu")
print("- No arguments present, loading TUI")
def main_menu(self):
response = None
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS11
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.current_model}",
f"Target OS: macOS {self.constants.os_support}",
f"Selected Model: {self.constants.custom_model or self.computer.real_model}",
]
if (self.constants.custom_model or self.current_model) not in ModelArray.SupportedSMBIOS and self.constants.allow_oc_everywhere is False:
if (self.constants.custom_model or self.computer.real_model) not in model_array.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.'
"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 \n"Change Model" option in the menu.',
"",
'If you want to run OCLP on a native Mac, please toggle \n"Allow OpenCore on native Models" in settings',
]
elif not self.constants.custom_model and self.current_model == "iMac7,1" and \
"SSE4.1" not in subprocess.run("sysctl machdep.cpu.features".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode():
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.current_model} with SSE4.1+, please select the "Change Model" option in the menu.'
"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+"
]
in_between = ["This model is supported", "However please ensure the CPU has been upgraded to support SSE4.1+"]
else:
in_between = ["This model is supported"]
menu = Utilities.TUIMenu(title, "Please select an option: ", in_between=in_between, auto_number=True, top_level=True)
menu = utilities.TUIMenu(title, "Please select an option: ", in_between=in_between, auto_number=True, top_level=True)
options = (
[["Build OpenCore", self.build_opencore]] if ((self.constants.custom_model or self.current_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]
[["Build OpenCore", build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).build_opencore]]
if ((self.constants.custom_model or self.computer.real_model) in model_array.SupportedSMBIOS) or self.constants.allow_oc_everywhere is True
else []
) + [
["Install OpenCore to USB/internal drive", build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).copy_efi],
["Post-Install Volume Patch", cli_menu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).PatchVolume],
["Change Model", cli_menu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_model],
["Patcher Settings", cli_menu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).patcher_settings],
["Credits", cli_menu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).credits],
]
for option in options:
@@ -227,8 +84,8 @@ B. Exit
response = menu.start()
if getattr(sys, "frozen", False):
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()
OpenCoreLegacyPatcher()

View File

@@ -1,13 +1,14 @@
# -*- mode: python ; coding: utf-8 -*-
import sys, os
sys.path.append(os.path.abspath(os.getcwd()))
from Resources import Constants
from resources import constants
block_cipher = None
a = Analysis(['OpenCore-Patcher.command'],
pathex=['resources', 'data'],
binaries=[],
datas=[('payloads', 'payloads'), ('Resources', 'Resources')],
datas=[('payloads', 'payloads')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
@@ -34,10 +35,10 @@ exe = EXE(pyz,
console=True )
app = BUNDLE(exe,
name='OpenCore-Patcher.app',
icon="OC-Patcher.icns",
icon="payloads/OC-Patcher.icns",
bundle_identifier=None,
info_plist={
"CFBundleShortVersionString": Constants.Constants().patcher_version,
"CFBundleShortVersionString": constants.Constants().patcher_version,
"CFBundleExecutable": "MacOS/Launcher",
"NSHumanReadableCopyright": "Copyright 2020-2021 Dortania"
})

View File

@@ -1,8 +1,9 @@
# 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="images/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 program with an [Objective-C GUI](https://github.com/dortania/OCLP-GUI) 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.
Supported features:
@@ -19,7 +20,8 @@ Note: Only clean-installs and upgrades are supported, macOS Big Sur installs alr
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.
* For Mojave and Catalina support, we recommend the use of [dosdude1's patchers](http://dosdude1.com)
* For macOS Mojave and Catalina support, we recommend the use of [dosdude1's patchers](http://dosdude1.com)
* macOS Monterey usage is provided however support is limited, currently recommended for users to run Big Sur for best compatibility
## Support
@@ -27,6 +29,13 @@ To get aid with the patcher, we recommend joining the [OpenCore Patcher Paradise
* [OpenCore Legacy Patcher's Issue's tab](https://github.com/dortania/OpenCore-Legacy-Patcher/issues)
Nightly builds can be found here courteous of nightly.link:
* [Nightly OpenCore Patcher (GUI)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-gui/main/OpenCore-Patcher-GUI.app.zip)
* [Nightly OpenCore Patcher (TUI)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app/main/OpenCore-Patcher-TUI.app.zip)
* [Offline Variant](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app-offline/main/OpenCore-Patcher-TUI-Offline.app.zip) (No network connection needed on target Mac for Root Patching)
* [Nightly OpenCore Patcher (CLI)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-gui/main/OCLP-CLI.zip)
## Credits
* [Acidanthera](https://github.com/Acidanthera)
@@ -37,20 +46,28 @@ To get aid with the patcher, we recommend joining the [OpenCore Patcher Paradise
* 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)
* [AAAMouSSE](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/), [telemetrap](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/post-28447707) and [SurPlus](https://github.com/reenigneorcim/SurPlus)
* [dosdude1](https://github.com/dosdude1)
* Main author of GUI
* Development of previous patchers, laying out much of what needs to be patched
* [parrotgeek1](https://github.com/parrotgeek1)
* [VMM Patch Set](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/4a8f61a01da72b38a4b2250386cc4b497a31a839/payloads/Config/config.plist#L1222-L1281)
* [BarryKN](https://github.com/BarryKN)
* Development of previous patchers, laying out much of what needs to be patched
* [vit9696](https://github.com/vit9696)
* Endless amount of help troubleshooting, determining fixes and writing patches
* [mario_bros_tech](https://github.com/mariobrostech) and the rest of the Unsupported Mac Discord
* Catalyst that started OpenCore Legacy Patcher
* [arter97](https://github.com/arter97/)
* [SimpleMSR](https://github.com/arter97/SimpleMSR/) to disable firmware throttling in Nehalem+ MacBooks without batteries
* 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
* for macOS and many of the kexts, frameworks and other binaries we reimplemented into newer OSes

View File

@@ -1,944 +0,0 @@
# Commands for building the EFI and SMBIOS
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
from __future__ import print_function
import binascii
import plistlib
import shutil
import subprocess
import uuid
import zipfile
import os
import sys
import platform
import ast
from pathlib import Path
from datetime import date
from Resources import Constants, ModelArray, PCIIDArray, Utilities, DeviceProbe
def human_fmt(num):
for unit in ["B", "KB", "MB", "GB", "TB", "PB"]:
if abs(num) < 1000.0:
return "%3.1f %s" % (num, unit)
num /= 1000.0
return "%.1f %s" % (num, "EB")
def rmtree_handler(func, path, exc_info):
if exc_info[0] == FileNotFoundError:
return
raise # pylint: disable=misplaced-bare-raise
class BuildOpenCore:
def __init__(self, model, versions):
self.model = model
self.config = None
self.constants: Constants.Constants = versions
def hexswap(self, 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 build_efi(self):
Utilities.cls()
print(f"Building Configuration for model: {self.model}")
if not Path(self.constants.build_path).exists():
Path(self.constants.build_path).mkdir()
print("Created build folder")
else:
print("Build folder already present, skipping")
if Path(self.constants.opencore_zip_copied).exists():
print("Deleting old copy of OpenCore zip")
Path(self.constants.opencore_zip_copied).unlink()
if Path(self.constants.opencore_release_folder).exists():
print("Deleting old copy of OpenCore folder")
shutil.rmtree(self.constants.opencore_release_folder, onerror=rmtree_handler)
print()
print(f"- Adding OpenCore v{self.constants.opencore_version} {self.constants.opencore_build}")
shutil.copy(self.constants.opencore_zip_source, self.constants.build_path)
zipfile.ZipFile(self.constants.opencore_zip_copied).extractall(self.constants.build_path)
print("- Adding config.plist for OpenCore")
# Setup config.plist for editing
shutil.copy(self.constants.plist_template, self.constants.oc_folder)
self.config = plistlib.load(Path(self.constants.plist_path).open("rb"))
# Set revision in config
self.config["#Revision"]["Build-Version"] = f"{self.constants.patcher_version} - {date.today()}"
if not self.constants.custom_model:
self.config["#Revision"]["Build-Type"] = "OpenCore Built on Target Machine"
else:
self.config["#Revision"]["Build-Type"] = "OpenCore Built for External Machine"
self.config["#Revision"]["OpenCore-Version"] = f"{self.constants.opencore_version} - {self.constants.opencore_build} - {self.constants.opencore_commit}"
self.config["#Revision"]["Original-Model"] = self.model
self.config["NVRAM"]["Add"]["4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102"]["OCLP-Version"] = f"{self.constants.patcher_version}"
for name, version, path, check in [
# Essential kexts
("Lilu.kext", self.constants.lilu_version, self.constants.lilu_path, lambda: True),
("WhateverGreen.kext", self.constants.whatevergreen_version, self.constants.whatevergreen_path, lambda: self.constants.allow_oc_everywhere is False),
("RestrictEvents.kext", self.constants.restrictevents_version, self.constants.restrictevents_path, lambda: self.model in ModelArray.MacPro71),
("RestrictEvents.kext", self.constants.restrictevents_mbp_version, self.constants.restrictevents_mbp_path, lambda: self.model == "MacBookPro9,1"),
("NightShiftEnabler.kext", self.constants.nightshift_version, self.constants.nightshift_path, lambda: self.model not in ModelArray.NightShiftExclude and self.constants.allow_oc_everywhere is False and self.constants.serial_settings == "Minimal"),
("SMC-Spoof.kext", self.constants.smcspoof_version, self.constants.smcspoof_path, lambda: self.constants.allow_oc_everywhere is False),
# CPU patches
("AppleMCEReporterDisabler.kext", self.constants.mce_version, self.constants.mce_path, lambda: self.model in ModelArray.DualSocket),
("AAAMouSSE.kext", self.constants.mousse_version, self.constants.mousse_path, lambda: self.model in ModelArray.SSEEmulator),
("telemetrap.kext", self.constants.telemetrap_version, self.constants.telemetrap_path, lambda: self.model in ModelArray.MissingSSE42),
("CPUFriend.kext", self.constants.cpufriend_version, self.constants.cpufriend_path, lambda: self.model != "iMac7,1" and self.constants.allow_oc_everywhere is False and self.constants.disallow_cpufriend is False),
# Ethernet patches
("nForceEthernet.kext", self.constants.nforce_version, self.constants.nforce_path, lambda: self.model in ModelArray.EthernetNvidia),
("MarvelYukonEthernet.kext", self.constants.marvel_version, self.constants.marvel_path, lambda: self.model in ModelArray.EthernetMarvell),
("CatalinaBCM5701Ethernet.kext", self.constants.bcm570_version, self.constants.bcm570_path, lambda: self.model in ModelArray.EthernetBroadcom),
# Legacy audio
("AppleALC.kext", self.constants.applealc_version, self.constants.applealc_path, lambda: self.model in ModelArray.LegacyAudio or self.model in ModelArray.MacPro71),
# IDE patch
("AppleIntelPIIXATA.kext", self.constants.piixata_version, self.constants.piixata_path, lambda: self.model in ModelArray.IDEPatch),
# Misc
("SidecarFixup.kext", self.constants.sidecarfixup_version, self.constants.sidecarfixup_path, lambda: self.model in ModelArray.SidecarPatch),
]:
self.enable_kext(name, version, path, check)
if self.constants.allow_oc_everywhere is False:
self.get_item_by_kv(self.config["Kernel"]["Patch"], "Identifier", "com.apple.driver.AppleSMC")["Enabled"] = True
if not self.constants.custom_model and (self.constants.allow_oc_everywhere is True or self.model in ModelArray.MacPro71):
# Use Innie's same logic:
# https://github.com/cdf/Innie/blob/v1.3.0/Innie/Innie.cpp#L90-L97
storage_devices = plistlib.loads(subprocess.run("ioreg -c IOPCIDevice -r -d2 -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
storage_devices = [i for i in storage_devices if i["class-code"] == binascii.unhexlify(self.constants.classcode_sata) or i["class-code"] == binascii.unhexlify(self.constants.classcode_nvme)]
storage_path_gfx: str = subprocess.run([self.constants.gfxutil_path] + f"-v".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
try:
x = 1
for i in storage_devices:
storage_vendor = self.hexswap(binascii.hexlify(i["vendor-id"]).decode()[:4])
storage_device = self.hexswap(binascii.hexlify(i["device-id"]).decode()[:4])
print(f'- Fixing PCIe Storage Controller ({x}) reporting')
try:
storage_path = [line.strip().split("= ", 1)[1] for line in storage_path_gfx.split("\n") if f'{storage_vendor}:{storage_device}'.lower() in line.strip()][0]
self.config["DeviceProperties"]["Add"][storage_path] = { "built-in": 1}
except IndexError:
print(f"- Failed to find Device path for PCIe Storage Controller {x}, falling back to Innie")
if self.get_kext_by_bundle_path("Innie.kext")["Enabled"] is False:
self.enable_kext("Innie.kext", self.constants.innie_version, self.constants.innie_path)
x = x + 1
except ValueError:
print("- No PCIe Storage Controllers found to fix(V)")
except IndexError:
print("- No PCIe Storage Controllers found to fix(I)")
if not self.constants.custom_model:
nvme_devices = plistlib.loads(subprocess.run("ioreg -c IOPCIDevice -r -d2 -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
nvme_devices = [i for i in nvme_devices if i.get("IORegistryEntryChildren", None) and i["vendor-id"] != binascii.unhexlify("6B100000") and i["IORegistryEntryChildren"][0]["IORegistryEntryName"] == "IONVMeController"]
try:
x = 1
for i in nvme_devices:
nvme_vendor = self.hexswap(binascii.hexlify(i["vendor-id"]).decode()[:4])
nvme_device = self.hexswap(binascii.hexlify(i["device-id"]).decode()[:4])
print(f'- Found 3rd Party NVMe SSD ({x}): {nvme_vendor}:{nvme_device}')
nvme_aspm = i["pci-aspm-default"]
try:
nvme_acpi = i["acpi-path"]
nvme_acpi = DeviceProbe.pci_probe().acpi_strip(nvme_acpi)
except KeyError:
print(f"- No ACPI entry found for NVMe SSD ({x})")
nvme_acpi = ""
# Disable Bit 0 (L0s), enable Bit 1 (L1)
if not isinstance(nvme_aspm, int):
nvme_aspm = int.from_bytes(nvme_aspm, byteorder='little')
nvme_aspm = (nvme_aspm & (~3)) | 2
#nvme_aspm &= ~1 # Turn off bit 1
#nvme_aspm |= 2 # Turn on bit 2
self.config["#Revision"][f"Hardware-NVMe-{x}"] = f'{nvme_vendor}:{nvme_device}'
try:
nvme_path = DeviceProbe.pci_probe().deviceproperty_probe(nvme_vendor, nvme_device, nvme_acpi)
if nvme_path == "":
raise IndexError
nvme_path_parent = DeviceProbe.pci_probe().device_property_parent(nvme_path)
print(f"- Found NVMe ({x}) at {nvme_path}")
self.config["DeviceProperties"]["Add"][nvme_path] = {"pci-aspm-default": nvme_aspm, "built-in": 1}
self.config["DeviceProperties"]["Add"][nvme_path_parent] = {"pci-aspm-default": nvme_aspm}
except IndexError:
if "-nvmefaspm" not in self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"]:
print("- Falling back to -nvmefaspm")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -nvmefaspm"
if self.get_kext_by_bundle_path("NVMeFix.kext")["Enabled"] is False:
self.enable_kext("NVMeFix.kext", self.constants.nvmefix_version, self.constants.nvmefix_path)
x = x + 1
except ValueError:
print("- No 3rd Party NVMe drive found(V)")
except IndexError:
print("- No 3rd Party NVMe drive found(I)")
def wifi_fake_id(self):
default_path = True
self.enable_kext("AirportBrcmFixup.kext", self.constants.airportbcrmfixup_version, self.constants.airportbcrmfixup_path)
self.get_kext_by_bundle_path("AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcmNIC_Injector.kext")["Enabled"] = True
if not self.constants.custom_model:
arpt_path = DeviceProbe.pci_probe().deviceproperty_probe(wifi_vendor, wifi_device, wifi_acpi)
if arpt_path:
print(f"- Found ARPT device at {arpt_path}")
default_path = False
else:
default_path = True
if default_path is True:
if self.model in ModelArray.nvidiaHDEF:
# Nvidia chipsets all have the same path to ARPT
arpt_path = "PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)"
elif self.model in ("iMac7,1", "iMac8,1", "MacPro3,1", "MacBookPro4,1"):
arpt_path = "PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)"
elif self.model in ("iMac13,1", "iMac13,2"):
arpt_path = "PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)"
elif self.model in ("MacPro4,1", "MacPro5,1"):
arpt_path = "PciRoot(0x0)/Pci(0x1C,0x5)/Pci(0x0,0x0)"
else:
# Assumes we have a laptop with Intel chipset
# iMac11,x-12,x also apply
arpt_path = "PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)"
print(f"- Using known DevicePath {arpt_path}")
print("- Applying fake ID for WiFi")
self.config["DeviceProperties"]["Add"][arpt_path] = {"device-id": binascii.unhexlify("ba430000"), "compatible": "pci14e4,43ba"}
# WiFi patches
# TODO: -a is not supported in Lion and older, need to add proper fix
if self.constants.detected_os > self.constants.lion and not self.constants.custom_model:
wifi_vendor,wifi_device,wifi_ioname,wifi_acpi = DeviceProbe.pci_probe().wifi_probe()
if wifi_vendor:
print(f"- Found Wireless Device {wifi_vendor}:{wifi_device} ({wifi_ioname})")
self.config["#Revision"]["Hardware-Wifi"] = f"{wifi_vendor}:{wifi_device} ({wifi_ioname}"
else:
wifi_vendor = ""
print("- Unable to run Wireless hardware detection")
if self.constants.wifi_build is True:
print("- Skipping Wifi patches on request")
elif not self.constants.custom_model and wifi_vendor:
if wifi_vendor == self.constants.pci_broadcom:
# This works around OCLP spoofing the Wifi card and therefore unable to actually detect the correct device
if wifi_device in PCIIDArray.broadcom_ids().BCM4360Wifi and wifi_ioname not in ["pci14e4,4353", "pci14e4,4331"]:
self.enable_kext("AirportBrcmFixup.kext", self.constants.airportbcrmfixup_version, self.constants.airportbcrmfixup_path)
elif wifi_ioname in ["pci14e4,4353", "pci14e4,4331"] or wifi_device in PCIIDArray.broadcom_ids().BCM94331Wifi:
wifi_fake_id(self)
elif wifi_device in PCIIDArray.broadcom_ids().BCM94322Wifi:
self.enable_kext("IO80211Mojave.kext", self.constants.io80211mojave_version, self.constants.io80211mojave_path)
self.get_kext_by_bundle_path("IO80211Mojave.kext/Contents/PlugIns/AirPortBrcm4331.kext")["Enabled"] = True
elif wifi_device in PCIIDArray.broadcom_ids().BCM94328Wifi:
self.enable_kext("corecaptureElCap.kext", self.constants.corecaptureelcap_version, self.constants.corecaptureelcap_path)
self.enable_kext("IO80211ElCap.kext", self.constants.io80211elcap_version, self.constants.io80211elcap_path)
self.get_kext_by_bundle_path("IO80211ElCap.kext/Contents/PlugIns/AppleAirPortBrcm43224.kext")["Enabled"] = True
elif wifi_vendor == self.constants.pci_atheros and wifi_device in PCIIDArray.atheros_ids().AtherosWifi:
self.enable_kext("IO80211HighSierra.kext", self.constants.io80211high_sierra_version, self.constants.io80211high_sierra_path)
self.get_kext_by_bundle_path("IO80211HighSierra.kext/Contents/PlugIns/AirPortAtheros40.kext")["Enabled"] = True
else:
if self.model in ["iMac14,1", "iMac14,2", "iMac14,3"]:
self.enable_kext("AirportBrcmFixup.kext", self.constants.airportbcrmfixup_version, self.constants.airportbcrmfixup_path)
elif self.model in ModelArray.WifiBCM94331:
wifi_fake_id(self)
elif self.model in ModelArray.WifiBCM94322:
self.enable_kext("IO80211Mojave.kext", self.constants.io80211mojave_version, self.constants.io80211mojave_path)
self.get_kext_by_bundle_path("IO80211Mojave.kext/Contents/PlugIns/AirPortBrcm4331.kext")["Enabled"] = True
elif self.model in ModelArray.WifiBCM94328:
self.enable_kext("corecaptureElCap.kext", self.constants.corecaptureelcap_version, self.constants.corecaptureelcap_path)
self.enable_kext("IO80211ElCap.kext", self.constants.io80211elcap_version, self.constants.io80211elcap_path)
self.get_kext_by_bundle_path("IO80211ElCap.kext/Contents/PlugIns/AppleAirPortBrcm43224.kext")["Enabled"] = True
elif self.model in ModelArray.WifiAtheros:
self.enable_kext("IO80211HighSierra.kext", self.constants.io80211high_sierra_version, self.constants.io80211high_sierra_path)
self.get_kext_by_bundle_path("IO80211HighSierra.kext/Contents/PlugIns/AirPortAtheros40.kext")["Enabled"] = True
# CPUFriend
pp_map_path = Path(self.constants.platform_plugin_plist_path) / Path(f"{self.model}/Info.plist")
if self.model != "iMac7,1" and self.constants.allow_oc_everywhere is False:
Path(self.constants.pp_kext_folder).mkdir()
Path(self.constants.pp_contents_folder).mkdir()
shutil.copy(pp_map_path, self.constants.pp_contents_folder)
self.get_kext_by_bundle_path("CPUFriendDataProvider.kext")["Enabled"] = True
# HID patches
if self.model in ModelArray.LegacyHID:
print("- Adding IOHIDFamily patch")
self.get_item_by_kv(self.config["Kernel"]["Patch"], "Identifier", "com.apple.iokit.IOHIDFamily")["Enabled"] = True
# SSDT patches
if self.model in ModelArray.pciSSDT:
print("- Adding SSDT-CPBG.aml")
self.get_item_by_kv(self.config["ACPI"]["Add"], "Path", "SSDT-CPBG.aml")["Enabled"] = True
shutil.copy(self.constants.pci_ssdt_path, self.constants.acpi_path)
if self.model in ModelArray.windows_audio:
# Based on: https://egpu.io/forums/pc-setup/fix-dsdt-override-to-correct-error-12/
print("- Enabling Windows 10 UEFI Audio support")
self.get_item_by_kv(self.config["ACPI"]["Add"], "Path", "SSDT-PCI.aml")["Enabled"] = True
self.get_item_by_kv(self.config["ACPI"]["Patch"], "Comment", "BUF0 to BUF1")["Enabled"] = True
shutil.copy(self.constants.windows_ssdt_path, self.constants.acpi_path)
# USB Map
usb_map_path = Path(self.constants.plist_folder_path) / Path("AppleUSBMaps/Info.plist")
# iMac7,1 kernel panics with USB map installed, remove for time being until properly debugged
if usb_map_path.exists() and self.constants.allow_oc_everywhere is False and self.model != "iMac7,1":
print(f"- Adding USB-Map.kext")
Path(self.constants.map_kext_folder).mkdir()
Path(self.constants.map_contents_folder).mkdir()
shutil.copy(usb_map_path, self.constants.map_contents_folder)
self.get_kext_by_bundle_path("USB-Map.kext")["Enabled"] = True
agdp_map_path = Path(self.constants.plist_folder_path) / Path("AppleGraphicsDevicePolicy/Info.plist")
agpm_map_path = Path(self.constants.plist_folder_path) / Path("AppleGraphicsPowerManagement/Info.plist")
amc_map_path = Path(self.constants.plist_folder_path) / Path("AppleMuxControl/Info.plist")
if self.model == "MacBookPro9,1":
print(f"- Adding Display Map Overrides")
self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"] = {"agdpmod": "vit9696"}
Path(self.constants.agdp_kext_folder).mkdir()
Path(self.constants.agdp_contents_folder).mkdir()
Path(self.constants.agpm_kext_folder).mkdir()
Path(self.constants.agpm_contents_folder).mkdir()
Path(self.constants.amc_kext_folder).mkdir()
Path(self.constants.amc_contents_folder).mkdir()
shutil.copy(agdp_map_path, self.constants.agdp_contents_folder)
shutil.copy(agpm_map_path, self.constants.agpm_contents_folder)
shutil.copy(amc_map_path, self.constants.amc_contents_folder)
self.get_kext_by_bundle_path("AGDP-Override.kext")["Enabled"] = True
self.get_kext_by_bundle_path("AGPM-Override.kext")["Enabled"] = True
self.get_kext_by_bundle_path("AMC-Override.kext")["Enabled"] = True
# AGPM Patch
if self.model in ModelArray.DualGPUPatch:
print("- Adding dual GPU patch")
if not self.constants.custom_model:
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
self.gfx0_path = DeviceProbe.pci_probe().deviceproperty_probe(dgpu_vendor,dgpu_device,dgpu_acpi)
if self.gfx0_path == "":
print("- Failed to find GFX0 Device path, falling back on known logic")
self.gfx0_path = "PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"
else:
print(f"- Found GFX0 Device Path: {self.gfx0_path}")
else:
self.gfx0_path = "PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"
if self.model in ModelArray.IntelNvidiaDRM and self.constants.drm_support is True:
print("- Prioritizing DRM support over Intel QuickSync")
self.config["DeviceProperties"]["Add"][self.gfx0_path] = {"agdpmod": "vit9696", "shikigva": 256}
self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x2,0x0)"] = {"disable-gpu-min": "20.0.0"}
else:
self.config["DeviceProperties"]["Add"][self.gfx0_path] = {"agdpmod": "vit9696"}
# HiDPI OpenCanopy and FileVault
if self.model in ModelArray.HiDPIpicker:
print("- Setting HiDPI picker")
self.config["NVRAM"]["Add"]["4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14"]["UIScale"] = binascii.unhexlify("02")
# Audio Patch
if self.model in ModelArray.LegacyAudio:
print("- Adding audio properties")
hdef_path = "PciRoot(0x0)/Pci(0x8,0x0)" if self.model in ModelArray.nvidiaHDEF else "PciRoot(0x0)/Pci(0x1b,0x0)"
# In AppleALC, MacPro3,1's original layout is already in use, forcing layout 13 instead
if self.model == "MacPro3,1":
self.config["DeviceProperties"]["Add"][hdef_path] = {"apple-layout-id": 90, "use-apple-layout-id": 1, "alc-layout-id": 13, }
else:
self.config["DeviceProperties"]["Add"][hdef_path] = {"apple-layout-id": 90, "use-apple-layout-id": 1, "use-layout-id": 1, }
def backlight_path_detection(self):
if not self.constants.custom_model:
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
self.gfx0_path = DeviceProbe.pci_probe().deviceproperty_probe(dgpu_vendor,dgpu_device,dgpu_acpi)
if self.gfx0_path == "":
print("- Failed to find GFX0 Device path, falling back on known logic")
if self.model in ["iMac11,1", "iMac11,3"]:
self.gfx0_path = "PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)"
else:
self.gfx0_path = "PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"
else:
print(f"- Found GFX0 Device Path: {self.gfx0_path}")
else:
if self.model in ["iMac11,1", "iMac11,3"]:
self.gfx0_path = "PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)"
else:
self.gfx0_path = "PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"
print(f"- Using known GFX0 path: {self.gfx0_path}")
def nvidia_patch(self, backlight_path):
self.constants.custom_mxm_gpu = True
if self.model in ["iMac11,1", "iMac11,2", "iMac11,3"]:
print("- Adding Nvidia Brightness Control and DRM patches")
self.config["DeviceProperties"]["Add"][backlight_path] = {"@0,backlight-control": binascii.unhexlify("01000000"), "@0,built-in": binascii.unhexlify("01000000"), "shikigva": 256, "agdpmod": "vit9696"}
if self.constants.custom_model and self.model == "iMac11,2":
# iMac11,2 can have either PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0) or PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)
# Set both properties when we cannot run hardware detection
self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)"] = {"@0,backlight-control": binascii.unhexlify("01000000"), "@0,built-in": binascii.unhexlify("01000000"), "shikigva": 256, "agdpmod": "vit9696"}
shutil.copy(self.constants.backlight_path, self.constants.kexts_path)
self.get_kext_by_bundle_path("AppleBacklightFixup.kext")["Enabled"] = True
elif self.model in ["iMac12,1", "iMac12,2"]:
print("- Adding Nvidia Brightness Control and DRM patches")
self.config["DeviceProperties"]["Add"][backlight_path] = {"@0,backlight-control": binascii.unhexlify("01000000"), "@0,built-in": binascii.unhexlify("01000000"), "shikigva": 256}
print("- Disabling unsupported iGPU")
self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x2,0x0)"] = {"name": binascii.unhexlify("23646973706C6179"), "IOName": "#display", "class-code": binascii.unhexlify("FFFFFFFF")}
shutil.copy(self.constants.backlight_path, self.constants.kexts_path)
self.get_kext_by_bundle_path("AppleBacklightFixup.kext")["Enabled"] = True
self.config["UEFI"]["Quirks"]["ForgeUefiSupport"] = True
self.config["UEFI"]["Quirks"]["ReloadOptionRoms"] = True
def amd_patch(self, backlight_path):
self.constants.custom_mxm_gpu = True
print("- Adding AMD DRM patches")
self.config["DeviceProperties"]["Add"][backlight_path] = {"shikigva": 80, "unfairgva": 1}
if self.constants.custom_model and self.model == "iMac11,2":
# iMac11,2 can have either PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0) or PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)
# Set both properties when we cannot run hardware detection
self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)"] = {"shikigva": 80, "unfairgva": 1}
if self.model in ["iMac12,1", "iMac12,2"]:
print("- Disabling unsupported iGPU")
self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x2,0x0)"] = {"name": binascii.unhexlify("23646973706C6179"), "IOName": "#display", "class-code": binascii.unhexlify("FFFFFFFF")}
elif self.model == "iMac10,1":
self.enable_kext("AAAMouSSE.kext", self.constants.mousse_version, self.constants.mousse_path)
# Check GPU Vendor
if self.constants.metal_build is True:
backlight_path_detection(self)
print("- Adding Metal GPU patches on request")
if self.constants.imac_vendor == "AMD":
amd_patch(self, self.gfx0_path)
elif self.constants.imac_vendor == "Nvidia":
nvidia_patch(self, self.gfx0_path)
else:
print("- Failed to find vendor")
elif not self.constants.custom_model and self.model in ModelArray.LegacyGPU:
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
if dgpu_vendor:
print(f"- Detected dGPU: {dgpu_vendor}:{dgpu_device}")
if dgpu_vendor == self.constants.pci_amd_ati and (dgpu_device in PCIIDArray.amd_ids().polaris_ids or dgpu_device in PCIIDArray.amd_ids().vega_ids or dgpu_device in PCIIDArray.amd_ids().navi_ids or dgpu_device in PCIIDArray.amd_ids().legacy_gcn_ids):
backlight_path_detection(self)
amd_patch(self, self.gfx0_path)
elif dgpu_vendor == self.constants.pci_nvidia and dgpu_device in PCIIDArray.nvidia_ids().kepler_ids:
backlight_path_detection(self)
nvidia_patch(self, self.gfx0_path)
if self.model in ModelArray.MacPro71:
if not self.constants.custom_model:
mp_dgpu_devices = plistlib.loads(subprocess.run("ioreg -c IOPCIDevice -r -d2 -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
mp_dgpu_devices = [i for i in mp_dgpu_devices if i["class-code"] == binascii.unhexlify("00000300") or i["class-code"] == binascii.unhexlify("00800300")]
mp_dgpu_devices_gfx: str = subprocess.run([self.constants.gfxutil_path] + f"-v".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
try:
x = 1
for i in mp_dgpu_devices:
mp_dgpu_vendor = self.hexswap(binascii.hexlify(i["vendor-id"]).decode()[:4])
mp_dgpu_device = self.hexswap(binascii.hexlify(i["device-id"]).decode()[:4])
print(f'- Found dGPU ({x}): {mp_dgpu_vendor}:{mp_dgpu_device}')
self.config["#Revision"][f"Hardware-MacPro-dGPU-{x}"] = f'{mp_dgpu_vendor}:{mp_dgpu_device}'
try:
mp_dgpu_path = [line.strip().split("= ", 1)[1] for line in mp_dgpu_devices_gfx.split("\n") if f'{mp_dgpu_vendor}:{mp_dgpu_device}'.lower() in line.strip()][0]
print(f"- Found dGPU ({x}) at {mp_dgpu_path}")
if mp_dgpu_vendor == self.constants.pci_amd_ati:
print("- Adding Mac Pro, Xserve DRM patches")
self.config["DeviceProperties"]["Add"][mp_dgpu_path] = {"shikigva": 128, "unfairgva": 1, "wegtree": 1}
elif mp_dgpu_vendor == self.constants.pci_nvidia:
print("- Enabling Nvidia Output Patch")
self.config["DeviceProperties"]["Add"][mp_dgpu_path] = {"wegtree": 1}
self.config["UEFI"]["Quirks"]["ForgeUefiSupport"] = True
self.config["UEFI"]["Quirks"]["ReloadOptionRoms"] = True
except IndexError:
print(f"- Failed to find Device path for NVMe {x}")
if mp_dgpu_vendor == self.constants.pci_amd_ati:
print("- Adding Mac Pro, Xserve DRM patches")
if "shikigva=128 unfairgva=1 -wegtree" not in self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"]:
print("- Falling back to boot-args")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " shikigva=128 unfairgva=1 -wegtree"
elif mp_dgpu_vendor == self.constants.pci_nvidia:
print("- Enabling Nvidia Output Patch")
if "-wegtree" not in self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"]:
print("- Falling back to boot-args")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -wegtree"
self.config["UEFI"]["Quirks"]["ForgeUefiSupport"] = True
self.config["UEFI"]["Quirks"]["ReloadOptionRoms"] = True
x = x + 1
except ValueError:
print("- No socketed dGPU found")
except IndexError:
print("- No socketed dGPU found")
else:
print("- Adding Mac Pro, Xserve DRM patches")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " shikigva=128 unfairgva=1 -wegtree"
# Add OpenCanopy
print("- Adding OpenCanopy GUI")
shutil.rmtree(self.constants.resources_path, onerror=rmtree_handler)
shutil.copy(self.constants.gui_path, self.constants.oc_folder)
self.config["UEFI"]["Drivers"] = ["OpenCanopy.efi", "OpenRuntime.efi"]
# Exfat check
if self.model in ModelArray.NoExFat:
print("- Adding ExFatDxeLegacy.efi")
shutil.copy(self.constants.exfat_legacy_driver_path, self.constants.drivers_path)
self.config["UEFI"]["Drivers"] += ["ExFatDxeLegacy.efi"]
# Add UGA to GOP layer
if self.model in ModelArray.UGAtoGOP:
print("- Adding UGA to GOP Patch")
self.config["UEFI"]["Output"]["GopPassThrough"] = True
# ThirdPartDrives Check
if self.model not in ModelArray.NoSATAPatch:
print("- Adding SATA Hibernation Patch")
self.config["Kernel"]["Quirks"]["ThirdPartyDrives"] = True
# DEBUG Settings
if self.constants.verbose_debug is True:
print("- Enabling Verbose boot")
self.config["Kernel"]["Quirks"]["PanicNoKextDump"] = True
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -v debug=0x100"
if self.constants.kext_debug is True:
print("- Enabling DEBUG Kexts")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -liludbgall"
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " msgbuf=1048576"
if self.constants.opencore_debug is True:
print("- Enabling DEBUG OpenCore")
self.config["Misc"]["Debug"]["Target"] = 67
self.config["Misc"]["Debug"]["DisplayLevel"] = 672151678018
if self.constants.showpicker is True:
print("- Enabling ShowPicker")
self.config["Misc"]["Boot"]["ShowPicker"] = True
else:
print("- Hiding picker and enabling PollAppleHotKeys")
self.config["Misc"]["Boot"]["ShowPicker"] = False
if self.constants.vault is True:
print("- Setting Vault configuration")
self.config["Misc"]["Security"]["Vault"] = "Secure"
self.get_tool_by__path("OpenShell.efi")["Enabled"] = False
if self.constants.sip_status is False:
print("- Disabling SIP")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["csr-active-config"] = binascii.unhexlify("EF0F0000")
self.config["NVRAM"]["Delete"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"] += ["csr-active-config"]
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " amfi_get_out_of_my_way=1"
if self.constants.secure_status is False:
print("- Disabling SecureBootModel")
self.config["Misc"]["Security"]["SecureBootModel"] = "Disabled"
if self.constants.serial_settings in ["Moderate", "Advanced"]:
print("- Enabling USB Rename Patches")
self.get_item_by_kv(self.config["ACPI"]["Patch"], "Comment", "XHC1 to SHC1")["Enabled"] = True
self.get_item_by_kv(self.config["ACPI"]["Patch"], "Comment", "EHC1 to EH01")["Enabled"] = True
self.get_item_by_kv(self.config["ACPI"]["Patch"], "Comment", "EHC2 to EH02")["Enabled"] = True
if self.constants.custom_cpu_model == 0 or self.constants.custom_cpu_model == 1:
self.config["NVRAM"]["Add"]["4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102"]["revcpu"] = self.constants.custom_cpu_model
if self.constants.custom_cpu_model_value != "":
print(f"- Adding custom CPU Name: {self.constants.custom_cpu_model_value}")
self.config["NVRAM"]["Add"]["4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102"]["revcpuname"] = self.constants.custom_cpu_model_value
else:
print("- Adding CPU Name Patch")
if self.get_kext_by_bundle_path("RestrictEvents.kext")["Enabled"] is False:
self.enable_kext("RestrictEvents.kext", self.constants.restrictevents_version, self.constants.restrictevents_path)
def set_smbios(self):
spoofed_model = self.model
# TODO: Set check as global variable
if self.model in ModelArray.MacBookAir61:
print("- Spoofing to MacBookAir6,1")
spoofed_model = "MacBookAir6,1"
spoofed_board = "Mac-35C1E88140C3E6CF"
elif self.model in ModelArray.MacBookAir62:
print("- Spoofing to MacBookAir6,2")
spoofed_model = "MacBookAir6,2"
spoofed_board = "Mac-7DF21CB3ED6977E5"
elif self.model in ModelArray.MacBookPro111:
print("- Spoofing to MacBookPro11,1")
spoofed_model = "MacBookPro11,1"
spoofed_board = "Mac-189A3D4F975D5FFC"
elif self.model in ModelArray.MacBookPro113:
print("- Spoofing to MacBookPro11,3")
spoofed_model = "MacBookPro11,3"
spoofed_board = "Mac-2BD1B31983FE1663"
elif self.model in ModelArray.Macmini71:
print("- Spoofing to Macmini7,1")
spoofed_model = "Macmini7,1"
spoofed_board = "Mac-35C5E08120C7EEAF"
elif self.model in ModelArray.iMacPro11:
print("- Spoofing to iMacPro1,1")
spoofed_model = "iMacPro1,1"
spoofed_board = "Mac-7BA5B2D9E42DDD94"
elif self.model in ModelArray.iMac151:
# Check for upgraded GPUs on iMacs
if self.constants.drm_support is True:
print("- Spoofing to iMacPro1,1")
spoofed_model = "iMacPro1,1"
spoofed_board = "Mac-7BA5B2D9E42DDD94"
else:
print("- Spoofing to iMac15,1")
spoofed_model = "iMac15,1"
spoofed_board = "Mac-42FD25EABCABB274"
elif self.model in ModelArray.iMac144:
print("- Spoofing to iMac14,4")
spoofed_model = "iMac14,4"
spoofed_board = "Mac-81E3E92DD6088272"
elif self.model in ModelArray.MacPro71:
print("- Spoofing to MacPro7,1")
spoofed_model = "MacPro7,1"
spoofed_board = "Mac-27AD2F918AE68F61"
else:
spoofed_model = self.model
spoofed_board = ""
self.spoofed_model = spoofed_model
self.spoofed_board = spoofed_board
if self.constants.allow_oc_everywhere is False:
self.config["#Revision"]["Spoofed-Model"] = f"{self.spoofed_model} - {self.constants.serial_settings}"
# Setup menu
def minimal_serial_patch(self):
if self.constants.custom_cpu_model == 0 or self.constants.custom_cpu_model == 1:
self.config["PlatformInfo"]["PlatformNVRAM"]["ProcessorType"] = 1537
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["run-efi-updater"] = "No"
self.config["PlatformInfo"]["PlatformNVRAM"]["BID"] = self.spoofed_board
self.config["PlatformInfo"]["SMBIOS"]["BoardProduct"] = self.spoofed_board
self.config["PlatformInfo"]["SMBIOS"]["BIOSVersion"] = "9999.999.999.999.999"
self.config["PlatformInfo"]["UpdateNVRAM"] = True
self.config["PlatformInfo"]["UpdateSMBIOS"] = True
def moderate_serial_patch(self):
if self.constants.custom_cpu_model == 0 or self.constants.custom_cpu_model == 1:
self.config["PlatformInfo"]["Generic"]["ProcessorType"] = 1537
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["run-efi-updater"] = "No"
self.config["PlatformInfo"]["Automatic"] = True
self.config["PlatformInfo"]["UpdateDataHub"] = True
self.config["PlatformInfo"]["UpdateNVRAM"] = True
self.config["PlatformInfo"]["UpdateSMBIOS"] = True
self.config["UEFI"]["ProtocolOverrides"]["DataHub"] = True
self.config["PlatformInfo"]["Generic"]["SystemProductName"] = self.spoofed_model
def advanced_serial_patch(self):
if self.constants.custom_cpu_model == 0 or self.constants.custom_cpu_model == 1:
self.config["PlatformInfo"]["Generic"]["ProcessorType"] = 1537
macserial_output = subprocess.run([self.constants.macserial_path] + f"-g -m {self.spoofed_model} -n 1".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
macserial_output = macserial_output.stdout.decode().strip().split(" | ")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["run-efi-updater"] = "No"
self.config["PlatformInfo"]["Automatic"] = True
self.config["PlatformInfo"]["UpdateDataHub"] = True
self.config["PlatformInfo"]["UpdateNVRAM"] = True
self.config["PlatformInfo"]["UpdateSMBIOS"] = True
self.config["UEFI"]["ProtocolOverrides"]["DataHub"] = True
self.config["PlatformInfo"]["Generic"]["ROM"] = binascii.unhexlify("0016CB445566")
self.config["PlatformInfo"]["Generic"]["SystemProductName"] = self.spoofed_model
self.config["PlatformInfo"]["Generic"]["SystemSerialNumber"] = macserial_output[0]
self.config["PlatformInfo"]["Generic"]["MLB"] = macserial_output[1]
self.config["PlatformInfo"]["Generic"]["SystemUUID"] = str(uuid.uuid4()).upper()
if self.constants.serial_settings == "Moderate":
print("- Using Moderate SMBIOS patching")
moderate_serial_patch(self)
elif self.constants.serial_settings == "Advanced":
print("- Using Advanced SMBIOS patching")
advanced_serial_patch(self)
elif self.constants.serial_settings == "Minimal":
print("- Using Minimal SMBIOS patching")
self.spoofed_model = self.model
minimal_serial_patch(self)
if self.constants.download_ram is False:
self.config["PlatformInfo"].pop("Memory")
else:
print("- Inserting 1.5TB of RAM into your Mac")
self.config["PlatformInfo"]["CustomMemory"] = True
# USB Map and CPUFriend Patching
if self.constants.allow_oc_everywhere is False and self.model != "iMac7,1":
new_map_ls = Path(self.constants.map_contents_folder) / Path("Info.plist")
map_config = plistlib.load(Path(new_map_ls).open("rb"))
for model_controller in ModelArray.ControllerTypes:
model_patch = f"{self.model}{model_controller}"
try:
# Avoid erroring out when specific identity not found
map_config["IOKitPersonalities_x86_64"][model_patch]["model"] = self.spoofed_model
# Avoid ACPI renaming when not required
if self.constants.serial_settings == "Minimal":
if map_config["IOKitPersonalities_x86_64"][model_patch]["IONameMatch"] == "EH01":
map_config["IOKitPersonalities_x86_64"][model_patch]["IONameMatch"] = "EHC1"
if map_config["IOKitPersonalities_x86_64"][model_patch]["IONameMatch"] == "EH02":
map_config["IOKitPersonalities_x86_64"][model_patch]["IONameMatch"] = "EHC2"
if map_config["IOKitPersonalities_x86_64"][model_patch]["IONameMatch"] == "SHC1":
map_config["IOKitPersonalities_x86_64"][model_patch]["IONameMatch"] = "XHC1"
except KeyError:
continue
plistlib.dump(map_config, Path(new_map_ls).open("wb"), sort_keys=True)
if self.constants.allow_oc_everywhere is False and self.model != "iMac7,1" and self.constants.disallow_cpufriend is False:
# Adjust CPU Friend Data to correct SMBIOS
new_cpu_ls = Path(self.constants.pp_contents_folder) / Path("Info.plist")
cpu_config = plistlib.load(Path(new_cpu_ls).open("rb"))
string_stuff = str(cpu_config["IOKitPersonalities"]["CPUFriendDataProvider"]["cf-frequency-data"])
string_stuff = string_stuff.replace(self.model, self.spoofed_model)
string_stuff = ast.literal_eval(string_stuff)
cpu_config["IOKitPersonalities"]["CPUFriendDataProvider"]["cf-frequency-data"] = string_stuff
#cpu_data_config = plistlib.loads(cpu_config["IOKitPersonalities"]["CPUFriendDataProvider"]["cf-frequency-data"])
#print(f'Patching CPUFriend Data to: {cpu_data_config["IOPlatformThermalProfile"]["ConfigArray"][0]["model"]}')
plistlib.dump(cpu_config, Path(new_cpu_ls).open("wb"), sort_keys=True)
if self.model == "MacBookPro9,1":
new_agdp_ls = Path(self.constants.agdp_contents_folder) / Path("Info.plist")
new_agpm_ls = Path(self.constants.agpm_contents_folder) / Path("Info.plist")
new_amc_ls = Path(self.constants.amc_contents_folder) / Path("Info.plist")
agdp_config = plistlib.load(Path(new_agdp_ls).open("rb"))
agpm_config = plistlib.load(Path(new_agpm_ls).open("rb"))
amc_config = plistlib.load(Path(new_amc_ls).open("rb"))
agdp_config["IOKitPersonalities"]["AppleGraphicsDevicePolicy"]["ConfigMap"][self.spoofed_board] = agdp_config["IOKitPersonalities"]["AppleGraphicsDevicePolicy"]["ConfigMap"].pop(self.model)
agpm_config["IOKitPersonalities"]["AGPM"]["Machines"][self.spoofed_board] = agpm_config["IOKitPersonalities"]["AGPM"]["Machines"].pop(self.model)
amc_config["IOKitPersonalities"]["AppleMuxControl"]["ConfigMap"][self.spoofed_board] = amc_config["IOKitPersonalities"]["AppleMuxControl"]["ConfigMap"].pop(self.model)
plistlib.dump(agdp_config, Path(new_agdp_ls).open("wb"), sort_keys=True)
plistlib.dump(agpm_config, Path(new_agpm_ls).open("wb"), sort_keys=True)
plistlib.dump(amc_config, Path(new_amc_ls).open("wb"), sort_keys=True)
@staticmethod
def get_item_by_kv(iterable, key, value):
item = None
for i in iterable:
if i[key] == value:
item = i
break
return item
def get_kext_by_bundle_path(self, bundle_path):
kext = self.get_item_by_kv(self.config["Kernel"]["Add"], "BundlePath", bundle_path)
if not kext:
print(f"- Could not find kext {bundle_path}!")
raise IndexError
return kext
def get_tool_by__path(self, bundle_path):
tool = self.get_item_by_kv(self.config["Misc"]["Tools"], "Path", bundle_path)
if not tool:
print(f"- Could not find Tool {bundle_path}!")
raise IndexError
return tool
def enable_kext(self, kext_name, kext_version, kext_path, check=False):
kext = self.get_kext_by_bundle_path(kext_name)
if callable(check) and not check():
# Check failed
return
print(f"- Adding {kext_name} {kext_version}")
shutil.copy(kext_path, self.constants.kexts_path)
kext["Enabled"] = True
def cleanup(self):
print("- Cleaning up files")
# Remove unused entries
for entry in list(self.config["ACPI"]["Add"]):
if not entry["Enabled"]:
self.config["ACPI"]["Add"].remove(entry)
for entry in list(self.config["ACPI"]["Patch"]):
if not entry["Enabled"]:
self.config["ACPI"]["Patch"].remove(entry)
for entry in list(self.config["Kernel"]["Add"]):
if not entry["Enabled"]:
self.config["Kernel"]["Add"].remove(entry)
for entry in list(self.config["Kernel"]["Patch"]):
if not entry["Enabled"]:
self.config["Kernel"]["Patch"].remove(entry)
plistlib.dump(self.config, Path(self.constants.plist_path).open("wb"), sort_keys=True)
for kext in self.constants.kexts_path.rglob("*.zip"):
with zipfile.ZipFile(kext) as zip_file:
zip_file.extractall(self.constants.kexts_path)
kext.unlink()
for item in self.constants.oc_folder.rglob("*.zip"):
with zipfile.ZipFile(item) as zip_file:
zip_file.extractall(self.constants.oc_folder)
item.unlink()
for i in self.constants.build_path.rglob("__MACOSX"):
shutil.rmtree(i)
Path(self.constants.opencore_zip_copied).unlink()
def sign_files(self):
if self.constants.vault is True:
print("- Vaulting EFI")
subprocess.run([self.constants.vault_path] + f"{self.constants.oc_folder}/".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
def build_opencore(self):
self.build_efi()
self.set_smbios()
self.cleanup()
self.sign_files()
print("")
print(f"Your OpenCore EFI for {self.model} has been built at:")
print(f" {self.constants.opencore_release_folder}")
print("")
if self.constants.gui_mode is False:
input("Press [Enter] to go back.\n")
def copy_efi(self):
Utilities.cls()
Utilities.header(["Installing OpenCore to Drive"])
if not self.constants.opencore_release_folder.exists():
Utilities.TUIOnlyPrint(
["Installing OpenCore to Drive"],
"Press [Enter] to go back.\n",
[
"""OpenCore folder missing!
Please build OpenCore first!"""
],
).start()
return
print("\nDisk picker is loading...")
all_disks = {}
# TODO: AllDisksAndPartitions is not supported in Snow Leopard and older
try:
# High Sierra and newer
disks = plistlib.loads(subprocess.run("diskutil list -plist physical".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
except ValueError:
# Sierra and older
disks = plistlib.loads(subprocess.run("diskutil list -plist".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
for disk in disks["AllDisksAndPartitions"]:
disk_info = plistlib.loads(subprocess.run(f"diskutil info -plist {disk['DeviceIdentifier']}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
try:
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "partitions": {}}
for partition in disk["Partitions"]:
partition_info = plistlib.loads(subprocess.run(f"diskutil info -plist {partition['DeviceIdentifier']}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
all_disks[disk["DeviceIdentifier"]]["partitions"][partition["DeviceIdentifier"]] = {
"fs": partition_info.get("FilesystemType", partition_info["Content"]),
"type": partition_info["Content"],
"name": partition_info.get("VolumeName", ""),
"size": partition_info["TotalSize"],
}
except KeyError:
# Avoid crashing with CDs installed
continue
# TODO: Advanced mode
menu = Utilities.TUIMenu(
["Select Disk"],
"Please select the disk you would like to install OpenCore to: ",
in_between=["Missing disks? Ensure they have an EFI or FAT32 partition."],
return_number_instead_of_direct_call=True,
loop=True,
)
for disk in all_disks:
if not any(all_disks[disk]["partitions"][partition]["fs"] in ("msdos", "EFI") for partition in all_disks[disk]["partitions"]):
continue
menu.add_menu_option(f"{disk}: {all_disks[disk]['name']} ({human_fmt(all_disks[disk]['size'])})", key=disk[4:])
response = menu.start()
if response == -1:
return
disk_identifier = "disk" + response
selected_disk = all_disks[disk_identifier]
menu = Utilities.TUIMenu(
["Select Partition"],
"Please select the partition you would like to install OpenCore to: ",
return_number_instead_of_direct_call=True,
loop=True,
in_between=["Missing partitions? Ensure they are formatted as an EFI or FAT32.", "", "* denotes likely candidate."],
)
for partition in selected_disk["partitions"]:
if selected_disk["partitions"][partition]["fs"] not in ("msdos", "EFI"):
continue
text = f"{partition}: {selected_disk['partitions'][partition]['name']} ({human_fmt(selected_disk['partitions'][partition]['size'])})"
if selected_disk["partitions"][partition]["type"] == "EFI" or (
selected_disk["partitions"][partition]["type"] == "Microsoft Basic Data" and selected_disk["partitions"][partition]["size"] < 1024 * 1024 * 512
): # 512 megabytes:
text += " *"
menu.add_menu_option(text, key=partition[len(disk_identifier) + 1:])
response = menu.start()
if response == -1:
return
# TODO: Apple Script fails in Yosemite(?) and older
args = [
"osascript",
"-e",
f'''do shell script "diskutil mount {disk_identifier}s{response}"'''
' with prompt "OpenCore Legacy Patcher needs administrator privileges to mount your EFI."'
" with administrator privileges"
" without altering line endings",
]
if self.constants.detected_os > self.constants.yosemite:
result = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
else:
result = subprocess.run(f"diskutil mount {disk_identifier}s{response}".split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.returncode != 0:
if "execution error" in result.stderr.decode() and result.stderr.decode().strip()[-5:-1] == "-128":
# cancelled prompt
return
else:
Utilities.TUIOnlyPrint(
["Copying OpenCore"], "Press [Enter] to go back.\n", ["An error occurred!"] + result.stderr.decode().split("\n") + ["", "Please report this to the devs at GitHub."]
).start()
return
# TODO: Remount if readonly
drive_host_info = plistlib.loads(subprocess.run(f"diskutil info -plist {disk_identifier}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
partition_info = plistlib.loads(subprocess.run(f"diskutil info -plist {disk_identifier}s{response}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
sd_type = drive_host_info["MediaName"]
try:
ssd_type = drive_host_info["SolidState"]
except KeyError:
ssd_type = False
mount_path = Path(partition_info["MountPoint"])
disk_type = partition_info["BusProtocol"]
Utilities.cls()
Utilities.header(["Copying OpenCore"])
if mount_path.exists():
if (mount_path / Path("EFI/OC")).exists():
print("- Removing preexisting EFI/OC folder")
shutil.rmtree(mount_path / Path("EFI/OC"), onerror=rmtree_handler)
if (mount_path / Path("System")).exists():
print("- Removing preexisting System folder")
shutil.rmtree(mount_path / Path("System"), onerror=rmtree_handler)
print("- Copying OpenCore onto EFI partition")
shutil.copytree(self.constants.opencore_release_folder / Path("EFI/OC"), mount_path / Path("EFI/OC"))
shutil.copytree(self.constants.opencore_release_folder / Path("System"), mount_path / Path("System"))
if self.constants.boot_efi is True:
print("- Converting Bootstrap to BOOTx64.efi")
if (mount_path / Path("EFI/BOOT")).exists():
shutil.rmtree(mount_path / Path("EFI/BOOT"), onerror=rmtree_handler)
Path(mount_path / Path("EFI/BOOT")).mkdir()
shutil.move(mount_path / Path("System/Library/CoreServices/boot.efi"), mount_path / Path("EFI/BOOT/BOOTx64.efi"))
shutil.rmtree(mount_path / Path("System"), onerror=rmtree_handler)
# Array filled with common SD Card names
# Note most USB-based SD Card readers generally report as "Storage Device", and no reliable way to detect further
if sd_type in ["SD Card Reader", "SD/MMC"]:
print("- Adding SD Card icon")
shutil.copy(self.constants.icon_path_sd, mount_path)
elif ssd_type is True:
print("- Adding SSD icon")
shutil.copy(self.constants.icon_path_ssd, mount_path)
elif disk_type == "USB":
print("- Adding External USB Drive icon")
shutil.copy(self.constants.icon_path_external, mount_path)
else:
print("- Adding Internal Drive icon")
shutil.copy(self.constants.icon_path_internal, mount_path)
print("- Cleaning install location")
subprocess.run(f"dot_clean {mount_path}".split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print("- Unmounting EFI partition")
subprocess.run(f"diskutil umount {mount_path}".split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print("- OpenCore transfer complete")
print("\nPress [Enter] to continue.\n")
input()
else:
Utilities.TUIOnlyPrint(["Copying OpenCore"], "Press [Enter] to go back.\n", ["EFI failed to mount!", "Please report this to the devs at GitHub."]).start()

View File

@@ -1,385 +0,0 @@
# Handle misc CLI menu options
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
from __future__ import print_function
import subprocess
import sys
import time
import platform
from Resources import Build, ModelArray, Constants, SysPatch, Utilities
class MenuOptions:
def __init__(self, model, versions):
self.model = model
self.constants: Constants.Constants = versions
def change_os(self):
Utilities.cls()
Utilities.header(["Select Patcher's Target OS"])
print(f"""
Minimum Target:\t{self.constants.min_os_support}
Maximum Target:\t{self.constants.max_os_support}
Current target:\t{self.constants.os_support}
""")
temp_os_support = float(input("Please enter OS target: "))
if (self.constants.max_os_support < temp_os_support) or (temp_os_support < self.constants.min_os_support):
print("Unsupported entry")
else:
self.constants.os_support = temp_os_support
if temp_os_support == 11.0:
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS11
elif temp_os_support == 12.0:
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS12
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_wifi(self):
Utilities.cls()
Utilities.header(["Assume Upgraded Wifi Always"])
print("""This is for Macs with upgraded wifi cards(ie. BCM94360/2)
Note: Patcher will detect whether hardware has been upgraded regardless, this
option is for those patching on a different machine or cannot detect.
""")
change_menu = input("Enable Upgraded Wifi build algorithm?(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.wifi_build = True
elif change_menu in {"n", "N", "no", "No"}:
self.constants.wifi_build = False
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
Note: for minor changes, SIP can be adjusted in recovery like normal.
Additionally, when disabling SIP via the patcher amfi_get_out_of_my_way=1
will be added to boot-args.
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 change_imac_nvidia(self):
Utilities.cls()
Utilities.header(["Assume Metal GPU Always"])
print("""Specifically for iMac10,x-12,x with Metal Nvidia GPU upgrades
By default the patcher will try to detect what hardware is
running, however this will enforce iMac Nvidia Build Patches.
""")
change_menu = input("Assume iMac Nvidia patches(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.imac_nvidia_build = True
elif change_menu in {"n", "N", "no", "No"}:
self.constants.imac_nvidia_build = 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 force_accel_setting(self):
Utilities.cls()
Utilities.header(["Assume Legacy GPU"])
print("""Allows any model to force install Legacy Acceleration
patches. Only required for Mac Pro and Xserve users.
DO NOT RUN IF METAL GPU IS INSTALLED
""")
change_menu = input("Enable Beta Acceleration Patches(y/n): ")
if change_menu in {"y", "Y", "yes", "Yes"}:
self.constants.assume_legacy = True
elif change_menu in {"n", "N", "no", "No"}:
self.constants.assume_legacy = 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 download_more_ram_dot_com(self):
Utilities.cls()
Utilities.header(["Download more RAM"])
print("""Downloads more RAM to your Mac!
Currently only offers 1.5TB bundles
""")
change_menu = input("Download more RAM?(y/n): ")
if change_menu == "y":
self.constants.download_ram = True
elif change_menu == "n":
self.constants.download_ram = False
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")

View File

@@ -1,365 +0,0 @@
# pylint: disable=multiple-statements
# Define Files
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
from __future__ import print_function
from pathlib import Path
class Constants:
def __init__(self):
self.patcher_version = "0.1.4"
self.opencore_commit = "65cc81b - 05-03-2021"
self.opencore_version = "0.6.9"
self.lilu_version = "1.5.3"
self.whatevergreen_version = "1.4.9"
self.airportbcrmfixup_version = "2.1.2"
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.93"
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.1"
self.restrictevents_version = "1.0.1"
self.restrictevents_mbp_version = "1.0.1"
self.piixata_version = "1.0.0"
self.backlight_version = "1.0.1"
self.cpufriend_version = "1.2.3"
self.nightshift_version = "1.1.0"
self.smcspoof_version = "1.0.0"
self.cputscsync = "1.0.3"
self.hibernationfixup = "1.3.9"
self.nvmefix_version = "1.0.7"
self.sidecarfixup_version = "1.0.0"
self.innie_version = "1.3.0"
self.payload_version = "0.0.6"
# Get resource path
self.current_path = Path(__file__).parent.parent.resolve()
self.payload_path = self.current_path / Path("payloads")
self.custom_model: str = None
self.custom_mxm_gpu: str = None
self.current_gpuv: str = None
self.current_gpud: str = None
# Patcher Settings
self.opencore_debug = False
self.opencore_build = "RELEASE"
self.kext_debug = False
self.verbose_debug = False
self.os_support = 11.0
self.min_os_support = 11.0
self.max_os_support = 11.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 = True
self.detected_os = 0
self.boot_efi = False
self.drm_support = False
self.legacy_acceleration_patch = True
self.assume_legacy = 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
# 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
# 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"
# Nvidia GPU Architecture
self.arch_tesla = "NV50"
self.arch_fermi = "GF100"
self.arch_kepler = "GK100"
# External Files
self.url_apple_binaries = "https://github.com/dortania/Apple-Binaries-OCLP/archive/refs/tags/"
# 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(f"Config/config.plist")
# 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")
# 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 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 cputscsync_path(self): return self.payload_kexts_path / Path(f"Acidanthera/CpuTscSync-v{self.cputscsync}.zip")
@property
def hibernationfixup_path(self): return self.payload_kexts_path / Path(f"Acidanthera/HibernationFixup-v{self.hibernationfixup}.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 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(f"Plists")
@property
def platform_plugin_plist_path(self): return self.plist_folder_path / Path(f"PlatformPlugin")
# 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_unzip(self): return self.payload_path / Path(f"Apple-Binaries-OCLP-{self.payload_version}")
@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_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_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-ATI")
@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")
# Apple Frameworks
@property
def coredisplay_path(self): return self.payload_apple_frameworks_path_accel / Path("CoreDisplay.framework")
@property
def iosurface_f_path(self): return self.payload_apple_frameworks_path_accel / Path("IOSurface.framework")
@property
def opengl_path(self): return self.payload_apple_frameworks_path_accel / Path("OpenGL.framework")
# Apple LaunchDaemons
@property
def hiddhack_path(self): return self.payload_apple_lauchd_path_accel / Path("IOHID-Fixup.plist")
@property
def legacy_hiddhack_path(self): return self.payload_apple_lauchd_path_accel / Path("HiddHack.plist")
# Apple PrivateFrameworks
@property
def gpusupport_path(self): return self.payload_apple_private_frameworks_path_accel / Path("GPUSupport.framework")
@property
def skylight_path(self): return self.payload_apple_private_frameworks_path_accel / Path("SkyLight.framework")
csr_values = {
"CSR_ALLOW_UNTRUSTED_KEXTS ": False, # 0x1 - Introduced in El Capitan
"CSR_ALLOW_UNRESTRICTED_FS ": False, # 0x2 - Introduced in El Capitan
"CSR_ALLOW_TASK_FOR_PID ": False, # 0x4 - Introduced in El Capitan
"CSR_ALLOW_KERNEL_DEBUGGER ": False, # 0x8 - Introduced in El Capitan
"CSR_ALLOW_APPLE_INTERNAL ": False, # 0x10 - Introduced in El Capitan
"CSR_ALLOW_UNRESTRICTED_DTRACE ": False, # 0x20 - Introduced in El Capitan
"CSR_ALLOW_UNRESTRICTED_NVRAM ": False, # 0x40 - Introduced in El Capitan
"CSR_ALLOW_DEVICE_CONFIGURATION ": False, # 0x80 - Introduced in El Capitan
"CSR_ALLOW_ANY_RECOVERY_OS ": False, # 0x100 - Introduced in Sierra
"CSR_ALLOW_UNAPPROVED_KEXTS ": False, # 0x200 - Introduced in High Sierra
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE": False, # 0x400 - Introduced in Mojave
"CSR_ALLOW_UNAUTHENTICATED_ROOT ": False, # 0x800 - Introduced in Big Sur
}
sbm_values = [
"j137",
"j680",
"j132",
"j174",
"j140k",
"j780",
"j213",
"j140a",
"j152f",
"j160",
"j230k",
"j214k",
"j223",
"j215",
"j185",
"j185f",
]

View File

@@ -1,96 +0,0 @@
# Probe devices, return device entries
# Copyright (C) 2021 Mykola Grymalyuk
from __future__ import print_function
import binascii
import plistlib
import shutil
import subprocess
import uuid
import os
import sys
import platform
from pathlib import Path
from Resources import Constants, ModelArray, Utilities
class pci_probe:
def __init__(self):
self.constants = Constants.Constants()
def hexswap(self, 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()
# Converts given device IDs to DeviceProperty pathing, requires ACPI pathing as DeviceProperties shouldn't be used otherwise
def deviceproperty_probe(self, vendor_id, device_id, acpi_path):
gfxutil_output: str = subprocess.run([self.constants.gfxutil_path] + f"-v".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
try:
if acpi_path == "":
acpi_path = "No ACPI Path Given"
raise IndexError
device_path = [line.strip().split("= ", 1)[1] for line in gfxutil_output.split("\n") if f'{vendor_id}:{device_id}'.lower() in line.strip() and acpi_path in line.strip()][0]
return device_path
except IndexError:
print(f"- No DevicePath found for {vendor_id}:{device_id} ({acpi_path})")
return ""
# Returns the device path of parent controller
def device_property_parent(self, device_path):
device_path_parent = "/".join(device_path.split("/")[:-1])
return device_path_parent
def acpi_strip(self, acpi_path_full):
# Strip IOACPIPlane:/_SB, remove 000's, convert ffff into 0 and finally make everything upper case
# IOReg | gfxutil
# IOACPIPlane:/_SB/PC00@0/DMI0@0 -> /PC00@0/DMI0@0
# IOACPIPlane:/_SB/PC03@0/BR3A@0/SL09@ffff -> /PC03@0/BR3A@0/SL09@0
# IOACPIPlane:/_SB/PC03@0/M2U0@150000 -> /PC03@0/M2U0@15
# IOACPIPlane:/_SB/PC01@0/CHA6@100000 -> /PC01@0/CHA6@10
# IOACPIPlane:/_SB/PC00@0/RP09@1d0000/PXSX@0 -> /PC00@0/RP09@1D/PXSX@0
# IOACPIPlane:/_SB/PCI0@0/P0P2@10000 -> /PCI0@0/P0P2@1
acpi_path = acpi_path_full.replace("IOACPIPlane:/_SB", "")
acpi_path = acpi_path.replace("0000", "")
acpi_path = acpi_path.replace("ffff", "0")
acpi_path = acpi_path.upper()
return acpi_path
# Note gpu_probe should only be used on IGPU and GFX0 entries
def gpu_probe(self, gpu_type):
try:
devices = plistlib.loads(subprocess.run(f"ioreg -r -n {gpu_type} -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
vendor_id = self.hexswap(binascii.hexlify(devices[0]["vendor-id"]).decode()[:4])
device_id = self.hexswap(binascii.hexlify(devices[0]["device-id"]).decode()[:4])
try:
acpi_path = devices[0]["acpi-path"]
acpi_path = self.acpi_strip(acpi_path)
return vendor_id, device_id, acpi_path
except KeyError:
print(f"- No ACPI entry found for {gpu_type}")
return vendor_id, device_id, ""
except ValueError:
print(f"- No IOService entry found for {gpu_type}")
return "", "", ""
def wifi_probe(self):
try:
devices = plistlib.loads(subprocess.run("ioreg -r -n ARPT -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
except ValueError:
devices = plistlib.loads(subprocess.run("ioreg -c IOPCIDevice -r -d2 -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
try:
devices = [i for i in devices if i["class-code"] == binascii.unhexlify(self.constants.classcode_wifi)]
vendor_id = self.hexswap(binascii.hexlify(devices[0]["vendor-id"]).decode()[:4])
device_id = self.hexswap(binascii.hexlify(devices[0]["device-id"]).decode()[:4])
ioname = devices[0]["IOName"]
try:
acpi_path = devices[0]["acpi-path"]
acpi_path = self.acpi_strip(acpi_path)
return vendor_id, device_id, ioname, acpi_path
except KeyError:
print(f"- No ACPI entry found for {vendor_id}:{device_id}")
return vendor_id, device_id, ioname, ""
except ValueError:
print(f"- No IOService entry found for Wireless Card")
return "", "", "", ""

File diff suppressed because it is too large Load Diff

View File

@@ -1,732 +0,0 @@
# 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 = [
# G84
"0400", # G84 [8600 GTS]
"0401", # G84 [8600 GT]
"0402", # G84 [8600 GT]
"0403", # G84 [8600 GS]
"0404", # G84 [8400 GS]
"0405", # G84 [9500M GS]
"0406", # G84 [8300 GS]
"0407", # G84 [8600M GT]
"0408", # G84 [9650M GS]
"0409", # G84 [8700M GT]
"040A", # G84 [FX 370]
"040B", # G84 [NVS 320M]
"040C", # G84 [FX 570M]
"040D", # G84 [FX 1600M]
"040E", # G84 [FX 570]
"040F", # G84 [FX 1700]
# G86
"0420", # G86 [8400 SE]
"0421", # G86 [8500 GT]
"0422", # G86 [8400 GS]
"0423", # G86 [8300 GS]
"0424", # G86 [8400 GS]
"0425", # G86 [8600M GS]
"0426", # G86 [8400M GT]
"0427", # G86 [8400M GS]
"0428", # G86 [8400M G]
"0429", # G86 [NVS 140M]
"042A", # G86 [NVS 130M]
"042B", # G86 [NVS 135M]
"042C", # G86 [9400 GT]
"042D", # G86 [FX 360M]
"042E", # G86 [9300M G]
"042F", # G86 [NVS 290]
# G92
"0410", # G92 [GT 330]
"0600", # G92 [8800 GTS 512]
"0601", # G92 [9800 GT]
"0602", # G92 [8800 GT]
"0603", # G92 [GT 230]
"0604", # G92 [9800 GX2]
"0605", # G92 [9800 GT]
"0606", # G92 [8800 GS]
"0607", # G92 [GTS 240]
"0608", # G92 [9800M GTX]
"0609", # G92 [8800M GTS]
"060A", # G92 [GTX 280M]
"060B", # G92 [9800M GT]
"060C", # G92 [8800M GTX]
"060F", # G92 [GTX 285M]
"0610", # G92 [9600 GSO]
"0611", # G92 [8800 GT]
"0612", # G92 [9800 GTX/9800 GTX+]
"0613", # G92 [9800 GTX+]
"0614", # G92 [9800 GT]
"0615", # G92 [GTS 250]
"0617", # G92 [9800M GTX]
"0618", # G92 [GTX 260M]
"0619", # G92 [FX 4700 X2]
"061A", # G92 [FX 3700]
"061B", # G92 [VX 200]
"061C", # G92 [FX 3600M]
"061D", # G92 [FX 2800M]
"061E", # G92 [FX 3700M]
"061F", # G92 [FX 3800M]
# G94
"0621", # G94 [GT 230]
"0622", # G94 [9600 GT]
"0623", # G94 [9600 GS]
"0625", # G94 [9600 GSO 512]
"0626", # G94 [GT 130]
"0627", # G94 [GT 140]
"0628", # G94 [9800M GTS]
"062A", # G94 [9700M GTS]
"062B", # G94 [9800M GS]
"062C", # G94 [9800M GTS ]
"062D", # G94 [9600 GT]
"062E", # G94 [9600 GT]
"0631", # G94 [GTS 160M]
"0635", # G94 [9600 GSO]
"0637", # G94 [9600 GT]
"0638", # G94 [FX 1800]
"063A", # G94 [FX 2700M]
# G96
"0640", # G96 [9500 GT]
"0641", # G96 [9400 GT]
"0643", # G96 [9500 GT]
"0644", # G96 [9500 GS]
"0645", # G96 [9500 GS]
"0646", # G96 [GT 120]
"0647", # G96 [9600M GT]
"0648", # G96 [9600M GS]
"0649", # G96 [9600M GT]
"064A", # G96 [9700M GT]
"064B", # G96 [9500M G]
"064C", # G96 [9650M GT]
"0651", # G96 [G 110M]
"0652", # G96 [GT 130M]
"0653", # G96 [GT 120M]
"0654", # G96 [GT 220M]
"0655", # G96 [GT 120]
"0656", # G96 [GT 120 ]
"0658", # G96 [FX 380]
"0659", # G96 [FX 580]
"065A", # G96 [FX 1700M]
"065B", # G96 [9400 GT]
"065C", # G96 [FX 770M]
"065F", # G96 [G210]
# G98
"06E0", # G98 [9300 GE]
"06E1", # G98 [9300 GS]
"06E2", # G98 [8400]
"06E3", # G98 [8400 SE]
"06E4", # G98 [8400 GS]
"06E6", # G98 [G100]
"06E7", # G98 [9300 SE]
"06E8", # G98 [9200M GS]
"06E9", # G98 [9300M GS]
"06EA", # G98 [NVS 150M]
"06EB", # G98 [NVS 160M]
"06EC", # G98 [G 105M]
"06EF", # G98 [G 103M]
"06F1", # G98 [G105M]
"06F8", # G98 [NVS 420]
"06F9", # G98 [FX 370 LP]
"06FA", # G98 [NVS 450]
"06FB", # G98 [FX 370M]
"06FD", # G98 [NVS 295]
"06FF", # G98 [HICx16]
# G200
"05E0", # G200 [GTX 295]
"05E1", # G200 [GTX 280]
"05E2", # G200 [GTX 260]
"05E3", # G200 [GTX 285]
"05E6", # G200 [GTX 275]
"05E7", # G200 [C1060]
"05E9", # G200 [CX]
"05EA", # G200 [GTX 260]
"05EB", # G200 [GTX 295]
"05ED", # G200 [FX 5800]
"05EE", # G200 [FX 4800]
"05EF", # G200 [FX 3800]
# MCP77 GPU
"0840", # MCP77 GPU [8200M]
"0844", # MCP77 GPU [9100M G]
"0845", # MCP77 GPU [8200M G]
"0846", # MCP77 GPU [9200]
"0847", # MCP77 GPU [9100]
"0848", # MCP77 GPU [8300]
"0849", # MCP77 GPU [8200]
"084A", # MCP77 GPU [730A]
"084B", # MCP77 GPU [9200]
"084C", # MCP77 GPU [980A/780A SLI]
"084D", # MCP77 GPU [750A SLI]
"084F", # MCP77 GPU [8100 / 720A]
# MCP79 GPU
"0860", # MCP79 GPU [9400]
"0861", # MCP79 GPU [9400]
"0862", # MCP79 GPU [9400M G]
"0863", # MCP79 GPU [9400M]
"0864", # MCP79 GPU [9300]
"0865", # MCP79 GPU [ION]
"0866", # MCP79 GPU [9400M G]
"0867", # MCP79 GPU [9400]
"0868", # MCP79 GPU [760i SLI]
"0869", # MCP79 GPU [9400]
"086A", # MCP79 GPU [9400]
"086C", # MCP79 GPU [9300 / 730i]
"086D", # MCP79 GPU [9200]
"086E", # MCP79 GPU [9100M G]
"086F", # MCP79 GPU [8200M G]
"0870", # MCP79 GPU [9400M]
"0871", # MCP79 GPU [9200]
"0872", # MCP79 GPU [G102M]
"0873", # MCP79 GPU [G102M]
"0874", # MCP79 GPU [ION]
"0876", # MCP79 GPU [ION]
"087A", # MCP79 GPU [9400]
"087D", # MCP79 GPU [ION]
"087E", # MCP79 GPU [ION LE]
"087F", # MCP79 GPU [ION LE]
# GT215
"0CA0", # GT215 [GT 330]
"0CA2", # GT215 [GT 320]
"0CA3", # GT215 [GT 240]
"0CA4", # GT215 [GT 340]
"0CA5", # GT215 [GT 220]
"0CA7", # GT215 [GT 330]
"0CA9", # GT215 [GTS 250M]
"0CAC", # GT215 [GT 220]
"0CAF", # GT215 [GT 335M]
"0CB0", # GT215 [GTS 350M]
"0CB1", # GT215 [GTS 360M]
"0CBC", # GT215 [FX 1800M]
# GT216
"0A20", # GT216 [GT 220]
"0A22", # GT216 [315]
"0A23", # GT216 [210]
"0A26", # GT216 [405]
"0A27", # GT216 [405]
"0A28", # GT216 [GT 230M]
"0A29", # GT216 [GT 330M]
"0A2A", # GT216 [GT 230M]
"0A2B", # GT216 [GT 330M]
"0A2C", # GT216 [NVS 5100M]
"0A2D", # GT216 [GT 320M]
"0A32", # GT216 [GT 415]
"0A34", # GT216 [GT 240M]
"0A35", # GT216 [GT 325M]
"0A38", # GT216 [400]
"0A3C", # GT216 [FX 880M]
# GT218
"0A60", # GT218 [G210]
"0A62", # GT218 [205]
"0A63", # GT218 [310]
"0A64", # GT218 [ION]
"0A65", # GT218 [210]
"0A66", # GT218 [310]
"0A67", # GT218 [315]
"0A68", # GT218 [G105M]
"0A69", # GT218 [G105M]
"0A6A", # GT218 [NVS 2100M]
"0A6C", # GT218 [NVS 3100M]
"0A6E", # GT218 [305M]
"0A6F", # GT218 [ION]
"0A70", # GT218 [310M]
"0A71", # GT218 [305M]
"0A72", # GT218 [310M]
"0A73", # GT218 [305M]
"0A74", # GT218 [G210M]
"0A75", # GT218 [310M]
"0A76", # GT218 [ION]
"0A78", # GT218 [FX 380 LP]
"0A7A", # GT218 [315M]
"0A7C", # GT218 [FX 380M]
"10C0", # GT218 [9300 GS]
"10C3", # GT218 [8400GS]
"10C5", # GT218 [405]
"10D8", # GT218 [NVS 300]
# MCP89 GPU
"08A0", # MCP89 GPU [320M]
"08A2", # MCP89 GPU [320M]
"08A3", # MCP89 GPU [320M]
"08A4", # MCP89 GPU [320M]
]
fermi_ids = [
# GF100
"06C0", # GF100 [GTX 480]
"06C4", # GF100 [GTX 465]
"06CA", # GF100 [GTX 480M]
"06CB", # GF100 [GTX 480]
"06CD", # GF100 [GTX 470]
"06D1", # GF100 [C2050 / C2070]
"06D2", # GF100 [M2070]
"06D8", # GF100 [6000]
"06D9", # GF100 [5000]
"06DA", # GF100 [5000M]
"06DC", # GF100 [6000]
"06DD", # GF100 [4000]
"06DE", # GF100 [T20]
"06DF", # GF100 [M2070-Q]
# GF104
"0E22", # GF104 [GTX 460]
"0E23", # GF104 [GTX 460 SE]
"0E24", # GF104 [GTX 460 OEM]
"0E30", # GF104 [GTX 470M]
"0E31", # GF104 [GTX 485M]
"0E3A", # GF104 [3000M]
"0E3B", # GF104 [4000M]
# GF114
"1200", # GF114 [GTX 560 Ti]
"1201", # GF114 [GTX 560]
"1202", # GF114 [GTX 560 Ti OEM]
"1203", # GF114 [GTX 460 SE v2]
"1205", # GF114 [GTX 460 v2]
"1206", # GF114 [GTX 555]
"1207", # GF114 [GT 645 OEM]
"1208", # GF114 [GTX 560 SE]
"1210", # GF114 [GTX 570M]
"1211", # GF114 [GTX 580M]
"1212", # GF114 [GTX 675M]
"1213", # GF114 [GTX 670M]
# GF106
"0DC0", # GF106 [GT 440]
"0DC4", # GF106 [GTS 450]
"0DC5", # GF106 [GTS 450]
"0DC6", # GF106 [GTS 450]
"0DCD", # GF106 [GT 555M]
"0DCE", # GF106 [GT 555M]
"0DD1", # GF106 [GTX 460M]
"0DD2", # GF106 [GT 445M]
"0DD3", # GF106 [GT 435M]
"0DD6", # GF106 [GT 550M]
"0DD8", # GF106 [2000]
"0DDA", # GF106 [2000M]
# GF116
"1241", # GF116 [GT 545 OEM]
"1243", # GF116 [GT 545]
"1244", # GF116 [GTX 550 Ti]
"1245", # GF116 [GTS 450 Rev. 2]
"1246", # GF116 [GT 550M]
"1247", # GF116 [GT 635M]
"1248", # GF116 [GT 555M]
"1249", # GF116 [GTS 450 Rev. 3]
"124B", # GF116 [GT 640 OEM]
"124D", # GF116 [GT 555M]
"1251", # GF116 [GTX 560M]
# GF108
"0DE0", # GF108 [GT 440]
"0DE1", # GF108 [GT 430]
"0DE2", # GF108 [GT 420]
"0DE3", # GF108 [GT 635M]
"0DE4", # GF108 [GT 520]
"0DE5", # GF108 [GT 530]
"0DE8", # GF108 [GT 620M]
"0DE9", # GF108 [GT 630M]
"0DEA", # GF108 [610M]
"0DEB", # GF108 [GT 555M]
"0DEC", # GF108 [GT 525M]
"0DED", # GF108 [GT 520M]
"0DEE", # GF108 [GT 415M]
"0DEF", # GF108 [NVS 5400M]
"0DF0", # GF108 [GT 425M]
"0DF1", # GF108 [GT 420M]
"0DF2", # GF108 [GT 435M]
"0DF3", # GF108 [GT 420M]
"0DF4", # GF108 [GT 540M]
"0DF5", # GF108 [GT 525M]
"0DF6", # GF108 [GT 550M]
"0DF7", # GF108 [GT 520M]
"0DF8", # GF108 [600]
"0DF9", # GF108 [500M]
"0DFA", # GF108 [1000M]
"0DFC", # GF108 [NVS 5200M]
"0F00", # GF108 [GT 630]
"0F01", # GF108 [GT 620]
# GF110
"1080", # GF110 [GTX 580]
"1081", # GF110 [GTX 570]
"1082", # GF110 [GTX 560 Ti]
"1084", # GF110 [GTX 560]
"1086", # GF110 [GTX 570]
"1087", # GF110 [GTX 560 Ti]
"1088", # GF110 [GTX 590]
"1089", # GF110 [GTX 580]
"108B", # GF110 [GTX 580]
"1091", # GF110 [M2090]
"109A", # GF110 [5010M]
"109B", # GF110 [7000]
# GF119
"1040", # GF119 [GT 520]
"1042", # GF119 [510]
"1048", # GF119 [605]
"1049", # GF119 [GT 620]
"104A", # GF119 [GT 610]
"1050", # GF119 [GT 520M]
"1051", # GF119 [GT 520MX]
"1052", # GF119 [GT 520M]
"1054", # GF119 [410M]
"1055", # GF119 [410M]
"1056", # GF119 [NVS 4200M]
"1057", # GF119 [NVS 4200M]
"1058", # GF119 [610M]
"1059", # GF119 [610M]
"105A", # GF119 [610M]
"107D", # GF119 [NVS 310]
# GF117
"1140", # GF117 [GT 620M]
]
kepler_ids = [
# GK104
"1180", # GK104 [GTX 680]
"1183", # GK104 [GTX 660 Ti]
"1185", # GK104 [GTX 660]
"1188", # GK104 [GTX 690]
"1189", # GK104 [GTX 670]
"1198", # GTX 880M
"1199", # GK104 [GTX 870M]
"119A", # GTX 860M
"119E", # GTX 780M
"119F", # GK104 [GTX 780M]
"11A0", # GK104 [GTX 680M]
"11A1", # GK104 [GTX 670MX]
"11A2", # GK104 [GTX 675MX]
"11A3", # GK104 [GTX 680MX]
"11A7", # GK104 [GTX 675MX]
"11A9", # GTX 870M
"11B6", # Quadro K3100M
"11B7", # Quadro K4100M
"11B8", # Quadro K5100M
"11BA", # GK104 [K5000]
"11BC", # GK104 [K5000M]
"11BD", # GK104 [K4000M]
"11BE", # GK104 [K3000M]
"11BF", # GK104 [GRID K2]
# GK106
"11C0", # GK106 [GTX 660]
"11C6", # GK106 [GTX 650 Ti]
"11E0", # GK106 [GTX 770M]
"11E1", # GTX 765M
"11E2", # GTX 765M
"11FA", # GK106 [K4000]
"11FC", # Quadro K2100M
# GK107
"0FC0", # GK107 [GT 640]
"0FC1", # GK107 [GT 640]
"0FC2", # GK107 [GT 630]
"0FC6", # GK107 [GTX 650]
"0FD1", # GK107 [GT 650M]
"0FD2", # GK107 [GT 640M]
"0FD3", # GK107 [GT 640M LE]
"0FD4", # GK107 [GTX 660M]
"0FD5", # GK107 [GT 650M]
"0FD8", # GK107 [GT 640M]
"0FD9", # GK107 [GT 645M]
"0FE0", # GK107 [GTX 660M]
"0FE9", # GK107 [GT 750M Mac Edition]
"0FF6", # Quadro K1100M
"0FF9", # GK107 [K2000D]
"0FFA", # GK107 [K600]
"0FFB", # GK107 [K2000M]
"0FFC", # GK107 [K1000M]
"0FFD", # GK107 [NVS 510]
"0FFE", # GK107 [K2000]
"0FFF", # GK107 [410]
# GK110
"1003", # GK110 [GTX Titan LE]
"1004", # GK110 [GTX 780]
"1005", # GK110 [GTX Titan]
"101F", # GK110 [TEslA K20]
"1020", # GK110 [TEslA K2]
"1021", # GK110 [TEslA K2m]
"1022", # GK110 [TEslA K20C]
"1026", # GK110 [TEslA K20s]
"1028", # GK110 [TEslA K20m]
# GK208
"1280", # GK208 [GT 635]
"1282", # GK208 [GT 640 REv. 2]
"1284", # GK208 [GT 630 REv. 2]
"1290", # GK208 [GT 730M]
"1291", # GK208 [GT 735M]
"1292", # GK208 [GT 740M]
"1293", # GK208 [GT 730M]
"1294", # GK208 [GT 740M]
"1295", # GK208 [710M]
"12B9", # GK208 [K610M]
"12BA", # GK208 [K510M]
]
class amd_ids:
legacy_gcn_ids = [
# AMDRadeonX4000
# AMDBonaireGraphicsAccelerator
"6640",
"6641",
"6646",
"6647",
"6650",
"6651",
"665C",
"665D",
# AMDFijiGraphicsAccelerator
"7300",
"730F",
# AMDHawaiiGraphicsAccelerator
"67B0",
# AMDPitcairnGraphicsAccelerator
"6800",
"6801",
"6806",
"6808",
"6810",
"6818",
"6819",
# AMDTahitiGraphicsAccelerator
"6790",
"6798",
"679A",
"679E",
"6780",
# AMDTongaGraphicsAccelerator
"6920",
"6921",
"6930",
"6938",
"6939",
# AMDVerdeGraphicsAccelerator
"6820",
"6821",
"6823",
"6825",
"6827",
"682B",
"682D",
"682F",
"6835",
"6839",
"683B",
"683D",
"683F",
]
polaris_ids = [
# AMDRadeonX4000
# AMDBaffinGraphicsAccelerator
"67E0",
"67E3",
"67E8",
"67EB",
"67EF",
"67FF",
"67E1",
"67E7",
"67E9",
# AMDEllesmereGraphicsAccelerator
"67C0",
"67C1",
"67C2",
"67C4",
"67C7",
"67DF",
"67D0",
"67C8",
"67C9",
"67CA",
"67CC",
"67CF",
]
vega_ids = [
# AMDRadeonX5000
# AMDVega10GraphicsAccelerator
"6860",
"6861",
"6862",
"6863",
"6864",
"6867",
"6868",
"6869",
"686A",
"686B",
"686C",
"686D",
"686E",
"686F",
"687F",
# AMDVega12GraphicsAccelerator
"69A0",
"69A1",
"69A2",
"69A3",
"69AF",
# AMDVega20GraphicsAccelerator
"66A0",
"66A1",
"66A2",
"66A3",
"66A7",
"66AF",
]
navi_ids = [
# AMDRadeonX6000
# AMDNavi10GraphicsAccelerator
"7310",
"7312",
"7318",
"7319",
"731A",
"731B",
"731F",
# AMDNavi12GraphicsAccelerator
"7360",
# AMDNavi14GraphicsAccelerator
"7340",
"7341",
"7343",
"7347",
"734F",
# AMDNavi21GraphicsAccelerator
"73A2",
"73AB",
"73BF",
]
terascale_1_ids = [
"9400",
"9401",
"9402",
"9403",
"9581",
"9583",
"9588",
"94C8",
"94C9",
"9500",
"9501",
"9505",
"9507",
"9504",
"9506",
"9598",
"9488",
"9599",
"9591",
"9593",
"9440",
"9442",
"944A",
"945A",
"9490",
"949E",
"9480",
"9540",
"9541",
"954E",
"954F",
"9552",
"9553",
"94A0",
]
terascale_2_ids = [
"6738",
"6739",
"6720",
"6722",
"6768",
"6770",
"6779",
"6760",
"6761",
"68E0",
"6898",
"6899",
"68B8",
"68B0",
"68B1",
"68A0",
"68A1",
"6840",
"6841",
"68D8",
"68C0",
"68C1",
"68D9",
"6750",
"6758",
"6759",
"6740",
"6741",
"6745",
]
class intel_ids:
iron_ids = [
# AppleIntelHDGraphics IDs
"0044",
"0046",
]
sandy_ids = [
# AppleIntelHD3000Graphics IDs
# AppleIntelSNBGraphicsFB IDs
"0106",
"0601",
"0116",
"0102",
"0126",
]
ivy_ids = [
# AppleIntelHD4000Graphics IDs
# AppleIntelFramebufferCapri IDs
"0152",
"0156",
"0162",
"0166",
]
class broadcom_ids:
BCM4360Wifi = [
# AirPortBrcmNIC IDs
"43BA", # BCM43602
"43A3", # BCM4350
"43A0", # BCM4360
]
BCM94331Wifi = [
# AirPortBrcm4360 IDs (removed duplicates for 4360 class cards)
"4331", # BCM94331
"4353", # BCM943224
]
BCM94322Wifi = [
# AirPortBrcm4331 IDs (removed duplicates for 4331 class cards)
"432B", # BCM94322
]
BCM94328Wifi = [
# AppleAirPortBrcm43224 IDs
"4311", # BCM4311 - never used by Apple
"4312", # BCM4311 - never used by Apple
"4313", # BCM4311 - never used by Apple
"4318", # BCM4318 - never used by Apple
"4319", # BCM4318 - never used by Apple
"431A", # Unknown - never used by Apple
"4320", # BCM4306 - never used by Apple
"4324", # BCM4309 - never used by Apple
"4325", # BCM4306 - never used by Apple
"4328", # BCM94328
"432C", # BCM4322 - never used by Apple
"432D", # BCM4322 - never used by Apple
]
class atheros_ids:
AtherosWifi = [
# AirPortAtheros40 IDs
"0030", # AR93xx
"002A", # AR928X
"001C", # AR242x / AR542x
"0023", # AR5416 - never used by Apple
"0024", # AR5418
]

View File

@@ -1,390 +0,0 @@
# 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/)
from __future__ import print_function
import binascii
import plistlib
import shutil
import signal
import subprocess
import sys
import uuid
import zipfile
import os
from pathlib import Path
from datetime import date
from Resources import Constants, ModelArray, PCIIDArray, Utilities, DeviceProbe
class PatchSysVolume:
def __init__(self, model, versions):
self.model = model
self.constants: Constants.Constants = versions
def hexswap(self, 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 csr_decode(self, sip_raw, print_status):
sip_int = int.from_bytes(sip_raw, byteorder='little')
i = 0
for current_sip_bit in self.constants.csr_values:
if sip_int & (1 << i):
temp = True
self.constants.csr_values[current_sip_bit] = True
else:
temp = False
if print_status is True:
print(f"- {current_sip_bit}\t {temp}")
i = i + 1
if ((self.constants.csr_values["CSR_ALLOW_UNTRUSTED_KEXTS "] is True) \
and (self.constants.csr_values["CSR_ALLOW_UNRESTRICTED_FS "] is True) \
and (self.constants.csr_values["CSR_ALLOW_UNRESTRICTED_DTRACE "] is True) \
and (self.constants.csr_values["CSR_ALLOW_UNRESTRICTED_NVRAM "] is True) \
and (self.constants.csr_values["CSR_ALLOW_DEVICE_CONFIGURATION "] is True) \
and (self.constants.csr_values["CSR_ALLOW_UNAPPROVED_KEXTS "] is True) \
and (self.constants.csr_values["CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE"] is True) \
and (self.constants.csr_values["CSR_ALLOW_UNAUTHENTICATED_ROOT "] is True)):
self.sip_patch_status = False
else:
self.sip_patch_status = True
def find_mount_root_vol(self, patch):
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
self.root_mount_path = root_partition_info["DeviceIdentifier"]
self.mount_location = "/System/Volumes/Update/mnt1"
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"
if self.root_mount_path.startswith("disk"):
self.root_mount_path = self.root_mount_path[:-2] if self.root_mount_path.endswith('s1') else self.root_mount_path
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()
else:
self.unpatch_root_vol()
else:
print("- Mounting drive as writable")
subprocess.run(f"sudo mount -o nobrowse -t apfs /dev/{self.root_mount_path} {self.mount_location}".split(), 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()
else:
self.unpatch_root_vol()
else:
print("- Failed to mount the Root Volume")
else:
print("- Could not find root volume")
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}")
subprocess.run(f"sudo rm -R {delete_path}".split(), 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}")
subprocess.run(f"sudo rm -R {existing_path}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
print(f"- Adding {add_current_kext}")
subprocess.run(f"sudo cp -R {vendor_location}/{add_current_kext} {self.mount_extensions}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(f"sudo chmod -Rf 755 {self.mount_extensions}/{add_current_kext}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(f"sudo chown -Rf root:wheel {self.mount_extensions}/{add_current_kext}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
else:
print(f"- Adding {add_current_kext}")
subprocess.run(f"sudo cp -R {vendor_location}/{add_current_kext} {self.mount_extensions}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(f"sudo chmod -Rf 755 {self.mount_extensions}/{add_current_kext}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(f"sudo chown -Rf root:wheel {self.mount_extensions}/{add_current_kext}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
def add_brightness_patch(self):
print("- Merging legacy Brightness Control Patches")
self.delete_old_binaries(ModelArray.DeleteBrightness)
self.add_new_binaries(ModelArray.AddBrightness, self.constants.legacy_brightness)
subprocess.run(f"sudo ditto {self.constants.payload_apple_private_frameworks_path_brightness} {self.mount_private_frameworks}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(f"sudo chmod -R 755 {self.mount_private_frameworks}/DisplayServices.framework".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(f"sudo chown -R root:wheel {self.mount_private_frameworks}/DisplayServices.framework".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
def gpu_accel_patches_11(self):
igpu_vendor,igpu_device,igpu_acpi = DeviceProbe.pci_probe().gpu_probe("IGPU")
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
if dgpu_vendor:
print(f"- Found GFX0: {dgpu_vendor}:{dgpu_device}")
if dgpu_vendor == self.constants.pci_nvidia:
if dgpu_device in PCIIDArray.nvidia_ids().tesla_ids or dgpu_device in PCIIDArray.nvidia_ids().fermi_ids:
print("- Merging legacy Nvidia Tesla and Fermi Kexts and Bundles")
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(ModelArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
# TODO: Enable below code if macOS 12 drops support
#elif dgpu_device in PCIIDArray.nvidia_ids().kepler_ids and self.constants.detected_os > self.constants.big_sur:
# print("- Merging legacy Nvidia Kepler Kexts and Bundles")
# self.add_new_binaries(ModelArray.AddNvidiaKeplerAccel11, self.constants.legacy_nvidia_kepler_path)
elif dgpu_vendor == self.constants.pci_amd_ati:
if dgpu_device in PCIIDArray.amd_ids().terascale_1_ids:
print("- Merging legacy AMD Kexts and Bundles")
self.delete_old_binaries(ModelArray.DeleteAMDAccel11)
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(ModelArray.AddAMDAccel11, self.constants.legacy_amd_path)
if igpu_vendor:
print(f"- Found IGPU: {igpu_vendor}:{igpu_device}")
if igpu_vendor == self.constants.pci_intel:
if igpu_device in PCIIDArray.intel_ids().iron_ids:
print("- Merging legacy Intel 1st Gen Kexts and Bundles")
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(ModelArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
elif igpu_device in PCIIDArray.intel_ids().sandy_ids:
print("- Merging legacy Intel 2nd Gen Kexts and Bundles")
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(ModelArray.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
# TODO: Enable below code if macOS 12 drops support
#elif igpu_device in PCIIDArray.intel_ids().ivy_ids:
# print("- Merging legacy Intel 3rd Gen Kexts and Bundles")
# self.add_new_binaries(ModelArray.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
elif igpu_vendor == self.constants.pci_nvidia:
if not dgpu_vendor:
# Avoid patching twice, as Nvidia iGPUs will only have Nvidia dGPUs
print("- Merging legacy Nvidia Kexts and Bundles")
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
self.add_new_binaries(ModelArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
# Frameworks
print("- Merging legacy Frameworks")
subprocess.run(f"sudo ditto {self.constants.payload_apple_frameworks_path_accel} {self.mount_frameworks}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
if self.model in ModelArray.LegacyBrightness:
self.add_brightness_patch()
# LaunchDaemons
if Path(self.mount_lauchd / Path("HiddHack.plist")).exists():
print("- Removing legacy HiddHack")
subprocess.run(f"sudo rm {self.mount_lauchd}/HiddHack.plist".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
print("- Adding IOHID-Fixup.plist")
subprocess.run(f"sudo ditto {self.constants.payload_apple_lauchd_path_accel} {self.mount_lauchd}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(f"sudo chmod 755 {self.mount_lauchd}/IOHID-Fixup.plist".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
subprocess.run(f"sudo chown root:wheel {self.mount_lauchd}/IOHID-Fixup.plist".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
# PrivateFrameworks
print("- Merging legacy PrivateFrameworks")
subprocess.run(f"sudo ditto {self.constants.payload_apple_private_frameworks_path_accel} {self.mount_private_frameworks}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
# Sets AppKit to Catalina Window Drawing codepath
# Disabled upon ASentientBot request
print("- Enabling NSDefenestratorModeEnabled")
subprocess.run("defaults write -g NSDefenestratorModeEnabled -bool true".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
def patch_root_vol(self):
print(f"- Detecting patches for {self.model}")
rebuild_required = False
# TODO: Create Backup of S*/L*/Extensions, Frameworks and PrivateFramework to easily revert changes
# APFS snapshotting seems to ignore System Volume changes inconsistently, would like a backup to avoid total brick
# Perhaps a basic py2 script to run in recovery to restore
# Ensures no .DS_Stores got in
print("- Preparing Files")
subprocess.run(f"sudo find {self.constants.payload_apple_root_path} -name '.DS_Store' -delete".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
if self.model in ModelArray.LegacyGPU or self.constants.assume_legacy is True:
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
if dgpu_vendor and dgpu_vendor == self.constants.pci_amd_ati and (dgpu_device in PCIIDArray.amd_ids().polaris_ids or dgpu_device in PCIIDArray.amd_ids().vega_ids or dgpu_device in PCIIDArray.amd_ids().navi_ids or dgpu_device in PCIIDArray.amd_ids().legacy_gcn_ids):
print("- Detected Metal-based AMD GPU, skipping legacy patches")
elif dgpu_vendor and dgpu_vendor == self.constants.pci_nvidia and dgpu_device in PCIIDArray.nvidia_ids().kepler_ids:
print("- Detected Metal-based Nvidia GPU, skipping legacy patches")
else:
print("- Detected legacy GPU, attempting legacy acceleration patches")
self.gpu_accel_patches_11()
rebuild_required = True
if self.model in ["iMac7,1", "iMac8,1"]:
print("- Fixing Volume Control Support")
self.add_new_binaries(ModelArray.AddVolumeControl, self.constants.audio_path)
if rebuild_required is True:
self.rebuild_snapshot()
def unpatch_root_vol(self):
print("- Reverting to last signed APFS snapshot")
subprocess.run(f"sudo bless --mount {self.mount_location} --bootefi --last-sealed-snapshot".split(), 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)")
result = subprocess.run(f"sudo kmutil install --volume-root {self.mount_location} --update-all".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if result.returncode != 0:
self.sucess_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("")
else:
self.sucess_status = True
print("- Successfully built new kernel cache")
if self.constants.gui_mode is False:
input("Press [ENTER] to continue with snapshotting")
print("- Creating new APFS snapshot")
subprocess.run(f"sudo bless --folder {self.mount_location}/System/Library/CoreServices --bootefi --create-snapshot".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
def unmount_drive(self):
print("- Unmounting Root Volume (Don't worry if this fails)")
subprocess.run(f"sudo diskutil unmount {self.root_mount_path}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
def check_status(self):
nvram_dump = plistlib.loads(subprocess.run("nvram -x -p".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
try:
self.sip_status = nvram_dump["csr-active-config"]
except KeyError:
self.sip_status = b'\x00\x00\x00\x00'
self.smb_model: str = subprocess.run("nvram 94B73556-2197-4702-82A8-3E1337DAFBFB:HardwareModel ".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
if not self.smb_model.startswith("nvram: Error getting variable"):
self.smb_model = [line.strip().split(":HardwareModel ", 1)[1] for line in self.smb_model.split("\n") if line.strip().startswith("94B73556-2197-4702-82A8-3E1337DAFBFB:")][0]
if self.smb_model.startswith("j137"):
self.smb_status = True
else:
self.smb_status = False
else:
self.smb_status = False
self.fv_status = True
self.fv_status: str = subprocess.run("fdesetup status".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
if self.fv_status.startswith("FileVault is Off"):
self.fv_status = False
else:
self.fv_status = True
self.sip_patch_status = True
self.csr_decode(self.sip_status, False)
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):
Utilities.cls()
print("- Downloading Apple binaries")
popen_oclp = subprocess.Popen(f"curl -S -L {self.constants.url_apple_binaries}{self.constants.payload_version}.zip --output {self.constants.payload_apple_root_path_zip}".split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
for stdout_line in iter(popen_oclp.stdout.readline, ""):
print(stdout_line, end="")
popen_oclp.stdout.close()
if self.constants.payload_apple_root_path_zip.exists():
print("- Download completed")
print("- Unzipping download...")
try:
subprocess.run(f"unzip {self.constants.payload_apple_root_path_zip}".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path).stdout.decode()
print("- Renaming folder")
os.rename(self.constants.payload_apple_root_path_unzip, self.constants.payload_apple_root_path)
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")
os.remove(self.constants.payload_apple_root_path_zip)
else:
print("- Download failed, please verify the below link works:")
print(f"{self.constants.url_apple_binaries}{self.constants.payload_version}")
def start_patch(self):
# Check SIP
# self.check_files()
if self.constants.custom_model is not None:
print("Root Patching must be done on target machine!")
elif self.model in ModelArray.NoRootPatch11 and self.constants.assume_legacy is False:
print("Root Patching not required for this machine!")
elif self.model not in ModelArray.SupportedSMBIOS11 and self.constants.assume_legacy is False:
print("Cannot run on this machine, model is unsupported!")
elif self.constants.detected_os < self.constants.big_sur:
print(f"Cannot run on this OS, requires macOS 11!")
else:
self.check_status()
Utilities.cls()
if (self.sip_patch_status is False) and (self.smb_status is False):
print("- Detected SIP and SecureBootModel are disabled, continuing")
if self.constants.gui_mode is False:
input("\nPress [ENTER] to continue")
self.check_files()
if self.constants.payload_apple_root_path.exists():
self.find_mount_root_vol(True)
self.unmount_drive()
print("- Patching complete")
if self.sucess_status is True:
print("\nPlease reboot the machine for patches to take effect")
else:
print("\nPlease reboot the machine to avoid potential issues rerunning the patcher")
if self.sip_patch_status is True:
print("SIP set incorrectly, cannot patch on this machine!")
print("Please disable SIP and SecureBootModel in Patcher Settings")
self.csr_decode(self.sip_status, True)
print("")
if self.smb_status is True:
print("SecureBootModel set incorrectly, unable to patch!")
print("Please disable SecureBootModel in Patcher Settings")
print("")
if self.fv_status is True:
print("FileVault enabled, unable to patch!")
print("Please disable FileVault in System Preferences")
print("")
if self.constants.gui_mode is False:
input("Press [Enter] to go exit.")
def start_unpatch(self):
if self.constants.custom_model is not None:
print("Unpatching must be done on target machine!")
elif self.constants.detected_os < self.constants.big_sur:
print(f"Cannot run on this OS, requires macOS 11!")
else:
self.check_status()
Utilities.cls()
if (self.sip_patch_status is False) and (self.smb_status is False):
print("- Detected SIP and SecureBootModel are disabled, continuing")
if self.constants.gui_mode is False:
input("\nPress [ENTER] to continue")
self.find_mount_root_vol(False)
self.unmount_drive()
print("- Unpatching complete")
print("\nPlease reboot the machine for patches to take effect")
if self.sip_patch_status is True:
print("SIP set incorrectly, cannot unpatch on this machine!")
print("Please disable SIP and SecureBootModel in Patcher Settings")
self.csr_decode(self.sip_status, True)
print("")
if self.smb_status is True:
print("SecureBootModel set incorrectly, unable to unpatch!")
print("Please disable SecureBootModel in Patcher Settings")
print("")
if self.fv_status is True:
print("FileVault enabled, unable to unpatch!")
print("Please disable FileVault in System Preferences")
print("")
if self.constants.gui_mode is False:
input("Press [Enter] to go exit.")

View File

@@ -1,124 +0,0 @@
# Copyright (C) 2020-2021, Dhinak G
from __future__ import print_function
import os
import math as m
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 = m.floor(((total_length - 2 - len(line.strip())) / 2))
print("#" + " " * left_side + line.strip() + " " * (total_length - len("#" + " " * left_side + line.strip()) - 1) + "#")
print("#" * total_length)
def cls():
os.system('cls' if os.name == 'nt' else 'clear')
# 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,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"
]
}
]

View File

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

14
create_offline_build.py Normal file
View File

@@ -0,0 +1,14 @@
import subprocess
from resources import constants
patcher_support_pkg_version = constants.Constants().patcher_support_pkg_version
binary_packages = ["10.14-Mojave", "10.15-Catalina", "11-Big-Sur", "12-Monterey"]
for binary_package in binary_packages:
print(f"- Downloading {binary_package}...")
download_cmd = f"curl -LO https://github.com/dortania/PatcherSupportPkg/releases/download/{patcher_support_pkg_version}/{binary_package}.zip"
subprocess.run(download_cmd, shell=True)
print("- Moving into payloads")
move_cmd = f"mv {binary_package}.zip ./payloads/"
subprocess.run(move_cmd, shell=True)
print("- Download complete")

15
data/bluetooth_data.py Normal file
View File

@@ -0,0 +1,15 @@
import enum
class bluetooth_data(enum.IntEnum):
# Bluetooth Chipsets
NonApplicable = 0
BRCM2045 = 1 # TODO: Rename chipset, currently guessing MacPro1,1-3,1 name
BRCM2046 = 2 # BT 2.1
BRCM2070 = 3 # BT 2.1
BRCM20702_v1 = 4 # BT 4.0 - 2012
BRCM20702_v2 = 5 # BT 4.0 - 2013+
BRCM20703 = 6 # BT 4.2
BRCM20703_UART = 9 # BRCM20703 over UART, BT 4.2
UART = 10 # T2
PCIe = 20 # Apple Silicon

23
data/cpu_data.py Normal file
View File

@@ -0,0 +1,23 @@
import enum
class cpu_data(enum.IntEnum):
pentium_4 = 0
yonah = 1
conroe = 2
penryn = 3
nehalem = 4 # (Westmere included)
sandy_bridge = 5 # 2000
ivy_bridge = 6 # 3000
haswell = 7 # 4000
broadwell = 8 # 5000
skylake = 9 # 6000
kaby_lake = 10 # 7000
coffee_lake = 11 # 8000
comet_lake = 12 # 9000
ice_lake = 13 # 10000
apple_dtk = 112 # A12
apple_m1 = 114 # A14
apple_m1_pro = 115
apple_m1_max = 116

343
data/example_data.py Normal file
View File

@@ -0,0 +1,343 @@
# Example Hardware probe of multiple models
# To be used when running validation tests
from resources import device_probe
class MacBook:
MacBook71 = device_probe.Computer(
real_model="MacBook7,1",
real_board_id="Mac-F22C89C8",
reported_model="MacBook7,1",
reported_board_id="Mac-F22C89C8",
gpus=[
device_probe.NVIDIA(vendor_id=4318, device_id=2208, class_code=196608, name="IGPU", model="NVIDIA GeForce 320M", pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
],
igpu=device_probe.NVIDIA(vendor_id=4318, device_id=2208, class_code=196608, name="IGPU", model="NVIDIA GeForce 320M", pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
dgpu=None,
storage=[
device_probe.SATAController(vendor_id=4318, device_id=3464, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0xa,0x0)"),
],
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17235, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)"),
cpu=device_probe.CPU(
name="Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "SMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
),
oclp_version=None,
opencore_version=None,
)
class MacBookPro:
MacBookPro92_Stock = device_probe.Computer(
real_model="MacBookPro9,2",
real_board_id="Mac-6F01561E16C75D06",
reported_model="MacBookPro9,2",
reported_board_id="Mac-6F01561E16C75D06",
gpus=[
device_probe.Intel(vendor_id=32902, device_id=358, class_code=196608, name="IGPU", model="Intel HD Graphics 4000", pci_path="PciRoot(0x0)/Pci(0x2,0x0)")
],
igpu=device_probe.Intel(vendor_id=32902, device_id=358, class_code=196608, name="IGPU", model="Intel HD Graphics 4000", pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
dgpu=None,
storage=[device_probe.SATAController(vendor_id=32902, device_id=7683, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")],
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17201, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0)"),
cpu=device_probe.CPU(
name='Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz',
flags=['FPU', 'VME', 'DE', 'PSE', 'TSC', 'MSR', 'PAE', 'MCE', 'CX8', 'APIC', 'SEP', 'MTRR', 'PGE', 'MCA', 'CMOV', 'PAT', 'PSE36', 'CLFSH', 'DS', 'ACPI', 'MMX', 'FXSR', 'SSE', 'SSE2', 'SS', 'HTT', 'TM', 'PBE', 'SSE3', 'PCLMULQDQ', 'DTES64', 'MON', 'DSCPL', 'VMX', 'EST', 'TM2', 'SSSE3', 'CX16', 'TPR', 'PDCM', 'SSE4.1', 'SSE4.2', 'x2APIC', 'POPCNT', 'AES', 'PCID', 'XSAVE', 'OSXSAVE', 'TSCTMR', 'AVX1.0', 'RDRAND', 'F16C']
),
oclp_version=None,
opencore_version=None,
)
MacBookPro171_Stock = device_probe.Computer(
# Run under Rosetta
real_model="MacBookPro17,1",
real_board_id="J293",
reported_model="MacBookPro17,1",
reported_board_id="J293",
gpus=[device_probe.AMD(vendor_id=4098, device_id=26640, class_code=196608, name="display", model="Unknown Unknown", pci_path="")],
igpu=None,
dgpu=None,
storage=[],
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17445, class_code=163840, name="wlan", model=None, pci_path=""),
cpu=device_probe.CPU(
name="Apple M1",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTSE64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "AES", "SEGLIM64"],
),
oclp_version=None,
opencore_version=None,
)
class Macmini:
Macmini81_Stock = device_probe.Computer(
real_model="Macmini8,1",
real_board_id="Mac-7BA5B2DFE22DDD8C",
reported_model="Macmini8,1",
reported_board_id="Mac-7BA5B2DFE22DDD8C",
gpus=[device_probe.Intel(vendor_id=32902, device_id=16027, class_code=196608, name="IGPU", model="Intel UHD Graphics 630", pci_path="PciRoot(0x0)/Pci(0x2,0x0)")],
igpu=device_probe.Intel(vendor_id=32902, device_id=16027, class_code=196608, name="IGPU", model="Intel UHD Graphics 630", pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
dgpu=None,
storage=[],
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17508, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)"),
cpu=device_probe.CPU(
name="Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTES64", "MON", "DSCPL", "VMX", "SMX", "EST", "TM2", "SSSE3", "FMA", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "x2APIC", "MOVBE", "POPCNT", "AES", "PCID", "XSAVE", "OSXSAVE", "SEGLIM64", "TSCTMR", "AVX1.0", "RDRAND", "F16C"]
),
oclp_version=None,
opencore_version=None
)
Macmini91_Stock = device_probe.Computer(
# Run under Rosetta
real_model="Macmini9,1",
real_board_id="J274",
reported_model="Macmini9,1",
reported_board_id="J274",
gpus=[
device_probe.AMD(vendor_id=4098, device_id=26640, class_code=196608, name="display", model="Unknown Unknown", pci_path="", )
],
igpu=None,
dgpu=None,
storage=[],
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17445, class_code=163840, name="wlan", model=None, pci_path=""),
cpu=device_probe.CPU(
name="Apple M1",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTSE64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "AES", "SEGLIM64"]
),
oclp_version=None,
opencore_version=None
)
class iMac:
iMac81_Stock = device_probe.Computer(
# Stock Model
real_model="iMac8,1",
real_board_id="Mac-F226BEC8",
reported_model="iMac8,1",
reported_board_id="Mac-F226BEC8",
gpus=[
device_probe.AMD(vendor_id=4098, device_id=38088, class_code=196608, name="GFX0", model="ATI Radeon HD 2400", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)")
],
igpu=None,
dgpu=device_probe.AMD(vendor_id=4098, device_id=38088, class_code=196608, name="GFX0", model="ATI Radeon HD 2400", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
storage=[
device_probe.SATAController(vendor_id=32902, device_id=10281, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
],
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17192, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)"),
cpu=device_probe.CPU(
name="Intel(R) Core(TM)2 Duo CPU E8135 @ 2.40GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"]
),
oclp_version=None,
opencore_version=None,
)
iMac112_Stock = device_probe.Computer(
# Stock Model
real_model="iMac11,2",
real_board_id="Mac-F2238AC8",
reported_model="iMac11,2",
reported_board_id="Mac-F2238AC8",
gpus=[
device_probe.AMD(vendor_id=4098, device_id=38024, class_code=196608, name="GFX0", model="ATI Radeon HD 4670", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)")
],
igpu=None,
dgpu=device_probe.AMD(vendor_id=4098, device_id=38024, class_code=196608, name="GFX0", model="ATI Radeon HD 4670", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
storage=[
device_probe.SATAController(vendor_id=32902, device_id=15138, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
],
wifi=device_probe.Atheros(vendor_id=5772, device_id=42, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0)"),
cpu=device_probe.CPU(
name="Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "POPCNT", "PCID"]
),
oclp_version=None,
opencore_version=None,
)
iMac122_Upgraded = device_probe.Computer(
real_model="iMac12,2",
real_board_id="Mac-942B59F58194171B",
reported_model="iMac12,2",
reported_board_id="Mac-942B59F58194171B",
gpus=[
device_probe.Intel(vendor_id=32902, device_id=258, class_code=196608, name="HD Graphics 3000", model=None, pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
device_probe.AMD(vendor_id=4098, device_id=26600, class_code=196608, name="GFX0", model="Radeon Pro WX4130", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
],
igpu=device_probe.Intel(vendor_id=32902, device_id=258, class_code=196608, name="HD Graphics 3000", model=None, pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
dgpu=device_probe.AMD(vendor_id=4098, device_id=26600, class_code=196608, name="GFX0", model="Radeon Pro WX4130", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
storage=[
device_probe.SATAController(vendor_id=32902, device_id=7170, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
],
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17338, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0)"),
cpu=device_probe.CPU(
name="Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTES64", "MON", "DSCPL", "VMX", "SMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "xAPIC", "POPCNT", "AES", "PCID", "XSAVE", "OSXSAVE", "TSCTMR", "AVX1.0"]
),
oclp_version=None,
opencore_version=None,
)
class MacPro:
MacPro31_Stock = device_probe.Computer(
# Stock Model, stock TS1 GPU and no Wifi card
real_model="MacPro3,1",
real_board_id="Mac-F42C88C8",
reported_model="MacPro3,1",
reported_board_id="Mac-F42C88C8",
gpus=[
device_probe.AMD(vendor_id=4098, device_id=38272, class_code=196608, name="GFX0", model="ATI Radeon HD 2600", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")
],
igpu=None,
dgpu=device_probe.AMD(vendor_id=4098, device_id=38272, class_code=196608, name="GFX0", model="ATI Radeon HD 2600", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
storage=[
device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
],
wifi=None,
cpu=device_probe.CPU(
name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
),
oclp_version=None,
opencore_version=None,
)
MacPro31_Upgrade = device_probe.Computer(
# Upgraded Model, TS2 GPU and El-Capitan era Wifi card
real_model="MacPro3,1",
real_board_id="Mac-F42C88C8",
reported_model="MacPro3,1",
reported_board_id="Mac-F42C88C8",
gpus=[
device_probe.AMD(vendor_id=4098, device_id=26808, class_code=196608, name="GFX0", model="ATI Radeon HD 5770", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")
],
igpu=None,
dgpu=device_probe.AMD(vendor_id=4098, device_id=26808, class_code=196608, name="GFX0", model="ATI Radeon HD 5770", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
storage=[
device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
],
wifi=device_probe.Broadcom(
vendor_id=5348, device_id=17192, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)"
),
cpu=device_probe.CPU(
name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
),
oclp_version=None,
opencore_version=None,
)
MacPro31_Modern_AMD = device_probe.Computer(
# Upgraded Model, Polaris GPU and BCM94360CD
real_model="MacPro3,1",
real_board_id="Mac-F42C88C8",
reported_model="MacPro3,1",
reported_board_id="Mac-F42C88C8",
gpus=[
device_probe.AMD(vendor_id=4098, device_id=26591, class_code=196608, name="GFX0", model="Radeon RX 470/570", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")
],
igpu=None,
dgpu=device_probe.AMD(vendor_id=4098, device_id=26591, class_code=196608, name="GFX0", model="Radeon RX 470/570", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
storage=[
device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
],
wifi=device_probe.Broadcom(
vendor_id=5348, device_id=17312, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)"
),
cpu=device_probe.CPU(
name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
),
oclp_version=None,
opencore_version=None,
)
MacPro31_Modern_Kepler = device_probe.Computer(
# Upgraded Model, Kepler GPU and BCM94360CD
real_model="MacPro3,1",
real_board_id="Mac-F42C88C8",
reported_model="MacPro3,1",
reported_board_id="Mac-F42C88C8",
gpus=[device_probe.NVIDIA(vendor_id=4318, device_id=4737, class_code=196608, name="GFX0", model="NVIDIA GeForce GT 710", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")],
igpu=None,
dgpu=device_probe.NVIDIA(vendor_id=4318, device_id=4737, class_code=196608, name="GFX0", model="NVIDIA GeForce GT 710", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
storage=[
device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
],
wifi=device_probe.Broadcom(
vendor_id=5348, device_id=17312, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)"
),
cpu=device_probe.CPU(
name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
),
oclp_version=None,
opencore_version=None,
)
MacPro41_Upgrade = device_probe.Computer(
# Upgraded model with AMD HD7950, Atheros PCIe card
real_model="MacPro4,1",
real_board_id="Mac-F221BEC8",
reported_model="MacPro4,1",
reported_board_id="Mac-F221BEC8",
gpus=[device_probe.AMD(vendor_id=4098, device_id=26522, class_code=196608, name="PXS1", model="AMD Radeon HD 7950", pci_path="PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)")],
igpu=None,
dgpu=None,
storage=[device_probe.SATAController(vendor_id=32902, device_id=14882, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")],
wifi=device_probe.Atheros(vendor_id=5772, device_id=48, class_code=163840, name="PXS4", model=None, pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x4,0x0)/Pci(0x0,0x0)"),
cpu=device_probe.CPU(
name="Intel(R) Xeon(R) CPU W3520 @ 2.67GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "POPCNT"]
),
oclp_version=None,
opencore_version=None
)
MacPro41_Modern_AMD = device_probe.Computer(
# Upgraded model with AMD RX470, BCM94360CD, Intel 660p
# Booted through OpenCore
real_model="MacPro4,1",
real_board_id="Mac-F221BEC8",
reported_model="MacPro4,1",
reported_board_id="Mac-27AD2F918AE68F61",
gpus=[device_probe.AMD(vendor_id=4098, device_id=26591, class_code=196608, name="GFX0", model="Radeon RX 470/570", pci_path="PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)")],
igpu=None,
dgpu=device_probe.AMD(vendor_id=4098, device_id=26591, class_code=196608, name="GFX0", model="Radeon RX 470/570", pci_path="PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)"),
storage=[
device_probe.SATAController(vendor_id=32902, device_id=14882, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)"),
device_probe.NVMeController(vendor_id=32902, device_id=61864, class_code=67586, name="PXS3", model=None, pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)", aspm=2)
],
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17312, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x4,0x0)/Pci(0x0,0x0)"),
cpu=device_probe.CPU(
name="Intel(R) Xeon(R) CPU W3520 @ 2.67GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "POPCNT"]
),
oclp_version="0.2.5",
opencore_version="REL-071-2021-07-02"
)
MacPro41_51__Flashed_Modern_AMD = device_probe.Computer(
# 4,1 flashed to 5,1, RX5700XT, BCM94360CD, WD SN750 NVMe
real_model="MacPro5,1",
real_board_id="Mac-F221BEC8",
reported_model="MacPro5,1",
reported_board_id="Mac-F221BEC8",
gpus=[device_probe.AMD(vendor_id=4098, device_id=29471, class_code=196608, name="GFX0", model="AMD Radeon RX 5700 XT", pci_path="PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)")],
igpu=None,
dgpu=device_probe.AMD(vendor_id=4098, device_id=29471, class_code=196608, name="GFX0", model="AMD Radeon RX 5700 XT", pci_path="PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)"),
storage=[
device_probe.SATAController(vendor_id=32902, device_id=14882, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)"),
device_probe.NVMeController(vendor_id=5559, device_id=20482, class_code=67586, name="PXS3", model=None, pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)", aspm=2)
],
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17312, class_code=163840, name="PXS4", model=None, pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x4,0x0)/Pci(0x0,0x0)"),
cpu=device_probe.CPU(
name="Intel(R) Xeon(R) CPU X5670 @ 2.93GHz",
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTES64", "MON", "DSCPL", "VMX", "SMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "POPCNT", "AES", "PCID"]
),
oclp_version="0.2.5",
opencore_version="REL-071-2021-07-02"
)

395
data/model_array.py Normal file
View File

@@ -0,0 +1,395 @@
# Lists all models and required patches
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
SupportedSMBIOS = [
# MacBook
"MacBook4,1",
"MacBook5,1",
"MacBook5,2",
"MacBook6,1",
"MacBook7,1",
"MacBook8,1",
# MacBook Air
"MacBookAir2,1",
"MacBookAir3,1",
"MacBookAir3,2",
"MacBookAir4,1",
"MacBookAir4,2",
"MacBookAir5,1",
"MacBookAir5,2",
"MacBookAir6,1",
"MacBookAir6,2",
# MacBook Pro
"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",
"MacBookPro11,1",
"MacBookPro11,2",
"MacBookPro11,3",
# Mac Mini
"Macmini3,1",
"Macmini4,1",
"Macmini5,1",
"Macmini5,2",
"Macmini5,3",
"Macmini6,1",
"Macmini6,2",
# iMac
"iMac7,1",
"iMac8,1",
"iMac9,1",
"iMac10,1",
"iMac11,1",
"iMac11,2",
"iMac11,3",
"iMac12,1",
"iMac12,2",
"iMac13,1",
"iMac13,2",
"iMac13,3",
"iMac14,1",
"iMac14,2",
"iMac14,3",
"iMac14,4",
"iMac15,1",
# Mac Pro
"MacPro3,1",
"MacPro4,1",
"MacPro5,1",
# Xserve
"Xserve2,1",
"Xserve3,1",
]
# Audio
LegacyAudio = [
"MacBook4,1",
"MacBook5,1",
"MacBook5,2",
"MacBook6,1",
"MacBook7,1",
"MacBookAir2,1",
"MacBookAir3,1",
"MacBookAir3,2",
"MacBookAir4,1",
"MacBookAir4,2",
"MacBookPro4,1",
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro5,4",
"MacBookPro5,5",
"MacBookPro6,1",
"MacBookPro6,2",
"MacBookPro7,1",
"MacBookPro8,1",
"MacBookPro8,2",
"MacBookPro8,3",
"Macmini3,1",
"Macmini4,1",
"Macmini5,1",
"Macmini5,2",
"Macmini5,3",
# "iMac7,1",
# "iMac8,1",
"iMac9,1",
"iMac10,1",
"iMac11,1",
"iMac11,2",
"iMac11,3",
"iMac12,1",
"iMac12,2",
"MacPro3,1",
"Dortania1,1",
]
# GPU
ModernGPU = [
"MacBookAir5,1", # Intel 4000
"MacBookAir5,2", # Intel 4000
"MacBookPro9,1", # Intel 4000 + Nvidia 650M
"MacBookPro9,2", # Intel 4000
"MacBookPro10,1", # Intel 4000 + Nvidia 650M
"MacBookPro10,2", # Intel 4000
"MacBookPro11,3", # Intel 5000 + Nvidia Kepler
"Macmini6,1", # Intel 4000
"Macmini6,2", # Intel 4000
"iMac13,1", # Intel 4000
"iMac13,2", # Intel 4000 + Nvidia Kepler
"iMac13,3", # Intel 4000
"iMac14,1", # Intel 5000 + Nvidia Kepler
"iMac14,2", # Intel 5000 + Nvidia Kepler
"iMac14,3", # Intel 5000 + Nvidia Kepler
]
LegacyGPU = [
"MacBook4,1", # GMA X3100
"MacBook5,1", # Nvidia 9000
"MacBook5,2", # Nvidia 9000
"MacBook6,1", # Nvidia 9000
"MacBook7,1", # Nvidia 300
"MacBookAir2,1", # Nvidia 9000
"MacBookAir3,1", # Nvidia 300
"MacBookAir3,2", # Nvidia 300
"MacBookAir4,1", # Intel 3000
"MacBookAir4,2", # Intel 3000
"MacBookPro4,1", # Nvidia 8000
"MacBookPro5,1", # Nvidia 9000
"MacBookPro5,2", # Nvidia 9000
"MacBookPro5,3", # Nvidia 9000
"MacBookPro5,4", # Nvidia 9000
"MacBookPro5,5", # Nvidia 9000
"MacBookPro6,1", # Intel 100 + Nvidia 300
"MacBookPro6,2", # Intel 100 + Nvidia 300
"MacBookPro7,1", # Nvidia 300
"MacBookPro8,1", # Intel 3000
"MacBookPro8,2", # Intel 3000 + AMD 6000
"MacBookPro8,3", # Intel 3000 + AMD 6000
"Macmini3,1", # Nvidia 9000
"Macmini4,1", # Nvidia 300
"Macmini5,1", # Intel 3000
"Macmini5,2", # AMD 6000
"Macmini5,3", # Intel 3000
"iMac7,1", # AMD 2000
"iMac8,1", # Nvidia and AMD 2400
"iMac9,1", # Nvidia 9000
"iMac10,1", # Nvidia 9000 and AMD 4000
"iMac11,1", # AMD 4000
"iMac11,2", # AMD 4000 and 5000
"iMac11,3", # AMD 5000
"iMac12,1", # AMD 6000
"iMac12,2", # AMD 6000
"Dortania1,1", # RTX 3080
]
LegacyGPUNvidia = [
"MacBook5,1", # Nvidia 9000
"MacBook5,2", # Nvidia 9000
"MacBook6,1", # Nvidia 9000
"MacBook7,1", # Nvidia 300
"MacBookAir2,1", # Nvidia 9000
"MacBookAir3,1", # Nvidia 300
"MacBookAir3,2", # Nvidia 300
"MacBookPro4,1", # Nvidia 8000
"MacBookPro5,1", # Nvidia 9000
"MacBookPro5,2", # Nvidia 9000
"MacBookPro5,3", # Nvidia 9000
"MacBookPro5,4", # Nvidia 9000
"MacBookPro5,5", # Nvidia 9000
"MacBookPro6,1", # Intel 100 + Nvidia 300
"MacBookPro6,2", # Intel 100 + Nvidia 300
"MacBookPro7,1", # Nvidia 300
"Macmini3,1", # Nvidia 9000
"Macmini4,1", # Nvidia 300
"iMac9,1", # Nvidia 9000
# "iMac10,1", # Nvidia 9000 and AMD 4000
]
LegacyGPUAMD = [
"MacBookPro8,2", # Intel 3000 + AMD 6000
"MacBookPro8,3", # Intel 3000 + AMD 6000
"Macmini5,2", # AMD 6000
"iMac7,1", # AMD 2000
# "iMac8,1", # Nvidia and AMD 2000
# "iMac10,1", # Nvidia 9000 and AMD 4000
"iMac11,1", # AMD 4000
"iMac11,2", # AMD 4000 and 5000
"iMac11,3", # AMD 5000
"iMac12,1", # AMD 6000
"iMac12,2", # AMD 6000
]
LegacyGPUAMDIntelGen2 = [
"MacBookPro8,2", # Intel 3000 + AMD 6000
"MacBookPro8,3", # Intel 3000 + AMD 6000
"Macmini5,2", # AMD 6000
"iMac12,1", # AMD 6000
"iMac12,2", # AMD 6000
]
LegacyGPUIntelGen1 = [
"MacBookPro6,1", # Intel 100 + Nvidia 300
"MacBookPro6,2", # Intel 100 + Nvidia 300
]
LegacyGPUIntelGen2 = [
"MacBookAir4,1", # Intel 3000
"MacBookAir4,2", # Intel 3000
"MacBookPro8,1", # Intel 3000
"MacBookPro8,2", # Intel 3000 + AMD 6000
"MacBookPro8,3", # Intel 3000 + AMD 6000
"Macmini5,1", # Intel 3000
"Macmini5,3", # Intel 3000
]
LegacyBrightness = [
"MacBook5,2",
"iMac7,1",
"iMac8,1",
"iMac9,1",
]
NVMePatch = ["MacPro3,1", "MacPro4,1", "Xserve3,1", "Dortania1,1"]
DualGPUPatch = [
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro6,1",
"MacBookPro6,2",
"MacBookPro8,2",
"MacBookPro8,3",
"Macmini5,2",
"iMac12,1",
"iMac12,2",
"iMac13,1",
"iMac13,2",
"iMac14,2",
"iMac14,3",
"Dortania1,1",
]
DualGPUPatchRetina = [
"MacBookPro10,1",
"MacBookPro11,3",
]
IntelNvidiaDRM = [
"iMac13,1",
"iMac13,2",
"iMac14,2",
"iMac14,3",
]
IDEPatch = ["MacBook4,1", "MacBookPro4,1", "iMac7,1", "iMac8,1", "MacPro3,1", "Xserve2,1", "Dortania1,1"]
# Mac Pro and Xserve
MacPro = ["MacPro3,1", "MacPro4,1", "MacPro5,1", "Xserve2,1", "Xserve3,1", "Dortania1,1"]
SATAPatch = [
"MacBook4,1",
"MacBook5,1",
"MacBook5,2",
"MacBook6,1",
"MacBook7,1",
"MacBookAir2,1",
"MacBookAir3,1",
"MacBookAir3,2",
"MacBookAir4,1",
"MacBookAir4,2",
"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",
"Macmini3,1",
"Macmini4,1",
"Macmini5,1",
"Macmini5,2",
"Macmini5,3",
"iMac7,1",
"iMac8,1",
"iMac9,1",
"iMac10,1",
"iMac11,1",
"iMac11,2",
"iMac11,3",
"iMac12,1",
"iMac12,2",
"MacPro3,1",
"MacPro4,1",
"MacPro5,1",
"Xserve2,1",
"Xserve3,1",
"Dortania1,1",
]
NoAGPMSupport = ["MacBook4,1", "MacBookPro4,1", "iMac7,1", "iMac8,1", "MacPro3,1", "Xserve2,1", "Dortania1,1"]
AGDPSupport = [
"MacBookPro9,1",
"MacBookPro10,1",
"iMac13,1",
"iMac13,2",
"iMac14,1",
"iMac14,2",
"iMac14,3",
"iMac14,4",
"iMac15,1",
# TODO: Uncomment when dropped from macOS
# "iMac17,1",
# "iMac18,2",
# "iMac18,3",
# "iMac19,1",
# "iMac19,2",
# "iMac20,1",
# "iMac20,2",
# "iMacPro1,1",
# "MacPro6,1",
]
Missing_USB_Map = [
"MacBook4,1",
"MacBook5,1",
"MacBook5,2",
"MacBook6,1",
"MacBook7,1",
"MacBookAir2,1",
"MacBookAir3,1",
"MacBookAir3,2",
"MacBookAir4,1",
"MacBookAir4,2",
"MacBookPro4,1",
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro5,4",
"MacBookPro5,5",
"MacBookPro6,1",
"MacBookPro6,2",
"MacBookPro7,1",
"MacBookPro8,1",
"MacBookPro8,2",
"MacBookPro8,3",
"Macmini3,1",
"Macmini4,1",
"Macmini5,1",
"Macmini5,2",
"Macmini5,3",
"iMac7,1",
"iMac8,1",
"iMac9,1",
"iMac10,1",
"iMac11,1",
"iMac11,2",
"iMac11,3",
"iMac12,1",
"iMac12,2",
"MacPro3,1",
"MacPro4,1",
"Xserve2,1",
"Xserve3,1",
]

20
data/os_data.py Normal file
View File

@@ -0,0 +1,20 @@
import enum
class os_data(enum.IntEnum):
# OS Versions, Based off Major Kernel Version
tiger = 8
leopard = 9
snow_leopard = 10
lion = 11
mountain_lion = 12
mavericks = 13
yosemite = 14
el_capitan = 15
sierra = 16
high_sierra = 17
mojave = 18
catalina = 19
big_sur = 20
monterey = 21
max_os = 99

1033
data/pci_data.py Normal file

File diff suppressed because it is too large Load Diff

38
data/sip_data.py Normal file
View File

@@ -0,0 +1,38 @@
class system_integrity_protection:
csr_values = {
# Source: macOS 11.4 (XNU's csr.h)
# https://opensource.apple.com/source/xnu/xnu-7195.121.3/bsd/sys/csr.h.auto.html
"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 task_for_pid() - 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_DESTRUCTIVE_DTRACE": False, # 0x20 - Allow destructive DTrace - Deprecated # 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 custom DeviceTree (iOS) - Introduced in El Capitan # noqa: E241
"CSR_ALLOW_ANY_RECOVERY_OS": False, # 0x100 - Skip BaseSystem Verification - Introduced in Sierra # noqa: E241
"CSR_ALLOW_UNAPPROVED_KEXTS": False, # 0x200 - Allow Unnotarized 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", # 0x1
"CSR_ALLOW_UNRESTRICTED_FS", # 0x2
"CSR_ALLOW_UNAPPROVED_KEXTS", # 0x200
]
root_patch_sip_big_sur = [
# Variables required to root patch in Big Sur and Monterey
"CSR_ALLOW_UNTRUSTED_KEXTS", # 0x1
"CSR_ALLOW_UNRESTRICTED_FS", # 0x2 - Required to mount and edit root volume, as well as load modded platform binaries
"CSR_ALLOW_UNAPPROVED_KEXTS", # 0x200
"CSR_ALLOW_UNAUTHENTICATED_ROOT", # 0x800 - Required to avoid KC mismatch kernel panic
]
# CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE (introduced with Mojave):
# This bit is quite strange and was originally assumed to be required for modded platform binaries
# However after extensive testing, this doesn't seem true. In addition, this bit is never flipped via
# 'csrutil disable'. Usage within the kernel is not present.

2271
data/smbios_data.py Normal file

File diff suppressed because it is too large Load Diff

287
data/sys_patch_data.py Normal file
View File

@@ -0,0 +1,287 @@
# Lists Root patches used by sys_patch.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",
]
AddNvidiaTeslaAccel12 = [
"NVDAStartup.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",
"IOAcceleratorFamily2.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",
]
AddIntelGen2AccelStock = [
"AppleIntelSNBGraphicsFB-Clean.kext",
]
AddIntelGen2AccelPatched = [
"AppleIntelSNBGraphicsFB.kext",
]
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"]
DeleteDemux = [
"AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext",
"AppleGraphicsControl.kext/Contents/PlugIns/AppleMuxControl.kext",
"AppleBacklight.kext",
]
AddDemux = [
"AppleMuxControl.kext",
]
AddBrightness = [
"AppleBacklight.kext",
"AppleBacklightExpert.kext",
]
AddVolumeControl = [
"AppleHDA.kext",
"IOAudioFamily.kext",
]
AddVolumeControlv2 = [
"AppleHDA.kext",
]
DeleteVolumeControl = [
"AppleVirtIO.kext",
"AppleVirtualGraphics.kext",
"AppleVirtualPlatform.kext",
"ApplePVPanic.kext",
"AppleVirtIOStorage.kext",
]
AddNvidiaAccelLegacy = [
# "GeForceGA.bundle",
"GeForceTesla.kext",
"GeForceTeslaGLDriver.bundle",
"GeForceTeslaVADriver.bundle",
"NVDANV50HalTesla.kext",
"NVDAResmanTesla.kext",
]
AddAMDAccelLegacy = [
"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",
"AMDRadeonX4000HWServices.kext",
"AMDRadeonX4000.kext",
"AMDRadeonX4000GLDriver.bundle",
"AMDShared.bundle",
"AMDSupport.kext",
"ATIRadeonX2000.kext",
"ATIRadeonX2000GA.plugin",
"ATIRadeonX2000GLDriver.bundle",
"ATIRadeonX2000VADriver.bundle",
]
AddGeneralAccelCatalina = [
"AppleGraphicsControl.kext",
"AppleGraphicsPowerManagement.kext",
"AppleMCCSControl.kext",
"IOGraphicsFamily.kext",
"IONDRVSupport.kext",
"IOSurface.kext",
]
AddGeneralAccelMojave = [
"IONDRVSupport.kext",
"AppleGraphicsControl.kext",
"AppleGraphicsPowerManagement.kext",
"AppleMCCSControl.kext",
"IOAccelerator2D.plugin",
"IOAcceleratorFamily2.kext",
"IOGraphicsFamily.kext",
]
BackupLocations = [
"System/Library/Extensions",
"System/Library/Frameworks/CoreDisplay.framework",
"System/Library/Frameworks/IOSurface.framework",
"System/Library/Frameworks/OpenGL.framework",
"System/Library/Frameworks/WebKit.framework",
"System/Library/LaunchDaemons",
"System/Library/PrivateFrameworks/DisplayServices.framework",
"System/Library/PrivateFrameworks/GPUSupport.framework",
"System/Library/PrivateFrameworks/SkyLight.framework",
"System/Library/PrivateFrameworks/IOAccelerator.framework",
"System/Library/PrivateFrameworks/AppleGVA.framework",
"System/Library/PrivateFrameworks/AppleGVACore.framework",
]

View File

@@ -93,6 +93,14 @@ module.exports = {
]
},
{
title: 'macOS Monterey',
collapsable: false,
sidebarDepth: 1,
children: [
'MONTEREY-DROP',
]
},
{
title: 'Misc',
collapsable: false,
@@ -126,7 +134,6 @@ module.exports = {
'TERMS',
'HOW',
'PATCHEXPLAIN',
'CLI',
]
},

View File

@@ -7,13 +7,34 @@
* [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)
* [Unable to switch GPUs on 2011 15" and 17" MacBook Pros](#unable-to-switch-gpus-on-2011-15-and-17-macbook-pros)
* [Erratic Colours on ATI TeraScale 2 GPUs (HD5000/HD6000)](#erratic-colours-on-ati-terascale-2-gpus-hd5000-hd6000)
* [Unable to allow Safari Extensions](#unable-to-allow-Safari-Extensions)
* [Cannot Login on 2011 15" and 17" MacBook Pros](#cannot-login-on-2011-15-and-17-macbook-pros)
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:
The below page is for users experiencing issues with their overall usage of macOS Big Sur / macOS Monterey and the Legacy Graphics Acceleration patches. Note that the following GPUs currently do not have acceleration support in Big Sur / Monterey:
* AMD/ATI TeraScale 2 - HD5/6000 series
* Intel 3rd and 4th Gen - GMA series
For those unfamiliar with what is considered a non-Metal GPU, see below chart:
::: details macOS GPU Chart
| Graphics Vendor | Architecture | Series | Supports Metal |
| :--- | :--- | :--- | :--- |
| ATI | TeraScale 1 | HD2000 - HD4000 | <span style="color:red">No</span> |
| ^^ | TeraScale 2 | HD5000 - HD6000 | ^^ |
| AMD | GCN (and newer) | HD7000+ | <span style="color:green">Yes</span> |
| Nvidia | Tesla | 8000GT - GT300 | <span style="color:red">No</span> |
| ^^ | Fermi | GT400 - GT500 | ^^ |
| ^^ | Kepler | GT600 - GT700 | <span style="color:green">Yes</span> |
| Intel | GMA | GMA900 - GMA3000 | <span style="color:red">No</span> |
| ^^ | Iron Lake | HD series | ^^ |
| ^^ | Sandy Bridge | HD3000 | ^^ |
| ^^ | Ivy Bridge (and newer) | HD4000 | <span style="color:green">Yes</span> |
:::
## 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.
@@ -30,8 +51,35 @@ Currently Zoom relies partially on Metal and so needs a small binary patch. Dosd
## Unable to grant special permissions to apps (ie. Camera Access to Zoom)
With version 0.2.5, this issue should be full resolved
::: details 0.2.4 and older Work-Around
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
```
For those who may experience issues with `tccplus`, you can manually patch `com.apple.TCC` to add permissions:
```sh
# get app id (Zoom.us used in example):
$ osascript -e 'id of app "zoom.us"'
# output: us.zoom.xos
$ sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceMicrophone','us.zoom.xos',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);"
$ sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceCamera','us.zoom.xos',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);"
```
:::
## Keyboard Backlight broken
Due to forcing `hidd` into spinning up with the fallback mode enabled, this can break the OS's recognition of backlight keyboards. Thankfully the drivers themselves still do operate so applications such as [LabTick](https://www.macupdate.com/app/mac/22151/lab-tick) are able to set the brightness manually.
@@ -44,22 +92,64 @@ Due to the Metal Backend, the enhanced color output of these apps seems to heavi
To work around this, simply press Tab to hover over and press spacebar to simulate a click.
Note: This work-around doesn't seem to work in macOS 11.3 and newer
## 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.
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. Additionally logging out and logging in can resolve the issue without requiring a reboot
* Note, this issue should be exclusive to TeraScale 1 GPUs (ie. HD2000-4000). TeraScale 2 GPUs should not exhibit this issue
In the event Apple removes 11.2.3 from their catalogue, we've provided a mirror below:
* [Install macOS 11.2.3 20D91](https://archive.org/details/install-mac-os-11.2.3-20-d-91)
## Unable to achieve GPU Acceleration on 2011 15" and 17" MacBook Pros
## Unable to switch GPUs 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.
Currently OpenCore Legacy Patcher, GPU switching between the iGPU and dGPU is broken. The simplest way to set a specific GPU is to disable the dGPU when you wish to remain on the more power efficient iGPU.
The best way to achieve this is to boot 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
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.
This will disable the dGPU and allow the iGPU to function in Big Sur. Note that external display outputs are directly routed to the dGPU and therefore can no longer be used. Solutions such as a [DisplayLink Adapters](https://www.displaylink.com/products/usb-adapters) can work around this limitation in theory. However, currently the proprietary DisplayLink driver refuses to function on legacy-patched systems, either resulting in a windowserver crash loop or no output at all.
## Erratic Colours on ATI TeraScale 2 GPUs (HD5000/HD6000)
Due to an odd bug with ATI's TeraScale 2 GPUs, many users will experience erratic/strobing colours once finished installing and rebooting into the accelerated patches. The issue stems from an incorrect assumption in the GPU drivers where it will enforce the Billion Colour space on your display. To fix, simply force your Display into a lower color depth such as a Million Colours.
Applications that can set color depth are:
* [SwitchResX](https://www.madrau.com)
* [ResXtreme](https://macdownload.informer.com/resxtreme/)
## Unable to allow Safari Extensions
Due to an bug on the legacy acceleration patches, users won't be able to enable Safari Extensions
This tool can be used to work-around this issue:
* [Non-Metal Safari Extensions](https://github.com/moosethegoose2213/Non-Metal-Safari-Extensions/)
## Cannot Login on 2011 15" and 17" MacBook Pros
By default OpenCore Legacy Patcher will assume MacBookPro8,2/3 have a faulty dGPU and disable acceleration. This is the safest option for most users as enabling dGPU acceleration on faulty Macs will result in failed booting.
However if your machine does not have the dGPU disabled via NVRAM, you'll expereince a login loop. To work around this is quite simple:
1. Boot macOS in Single User Mode
* Press Cmd+S in OpenCore's menu when you turn the Mac on
2. When command line prompt appears, enter the dGPU disabler argument (at the bottom)
3. Reboot and patched macOS should work normally
4. If you still want to use the dGPU, run OCLP's TUI app and enable TS2 Acceleration. Then root patch your Mac again
* `Patcher Settings -> Misc Settings -> TeraScale 2 Accel`
5. Either Reset NVRAM or set `gpu-power-prefs` to zeros to re-enable the dGPU
```sh
# Forces GMUX to use iGPU only (ie. disable dGPU)
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%01%00%00%00
# To reset, simply write zeros or NVRAM Reset your Mac
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%00%00%00%00
```

View File

@@ -7,18 +7,18 @@ With OpenCore Legacy Patcher we recommend users go through the below table to un
| 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> |
| FileVault | <span style="color:#30BCD5">Fully supported on all machines</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> |
| 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-12</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> |
| Non-Metal 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> |
| 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> |

View File

@@ -14,7 +14,6 @@ Now that you've loaded OpenCore, now select Install macOS!:
![](../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)

View File

@@ -2,7 +2,7 @@
Now that we have a macOS installer, lets now build our OpenCore configuration!
First Download the latest release:
First Download the latest release:
* [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
@@ -15,7 +15,7 @@ From here you have a couple important options:
* Build OpenCore
* Install OpenCore to USB/internal drive
* Change Model
* Patcher Settings
* 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"
@@ -31,7 +31,6 @@ Next lets run `Install OpenCore to USB/internal drive`:
| :--- | :--- |
| ![](../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
* 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)
# Once finished, head to [Booting OpenCore and macOS](./BOOT.md)

View File

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

View File

@@ -12,7 +12,6 @@ The easiest way to debug yourself is via Patcher Settings. Here there are many d
* "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
@@ -46,4 +45,4 @@ Now that you have proper logs, you can now [file issues with us](https://github.
* 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.
Additionally, please search whether the issue has been reported before. This avoids having duplicate issues.

View File

@@ -11,13 +11,13 @@ Main sections of help we'd appreciate:
* 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 something purchased the most
* 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, supported OS
* 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:
@@ -29,7 +29,7 @@ Current hardware we own:
| :--- | :--- | :--- | :--- | :--- |
| MacBook7,1 | Penryn | GT320M | Dhinak | N/A |
| MacBook7,1 | Penryn | GT320M | Mykola | N/A |
| MacBookPro8,1 | Sandy Bridge | HD 3000 | 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 |

View File

@@ -6,4 +6,4 @@ OpenCore Legacy Patcher itself is actually quite a "dumb" program, and essential
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)
![](../images/oc-explained.png)

View File

@@ -2,12 +2,10 @@
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:
@@ -32,7 +30,6 @@ To generate custom OpenCore icons, you'll need the following:
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)
@@ -42,6 +39,7 @@ 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)
@@ -54,7 +52,7 @@ 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:
* 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
@@ -102,4 +100,4 @@ To update the Mac Boot Picker icons is actually quite simple, on the root of you
![](../images/mac-icns-drive.png)
Now reboot and you'll see the new icon!
Now reboot and you'll see the new icon!

View File

@@ -12,8 +12,9 @@ This doc is centered around downloading and writing the macOS installer to a USB
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
[ ! -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:
```

View File

@@ -9,31 +9,15 @@ This patcher is made of multiple external applications from different people and
* [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)
* [FeatureUnlock](https://github.com/acidanthera/FeatureUnlock/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
* [SurPlus](https://github.com/reenigneorcim/SurPlus) - Syncretic
* [VMM Patch Set](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/4a8f61a01da72b38a4b2250386cc4b497a31a839/payloads/Config/config.plist#L1222-L1281) - parrotgeek1
* Apple Binaries - Apple Inc.
Remaining files within OpenCore Legacy Patcher are copyrighted 2020-2021 Mykola Grymalyuk & Dhinak G, under the BSD-3 Clause license:
```
Copyright (c) 2020-2021, Dhinak G
Copyright (c) 2020-2021, Mykola Grymalyuk
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
```
Remaining files within OpenCore Legacy Patcher are copyrighted 2020-2021 Mykola Grymalyuk & Dhinak G. For integration into other projects, please request written permission.

View File

@@ -20,8 +20,11 @@ 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.6 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. |
| HostOS | macOS 10.9 - macOS 12 | 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 - macOS 12 | Refers to OSes that can be patched to run with OpenCore | May support 10.4 and newer (in a potentially broken state). No support provided. |
* macOS Monterey support is currently in beta and is not recommended for everyday users.
* Recommend looking at the [macOS Monterey Support page](./MONTEREY-DROP.md) for a better idea of Monterey's current status
### MacBook
@@ -35,6 +38,7 @@ Regarding OS support, see below:
| 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 | ^^ | ^^ |
| MacBook8,1 | Mid-2015 | ^^ | <span style="color:green"> Everything is supported</span> |
### MacBook Air
@@ -48,6 +52,8 @@ Regarding OS support, see below:
| MacBookAir4,2 | ^^ | ^^ | ^^ |
| MacBookAir5,1 | Mid-2012 |^^ | <span style="color:green"> Everything is supported</span> |
| MacBookAir5,2 | ^^ | ^^ | ^^ |
| MacBookAir6,1 | Mid-2013, Early 2014 | ^^ | ^^ |
| MacBookAir6,2 | ^^ | ^^ | ^^ |
### MacBook Pro
@@ -74,6 +80,9 @@ Regarding OS support, see below:
| MacBookPro9,2 | ^^ | ^^ | ^^ |
| MacBookPro10,1 | Mid-2012, Early 2013 | ^^ | ^^ |
| MacBookPro10,2 | Late 2012, Early 2013 | ^^ | ^^ |
| MacBookPro11,1 | Late 2013, Mid-2014 | ^^ | ^^ |
| MacBookPro11,2 | ^^ | ^^ | ^^ |
| MacBookPro11,3 | ^^ | ^^ | ^^ |
### Mac mini
@@ -113,6 +122,8 @@ Regarding OS support, see below:
| iMac14,1 | Late 2013 | ^^ | ^^ |
| iMac14,2 | ^^ | ^^ | ^^ |
| iMac14,3 | ^^ | ^^ | ^^ |
| iMac14,4 | Mid-2014 | ^^ | ^^ |
| iMac15,1 | Late 2014, Mid-2015 | ^^ | [Display will output to 4k instead of 5k](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/359) |
* 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)
@@ -126,7 +137,6 @@ Regarding OS support, see below:
| 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 |

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

@@ -0,0 +1,122 @@
# 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.
## Newly dropped hardware
With Monterey, Apple continues their their somewhat ruthless march of dropping Intel hardware. This release saw the removal, and thus addition into OpenCore Legacy Patcher, of the following models:
* iMac14,4
* iMac15,1
* MacBook8,1
* MacBookAir6,1
* MacBookAir6,2
* MacBookPro11,1
* MacBookPro11,2
* MacBookPro11,3
All of these models now have support in OpenCore Legacy Patcher. Note iMac15,1 does have [an unfortunate firmware bug preventing resolutions above 4k](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/359) with OpenCore Legacy Patcher
## Previously Broken Hardware
::: details macOS 12.0 Beta 4 issue on 2012 to early 2013 machines (Resolved in 0.2.5 and newer)
Currently in macOS 12.0 Beta 4, many Ivy Bridge Macs have experienced Bluetooth issues relating to their BCM20702 chipset. Currently the exact issue is unknown however is assumed to be a bug on Apple's end. Recommend downgrading to macOS 12.0 Beta 3 till resolved:
* [12.0 Beta 3 (21A5284e) InstallAssistant (Direct)](http://swcdn.apple.com/content/downloads/02/08/071-63739-A_G5RYVW5JHT/dfz5gp3s0jm9vl7m30oewq141zkpv8edr8/InstallAssistant.pkg)
* [12.0 Beta 3 (21A5284e) InstallAssistant (archive.org)](https://archive.org/details/12.0-21a5284e-beta-3)
A temporary fix is to restart the BlueTool and bluetoothd process with each boot, note it may not work for all users:
```sh
sudo killall -9 BlueTool bluetoothd
```
:::
::: details Wireless Support Dropped (Resolved in 0.2.5 and newer)
* 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
:::
::: details Bluetooth Support Dropped (Resolved in 0.2.5 and newer)
* 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
Note: Native BRCM20702 and BRCM20703 are still fully support by OpenCore Legacy Patcher
::: 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
:::
::: details Ivy Bridge iGPU Acceleration (Resolved in 0.1.7 and newer)
* 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 can no longer be enabled due to root patching:
* Macmini6,x
* MacBookAir5,x
* MacBookPro9,x
* MacBookPro10,x
:::
::: details Non-Metal Acceleration (Resolved in 0.2.5 and newer)
* 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/)
:::

View File

@@ -19,7 +19,7 @@ Below is a run down of the main logic OpenCore Legacy Patcher uses to gain nativ
* 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
* Models: All models require when spoofing with Moderate or Advanced SMBIOS
### Booter -> Quirks
@@ -53,11 +53,11 @@ Below is a run down of the main logic OpenCore Legacy Patcher uses to gain nativ
* 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
* Models: All models require when spoofing SMBIOS
* 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)
* Models: Penryn CPUs (Core2 series)
### Kernel -> Quirks
@@ -100,11 +100,12 @@ Below is a run down of the main logic OpenCore Legacy Patcher uses to gain nativ
* 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
* Logic: Provide GOP protocol instances on top of UGA protocol instances
* Models: MacPro3,1, MacBook4,1 iMac7,1-8,1
:::
@@ -191,20 +192,17 @@ Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into m
* 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+)
* Reason: Re-add El Capitan's AppleHDA to achieve audio support
* Models: iMac7,1 and iMac8,1
:::
@@ -226,13 +224,15 @@ Note, GPU Acceleration Patches are not public yet, the below section is simply d
* GeForceGA.bundle
* GeForceTesla.kext
* Skip IOFree Panic - Mojave+
* At Offset `0x5CF9A` replace following bytes with `0xEB`
* 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
@@ -271,6 +271,8 @@ Note, GPU Acceleration Patches are not public yet, the below section is simply d
* AppleIntelHD3000GraphicsGLDriver.bundle
* AppleIntelHD3000GraphicsVADriver.bundle
* AppleIntelSNBGraphicsFB.kext
* Board ID Patch
* Replace original Board ID with updated model
* AppleIntelSNBVA.bundle
### Frameworks

View File

@@ -28,6 +28,14 @@ Here you can change different patcher settings, however the main interest is:
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
Note 2: NVRAM may need to be reset to ensure SIP is correctly re-enabled
## 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:

BIN
docs/ResXtreme.zip Normal file

Binary file not shown.

View File

@@ -18,7 +18,7 @@ For those who wish to support this patcher, please see the [Supporting the Patch
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](). Legacy MBR Based installs won't show up in OpenCore
* 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?

View File

@@ -26,7 +26,7 @@ Term | Description
**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.
**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 unmodified otherwise ~12GB updates will occur.
---
Term | Description
--- | ---

View File

@@ -2,7 +2,6 @@
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 |
@@ -17,12 +16,12 @@ To aid users in troubleshooting, we've compiled a list of users who've reported
### MacBook Air
| SMBIOS | Year | Supported | Comment |
| SMBIOS | Tested | Tester | Comment |
| :--- | :--- | :--- | :--- |
| MacBookAir2,1 | No reports | N/A | N/A |
| MacBookAir3,1 | ^^ | ^^ | ^^ |
| MacBookAir3,2 | ^^ | ^^ | ^^ |
| MacBookAir4,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 |
@@ -46,7 +45,7 @@ To aid users in troubleshooting, we've compiled a list of users who've reported
| 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 | No reports | N/A | N/A |
| 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 | ^^ |
@@ -59,7 +58,7 @@ To aid users in troubleshooting, we've compiled a list of users who've reported
| ^^ | ^^ | 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 |
| MacBookPro10,2 | ^^ | akidone | - Upgraded BCM94360CSAX <br/>- Patcher version 0.3.0 |
### Mac mini
@@ -106,7 +105,8 @@ To aid users in troubleshooting, we've compiled a list of users who've reported
| SMBIOS | Tested | Tester | Comment |
| :--- | :--- | :--- | :--- |
| MacPro3,1 | <span style="color:#30BCD5"> YES </span> | christiann | - Upgraded with RX 560 and BCM94322<br/>- Stock Bluetooth card removed<br/>- Patcher version 0.0.21 |
| 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 |

View File

@@ -10,6 +10,7 @@ Here are some common errors users may experience while using this patcher:
* [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)
* [Cannot connect Wi-Fi on Monterey with legacy cards](#cannot-connect-Wi-Fi-on-Monterey-with-legacy-cards)
## Stuck on `This version of Mac OS X is not supported on this platform`
@@ -59,7 +60,6 @@ By default, the patcher will try to hide extra boot options such as recovery fro
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
@@ -68,4 +68,10 @@ With OCLP v0.0.22, we've added support for brightness control on many models. Ho
To work-around, we recommend user try out the below app:
* [Brightness Slider](https://actproductions.net/free-apps/brightness-slider/)
* [Brightness Slider](https://actproductions.net/free-apps/brightness-slider/)
## Cannot connect Wi-Fi on Monterey with legacy cards
With OCLP v0.2.5, we've added support for legacy Wi-Fi on Monterey. However some users may have noticed that they can't connect to wireless networks.
To work-around, we recommend users to manually connect using the "other" option on the Wi-Fi menu bar or manually adding the network on the "Network" preference pane.

View File

@@ -3,10 +3,13 @@
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.
* 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.

View File

@@ -1,4 +1,4 @@
# Updating OpenCore and Co.
# 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.
@@ -19,4 +19,4 @@ 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!
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!

View File

@@ -75,7 +75,7 @@ Once done, lets reboot into OpenCore's Menu and you'll see a new Windows' entry:
![](../images/oc-windows.png)
From there, install Windows as normal and you'll get a new BootCamp entry in OpenCore's picker when done!
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

10
merge_gui.py Normal file
View File

@@ -0,0 +1,10 @@
# Updates build version in OCLP-GUI during CI builds
# Copyright (C) 2021 Mykola Grymalyuk
import plistlib
from pathlib import Path
from resources import constants
app_path = Path.cwd() / Path ("OpenCore Patcher.app/Contents/Info.plist")
info = plistlib.load(Path(app_path).open("rb"))
info["CFBundleShortVersionString"] = constants.Constants().patcher_version
plistlib.dump(info, Path(app_path).open("wb"), sort_keys=True)

BIN
payloads/ACPI/SSDT-DGPU.aml Normal file

Binary file not shown.

View File

@@ -0,0 +1,103 @@
/* Requests power off of dGPU in MacBookPro8,2/3 (TS2 hardware failure)
* Main goal is to ensure power draw from the dGPU is reduced as
* much as possible to simulate a hardware demux without actual
* hardware modifications.
*
* Notes:
* - SSDT must be used in conjuction with '_INI' to 'XINI' patch
* to reroute PCI0 initialization.
*
* - AMD drivers in macOS may still attempt to attach and kernel
* panic. Disable the dGPU with class-code/device-id spoof or
* with '-wegnoegpu'.
*
* - dGPU will reactivate with sleep-wake, additional process
* is needed to disable the dGPU.
* - ie. AMDGPUWakeHandler.kext for macOS
*
* Ref:
* - https://www.tonymacx86.com/threads/help-macbook-pro-disable-radeon-gpu-via-dsdt.164458/
* - https://github.com/blackgate/AMDGPUWakeHandler
* - https://help.ubuntu.com/community/MacBookPro8-2/Raring
*/
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "dGPU_OFF", 0x00001000)
{
External (_SB_.PCI0, DeviceObj)
External (OSYS)
Scope (_SB.PCI0)
{
OperationRegion (IOGP, SystemIO, 0x0700, 0x51)
Field (IOGP, ByteAcc, NoLock, Preserve)
{
Offset (0x10),
P710, 8,
Offset (0x28),
P728, 8,
Offset (0x40),
P740, 8,
Offset (0x50),
P750, 8
}
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
Store (0x07D0, OSYS)
If (CondRefOf (\_OSI, Local0))
{
If (_OSI ("Darwin"))
{
Store (0x2710, OSYS)
}
If (\_OSI ("Linux"))
{
Store (0x03E8, OSYS)
}
If (\_OSI ("Windows 2001"))
{
Store (0x07D1, OSYS)
}
If (\_OSI ("Windows 2001 SP1"))
{
Store (0x07D1, OSYS)
}
If (\_OSI ("Windows 2001 SP2"))
{
Store (0x07D2, OSYS)
}
If (\_OSI ("Windows 2006"))
{
Store (0x07D6, OSYS)
}
If (\_OSI ("Windows 2007"))
{
Store (0x07D7, OSYS)
}
If (\_OSI ("Windows 2008"))
{
Store (0x07D8, OSYS)
}
If (\_OSI ("Windows 2009"))
{
Store (0x07D9, OSYS)
}
}
// Disables dGPU
Store ("Requesting dGPU power off", Debug)
P728 = One // Switch select
P710 = 0x02 // Switch display
P740 = 0x02 // Switch DDC
P750 = Zero // Power down discrete graphics
}
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,56 @@
diff --git a/BrcmPatchRAM/BlueToolFixup.cpp b/BrcmPatchRAM/BlueToolFixup.cpp
index 0fa891a..18e4b74 100644
--- a/BrcmPatchRAM/BlueToolFixup.cpp
+++ b/BrcmPatchRAM/BlueToolFixup.cpp
@@ -37,8 +37,10 @@ bool BlueToolFixup::start(IOService *provider) {
}
setProperty("VersionInfo", kextVersion);
setName("bluetooth");
+ /*
uint8_t bytes[] {0x00, 0x00, 0x00, 0x00};
setProperty("transport-encoding", bytes, sizeof(bytes));
+ */
registerService();
return true;
@@ -50,7 +52,22 @@ bool BlueToolFixup::start(IOService *provider) {
static const uint8_t kSkipUpdateFilePathOriginal[] = "/etc/bluetool/SkipBluetoothAutomaticFirmwareUpdate";
static const uint8_t kSkipUpdateFilePathPatched[] = "/System/Library/CoreServices/boot.efi";
+static const uint8_t kVendorCheckOriginal[] =
+ {
+ 0x74, 0x08, // jz short 08
+ 0x81, 0xFA, // cmp edx
+ 0x12, 0x0A, 0x00, 0x00 // Vendor CSR
+ };
+
+ static const uint8_t kVendorCheckPatched[] =
+ {
+ 0xEB, 0x08, // jmp short 08
+ 0x81, 0xFA, // cmp edx
+ 0x12, 0x0A, 0x00, 0x00 // Vendor CSR
+ };
+
static const char *blueToolPath = "/usr/sbin/BlueTool";
+static const char *bluetoothdPath = "/usr/sbin/bluetoothd";
static mach_vm_address_t orig_cs_validate {};
@@ -71,9 +88,14 @@ static void patched_cs_validate_page(vnode_t vp, memory_object_t pager, memory_o
char path[PATH_MAX];
int pathlen = PATH_MAX;
FunctionCast(patched_cs_validate_page, orig_cs_validate)(vp, pager, page_offset, data, validated_p, tainted_p, nx_p);
- if (vn_getpath(vp, path, &pathlen) == 0 && UNLIKELY(strcmp(path, blueToolPath) == 0)) {
- searchAndPatch(data, PAGE_SIZE, path, kSkipUpdateFilePathOriginal, kSkipUpdateFilePathPatched);
- }
+ if (vn_getpath(vp, path, &pathlen) == 0) {
+ if (UNLIKELY(strcmp(path, blueToolPath) == 0)) {
+ searchAndPatch(data, PAGE_SIZE, path, kSkipUpdateFilePathOriginal, kSkipUpdateFilePathPatched);
+ }
+ if (UNLIKELY(strcmp(path, bluetoothdPath) == 0)) {
+ searchAndPatch(data, PAGE_SIZE, path, kVendorCheckOriginal, kVendorCheckPatched);
+ }
+ }
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
Based off RestrictEvents.kext, stripped binary to block Apple's EFICheck driver

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,21 +1,12 @@
From 772e02b375b5b2186342965f3089d9d1bca053bf Mon Sep 17 00:00:00 2001
From: Dhinak G <17605561+dhinakg@users.noreply.github.com>
Date: Tue, 23 Mar 2021 17:21:48 -0400
Subject: [PATCH] Disable displaypolicyd
---
RestrictEvents/RestrictEvents.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/RestrictEvents/RestrictEvents.cpp b/RestrictEvents/RestrictEvents.cpp
index 69b6af8..029417c 100644
index 27562f0..66365a3 100644
--- a/RestrictEvents/RestrictEvents.cpp
+++ b/RestrictEvents/RestrictEvents.cpp
@@ -35,6 +35,7 @@ struct RestrictEventsPolicy {
@@ -61,6 +61,7 @@ struct RestrictEventsPolicy {
static const char *procBlacklist[] {
"/System/Library/CoreServices/ExpansionSlotNotification",
"/System/Library/CoreServices/MemorySlotNotification",
"/usr/libexec/firmwarecheckers/eficheck/eficheck",
+ "/usr/libexec/displaypolicyd"
+ "/usr/libexec/displaypolicyd",
};
char pathbuf[MAXPATHLEN];
char pathbuf[MAXPATHLEN];

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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