Compare commits
833 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99442b1d54 | ||
|
|
f670a821a3 | ||
|
|
71424e4c6d | ||
|
|
77bf82d65a | ||
|
|
dc6ad32e2c | ||
|
|
020a451e9f | ||
|
|
ca859c7ad7 | ||
|
|
93aa8b09c4 | ||
|
|
c20587ced4 | ||
|
|
f5594afb8d | ||
|
|
858f3b0162 | ||
|
|
4aec8898d4 | ||
|
|
69db9ca74b | ||
|
|
a33458fa32 | ||
|
|
8e95710975 | ||
|
|
63118d7d43 | ||
|
|
a7a3643b12 | ||
|
|
78355c2c5a | ||
|
|
feb108b1eb | ||
|
|
4f2e302d0a | ||
|
|
d9292c513a | ||
|
|
7d7a9418d4 | ||
|
|
2ddb679554 | ||
|
|
60fab3986e | ||
|
|
c23546378f | ||
|
|
0cddccee47 | ||
|
|
ccb2c21dcb | ||
|
|
42ce85f622 | ||
|
|
e9ef25f31e | ||
|
|
c3c9d8fef0 | ||
|
|
2f1895ed20 | ||
|
|
806417842f | ||
|
|
82d5824d70 | ||
|
|
64fe3be296 | ||
|
|
82b4d20b17 | ||
|
|
07b048fb65 | ||
|
|
17a4840cfe | ||
|
|
6bd88f1ad8 | ||
|
|
121c8d7741 | ||
|
|
b76bb7fe20 | ||
|
|
4538341966 | ||
|
|
396590c2b2 | ||
|
|
b8e6b86552 | ||
|
|
ae983db5f0 | ||
|
|
b6d89f7310 | ||
|
|
3a6d801d80 | ||
|
|
ea4f4c4173 | ||
|
|
0c7384be94 | ||
|
|
8b4332e0c0 | ||
|
|
7a859a8210 | ||
|
|
886549f31f | ||
|
|
53da1ee91f | ||
|
|
499987e8e0 | ||
|
|
b39f2a1d5d | ||
|
|
0c5017a16a | ||
|
|
61521e2fb1 | ||
|
|
79ba047d14 | ||
|
|
b739b311a8 | ||
|
|
b39ff91251 | ||
|
|
ca35f11ad4 | ||
|
|
49ee43f6ed | ||
|
|
1e6eec3bda | ||
|
|
01fa2c349f | ||
|
|
974ce05088 | ||
|
|
7169687441 | ||
|
|
9f4fb692d7 | ||
|
|
5e5139855b | ||
|
|
f2a6d8c181 | ||
|
|
62291089fc | ||
|
|
837bb692bf | ||
|
|
738d030e3a | ||
|
|
776be570fa | ||
|
|
35031d8fa2 | ||
|
|
c23e391990 | ||
|
|
8489823f8b | ||
|
|
b4bfd827ce | ||
|
|
e7defde42f | ||
|
|
3940b5ee3f | ||
|
|
3cd270593f | ||
|
|
48bf233250 | ||
|
|
4e1254c31e | ||
|
|
754a6c2a87 | ||
|
|
bd556a8114 | ||
|
|
218529afe2 | ||
|
|
93a2eeb8b5 | ||
|
|
3dd680c9c8 | ||
|
|
810da555c6 | ||
|
|
a208216316 | ||
|
|
d625078090 | ||
|
|
5324df9470 | ||
|
|
f307b4ab69 | ||
|
|
587a7d1681 | ||
|
|
3340f10fbd | ||
|
|
4b5f1b4016 | ||
|
|
f6e55ea514 | ||
|
|
cf1ea62b1f | ||
|
|
be823630f7 | ||
|
|
fba6982f2b | ||
|
|
7b4f7024c4 | ||
|
|
8e02cc4d83 | ||
|
|
a7be418a89 | ||
|
|
56585691bf | ||
|
|
759cd6518c | ||
|
|
2f2aaa1cc2 | ||
|
|
0bb7ce9cee | ||
|
|
36a31f9116 | ||
|
|
9f3a4584b4 | ||
|
|
0e3d4244e7 | ||
|
|
6537119632 | ||
|
|
bc1cdb16f5 | ||
|
|
fecc8a7245 | ||
|
|
3faaa35f9c | ||
|
|
774b0cc52f | ||
|
|
d06be7da13 | ||
|
|
6d49b95d02 | ||
|
|
64daaf3e4b | ||
|
|
cf8c8f72a4 | ||
|
|
f214e1d89c | ||
|
|
8c48164e1f | ||
|
|
6f48f38814 | ||
|
|
d00d20a146 | ||
|
|
4fc0f2b06f | ||
|
|
c31cbee99f | ||
|
|
39bc49639d | ||
|
|
e16e8540cf | ||
|
|
681174ac30 | ||
|
|
26bc5fa4c5 | ||
|
|
3e8f28a2db | ||
|
|
28769098fd | ||
|
|
dc15a53e85 | ||
|
|
b32cbe06ef | ||
|
|
9e61380aec | ||
|
|
45a29d2617 | ||
|
|
2973f0b6ab | ||
|
|
42c4ed17bc | ||
|
|
945ba18652 | ||
|
|
c717b7ea9c | ||
|
|
a72b2ffb23 | ||
|
|
27d2b7500a | ||
|
|
45a0824515 | ||
|
|
d7788540d9 | ||
|
|
74e523633d | ||
|
|
267c3c5c6c | ||
|
|
c5cb423eab | ||
|
|
201dae54aa | ||
|
|
5d193192ef | ||
|
|
3a9d97131d | ||
|
|
b3d604b5df | ||
|
|
391ef62b33 | ||
|
|
c839e9192d | ||
|
|
8b98be5189 | ||
|
|
fae2f0058d | ||
|
|
847c83f657 | ||
|
|
e17acc96d1 | ||
|
|
357e446987 | ||
|
|
e155613958 | ||
|
|
c573a8a335 | ||
|
|
1393db72dd | ||
|
|
ba82b41cbd | ||
|
|
97a9853526 | ||
|
|
f1d67923c8 | ||
|
|
0e526556e5 | ||
|
|
9125b170ce | ||
|
|
cc5ed2396c | ||
|
|
165526fbe2 | ||
|
|
c366680ad0 | ||
|
|
1237dc55e0 | ||
|
|
ca61262228 | ||
|
|
2b4fdbb388 | ||
|
|
23927a4e6a | ||
|
|
d5330555fc | ||
|
|
8b1a46d8c4 | ||
|
|
84bf2a9e18 | ||
|
|
4d244a5eee | ||
|
|
31ff4bbd0d | ||
|
|
cf4b2b2ad0 | ||
|
|
aa5e39f48a | ||
|
|
d1bd915ede | ||
|
|
4d8aa1a541 | ||
|
|
e2aa6b4b48 | ||
|
|
3a9479a1d6 | ||
|
|
39758fec20 | ||
|
|
2473daee2b | ||
|
|
a604325c5d | ||
|
|
c74706127d | ||
|
|
bea1e92a3b | ||
|
|
e0af3206cf | ||
|
|
7fc5de8e27 | ||
|
|
504fb3a617 | ||
|
|
b3ac3a6843 | ||
|
|
e25b23f7a3 | ||
|
|
cdcbf30f63 | ||
|
|
c66f3cd0ca | ||
|
|
df958a2b1c | ||
|
|
f7f890d37e | ||
|
|
1027e37a03 | ||
|
|
42892e503f | ||
|
|
ca9a0eba34 | ||
|
|
12007041ab | ||
|
|
05fd9489ae | ||
|
|
5b6da1f4e7 | ||
|
|
0a8e599877 | ||
|
|
67c88acedf | ||
|
|
3b4bb78fa2 | ||
|
|
c03b8d2231 | ||
|
|
32985b7fdd | ||
|
|
d1323a4268 | ||
|
|
16f7e24231 | ||
|
|
c822e1f2c5 | ||
|
|
e064d9a37a | ||
|
|
ddac821dfb | ||
|
|
b7a1fa302e | ||
|
|
19027fbac7 | ||
|
|
b930544128 | ||
|
|
a15261073b | ||
|
|
cd1729f74d | ||
|
|
af3abe6aa1 | ||
|
|
2ca02f5802 | ||
|
|
3e742ffaf8 | ||
|
|
79390c897d | ||
|
|
3ffe8c5142 | ||
|
|
18f9e05792 | ||
|
|
9f96fa43ec | ||
|
|
f0f9f0b56d | ||
|
|
33eef9b87f | ||
|
|
f042ddfe75 | ||
|
|
53cb55e375 | ||
|
|
d3aea7510f | ||
|
|
a8683e4e27 | ||
|
|
7bb4aea2c0 | ||
|
|
30375b869b | ||
|
|
5c207e0a2b | ||
|
|
92324ede72 | ||
|
|
158dac6ab4 | ||
|
|
dfc4a7b2fc | ||
|
|
b205f7943a | ||
|
|
1163aaa4bd | ||
|
|
3dcf20f0c2 | ||
|
|
8502ec5f78 | ||
|
|
54616ea385 | ||
|
|
d1f9170390 | ||
|
|
d4d16c3e56 | ||
|
|
751bdceafd | ||
|
|
80dcea163f | ||
|
|
c2eef22f2d | ||
|
|
299fed997d | ||
|
|
711c512258 | ||
|
|
07b9a1a2c6 | ||
|
|
c78506501f | ||
|
|
5612837492 | ||
|
|
80644bfbd4 | ||
|
|
b924e427e2 | ||
|
|
9408cd3ea5 | ||
|
|
0cbd1422fe | ||
|
|
461f9ddb9b | ||
|
|
b2e5037c2e | ||
|
|
be3e7da342 | ||
|
|
b4830dfd0b | ||
|
|
b8bdab3576 | ||
|
|
a56f3af99c | ||
|
|
0e969ee6cd | ||
|
|
0bd3ce595d | ||
|
|
ea05912b6b | ||
|
|
a756058006 | ||
|
|
bd3985ce6c | ||
|
|
1e80691c67 | ||
|
|
023fec03aa | ||
|
|
64b9e7ada6 | ||
|
|
efda41fb3a | ||
|
|
77fccad046 | ||
|
|
cc914aadc1 | ||
|
|
5ea1b5075b | ||
|
|
41295e4cb2 | ||
|
|
7d5eea977d | ||
|
|
65fc232a25 | ||
|
|
43a708d3ae | ||
|
|
c8bb3a3e93 | ||
|
|
7e236f06e5 | ||
|
|
cc1b8781ab | ||
|
|
6553562e53 | ||
|
|
31812f0485 | ||
|
|
7ecf9ff151 | ||
|
|
54b4c27d4a | ||
|
|
7ed691993c | ||
|
|
14de472b6a | ||
|
|
fd67032afe | ||
|
|
cb808dc7ca | ||
|
|
3a65f005fe | ||
|
|
a0978dfd20 | ||
|
|
e701b5b851 | ||
|
|
4cc2dab964 | ||
|
|
ca44ba775a | ||
|
|
b2bb32f988 | ||
|
|
0956ad0d3d | ||
|
|
bf7b63c1be | ||
|
|
c34781bb3c | ||
|
|
e962f2bb8f | ||
|
|
a381f1d3bb | ||
|
|
4b6125d583 | ||
|
|
dfa396f385 | ||
|
|
8f5ac32bb5 | ||
|
|
3fc7424086 | ||
|
|
c37e035b6d | ||
|
|
0b21472ccb | ||
|
|
f66f16441b | ||
|
|
f512b7336a | ||
|
|
e35b115b81 | ||
|
|
dfe64e95b2 | ||
|
|
e626c79c81 | ||
|
|
98b08432fa | ||
|
|
7a7f1ce090 | ||
|
|
78f191dd5b | ||
|
|
e9e72d9641 | ||
|
|
a2500e50c2 | ||
|
|
6d917fbc29 | ||
|
|
c9cb6db0e4 | ||
|
|
0d72f46cb4 | ||
|
|
3884ca77d5 | ||
|
|
66a2d67ed9 | ||
|
|
5ed5f3aa15 | ||
|
|
86af9e96f4 | ||
|
|
5b97685274 | ||
|
|
3c929edd4b | ||
|
|
dfec8f2d72 | ||
|
|
5ff1110e90 | ||
|
|
9b5d25b2be | ||
|
|
0e25f2f3cf | ||
|
|
ee0b04f05b | ||
|
|
3c08127013 | ||
|
|
a17ca2c330 | ||
|
|
0cb2c84968 | ||
|
|
aa8643f247 | ||
|
|
554925d311 | ||
|
|
fbd7150c00 | ||
|
|
8233e15e42 | ||
|
|
7c21628ea2 | ||
|
|
118853cd46 | ||
|
|
7e29758fea | ||
|
|
a8f56c1ec8 | ||
|
|
79cd9c76f8 | ||
|
|
fc7656bb25 | ||
|
|
e3ec7f7137 | ||
|
|
1f2ee627f4 | ||
|
|
91f5d9778c | ||
|
|
fbcf958ead | ||
|
|
0d402c4dba | ||
|
|
b51beb8707 | ||
|
|
90bc9d81bf | ||
|
|
5eaa1d0317 | ||
|
|
6b81af3f66 | ||
|
|
04d6aada33 | ||
|
|
acd84bc5c2 | ||
|
|
37769e052a | ||
|
|
d94ffc1472 | ||
|
|
5c9a0c74d4 | ||
|
|
6e20a51d8f | ||
|
|
e0284bffe6 | ||
|
|
2b6d318cfd | ||
|
|
faadb3f740 | ||
|
|
d6a82f08a0 | ||
|
|
3b22a593dd | ||
|
|
56501818a9 | ||
|
|
52225e15b2 | ||
|
|
f75f1aa87a | ||
|
|
e30f8be03d | ||
|
|
fd2662717c | ||
|
|
83cffeb1e5 | ||
|
|
ca734ff055 | ||
|
|
67ddb619c7 | ||
|
|
36b584dc41 | ||
|
|
bf86619e82 | ||
|
|
2d98a827ec | ||
|
|
4acf8b1a67 | ||
|
|
5298c4ecb8 | ||
|
|
be5f9114af | ||
|
|
b1df91cac3 | ||
|
|
60221edb07 | ||
|
|
779d348853 | ||
|
|
fcc0516b6a | ||
|
|
f840e30f36 | ||
|
|
24e645fb07 | ||
|
|
a519d66e90 | ||
|
|
5af6c4ac54 | ||
|
|
57eb61cb9a | ||
|
|
b2b9cc7686 | ||
|
|
5d07311892 | ||
|
|
889b5f3c71 | ||
|
|
1dc76600e7 | ||
|
|
eef336ab62 | ||
|
|
c37aa306fd | ||
|
|
48380afdd5 | ||
|
|
1486859d79 | ||
|
|
9a4085ca50 | ||
|
|
936febe2e4 | ||
|
|
3ad2c538be | ||
|
|
f705affcae | ||
|
|
2546e9167f | ||
|
|
f84828483b | ||
|
|
4bfe8b1038 | ||
|
|
89765a6c5f | ||
|
|
4c043ab6dc | ||
|
|
8efc702077 | ||
|
|
90cc87702d | ||
|
|
b27007d55c | ||
|
|
0368ab00b7 | ||
|
|
606dc03b2b | ||
|
|
1799691348 | ||
|
|
fda3a1724d | ||
|
|
b320980aef | ||
|
|
874a0557e3 | ||
|
|
8db9cab06c | ||
|
|
d73f8979eb | ||
|
|
87bdc65e6c | ||
|
|
e325f6a25b | ||
|
|
21b2f86654 | ||
|
|
afb91b8b4f | ||
|
|
2ace124880 | ||
|
|
6b92640b64 | ||
|
|
6689817872 | ||
|
|
15bcfa7b79 | ||
|
|
a5afbc6420 | ||
|
|
da32e3bfcf | ||
|
|
822464a0bf | ||
|
|
b42169f980 | ||
|
|
dd17f5da29 | ||
|
|
9f3d3453df | ||
|
|
95521e2225 | ||
|
|
924cac7577 | ||
|
|
c83e926e7d | ||
|
|
4929715830 | ||
|
|
8fc1bf9572 | ||
|
|
875e77b0d1 | ||
|
|
31bfdc755c | ||
|
|
4424209d3e | ||
|
|
75ca458747 | ||
|
|
7e08d3afc1 | ||
|
|
24a0817890 | ||
|
|
0072cd2988 | ||
|
|
5696dcd934 | ||
|
|
3ac7964fb0 | ||
|
|
dc4238fb09 | ||
|
|
d68d04fd8c | ||
|
|
08852b8f4c | ||
|
|
7463d56ffc | ||
|
|
377b0dd797 | ||
|
|
ec683f21a4 | ||
|
|
dabe66e052 | ||
|
|
91f3b94992 | ||
|
|
699ccd50c5 | ||
|
|
491b5fe078 | ||
|
|
5db6be9828 | ||
|
|
e3871d5c35 | ||
|
|
11a427ef01 | ||
|
|
5c54276a85 | ||
|
|
7f9311c175 | ||
|
|
e4682f6307 | ||
|
|
bc88ed27d1 | ||
|
|
113156c94c | ||
|
|
99879bdcfc | ||
|
|
e1cb78fa0b | ||
|
|
6109d8c92f | ||
|
|
b473d189dd | ||
|
|
3b89fc2950 | ||
|
|
707cc5c45f | ||
|
|
80e5c38ee7 | ||
|
|
1b4fd73673 | ||
|
|
aec3bf4d08 | ||
|
|
1b76b68a1b | ||
|
|
1190e169cb | ||
|
|
ca2fd695b3 | ||
|
|
9669196a07 | ||
|
|
88696c7047 | ||
|
|
8706959f65 | ||
|
|
a63d1953b4 | ||
|
|
6d129505ea | ||
|
|
f12028aa84 | ||
|
|
cf2a58e6bf | ||
|
|
6bc36c737c | ||
|
|
5f07e9ffd9 | ||
|
|
9f4d96d446 | ||
|
|
0ff6a18e83 | ||
|
|
a153b500b9 | ||
|
|
db617db1fd | ||
|
|
69e50aeb6d | ||
|
|
eaa686e045 | ||
|
|
6381910639 | ||
|
|
68d25d30b4 | ||
|
|
16a666e836 | ||
|
|
5e91ea181b | ||
|
|
f4e487c648 | ||
|
|
d1fbeba50f | ||
|
|
8c138658e2 | ||
|
|
729feba2ba | ||
|
|
978d2fda26 | ||
|
|
5e0354531a | ||
|
|
19ed65968d | ||
|
|
b3ad321922 | ||
|
|
5aee1aa60f | ||
|
|
ab22a225c4 | ||
|
|
a97a32730a | ||
|
|
ecde9ce077 | ||
|
|
c3dfc35692 | ||
|
|
cfa5175c72 | ||
|
|
e591f912b9 | ||
|
|
17c130112e | ||
|
|
0b3e45f7ba | ||
|
|
fa89865552 | ||
|
|
f58de2e000 | ||
|
|
f9c1d96aea | ||
|
|
30121d869f | ||
|
|
bb62eded77 | ||
|
|
dd43a0f243 | ||
|
|
ce6195529b | ||
|
|
f26e494450 | ||
|
|
1d336f9dcf | ||
|
|
82fe98a93c | ||
|
|
ee15a55876 | ||
|
|
47a2f71612 | ||
|
|
12e0ffff71 | ||
|
|
d7f3bb7d53 | ||
|
|
06e0e9a2c0 | ||
|
|
12998bc7e1 | ||
|
|
68d13775d9 | ||
|
|
86694de7df | ||
|
|
2d9403c524 | ||
|
|
664b7ddcd4 | ||
|
|
96fd706ead | ||
|
|
a0fa3a8808 | ||
|
|
27383b5bc7 | ||
|
|
4a8f61a01d | ||
|
|
75c6d10089 | ||
|
|
d62e6fda43 | ||
|
|
ee77f76c3a | ||
|
|
ae2a015c67 | ||
|
|
9cbfe5be6a | ||
|
|
3aa6e76c15 | ||
|
|
0484e8e18c | ||
|
|
5a4ee57034 | ||
|
|
e20bc2aca5 | ||
|
|
4d9325b238 | ||
|
|
84bd66fd92 | ||
|
|
b6297d6b63 | ||
|
|
f6ef7583ee | ||
|
|
e8d2b4f63e | ||
|
|
e210c0cbe6 | ||
|
|
9184302c18 | ||
|
|
fdfbbf6ae1 | ||
|
|
4f9abbaa49 | ||
|
|
f524c4441b | ||
|
|
5ca30e8ffe | ||
|
|
5742f745b1 | ||
|
|
91d20b2ad0 | ||
|
|
8272c092ad | ||
|
|
3790555dec | ||
|
|
3537725a13 | ||
|
|
991a089c45 | ||
|
|
8a6faa0836 | ||
|
|
8e1923ee21 | ||
|
|
a2f73a7bdc | ||
|
|
2164463e3b | ||
|
|
a980ba95f9 | ||
|
|
a70b18dd50 | ||
|
|
e33997320b | ||
|
|
b9a5ba7897 | ||
|
|
c0350e036e | ||
|
|
a5f489d48b | ||
|
|
426c572ce2 | ||
|
|
9f4ac80083 | ||
|
|
2e613600de | ||
|
|
3a28ba699f | ||
|
|
fe359f7ea6 | ||
|
|
0e07273c8e | ||
|
|
8b41cc6ff5 | ||
|
|
d563011c72 | ||
|
|
06824e6757 | ||
|
|
cc8bff1e1f | ||
|
|
6102bba478 | ||
|
|
dd40ddc452 | ||
|
|
8d02a7984d | ||
|
|
61281f597a | ||
|
|
11e795026b | ||
|
|
d58e0e3972 | ||
|
|
453703d402 | ||
|
|
dfb84ec72b | ||
|
|
8f98cac918 | ||
|
|
c053fb7244 | ||
|
|
0ccb2c74d2 | ||
|
|
2683b7a7f0 | ||
|
|
86dcf9fb5b | ||
|
|
e31519ac96 | ||
|
|
49fa20ecc3 | ||
|
|
3364ed702a | ||
|
|
32a0289af3 | ||
|
|
a3208acbfe | ||
|
|
983a7bf8d3 | ||
|
|
5d85a98637 | ||
|
|
ba2149407d | ||
|
|
458a2a406a | ||
|
|
374263f926 | ||
|
|
1b5fb1cef6 | ||
|
|
e7897ae857 | ||
|
|
b34239fb8e | ||
|
|
53ea72ed93 | ||
|
|
462e268d0d | ||
|
|
df709afa8d | ||
|
|
7b332e87c4 | ||
|
|
1b2eea6b50 | ||
|
|
0077d6267c | ||
|
|
b18236b237 | ||
|
|
c748b03544 | ||
|
|
81369d1bab | ||
|
|
bf3cc2c9d1 | ||
|
|
159f624060 | ||
|
|
8234738403 | ||
|
|
bf19adef35 | ||
|
|
6c2ed9ad5a | ||
|
|
ac4b796c95 | ||
|
|
afdf49a074 | ||
|
|
48c838d92b | ||
|
|
3e453f4789 | ||
|
|
c7b282b53c | ||
|
|
8c6c723e13 | ||
|
|
9dfe616af8 | ||
|
|
fb9634d29b | ||
|
|
4edbf9df60 | ||
|
|
cd45f7b04c | ||
|
|
6a5ac03c72 | ||
|
|
81ecf14bab | ||
|
|
d84990e91d | ||
|
|
d1726f95fc | ||
|
|
45332d2cf9 | ||
|
|
9e7ad38020 | ||
|
|
18805c8e78 | ||
|
|
98b7824619 | ||
|
|
438ae23ee7 | ||
|
|
0e22a9fb00 | ||
|
|
f78e8edf4e | ||
|
|
986878055f | ||
|
|
1da93b1ca0 | ||
|
|
950f645f02 | ||
|
|
f0c73164d9 | ||
|
|
5b3425d0c4 | ||
|
|
0e1aaf0bbd | ||
|
|
ff685e3504 | ||
|
|
bae1a19cfe | ||
|
|
76aa3bb80f | ||
|
|
ab4089c37b | ||
|
|
a907e05bca | ||
|
|
8944c789b0 | ||
|
|
600e71581c | ||
|
|
15e4650785 | ||
|
|
201bc141bb | ||
|
|
3c69cb6c65 | ||
|
|
9955b76c1e | ||
|
|
d77680f25c | ||
|
|
10354d717e | ||
|
|
0b51a7e9c8 | ||
|
|
372ad31d83 | ||
|
|
d4836514fd | ||
|
|
077af5afb3 | ||
|
|
6ca3e3524e | ||
|
|
8c646b7897 | ||
|
|
90a9ff8bb2 | ||
|
|
1198a37969 | ||
|
|
296978676a | ||
|
|
29fa274096 | ||
|
|
dfdf4529d2 | ||
|
|
28746bbe2b | ||
|
|
60c8cd12cd | ||
|
|
71a045fb13 | ||
|
|
10d11c3b1b | ||
|
|
f0c282cbbc | ||
|
|
7b0b9ea18b | ||
|
|
3f6d8c2283 | ||
|
|
ff5a7f3a35 | ||
|
|
515bd5950f | ||
|
|
b1d5851131 | ||
|
|
3298625351 | ||
|
|
ff4a19b268 | ||
|
|
9b4a1e992b | ||
|
|
fc59cfffa1 | ||
|
|
cf884532d7 | ||
|
|
0b1092d4b9 | ||
|
|
cddd7af701 | ||
|
|
6cb2141654 | ||
|
|
a5fcc35d3c | ||
|
|
8cc22fd88a | ||
|
|
66435c7c08 | ||
|
|
3569a265e6 | ||
|
|
3515d81c26 | ||
|
|
3416a4bbdd | ||
|
|
6a5787abae | ||
|
|
a104316037 | ||
|
|
cabdfe9a27 | ||
|
|
c535609a32 | ||
|
|
a095edc380 | ||
|
|
f1ac88d23b | ||
|
|
4a1918238e | ||
|
|
33653a7108 | ||
|
|
03f65d1766 | ||
|
|
cb7d62f2ee | ||
|
|
4139e555cc | ||
|
|
244d7cfbf9 | ||
|
|
d9dcfc6125 | ||
|
|
c41ffaafc2 | ||
|
|
741eda5fd8 | ||
|
|
1678005ceb | ||
|
|
df029110c7 | ||
|
|
59f43e0ea0 | ||
|
|
9bdc5148c4 | ||
|
|
3283cf514b | ||
|
|
991e449d26 | ||
|
|
f880751539 | ||
|
|
8eade66017 | ||
|
|
bb09b0432f | ||
|
|
eca98c65d3 | ||
|
|
3af8687f42 | ||
|
|
0af93e7936 | ||
|
|
b8904387f3 | ||
|
|
91b2a8b673 | ||
|
|
96748952d3 | ||
|
|
5eddcadaac | ||
|
|
43131150a4 | ||
|
|
5fefc7185e | ||
|
|
ff00e2683e | ||
|
|
e94264f039 | ||
|
|
7fc36ac098 | ||
|
|
8711b4069a | ||
|
|
70cb12413a | ||
|
|
a6dc58a81d | ||
|
|
f8da16bf0a | ||
|
|
e43fecb4bc | ||
|
|
d6ed03eb8a | ||
|
|
49e1fb1ad2 | ||
|
|
ab1dab7fe5 | ||
|
|
6c44472e00 | ||
|
|
d1f545e356 | ||
|
|
e61544dcb9 | ||
|
|
889293ca8a | ||
|
|
a280e22cdb | ||
|
|
bb26a5a5d8 | ||
|
|
ba543ca5cf | ||
|
|
592b0a707f | ||
|
|
8da87aea28 | ||
|
|
4842028516 | ||
|
|
8b6bcd47d2 | ||
|
|
081bb56dd0 | ||
|
|
418de07f84 | ||
|
|
18e3fa37ff | ||
|
|
c36296f2a0 | ||
|
|
8159761833 | ||
|
|
87526226cd | ||
|
|
1cf1e3491d | ||
|
|
9cf19319c5 | ||
|
|
8b47c4fe7b | ||
|
|
3b3f5b3290 | ||
|
|
637981b405 | ||
|
|
20b40f33ce | ||
|
|
9a388009cd | ||
|
|
a4bcefd748 | ||
|
|
7885673363 | ||
|
|
d7aa3889f9 | ||
|
|
4dc76e26fc | ||
|
|
648bb67b73 | ||
|
|
686698272b | ||
|
|
6349b64faf | ||
|
|
09b9194b91 | ||
|
|
827aa96168 | ||
|
|
02ae3c8393 | ||
|
|
8f6bd87721 | ||
|
|
cef684beb9 | ||
|
|
6c7c60fb62 | ||
|
|
1b786e57c3 | ||
|
|
35e6104786 | ||
|
|
ed7c0c6760 | ||
|
|
25522069dc | ||
|
|
cbbbe16031 | ||
|
|
8ed540c7b4 | ||
|
|
467016521f | ||
|
|
33d166a4f8 | ||
|
|
a03623e678 | ||
|
|
bb424e8ab9 | ||
|
|
9e98121e45 | ||
|
|
f7d842a7f4 | ||
|
|
a1981ab56d | ||
|
|
e820a9ecc8 | ||
|
|
b13d47df08 | ||
|
|
e6adcdabac | ||
|
|
3c4795fb47 | ||
|
|
aaf74b2b6a | ||
|
|
2c4b29400e | ||
|
|
98da3a16a8 | ||
|
|
b24ee0e38c | ||
|
|
f557b10c3c | ||
|
|
b876eda144 | ||
|
|
4c8e256e7e | ||
|
|
447afac6eb | ||
|
|
657fc97f4f | ||
|
|
1d8f87fb78 | ||
|
|
c6a34ddeb8 | ||
|
|
694d0397ea | ||
|
|
9cbc243581 | ||
|
|
04a83462c3 | ||
|
|
2e3152f23b | ||
|
|
ba1ac0501b | ||
|
|
3ce8b18ecb | ||
|
|
baaa897d10 | ||
|
|
86ffb83c86 | ||
|
|
db708022e9 | ||
|
|
cc2eebfd42 | ||
|
|
8490893960 | ||
|
|
15a5e54cbb | ||
|
|
1bc9f3d396 | ||
|
|
ca22da4ebb | ||
|
|
e609866c5e | ||
|
|
bb5673e770 | ||
|
|
024d41c946 | ||
|
|
44c4a488f4 | ||
|
|
5c09c10301 | ||
|
|
4f74629e3f | ||
|
|
56194be716 | ||
|
|
8cfa90f352 | ||
|
|
1064be45df | ||
|
|
0428244e60 | ||
|
|
135125bae6 | ||
|
|
120f893d1f | ||
|
|
a33c19448f | ||
|
|
b8e29eca28 | ||
|
|
d4873f8070 | ||
|
|
c42ec31415 | ||
|
|
8f251c1214 | ||
|
|
40aea143cf | ||
|
|
e6fc4f4a6e |
2
.flake8
@@ -1,4 +1,4 @@
|
||||
[flake8]
|
||||
extend-ignore = E501, E203
|
||||
per-file-ignores =
|
||||
Resources/Constants.py:E704
|
||||
Resources/constants.py:E704
|
||||
34
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -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.
|
||||
186
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,186 @@
|
||||
name: Bug Report
|
||||
description: File a bug report
|
||||
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: verify-previously-reported
|
||||
attributes:
|
||||
label: Have you verified whether this issue has been opened before? If no, your issue will be closed
|
||||
description: If no, your issue will be closed. We'd appreciate it if users check with Github Issue's search before filing (https://github.com/dortania/OpenCore-Legacy-Patcher/issues?q=is%3Aissue)
|
||||
multiple: true
|
||||
options:
|
||||
- 'true'
|
||||
- 'false'
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: verify-guide
|
||||
attributes:
|
||||
label: Have you verified whether this issue is covered in our guide? ie. Troubleshooting and Legacy Acceleration pages
|
||||
description: If no, your issue will be closed. We'd appreciate it if users check with Guide before filing (https://dortania.github.io/OpenCore-Legacy-Patcher/)
|
||||
multiple: true
|
||||
options:
|
||||
- 'true'
|
||||
- 'false'
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: used-forums
|
||||
attributes:
|
||||
label: Have you already verified this is a patcher bug and not a macOS bug/user error on our discord servers?
|
||||
description: If no, please do not use issues for this. We'd appreciate it if users check discuss with others before filing. Issues are for valid patcher issues only, not for personal troubleshooting scessions.
|
||||
multiple: true
|
||||
options:
|
||||
- 'true'
|
||||
- 'false'
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: 3rd-party-application
|
||||
attributes:
|
||||
label: Is this issue with a 3rd party application?
|
||||
description: If yes, please move discussions onto forums. We're unable to dedicate time to working on every single application that may be broken in macOS. Only file issues if you have a fix you'd like to add to our project
|
||||
multiple: true
|
||||
options:
|
||||
- 'true'
|
||||
- 'false'
|
||||
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 Issue?
|
||||
description: Additionally, explain what you expected to happen?
|
||||
value: "Please clearly explain the issue"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: extra-info
|
||||
attributes:
|
||||
label: What steps have you taken to troubleshoot this? Please include messages from Discord, logs, and screenshots.
|
||||
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
blank_issues_enabled: false
|
||||
52
.github/workflows/build-app-wxpython.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
name: CI - Build wxPython
|
||||
|
||||
on:
|
||||
push:
|
||||
workflow_dispatch:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build wxPython
|
||||
runs-on: x86_64_mojave
|
||||
env:
|
||||
branch: ${{ github.event.ref }}
|
||||
commiturl: ${{ github.event.head_commit.url }}
|
||||
commitdate: ${{ github.event.head_commit.timestamp }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: python3 create_offline_build.py
|
||||
- run: /Library/Frameworks/Python.framework/Versions/3.9/bin/pyinstaller OpenCore-Patcher-GUI.spec
|
||||
- run: python3 ./payloads/binary.py $branch $commiturl $commitdate
|
||||
- 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-wxPython.app.zip OpenCore-Patcher.app
|
||||
- run: ./../sign-wxpython.sh
|
||||
- run: packagesbuild ./payloads/InstallPackage/AutoPkg-Assets-Setup.pkgproj
|
||||
- run: mv ./OpenCore-Patcher-wxPython.app.zip ./OpenCore-Patcher-GUI.app.zip
|
||||
- name: Upload App to Artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: OpenCore-Patcher.app (GUI)
|
||||
path: OpenCore-Patcher-GUI.app.zip
|
||||
- name: Upload Package to Artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: AutoPkg-Assets.pkg
|
||||
path: ./dist/AutoPkg-Assets.pkg
|
||||
- name: Upload Binary to Release
|
||||
if: github.event_name == 'release'
|
||||
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: OpenCore-Patcher-GUI.app.zip
|
||||
tag: ${{ github.ref }}
|
||||
file_glob: true
|
||||
- name: Upload Package to Release
|
||||
if: github.event_name == 'release'
|
||||
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: ./dist/AutoPkg-Assets.pkg
|
||||
tag: ${{ github.ref }}
|
||||
file_glob: true
|
||||
37
.github/workflows/build-app.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: CI - Build App
|
||||
name: CI - Build TUI
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -8,31 +8,34 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build App
|
||||
runs-on: self-hosted
|
||||
name: Build TUI
|
||||
runs-on: x86_64_mojave
|
||||
env:
|
||||
branch: ${{ github.event.ref }}
|
||||
commiturl: ${{ github.event.head_commit.url }}
|
||||
commitdate: ${{ github.event.head_commit.timestamp }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: pip3 install --upgrade pyinstaller requests
|
||||
|
||||
- run: pyinstaller OpenCore-Patcher.spec
|
||||
- uses: actions/checkout@v3
|
||||
- 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 --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
|
||||
- run: python3 ./payloads/binary.py $branch $commiturl $commitdate
|
||||
- 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
|
||||
uses: actions/upload-artifact@v3
|
||||
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
|
||||
- name: Validate OpenCore
|
||||
run: ./dist/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher --validate
|
||||
|
||||
32
.github/workflows/build-cli.yml
vendored
@@ -1,32 +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
|
||||
- name: Install Python Dependencies
|
||||
run: pip3 install --upgrade pyinstaller requests
|
||||
|
||||
- run: pyinstaller OCLP-CLI.spec
|
||||
- run: cd dist; zip ../OCLP-CLI.zip OCLP-CLI
|
||||
- name: Upload Binary to Artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: OCLP-CLI
|
||||
path: OCLP-CLI.zip
|
||||
- name: Upload to Release
|
||||
if: github.event_name == 'release'
|
||||
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: OCLP-CLI.zip
|
||||
tag: ${{ github.ref }}
|
||||
file_glob: true
|
||||
4
.github/workflows/build-site.yml
vendored
@@ -10,11 +10,11 @@ jobs:
|
||||
name: Build Site and Deploy
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/setup-node@v2-beta
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '12'
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
persist-credentials: false
|
||||
|
||||
16
.gitignore
vendored
@@ -1,7 +1,10 @@
|
||||
.DS_Store
|
||||
OCLP-GUI.command
|
||||
/payloads/Apple
|
||||
/payloads/Apple.zip
|
||||
/payloads/*.zip
|
||||
/payloads/BuildManifest.plist
|
||||
/payloads/*.sucatalog
|
||||
/payloads/*.pkg
|
||||
/payloads/__MACOSX
|
||||
/App
|
||||
/Build-Folder
|
||||
@@ -16,4 +19,13 @@ __pycache__/
|
||||
/docs/.vuepress/.config.js.swp
|
||||
/docs/yarn.lock
|
||||
/docs/yarn-error.log
|
||||
/docs/node_modules/
|
||||
/docs/node_modules/
|
||||
/payloads/List.txt
|
||||
/payloads/Installer.sh
|
||||
/payloads/Info.plist
|
||||
/payloads/seed.plist
|
||||
/payloads/AutoPkg-Assets.pkg
|
||||
/payloads/AutoPkg-Assets.pkg.zip
|
||||
/payloads/Universal-Binaries
|
||||
/payloads/OpenCore-Legacy-Patcher
|
||||
/payloads/InstallAssistant.pkg.integrityDataV1
|
||||
|
||||
427
CHANGELOG.md
@@ -1,6 +1,385 @@
|
||||
# OpenCore Legacy Patcher changelog
|
||||
|
||||
## 0.4.5
|
||||
- Fix AutoPatcher.pkg download on releases
|
||||
- Fix backported to 0.4.4 release binaries
|
||||
- Add Macmini8,1 FeatureUnlock support
|
||||
- Drops CPU check, supports all machines
|
||||
- Refactor Root Patching System
|
||||
- Adds preflight checks validating patch set data and presence
|
||||
- Adds dynamic Sandy Bridge Board ID patching
|
||||
- Allows for unrestricted SMBIOS usage with `AppleIntelSNBGraphicsFB`
|
||||
- Adds OpenCL downgrade for TeraScale 2
|
||||
- Resolves VNC support (credit IronApple#2711)
|
||||
- Fix SecureBootModel detection
|
||||
- Add `OpenCore-Legacy-Patcher.plist` for applied patch info
|
||||
- Located under `/System/Library/CoreServices`
|
||||
- Lists patch sets applied including files installed and removed
|
||||
- Add `preinstall` script to AutoPatcher
|
||||
- Removes old patcher files before installing new
|
||||
- Add Serial Number Spoofing
|
||||
- For recycled machines where MDM was mistakenly left on
|
||||
- Add sys_patch file validation during CI
|
||||
- GUI Enhancements:
|
||||
- Add GUI Prompt for booting mismatched OpenCore configs
|
||||
- ex. Booting MacBookPro8,1 config on MacBookPro11,1
|
||||
- Add Checksum verification to InstallAssistant.pkg download
|
||||
- Fix showing latest 12.4 remote installers
|
||||
- Add local Root Patcher version info when previously patched
|
||||
- Helps notify users they already patched, or should be repatched with a newer version
|
||||
- Add error handling to non-standard/malformed OpenCore Boot Path
|
||||
- Non-Metal Enhancements:
|
||||
- Add work-around to double clock bug introduced in macOS 12.4
|
||||
- Resolve non-functioning Dismiss buttons bug introduced in macOS 12.4
|
||||
- Refresh Status Bar when item length changes
|
||||
- Add smoother transition for auto appearance
|
||||
- Increment Binaries:
|
||||
- PatcherSupportPkg 0.4.1 - release
|
||||
|
||||
## 0.4.4
|
||||
- Lower SIP requirement for Root Patching
|
||||
- Sets to 0x802 (previously 0xA03)
|
||||
- Drops `CSR_ALLOW_UNTRUSTED_KEXTS` and `CSR_ALLOW_UNAPPROVED_KEXTS`
|
||||
- Remember TeraScale 2 Setting on MacBookPro8,2/3
|
||||
- Avoids requiring toggling after first time
|
||||
- Resolve Electron Crashing with SIP lowered on 12.3
|
||||
- Adds `ipc_control_port_options=0` boot argument
|
||||
- Unknown whether this is a "bug" or intentional from Apple, affects native Macs with SIP disabled
|
||||
- Resolved non-Metal issues:
|
||||
- Catalyst crashing after 1200 seconds on non-Metal
|
||||
- Automatic Light/Darkmode (credit @moosethegoose2213)
|
||||
- Rim improvements
|
||||
- Trackpad swipe between pages
|
||||
- Cycle between windows
|
||||
- Improve Display Prefpane Image
|
||||
- Defaults prefix change (`ASB_` -> `MORAEA_`, reopen non-Metal Settings to apply)
|
||||
- Increment Binaries:
|
||||
- PatcherSupportPkg 0.3.9 - release
|
||||
- OpenCorePkg 0.8.0 - release
|
||||
- FeatureUnlock 1.0.8 - release
|
||||
- CPUFriend 1.2.5 - release
|
||||
- WhateverGreen 1.5.8 - release
|
||||
- AutoPkgInstaller 1.0.0 - release
|
||||
- BlueToolFixup 2.6.2 - adjusted
|
||||
- Speed up loading available remote macOS Installers from Apple
|
||||
- Skips writing catalogs to disk, loads into memory directly
|
||||
- Implement Automatic Patch Detection/Installation
|
||||
- Requires GUI for usage
|
||||
- Installations:
|
||||
- During macOS Installer creating in-app, AutoPkg-Assets.pkg is installed to macOS installer
|
||||
- After running the installer with AutoPkgInstaller.kext, Root Patcher will install patches
|
||||
- Must boot macOS Installer, does not support in-OS usage
|
||||
- Post OS Updates:
|
||||
- After OS updates, Patcher will detect whether system requires root patches and prompt you
|
||||
- Implemented via Launch Agent in `/Library/LaunchAgents`
|
||||
- OpenCore-Patcher.app will be copied to `/Library/Application Support/Dortania` for storage
|
||||
- Notify users when OpenCore is booted from external disk not matching macOS (ie. USB installer)
|
||||
- Disable notification via `defaults write com.dortania.opencore-legacy-patcher AutoPatch_Notify_Mismatched_Disks -bool FALSE`
|
||||
- GUI Enhancements:
|
||||
- Add Reboot Prompt after Root Patching
|
||||
- Add Disk Installation Prompt after OpenCore Config Building
|
||||
- Streamline GUI relaunch for Root Patch/Unpatch (remembering previous state during patching)
|
||||
- Grey out return buttons while performing sensitive tasks
|
||||
- Add `Currently Booted SIP` info to SIP Settings
|
||||
- Add Disk Highlighting during Build/Install for previously installed disks
|
||||
- Only list newest installers by default (reload to show older binaries)
|
||||
- Remove manual root unpatching
|
||||
- Removed due to reliablity issues
|
||||
- `bless` based reversion still supported in Big Sur+
|
||||
- Remove Unoffical Mojave/Catalina Root Patching
|
||||
- For TeraScale 2-based acceleration on older OSes, use v0.4.3
|
||||
- Simplify Binary options
|
||||
- Removes Online Patcher Variants
|
||||
- Offline variants are now new defaults, no longer retain `Offline` suffix
|
||||
- Resolve legacy Bluetooth Support on 12.4 Beta 3
|
||||
- Disables USB Address erroring on some pre-Bluetooth 4.0 chipsets
|
||||
- ex. `ERROR -- Third Party Dongle has the same address as the internal module`
|
||||
|
||||
## 0.4.3
|
||||
- Increment Binaries:
|
||||
- PatcherSupportPkg 0.3.4 - release
|
||||
- OpenCorePkg 0.7.8 - release
|
||||
- Lilu 1.6.0 - release
|
||||
- WhateverGreen 1.5.7 - release
|
||||
- FeatureUnlock 1.0.7 - rolling (6a87f65)
|
||||
- Resolve many non-Metal issues:
|
||||
- Control Centre Sliders
|
||||
- Shift/missing icons
|
||||
- Hardware Cursor
|
||||
- Note cursor images will be static (ie. beachball)
|
||||
- Quicklook dismiss/expand
|
||||
- Keyboard Backlight
|
||||
- Drops reliance on LabTick
|
||||
- Add Ethernet Controller detection to build
|
||||
- Resolve i210/i225 NIC support on pre-Ivy Macs
|
||||
- Resolve AirPlay to Mac support on Skylake+ Macs in 12.3 Beta 2+
|
||||
- Resolve SDXC support in Monterey for Pre-Ivy Bridge Macs
|
||||
- Rename Battery Throttling option to Firmware Throttling
|
||||
- Expands support to desktops (ie. iMacs without Displays)
|
||||
- Add XCPM disabling
|
||||
- Forces `ACPI_SMC_PlatformPlugin` to outmatch `X86PlatformPlugin`
|
||||
|
||||
## 0.4.2
|
||||
- Resolve app crashing on some 3rd party SAS/SATA controllers
|
||||
- Add Beta identifier to macOS Installer menu
|
||||
- Resolve showing unsupported installers in Creation menu
|
||||
- Resolve Macmini4,1 HDEF pathing
|
||||
- Increment Binaries:
|
||||
- FeatureUnlock 1.0.6 - rolling (d296645)
|
||||
- PatcherSupportPkg 0.3.1
|
||||
- Resolve SIP and SecureBootModel not disabling by default on some non-Metal Mac Pros
|
||||
- Add Content Caching support configurability
|
||||
- Limit SurPlus patchset to 20.4.0 - 21.1.0
|
||||
- No longer required for macOS 12.1 and newer
|
||||
- Add Universal Control support for Monterey native Macs
|
||||
- Applicable for Haswell/Broadwell
|
||||
- Requires macOS 12.3 or newer
|
||||
- Fix Power Management Support in macOS 12.3 Beta 1
|
||||
- Applicable for Sandy Bridge and older
|
||||
- Enforces ACPI_SMC_PlatformPlugin matching
|
||||
- Add NVMe Enhanced Power Management configuration
|
||||
- Disables NVMe adjustments on Skylake and newer Macs by default
|
||||
- Resolve Catalyst Scrolling on non-Metal GPUs
|
||||
- Add new TUI icon to differentiate between GUI
|
||||
- Resolve Color Strobing on AMD TeraScale 2 GPUs
|
||||
- Drops reliance on ResXtreme and SwitchResX
|
||||
|
||||
## 0.4.1
|
||||
- Add XHCI Boot Support to pre-UEFI 2.0 Macs
|
||||
- Applicable to pre-Ivy Macs with upgraded USB 3.0 controllers, allows USB 3.0 boot
|
||||
- Credit to Jazzzny for testing, [DearthnVader for original research](https://forums.macrumors.com/threads/bootable-xhci-pci-e-for-the-3-1-experimental.2217479/)
|
||||
- Drivers stripped from MacPro6,1 firmware
|
||||
- Resolve OCLP-Helper dyld crash
|
||||
|
||||
## 0.4.0
|
||||
- Resolves Install USB Creation using incorrect installer
|
||||
- Resolves `installer` failing to extract InstallAssistant in older OSes
|
||||
- Resolves certain Samsung NVMe drives appearing as external on Mac Pros
|
||||
- Add FeatureUnlock configurability
|
||||
- Add NVRAM WriteFlash configurability for degraded/fragile systems
|
||||
- Add `ThirdPartyDrives` quirk configurability
|
||||
- Resolve Skylight dylib injection issue
|
||||
- Increment Binaries:
|
||||
- OpenCore 0.7.7 - release
|
||||
- RestrictEvents 1.0.6 - release
|
||||
- FeatureUnlock 1.0.6 - rolling (1d0bc7b)
|
||||
- WhateverGreen 1.5.6 - release
|
||||
- Lilu 1.5.9 - release
|
||||
- gfxutil 1.8.2b - release
|
||||
- PatcherSupportPkg 0.2.9 - release
|
||||
- Re-add Content Caching support for VMM-spoofed systems
|
||||
- Add wxPython Based GUI
|
||||
- Superceeds Obj-C Based GUI
|
||||
- Both standard and offline builds provided
|
||||
- Allow optional spoofing on native Models
|
||||
- Recommended for systems that cannot update their firmware natively (ie. dead internal drive)
|
||||
- Add Dropbox fix for non-Metal on Monterey
|
||||
- Add App Update checks to GUI
|
||||
- If new version available, app will prompt on launch.
|
||||
- Configurable in Developer Settings
|
||||
- Resolved OS crashing on slow Macs with FeatureUnlock
|
||||
- Disable Windows GMUX support by default
|
||||
- Resolves brightness control issues on MacBookPro11,3 in Windows
|
||||
- Configurable in Developer Settings
|
||||
- Add Commit Data to Info.plist
|
||||
|
||||
## 0.3.3
|
||||
- Disable Asset Caching support with spoofless approach
|
||||
- Switch to Minimal or higher if required
|
||||
|
||||
## 0.3.2
|
||||
- Implement spoofless support (ie. no SMBIOS patching)
|
||||
- Requires macOS 11.3 or newer, for 11.2.3 and older use Minimal or higher spoofing
|
||||
- See additional notes before updating: [VMM usage notes](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/543#issuecomment-953441283)
|
||||
- Adjust SIP setting to better reflect current SIP usage
|
||||
- Resolve Monterey Bluetooth issues on user-upgraded BCM94331 BT4.0 modules
|
||||
- Fix iGPU-only iMac14,x display output when using Minimal/Moderate spoof
|
||||
- Increment Binaries:
|
||||
- OpenCore 0.7.6 - release
|
||||
- Lilu 1.5.8 - release
|
||||
- BrcmPatchRAM 2.6.1 - release
|
||||
- WhateverGreen 1.5.5 - release
|
||||
- PatcherSupportPkg 0.2.8 - release
|
||||
- FeatureUnlock 1.0.5 - rolling (9cf1e81)
|
||||
- Fix AirPlay to Mac on macOS 12.1
|
||||
- Add macOS InstallAssistant downloader to TUI
|
||||
- Resolve rare memory corruption due to FeatureUnlock
|
||||
- Raise SurPlus MaxKernel to 21.99.99
|
||||
- Fix Content Caching with spoofless usage
|
||||
- Allow disabling of ConnectDrivers
|
||||
- Aid with Hibernation on MacBookPro9,1/MacBookPro10,1
|
||||
- Add legacy iSight patch
|
||||
- Applicable for MacBook4,1/5,2
|
||||
- Affected Device IDs: 0x8300, 0x8501, 0x8503
|
||||
- Credit to parrotgeek1 for LegacyUSBVideoSupport
|
||||
- Fix Wifi Password prompt in Monterey on legacy wifi
|
||||
- Applicable for Atheros, BCM94328, BCM94322
|
||||
- Fix OpenCL Acceleration on Ivy Bridge and Kepler
|
||||
- Add Apple RAID Card support
|
||||
- Add Legacy GCN build support off model for MXM iMacs
|
||||
- Resolve 5k Display Output support on 5k iMacs and iMac Pro
|
||||
- Resolve NVMe Patching on 2016-2017 MacBook Pros
|
||||
- Enable Windows VMX support for Haswell and Broadwell MacBooks
|
||||
|
||||
## 0.3.1
|
||||
- Increment Binaries:
|
||||
- OpenCorePkg 0.7.4 release
|
||||
- RestrictEvents 1.0.5 release
|
||||
- WhateverGreen 1.5.4 release
|
||||
- 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
|
||||
- Unsupported on APFS ROM Patched Macs, revert to stock firmware to resolve
|
||||
- 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
|
||||
@@ -14,17 +393,21 @@
|
||||
- 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)
|
||||
@@ -65,6 +448,7 @@
|
||||
- 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
|
||||
@@ -81,6 +465,7 @@
|
||||
- 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
|
||||
@@ -96,9 +481,11 @@
|
||||
- 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)
|
||||
@@ -117,6 +504,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
|
||||
@@ -142,6 +530,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
|
||||
@@ -161,9 +550,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
|
||||
@@ -184,6 +575,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
|
||||
@@ -192,11 +584,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)
|
||||
@@ -212,6 +606,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+)
|
||||
@@ -230,6 +625,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
|
||||
@@ -240,12 +636,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
|
||||
@@ -261,12 +659,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
|
||||
@@ -275,70 +675,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
|
||||
|
||||
219
OCLP-CLI.command
@@ -1,219 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (C) 2020-2021 Mykola Grymalyuk
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import platform
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
from Resources import Build, ModelArray, Constants, SysPatch, device_probe, Utilities
|
||||
|
||||
|
||||
class OpenCoreLegacyPatcher:
|
||||
def __init__(self):
|
||||
print("Loading...")
|
||||
Utilities.disable_cls()
|
||||
self.constants = Constants.Constants()
|
||||
self.constants.computer = device_probe.Computer.probe()
|
||||
self.computer = self.constants.computer
|
||||
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
|
||||
|
||||
custom_cpu_model_value = Utilities.get_nvram("revcpuname", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
|
||||
if custom_cpu_model_value is not None:
|
||||
# TODO: Fix to not use two separate variables
|
||||
self.constants.custom_cpu_model = 1
|
||||
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
|
||||
|
||||
if "-v" in (Utilities.get_nvram("boot-args") or ""):
|
||||
self.constants.verbose_debug = True
|
||||
|
||||
# Check if running in RecoveryOS
|
||||
self.constants.recovery_status = Utilities.check_recovery()
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
# Generic building args
|
||||
parser.add_argument("--build", help="Build OpenCore", action="store_true", required=False)
|
||||
parser.add_argument("--verbose", help="Enable verbose boot", action="store_true", required=False)
|
||||
parser.add_argument("--debug_oc", help="Enable OpenCore DEBUG", action="store_true", required=False)
|
||||
parser.add_argument("--debug_kext", help="Enable kext DEBUG", action="store_true", required=False)
|
||||
parser.add_argument("--skip_wifi", help="Skip wifi patches", action="store_true", required=False)
|
||||
parser.add_argument("--hide_picker", help="Hide OpenCore picker", action="store_true", required=False)
|
||||
parser.add_argument("--disable_sip", help="Disable SIP", action="store_true", required=False)
|
||||
parser.add_argument("--disable_smb", help="Disable SecureBootModel", action="store_true", required=False)
|
||||
parser.add_argument("--vault", help="Enable OpenCore Vaulting", action="store_true", required=False)
|
||||
parser.add_argument("--support_all", help="Allow OpenCore on natively supported Models", action="store_true", required=False)
|
||||
parser.add_argument("--firewire", help="Enable FireWire Booting", action="store_true", required=False)
|
||||
parser.add_argument("--nvme", help="Enable NVMe Booting", action="store_true", required=False)
|
||||
parser.add_argument("--disable_amfi", help="Disable AMFI", action="store_true", required=False)
|
||||
|
||||
# Building args requiring value values
|
||||
parser.add_argument("--model", action="store", help="Set custom model", required=False)
|
||||
parser.add_argument("--metal_gpu", action="store", help="Set Metal GPU Vendor", required=False)
|
||||
parser.add_argument("--smbios_spoof", action="store", help="Set SMBIOS patching mode", required=False)
|
||||
|
||||
# SysPatch args
|
||||
parser.add_argument("--patch_sys_vol", help="Patches root volume", action="store_true", required=False)
|
||||
parser.add_argument("--unpatch_sys_vol", help="Unpatches root volume, EXPERIMENTAL", action="store_true", required=False)
|
||||
parser.add_argument("--terascale_2", help="Enable TeraScale 2 Acceleration", action="store_true", required=False)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
self.constants.gui_mode = True
|
||||
self.constants.current_path = Path.cwd()
|
||||
|
||||
if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"):
|
||||
print("- Rerouting payloads location")
|
||||
self.constants.payload_path = sys._MEIPASS / Path("payloads")
|
||||
else:
|
||||
print("- Using default payloads location")
|
||||
|
||||
if args.verbose:
|
||||
print("- Set verbose configuration")
|
||||
self.constants.verbose_debug = True
|
||||
if args.debug_oc:
|
||||
print("- Set OpenCore DEBUG configuration")
|
||||
self.constants.opencore_debug = True
|
||||
self.constants.opencore_build = "DEBUG"
|
||||
if args.debug_kext:
|
||||
print("- Set kext DEBUG configuration")
|
||||
self.constants.kext_debug = True
|
||||
if args.skip_wifi:
|
||||
print("- Set wifi skip configuration")
|
||||
self.constants.wifi_build = True
|
||||
if args.hide_picker:
|
||||
print("- Set HidePicker configuration")
|
||||
self.constants.showpicker = False
|
||||
if args.disable_sip:
|
||||
print("- Set Disable SIP configuration")
|
||||
self.constants.sip_status = False
|
||||
if args.disable_smb:
|
||||
print("- Set Disable SecureBootModel configuration")
|
||||
self.constants.secure_status = False
|
||||
if args.vault:
|
||||
print("- Set Vault configuration")
|
||||
self.constants.vault = True
|
||||
if args.firewire:
|
||||
print("- Set FireWire Boot configuration")
|
||||
self.constants.firewire_boot = True
|
||||
if args.nvme:
|
||||
print("- Set NVMe Boot configuration")
|
||||
self.constants.nvme_boot = True
|
||||
if args.disable_amfi:
|
||||
print("- Set Disable AMFI configuration")
|
||||
self.constants.disable_amfi = True
|
||||
if args.metal_gpu:
|
||||
if args.metal_gpu == "Nvidia":
|
||||
print("- Set Metal GPU patches to Nvidia")
|
||||
self.constants.metal_build = True
|
||||
self.constants.imac_vendor = "Nvidia"
|
||||
elif args.metal_gpu == "AMD":
|
||||
print("- Set Metal GPU patches to AMD")
|
||||
self.constants.metal_build = True
|
||||
self.constants.imac_vendor = "AMD"
|
||||
else:
|
||||
print(f"- Unknown GPU arg passed: {args.metal_gpu}")
|
||||
self.constants.metal_build = False
|
||||
self.constants.imac_vendor = "None"
|
||||
if args.smbios_spoof:
|
||||
if args.smbios_spoof == "Minimal":
|
||||
self.constants.serial_settings = "Minimal"
|
||||
elif args.smbios_spoof == "Moderate":
|
||||
self.constants.serial_settings = "Moderate"
|
||||
elif args.smbios_spoof == "Advanced":
|
||||
self.constants.serial_settings = "Advanced"
|
||||
else:
|
||||
print(f"- Unknown SMBIOS arg passed: {args.smbios_spoof}")
|
||||
|
||||
if args.support_all:
|
||||
print("- Building for natively supported model")
|
||||
self.constants.allow_oc_everywhere = True
|
||||
self.constants.serial_settings = "None"
|
||||
|
||||
if args.build:
|
||||
if args.model:
|
||||
print(f"- Using custom model: {args.model}")
|
||||
self.constants.custom_model = args.model
|
||||
self.set_defaults(self.constants.custom_model, False)
|
||||
self.build_opencore()
|
||||
elif self.computer.real_model not in ModelArray.SupportedSMBIOS and self.constants.allow_oc_everywhere is False:
|
||||
print(
|
||||
"""Your model is not supported by this patcher for running unsupported OSes!"
|
||||
|
||||
If you plan to create the USB for another machine, please select the "Change Model" option in the menu."""
|
||||
)
|
||||
sys.exit(1)
|
||||
else:
|
||||
print(f"- Using detected model: {self.constants.computer.real_model}")
|
||||
self.build_opencore()
|
||||
if args.patch_sys_vol:
|
||||
if args.terascale_2:
|
||||
print("- Set TeraScale 2 Accel configuration")
|
||||
self.constants.terascale_2_patch = True
|
||||
print("- Set System Volume patching")
|
||||
self.patch_vol()
|
||||
elif args.unpatch_sys_vol:
|
||||
print("- Set System Volume unpatching")
|
||||
self.unpatch_vol()
|
||||
|
||||
def set_defaults(self, model, host_is_target):
|
||||
# Defaults
|
||||
self.constants.sip_status = True
|
||||
self.constants.secure_status = False # Default false for Monterey
|
||||
self.constants.disable_amfi = False
|
||||
|
||||
if model in ModelArray.LegacyGPU:
|
||||
if (
|
||||
host_is_target
|
||||
and self.computer.dgpu
|
||||
and self.computer.dgpu.arch
|
||||
in [
|
||||
device_probe.AMD.Archs.Legacy_GCN,
|
||||
device_probe.AMD.Archs.Polaris,
|
||||
device_probe.AMD.Archs.Vega,
|
||||
device_probe.AMD.Archs.Navi,
|
||||
device_probe.NVIDIA.Archs.Kepler,
|
||||
]
|
||||
):
|
||||
# Building on device and we have a native, supported GPU
|
||||
self.constants.sip_status = True
|
||||
# self.constants.secure_status = True # Monterey
|
||||
self.constants.disable_amfi = False
|
||||
else:
|
||||
self.constants.sip_status = False # Unsigned kexts
|
||||
self.constants.secure_status = False # Root volume modified
|
||||
self.constants.disable_amfi = True # Unsigned binaries
|
||||
if model in ModelArray.ModernGPU:
|
||||
if host_is_target and model in ["iMac13,1", "iMac13,3"] and self.computer.dgpu:
|
||||
# Some models have a supported dGPU, others don't
|
||||
self.constants.sip_status = True
|
||||
# self.constants.secure_status = True # Monterey
|
||||
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
|
||||
else:
|
||||
self.constants.sip_status = False # Unsigned kexts
|
||||
self.constants.secure_status = False # Modified root volume
|
||||
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
|
||||
if model == "MacBook8,1":
|
||||
# MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
|
||||
self.constants.serial_settings == "Moderate"
|
||||
|
||||
def patch_vol(self):
|
||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants).start_patch()
|
||||
|
||||
def unpatch_vol(self):
|
||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants).start_unpatch()
|
||||
|
||||
def build_opencore(self):
|
||||
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).build_opencore()
|
||||
|
||||
def install_opencore(self):
|
||||
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).copy_efi()
|
||||
|
||||
|
||||
OpenCoreLegacyPatcher()
|
||||
|
||||
# Example arg for OCLP command line
|
||||
# ./OCLP-CLI --build --verbose --debug_oc --debug_kext --model iMac11,2
|
||||
@@ -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,
|
||||
[('u', None, 'OPTION')],
|
||||
name='OCLP-CLI',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
runtime_tmpdir=None,
|
||||
console=True )
|
||||
6
OpenCore-Patcher-GUI.command
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk
|
||||
from resources import main
|
||||
|
||||
if __name__ == '__main__':
|
||||
main.OpenCoreLegacyPatcher(True)
|
||||
56
OpenCore-Patcher-GUI.spec
Normal file
@@ -0,0 +1,56 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
import sys, os, time, subprocess
|
||||
sys.path.append(os.path.abspath(os.getcwd()))
|
||||
from resources import constants
|
||||
block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(['OpenCore-Patcher-GUI.command'],
|
||||
pathex=['resources', 'data', 'gui'],
|
||||
binaries=[],
|
||||
datas=[('payloads', 'payloads')],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
[],
|
||||
name='OpenCore-Patcher',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
runtime_tmpdir=None,
|
||||
console=False,
|
||||
disable_windowed_traceback=False,
|
||||
target_arch=None,
|
||||
codesign_identity=None,
|
||||
entitlements_file=None )
|
||||
app = BUNDLE(exe,
|
||||
name='OpenCore-Patcher.app',
|
||||
icon="payloads/OC-Patcher.icns",
|
||||
bundle_identifier="com.dortania.opencore-legacy-patcher-wxpython",
|
||||
info_plist={
|
||||
"CFBundleShortVersionString": constants.Constants().patcher_version,
|
||||
"NSHumanReadableCopyright": constants.Constants().copyright_date,
|
||||
"LSMinimumSystemVersion": "10.10.0",
|
||||
"NSRequiresAquaSystemAppearance": False,
|
||||
"NSHighResolutionCapable": True,
|
||||
"Build Date": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
|
||||
"BuildMachineOSBuild": subprocess.run("sw_vers -buildVersion".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode().strip(),
|
||||
"NSPrincipalClass": "NSApplication",
|
||||
})
|
||||
@@ -1,296 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
# Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk
|
||||
from resources import main
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import platform
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from Resources import Build, CliMenu, Constants, ModelArray, SysPatch, Utilities, device_probe
|
||||
|
||||
|
||||
class OpenCoreLegacyPatcher:
|
||||
def __init__(self):
|
||||
print("Loading...")
|
||||
self.constants = Constants.Constants()
|
||||
self.constants.computer = device_probe.Computer.probe()
|
||||
self.computer = self.constants.computer
|
||||
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
|
||||
self.set_defaults(self.computer.real_model, True)
|
||||
|
||||
custom_cpu_model_value = Utilities.get_nvram("revcpuname", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
|
||||
if custom_cpu_model_value is not None:
|
||||
# TODO: Fix to not use two separate variables
|
||||
self.constants.custom_cpu_model = 1
|
||||
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
|
||||
|
||||
if "-v" in (Utilities.get_nvram("boot-args") or ""):
|
||||
self.constants.verbose_debug = True
|
||||
|
||||
# Check if running in RecoveryOS
|
||||
self.constants.recovery_status = Utilities.check_recovery()
|
||||
|
||||
def set_defaults(self, model, host_is_target):
|
||||
# Defaults
|
||||
self.constants.sip_status = True
|
||||
self.constants.secure_status = False # Default false for Monterey
|
||||
self.constants.disable_amfi = False
|
||||
|
||||
if model in ModelArray.LegacyGPU:
|
||||
if (
|
||||
host_is_target
|
||||
and self.computer.dgpu
|
||||
and self.computer.dgpu.arch
|
||||
in [
|
||||
device_probe.AMD.Archs.Legacy_GCN,
|
||||
device_probe.AMD.Archs.Polaris,
|
||||
device_probe.AMD.Archs.Vega,
|
||||
device_probe.AMD.Archs.Navi,
|
||||
device_probe.NVIDIA.Archs.Kepler,
|
||||
]
|
||||
):
|
||||
# Building on device and we have a native, supported GPU
|
||||
self.constants.sip_status = True
|
||||
# self.constants.secure_status = True # Monterey
|
||||
self.constants.disable_amfi = False
|
||||
else:
|
||||
self.constants.sip_status = False # Unsigned kexts
|
||||
self.constants.secure_status = False # Root volume modified
|
||||
self.constants.disable_amfi = True # Unsigned binaries
|
||||
if model in ModelArray.ModernGPU:
|
||||
if host_is_target and model in ["iMac13,1", "iMac13,3"] and self.computer.dgpu:
|
||||
# Some models have a supported dGPU, others don't
|
||||
self.constants.sip_status = True
|
||||
# self.constants.secure_status = True # Monterey
|
||||
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
|
||||
else:
|
||||
self.constants.sip_status = False # Unsigned kexts
|
||||
self.constants.secure_status = False # Modified root volume
|
||||
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
|
||||
if model == "MacBook8,1":
|
||||
# MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
|
||||
self.constants.serial_settings == "Moderate"
|
||||
|
||||
def build_opencore(self):
|
||||
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).build_opencore()
|
||||
|
||||
def install_opencore(self):
|
||||
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).copy_efi()
|
||||
|
||||
def change_model(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Select Different Model"])
|
||||
print(
|
||||
"""
|
||||
Tip: Run the following command on the target machine to find the model identifier:
|
||||
|
||||
system_profiler SPHardwareDataType | grep 'Model Identifier'
|
||||
"""
|
||||
)
|
||||
self.constants.custom_model = input("Please enter the model identifier of the target machine: ").strip()
|
||||
if self.constants.custom_model not in ModelArray.SupportedSMBIOS:
|
||||
print(
|
||||
f"""
|
||||
{self.constants.custom_model} is not a valid SMBIOS Identifier for macOS {self.constants.os_support}!
|
||||
"""
|
||||
)
|
||||
print_models = input(f"Print list of valid options for macOS {self.constants.os_support}? (y/n)")
|
||||
if print_models.lower() in {"y", "yes"}:
|
||||
print("\n".join(ModelArray.SupportedSMBIOS))
|
||||
input("\nPress [ENTER] to continue")
|
||||
else:
|
||||
self.set_defaults(self.constants.custom_model, False)
|
||||
|
||||
def patcher_settings(self):
|
||||
response = None
|
||||
while not (response and response == -1):
|
||||
title = ["Adjust Patcher Settings"]
|
||||
menu = Utilities.TUIMenu(title, "Please select an option: ", auto_number=True, top_level=True)
|
||||
options = [
|
||||
[f"Enable Verbose Mode:\t\tCurrently {self.constants.verbose_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_verbose],
|
||||
[f"Enable OpenCore DEBUG:\t\tCurrently {self.constants.opencore_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_oc],
|
||||
[f"Enable Kext DEBUG:\t\t\tCurrently {self.constants.kext_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_kext],
|
||||
[f"Set ShowPicker Mode:\t\tCurrently {self.constants.showpicker}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_showpicker],
|
||||
[f"Set Vault Mode:\t\t\tCurrently {self.constants.vault}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_vault],
|
||||
[f"Allow FireWire Boot:\t\tCurrently {self.constants.firewire_boot}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_firewire],
|
||||
[f"Allow NVMe Boot:\t\t\tCurrently {self.constants.nvme_boot}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_nvme],
|
||||
[
|
||||
f"Enable TeraScale 2 Acceleration:\tCurrently {self.constants.terascale_2_patch}",
|
||||
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).enable_terascale,
|
||||
],
|
||||
[f"Disable AMFI:\t\t\tCurrently {self.constants.disable_amfi}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_amfi],
|
||||
[
|
||||
f"Set SIP and SecureBootModel:\tSIP: {self.constants.sip_status} SBM: {self.constants.secure_status}",
|
||||
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_sip,
|
||||
],
|
||||
[
|
||||
f"Allow OpenCore on native Models:\tCurrently {self.constants.allow_oc_everywhere}",
|
||||
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_native_models,
|
||||
],
|
||||
["Advanced Patch Settings, for developers only", self.advanced_patcher_settings],
|
||||
]
|
||||
|
||||
for option in options:
|
||||
menu.add_menu_option(option[0], function=option[1])
|
||||
|
||||
response = menu.start()
|
||||
|
||||
def advanced_patcher_settings(self):
|
||||
response = None
|
||||
while not (response and response == -1):
|
||||
title = ["Adjust Advanced Patcher Settings, for developers ONLY"]
|
||||
menu = Utilities.TUIMenu(title, "Please select an option: ", auto_number=True, top_level=True)
|
||||
options = [
|
||||
[f"Assume Metal GPU Always:\t\tCurrently {self.constants.imac_vendor}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_metal],
|
||||
[f"Set SMBIOS Mode:\t\t\tCurrently {self.constants.serial_settings}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_serial],
|
||||
[f"DRM Preferences:\t\t\tCurrently {self.constants.drm_support}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).drm_setting],
|
||||
[f"Set Generic Bootstrap:\t\tCurrently {self.constants.boot_efi}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).bootstrap_setting],
|
||||
[
|
||||
f"Disable CPU Friend:\t\t\tCurrently {self.constants.disallow_cpufriend}",
|
||||
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).disable_cpufriend,
|
||||
],
|
||||
[f"Override SMBIOS Spoof:\t\tCurrently {self.constants.override_smbios}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_smbios],
|
||||
[f"Set Custom name {self.constants.custom_cpu_model_value}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).custom_cpu],
|
||||
["Set SeedUtil Status", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_seedutil],
|
||||
]
|
||||
|
||||
for option in options:
|
||||
menu.add_menu_option(option[0], function=option[1])
|
||||
|
||||
response = menu.start()
|
||||
|
||||
def credits(self):
|
||||
Utilities.TUIOnlyPrint(
|
||||
["Credits"],
|
||||
"Press [Enter] to go back.\n",
|
||||
[
|
||||
"""Many thanks to the following:
|
||||
|
||||
- Acidanthera:\tOpenCore, kexts and other tools
|
||||
- Khronokernel:\tWriting and maintaining this patcher
|
||||
- DhinakG:\t\tWriting and maintaining this patcher
|
||||
- ASentientBot:\tLegacy Acceleration Patches
|
||||
- Ausdauersportler:\tLinking fixes for SNBGraphicsFB and AMDX3000
|
||||
- Syncretic:\t\tAAAMouSSE and telemetrap
|
||||
- cdf:\t\tNightShiftEnabler and Innie"""
|
||||
],
|
||||
).start()
|
||||
|
||||
def PatchVolume(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Patching System Volume"])
|
||||
big_sur = """Patches Root volume to fix misc issues such as:
|
||||
|
||||
- Graphics Acceleration for non-Metal GPUs
|
||||
- Nvidia: Tesla - Fermi (8000-500 series)
|
||||
- Intel: Ironlake - Sandy Bridge
|
||||
- AMD: TeraScale 1 and 2 (2000-6000 series)
|
||||
- Audio support for iMac7,1 and iMac8,1
|
||||
|
||||
WARNING: Root Volume Patching is still in active development, please
|
||||
have all important user data backed up. Note when the system volume
|
||||
is patched, you can no longer have Delta updates or have FileVault
|
||||
enabled.
|
||||
|
||||
Supported Options:
|
||||
|
||||
1. Patch System Volume
|
||||
2. Unpatch System Volume (Experimental)
|
||||
B. Exit
|
||||
"""
|
||||
monterey = """Patches Root volume to fix misc issues such as:
|
||||
|
||||
- Graphics Acceleration
|
||||
- Intel: Ivy Bridge (4000 series iGPUs)
|
||||
- Basic Framebuffer and brightness Control (No acceleration)
|
||||
- Nvidia: Tesla - Fermi (8000-500 series)
|
||||
- Intel: Ironlake - Sandy Bridge
|
||||
- AMD: TeraScale 1 and 2 (2000-6000 series)
|
||||
- Audio support for iMac7,1 and iMac8,1
|
||||
|
||||
WARNING: Root Volume Patching is still in active development, please
|
||||
have all important user data backed up. Note when the system volume
|
||||
is patched, you can no longer have Delta updates or have FileVault
|
||||
enabled.
|
||||
|
||||
Supported Options:
|
||||
|
||||
1. Patch System Volume
|
||||
2. Unpatch System Volume (Experimental)
|
||||
B. Exit
|
||||
"""
|
||||
|
||||
default = """
|
||||
This OS has no root patches available to apply, please ensure you're patching a booted
|
||||
install that requires root patches such as macOS Big Sur or Monterey
|
||||
|
||||
Supported Options:
|
||||
|
||||
B. Exit
|
||||
"""
|
||||
no_patch = False
|
||||
if self.constants.detected_os == self.constants.monterey:
|
||||
print(monterey)
|
||||
elif self.constants.detected_os == self.constants.big_sur:
|
||||
print(big_sur)
|
||||
else:
|
||||
print(default)
|
||||
no_patch = True
|
||||
change_menu = input("Patch System Volume?: ")
|
||||
if no_patch is not True and change_menu == "1":
|
||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.computer.real_model, self.constants).start_patch()
|
||||
elif no_patch is not True and change_menu == "2":
|
||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.computer.real_model, self.constants).start_unpatch()
|
||||
else:
|
||||
print("Returning to main menu")
|
||||
|
||||
def main_menu(self):
|
||||
response = None
|
||||
while not (response and response == -1):
|
||||
title = [
|
||||
f"OpenCore Legacy Patcher v{self.constants.patcher_version}",
|
||||
f"Selected Model: {self.constants.custom_model or self.computer.real_model}",
|
||||
]
|
||||
|
||||
if (self.constants.custom_model or self.computer.real_model) not in ModelArray.SupportedSMBIOS and self.constants.allow_oc_everywhere is False:
|
||||
in_between = [
|
||||
"Your model is not supported by this patcher for running unsupported OSes!",
|
||||
"",
|
||||
'If you plan to create the USB for another machine, please select the "Change Model" option in the menu.',
|
||||
]
|
||||
elif not self.constants.custom_model and self.computer.real_model == "iMac7,1" and "SSE4.1" not in self.computer.cpu.flags:
|
||||
in_between = [
|
||||
"Your model requires a CPU upgrade to a CPU supporting SSE4.1+ to be supported by this patcher!",
|
||||
"",
|
||||
f'If you plan to create the USB for another {self.computer.real_model} with SSE4.1+, please select the "Change Model" option in the menu.',
|
||||
]
|
||||
elif self.constants.custom_model == "iMac7,1":
|
||||
in_between = ["This model is supported", "However please ensure the CPU has been upgraded to support SSE4.1+"]
|
||||
else:
|
||||
in_between = ["This model is supported"]
|
||||
|
||||
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.computer.real_model) in ModelArray.SupportedSMBIOS) or self.constants.allow_oc_everywhere is True
|
||||
else []
|
||||
) + [
|
||||
["Install OpenCore to USB/internal drive", self.install_opencore],
|
||||
["Post-Install Volume Patch", self.PatchVolume],
|
||||
["Change Model", self.change_model],
|
||||
["Patcher Settings", self.patcher_settings],
|
||||
["Credits", self.credits],
|
||||
]
|
||||
|
||||
for option in options:
|
||||
menu.add_menu_option(option[0], function=option[1])
|
||||
|
||||
response = menu.start()
|
||||
|
||||
if getattr(sys, "frozen", False) and self.constants.recovery_status is False:
|
||||
subprocess.run("""osascript -e 'tell application "Terminal" to close first window' & exit""", shell=True)
|
||||
|
||||
|
||||
OpenCoreLegacyPatcher().main_menu()
|
||||
if __name__ == '__main__':
|
||||
main.OpenCoreLegacyPatcher()
|
||||
@@ -1,17 +1,18 @@
|
||||
# -*- 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=[],
|
||||
excludes=[],
|
||||
excludes=['wxPython', 'wxpython'],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
@@ -34,10 +35,10 @@ exe = EXE(pyz,
|
||||
console=True )
|
||||
app = BUNDLE(exe,
|
||||
name='OpenCore-Patcher.app',
|
||||
icon="OC-Patcher.icns",
|
||||
bundle_identifier=None,
|
||||
icon="payloads/OC-Patcher-TUI.icns",
|
||||
bundle_identifier="com.dortania.opencore-legacy-patcher-tui",
|
||||
info_plist={
|
||||
"CFBundleShortVersionString": Constants.Constants().patcher_version,
|
||||
"CFBundleShortVersionString": constants.Constants().patcher_version,
|
||||
"CFBundleExecutable": "MacOS/Launcher",
|
||||
"NSHumanReadableCopyright": "Copyright 2020-2021 Dortania"
|
||||
"NSHumanReadableCopyright": constants.Constants().copyright_date,
|
||||
})
|
||||
61
README.md
@@ -3,32 +3,54 @@
|
||||
<h1>OpenCore Legacy Patcher</h1>
|
||||
</div>
|
||||
|
||||
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-based project revolving around [Acidanthera's OpenCorePkg](https://github.com/acidanthera/OpenCorePkg) and [Lilu](https://github.com/acidanthera/Lilu) for both running and unlocking features in macOS on supported and unsupported Macs.
|
||||
|
||||
Supported features:
|
||||
Our project's main goal is to breath new life to Macs no longer supported by Apple, allowing for the installation and usage of macOS Big Sur and newer on machines as old as 2007.
|
||||
|
||||
----------
|
||||
|
||||
  
|
||||
|
||||
----------
|
||||
|
||||
Noteworthy features of OpenCore Legacy Patcher:
|
||||
|
||||
* Support for macOS Big Sur and Monterey
|
||||
* Native Over the Air(OTA) System Updates
|
||||
* Supports Penryn and newer Macs
|
||||
* Full support for WPA Wifi and Personal Hotspot on BCM943224 and newer chipsets
|
||||
* System Integrity Protection, FileVault 2, .im4m Secure Boot and Vaulting
|
||||
* WPA Wifi and Personal Hotspot support
|
||||
* Native OTA OS DELTA updates on all Macs
|
||||
* Recovery OS, Safe Mode and Single-user Mode booting
|
||||
* Recovery OS, Safe Mode and Single-user Mode booting on non-native OSes
|
||||
* Unlocks features such as Sidecar and AirPlay to Mac even on native Macs
|
||||
* Enable enhanced SATA and NVMe power management on non-stock hardware
|
||||
* Zero firmware patching required (ie. APFS ROM patching)
|
||||
* GPU Switching on MacBook Pro models (2012 and newer)
|
||||
* Graphics acceleration for both Metal and non-Metal GPUs
|
||||
|
||||
----------
|
||||
|
||||
Note: Only clean-installs and upgrades are supported, macOS Big Sur installs already patched with other patchers, such as [Patched Sur](https://github.com/BenSova/Patched-Sur) or [bigmac](https://github.com/StarPlayrX/bigmac), cannot be used due to broken file integrity with APFS snapshots and SIP.
|
||||
|
||||
* You can however reinstall macOS with this patcher and retain your original data
|
||||
|
||||
Note 2: Currently OpenCore Legacy Patcher officially supports patching to run macOS 11, Big Sur installs. For older OSes, OpenCore may function however support is currently not provided from Dortania.
|
||||
Note 2: Currently OpenCore Legacy Patcher officially supports patching to run macOS Big Sur and Monterey 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)
|
||||
|
||||
## Getting Started
|
||||
|
||||
To start using the project, please see our in-depth guide:
|
||||
|
||||
* [OpenCore Legacy Patcher Guide](https://dortania.github.io/OpenCore-Legacy-Patcher/)
|
||||
|
||||
## Support
|
||||
|
||||
To get aid with the patcher, we recommend joining the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN). We're actively there and is the quickest way to receive help. For bigger issues such as patcher crashing on build and such, we recommend opening an issue right here on GitHub(Please review [How to debug with OpenCore](https://dortania.github.io/OpenCore-Legacy-Patcher/DEBUG.html) before opening issues):
|
||||
To get aid with the patcher, we recommend joining the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN). We're actively there and is the quickest way to receive help.
|
||||
|
||||
* Please review our docs on [how to debug with OpenCore](https://dortania.github.io/OpenCore-Legacy-Patcher/DEBUG.html) to gather important information to help others with troubleshooting.
|
||||
|
||||
* [OpenCore Legacy Patcher's Issue's tab](https://github.com/dortania/OpenCore-Legacy-Patcher/issues)
|
||||
## Running from source
|
||||
|
||||
Nightly builds can be found here courteous of nightly.link: [Nightly OpenCore-Patcher.app](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app/main/OpenCore-Patcher.app.zip)
|
||||
To run the project from source, see here: [Build and run from source](./SOURCE.md)
|
||||
|
||||
## Credits
|
||||
|
||||
@@ -43,17 +65,26 @@ Nightly builds can be found here courteous of nightly.link: [Nightly OpenCore-Pa
|
||||
* 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
|
||||
* [ASentientBot](https://github.com/ASentientBot), [EduCovas](https://github.com/educovas) and [ASentientHedgehog](https://github.com/moosethegoose2213)
|
||||
* Legacy Acceleration Patch set and documentation, [Moraea Organization](https://github.com/moraea)
|
||||
* [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
|
||||
* [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
|
||||
* [Mr.Macintosh](https://mrmacintosh.com)
|
||||
* Endless hours helping architect and troubleshoot many portions of the project
|
||||
* MacRumors and Unsupported Mac Communities
|
||||
* Endless testing, reporting issues
|
||||
* Apple
|
||||
|
||||
1032
Resources/Build.py
@@ -1,479 +0,0 @@
|
||||
# Handle misc CLI menu options
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
from __future__ import print_function
|
||||
import subprocess
|
||||
|
||||
from Resources import Constants, Utilities
|
||||
|
||||
|
||||
class MenuOptions:
|
||||
def __init__(self, model, versions):
|
||||
self.model = model
|
||||
self.constants: Constants.Constants = versions
|
||||
|
||||
def change_verbose(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set Verbose mode"])
|
||||
change_menu = input("Enable Verbose mode(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.verbose_debug = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.verbose_debug = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_oc(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set OpenCore DEBUG mode"])
|
||||
change_menu = input("Enable OpenCore DEBUG mode(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.opencore_debug = True
|
||||
self.constants.opencore_build = "DEBUG"
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.opencore_debug = False
|
||||
self.constants.opencore_build = "RELEASE"
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_kext(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set Kext DEBUG mode"])
|
||||
change_menu = input("Enable Kext DEBUG mode(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.kext_debug = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.kext_debug = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_metal(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Assume Metal GPU Always in iMac"])
|
||||
print(
|
||||
"""This is for iMacs that have upgraded Metal GPUs, otherwise
|
||||
Patcher assumes based on stock configuration (ie. iMac10,x-12,x)
|
||||
|
||||
Valid Options:
|
||||
|
||||
1. None(stock GPU)
|
||||
2. Nvidia GPU
|
||||
3. AMD GPU
|
||||
|
||||
Note: Patcher will detect whether hardware has been upgraded regardless, this
|
||||
option is for those patching on a different machine or OCLP cannot detect.
|
||||
"""
|
||||
)
|
||||
change_menu = input("Set GPU Patch type(ie. 1): ")
|
||||
if change_menu == "1":
|
||||
self.constants.metal_build = False
|
||||
self.constants.imac_vendor = "None"
|
||||
elif change_menu == "2":
|
||||
self.constants.metal_build = True
|
||||
self.constants.imac_vendor = "Nvidia"
|
||||
elif change_menu == "3":
|
||||
self.constants.metal_build = True
|
||||
self.constants.imac_vendor = "AMD"
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_serial(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set SMBIOS Mode"])
|
||||
print(
|
||||
"""This section is for setting how OpenCore generates the SMBIOS
|
||||
Recommended for adanced users who want control how serials are handled
|
||||
|
||||
Valid options:
|
||||
|
||||
1. Minimal:\tUse original serials and minimally update SMBIOS
|
||||
2. Moderate:\tReplace entire SMBIOS but keep original serials
|
||||
3. Advanced:\tReplace entire SMBIOS and generate new serials
|
||||
|
||||
Note: For new users we recommend leaving as default(1. Minimal)
|
||||
"""
|
||||
)
|
||||
change_menu = input("Set SMBIOS Mode(ie. 1): ")
|
||||
if change_menu == "1":
|
||||
self.constants.serial_settings = "Minimal"
|
||||
elif change_menu == "2":
|
||||
self.constants.serial_settings = "Moderate"
|
||||
elif change_menu == "3":
|
||||
self.constants.serial_settings = "Advanced"
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_showpicker(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set OpenCore Picker mode"])
|
||||
print(
|
||||
"""By default, OpenCore will show its boot picker each time on boot up,
|
||||
however this can be disabled by default and be shown on command by repeatedly
|
||||
pressing the "Esc" key
|
||||
"""
|
||||
)
|
||||
change_menu = input("Show OpenCore Picker by default(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.showpicker = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.showpicker = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_vault(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set OpenCore Vaulting"])
|
||||
print(
|
||||
"""By default, this patcher will sign all your files and ensure none of the
|
||||
contents can be tampered with. However for more advanced users, you may
|
||||
want to be able to freely edit the config.plist and files.
|
||||
|
||||
Note: For security reasons, OpenShell will be disabled when Vault is set.
|
||||
|
||||
"""
|
||||
)
|
||||
change_menu = input("Enable Vault(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.vault = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.vault = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_sip(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set SIP and SecureBootModel"])
|
||||
print(
|
||||
"""SIP and SecureBootModel are used to ensure proper OTA functionality,
|
||||
however to patch the root volume both of these must be disabled.
|
||||
Only disable is absolutely necessary. SIP value = 0xFEF
|
||||
|
||||
Valid options:
|
||||
|
||||
1. Enable Both
|
||||
2. Disable SIP only
|
||||
3. Disable SecureBootModel Only
|
||||
4. Disable Both
|
||||
|
||||
"""
|
||||
)
|
||||
change_menu = input("Set SIP and SecureBootModel(ie. 1): ")
|
||||
if change_menu == "1":
|
||||
self.constants.sip_status = True
|
||||
self.constants.secure_status = True
|
||||
elif change_menu == "2":
|
||||
self.constants.sip_status = False
|
||||
self.constants.secure_status = True
|
||||
elif change_menu == "3":
|
||||
self.constants.sip_status = True
|
||||
self.constants.secure_status = False
|
||||
elif change_menu == "4":
|
||||
self.constants.sip_status = False
|
||||
self.constants.secure_status = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def set_amfi(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Disable AMFI"])
|
||||
print(
|
||||
"""Required for Root Patching non-Metal GPUs
|
||||
in macOS Big Sur. Without this, will receive kernel panic once
|
||||
Patcher finishes installing legacy acceleration patches.
|
||||
"""
|
||||
)
|
||||
change_menu = input("Disable AMFI(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.disable_amfi = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.disable_amfi = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def bootstrap_setting(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set Bootstrap method"])
|
||||
print(
|
||||
"""Sets OpenCore's bootstrap method, currently the patcher supports the
|
||||
following options.
|
||||
|
||||
Valid options:
|
||||
|
||||
1. System/Library/CoreServices/boot.efi (default)
|
||||
2. EFI/BOOT/BOOTx64.efi
|
||||
3. Exit
|
||||
|
||||
Note: S*/L*/C*/boot.efi method is only installed to the EFI partition only
|
||||
and not to macOS itself.
|
||||
|
||||
Recommended to set to BOOTx64.efi in situations where your Mac cannot
|
||||
see the EFI Boot entry in the boot picker.
|
||||
|
||||
"""
|
||||
)
|
||||
change_menu = input("Set Bootstrap method: ")
|
||||
if change_menu == "1":
|
||||
self.constants.boot_efi = False
|
||||
elif change_menu == "2":
|
||||
self.constants.boot_efi = True
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def drm_setting(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set DRM preferences"])
|
||||
print(
|
||||
"""Sets OpenCore's DRM preferences for iMac13,x and iMac14,x.
|
||||
In Big Sur, some DRM based content may be broken by
|
||||
default in AppleTV, Photobooth, etc.
|
||||
|
||||
To resolve, you can opt to disable Intel QuickSync support in
|
||||
favor of Nvidia's Software rendering. This can aid in DRM however
|
||||
greatly hampers Video rendering performance in Final Cut Pro and
|
||||
other programs relying on such features.
|
||||
|
||||
Recommend only disabling if absolutely required.
|
||||
"""
|
||||
)
|
||||
change_menu = input("Enable Nvidia's Software DRM rendering(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.drm_support = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.drm_support = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def allow_native_models(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Allow OpenCore on native Models"])
|
||||
print(
|
||||
"""Allows natively supported Macs to use OpenCore. Recommended
|
||||
for users with 3rd Party NVMe SSDs to achieve improved overall
|
||||
power usage.
|
||||
|
||||
"""
|
||||
)
|
||||
change_menu = input("Allow OpenCore on all Models(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.allow_oc_everywhere = True
|
||||
self.constants.serial_settings = "None"
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.allow_oc_everywhere = False
|
||||
self.constants.serial_settings = "Minimal"
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def custom_cpu(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set custom CPU Model Name"])
|
||||
print(
|
||||
"""Change reported CPU Model name in About This Mac
|
||||
Custom names will report as follows:
|
||||
|
||||
1: Original Name: 2.5 Ghz Dual-Core Intel Core i5
|
||||
2. CPU name: Intel(R) Core(TM) i5-3210M CPU @ 2.50Ghz
|
||||
3. Custom Name: 2.5Ghz Cotton Candy (example)
|
||||
"""
|
||||
)
|
||||
if self.constants.custom_cpu_model_value == "":
|
||||
if self.constants.custom_cpu_model == 0:
|
||||
print("Currently using original name")
|
||||
else:
|
||||
print("Currently using CPU name")
|
||||
else:
|
||||
print(f"Custom CPU name currently: {self.constants.custom_cpu_model_value}")
|
||||
change_menu = input("Set custom CPU Name(1,2,3): ")
|
||||
if change_menu == "1":
|
||||
self.constants.custom_cpu_model = 2
|
||||
self.constants.custom_cpu_model_value = ""
|
||||
elif change_menu == "2":
|
||||
self.constants.custom_cpu_model = 0
|
||||
self.constants.custom_cpu_model_value = ""
|
||||
elif change_menu == "3":
|
||||
self.constants.custom_cpu_model = 1
|
||||
self.constants.custom_cpu_model_value = input("Enter new CPU Name: ")
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def custom_color_thing(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set custom CPU Model Name"])
|
||||
print(
|
||||
"""Change reported CPU Model name in About This Mac
|
||||
Custom names will report as follows:
|
||||
|
||||
1: Custom Color
|
||||
2. Reset
|
||||
"""
|
||||
)
|
||||
change_menu = input("Set custom CPU Name(1,2,3): ")
|
||||
if change_menu == "1":
|
||||
print("")
|
||||
# temp_tk_root = tk.Tk()
|
||||
# temp_tk_root.wm_withdraw()
|
||||
# self.constants.custom_color = colorchooser.askcolor(title="Choose color")
|
||||
# temp_tk_root.destroy()
|
||||
elif change_menu == "2":
|
||||
self.constants.custom_color = ""
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def disable_cpufriend(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Disable CPU Friend?"])
|
||||
print(
|
||||
"""Only recommended for advanced users
|
||||
Disabling CPUFriend forces macOS into using a different
|
||||
Mac's power profile for CPUs and GPUs, which can harm the
|
||||
hardware
|
||||
"""
|
||||
)
|
||||
change_menu = input("Disable CPU Friend?(y/n): ")
|
||||
if change_menu == "y":
|
||||
self.constants.disallow_cpufriend = True
|
||||
elif change_menu == "n":
|
||||
self.constants.disallow_cpufriend = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def set_seedutil(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Set SeedUtil Status"])
|
||||
print(
|
||||
"""Used for setting OS Update Preferences
|
||||
|
||||
Valid options:
|
||||
1. Public Release Seed (Default)
|
||||
2. Public Beta Seed
|
||||
3. Developer Beta Seed
|
||||
4. Check SeedUtil's current status
|
||||
"""
|
||||
)
|
||||
|
||||
change_menu = input("Set update status(Press [ENTER] to exit): ")
|
||||
if change_menu == "1":
|
||||
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
elif change_menu == "2":
|
||||
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(
|
||||
["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "enroll", "PublicSeed"], stdout=subprocess.PIPE
|
||||
).stdout.decode().strip().encode()
|
||||
elif change_menu == "3":
|
||||
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(
|
||||
["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "enroll", "DeveloperSeed"], stdout=subprocess.PIPE
|
||||
).stdout.decode().strip().encode()
|
||||
elif change_menu == "4":
|
||||
result = subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "current"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
result = [i.partition(":")[2] for i in result.stdout.decode().split("\n") if "Currently enrolled in" in i][0]
|
||||
print(f"SeedUtil Current Status: {result}")
|
||||
input("\nPress [ENTER] to continue")
|
||||
self.set_seedutil()
|
||||
else:
|
||||
print("Returning to main menu")
|
||||
|
||||
def set_smbios(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Override SMBIOS Spoof"])
|
||||
print(
|
||||
"""Change model OpenCore spoofs Mac too
|
||||
|
||||
Valid options:
|
||||
1. Default set by OpenCore (Default)
|
||||
2. User Override
|
||||
3. Disable all spoofing (unsupported configuration)
|
||||
"""
|
||||
)
|
||||
|
||||
change_menu = input("Set SMBIOS status: ")
|
||||
if change_menu == "1":
|
||||
print("Setting SMBIOS spoof to default mode")
|
||||
self.constants.override_smbios = "Default"
|
||||
elif change_menu == "2":
|
||||
custom_smbios = input("Set new SMBIOS mode: ")
|
||||
try:
|
||||
test = self.constants.board_id[custom_smbios]
|
||||
self.constants.override_smbios = custom_smbios
|
||||
except KeyError:
|
||||
print("Unsupported SMBIOS, defaulting to Default setting")
|
||||
self.constants.override_smbios = "Default"
|
||||
elif change_menu == "3":
|
||||
print("Disabling SMBIOS spoof")
|
||||
self.constants.override_smbios = self.model
|
||||
else:
|
||||
print("Returning to main menu")
|
||||
|
||||
def allow_firewire(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Allow FireWire Boot Support"])
|
||||
print(
|
||||
"""
|
||||
In macOS Catalina and newer, Apple restricted
|
||||
usage of FireWire devices to boot macOS for
|
||||
security concerns relating to DMA access.
|
||||
|
||||
If you are comfortable lowering the security,
|
||||
you can re-enable FireWire support for Catalina
|
||||
and newer.
|
||||
|
||||
Note: MacBook5,x-7,1 don't support FireWire boot
|
||||
"""
|
||||
)
|
||||
|
||||
change_menu = input("Enable FireWire Boot support?(y/n): ")
|
||||
if change_menu == "y":
|
||||
self.constants.firewire_boot = True
|
||||
elif change_menu == "n":
|
||||
self.constants.firewire_boot = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def allow_nvme(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Allow NVMe UEFI Support"])
|
||||
print(
|
||||
"""
|
||||
For machines not natively supporting NVMe,
|
||||
this option allows you to see and boot NVMe
|
||||
drive in OpenCore's picker
|
||||
|
||||
Not required if your machine natively supports NVMe
|
||||
|
||||
Note: You must have OpenCore on a bootable volume
|
||||
first, ie. USB or SATA drive. Once loaded,
|
||||
OpenCore will enable NVMe support in it's picker
|
||||
"""
|
||||
)
|
||||
|
||||
change_menu = input("Enable NVMe Boot support?(y/n): ")
|
||||
if change_menu == "y":
|
||||
self.constants.nvme_boot = True
|
||||
elif change_menu == "n":
|
||||
self.constants.nvme_boot = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def enable_terascale(self):
|
||||
Utilities.cls()
|
||||
Utilities.header(["Enable TeraScale 2 Acceleration"])
|
||||
print(
|
||||
"""
|
||||
Currently TeraScale 2 graphics acceleration is in beta with
|
||||
some unfortunate bugs on login including strobing colours
|
||||
until the user forces Million Colours on the Display with
|
||||
SwitchResX or resXtreme
|
||||
|
||||
Users sensitive to seizures should avoid using TeraScale 2
|
||||
patches or ask someone to handle inital setup to ensure
|
||||
no issues
|
||||
|
||||
Note: Acceleration only applies to macOS Big Sur
|
||||
"""
|
||||
)
|
||||
|
||||
change_menu = input("Enable TS2 Acceleration?(y/n): ")
|
||||
if change_menu == "y":
|
||||
self.constants.terascale_2_patch = True
|
||||
elif change_menu == "n":
|
||||
self.constants.terascale_2_patch = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
@@ -1,687 +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
|
||||
from typing import Optional
|
||||
|
||||
from Resources import device_probe
|
||||
|
||||
|
||||
class Constants:
|
||||
def __init__(self):
|
||||
self.patcher_version = "0.2.0"
|
||||
self.opencore_commit = "4e0ff2d - 05-23-2021"
|
||||
self.opencore_version = "0.7.0"
|
||||
self.lilu_version = "1.5.4"
|
||||
self.whatevergreen_version = "1.5.1"
|
||||
self.airportbcrmfixup_version = "2.1.3"
|
||||
self.bcm570_version = "1.0.1"
|
||||
self.marvel_version = "1.0.0"
|
||||
self.nforce_version = "1.0.0"
|
||||
self.mce_version = "1.0.0"
|
||||
self.mousse_version = "0.95"
|
||||
self.telemetrap_version = "1.0.0"
|
||||
self.corecaptureelcap_version = "1.0.0"
|
||||
self.io80211elcap_version = "1.0.0"
|
||||
self.io80211high_sierra_version = "1.0.0"
|
||||
self.io80211mojave_version = "1.0.0"
|
||||
self.applealc_version = "1.6.2"
|
||||
self.restrictevents_version = "1.0.3"
|
||||
self.restrictevents_mbp_version = "1.0.3"
|
||||
self.piixata_version = "1.0.0"
|
||||
self.backlight_version = "1.0.1"
|
||||
self.backlight_injector_version = "1.0.0"
|
||||
self.cpufriend_version = "1.2.4"
|
||||
self.nightshift_version = "1.1.0"
|
||||
self.smcspoof_version = "1.0.0"
|
||||
self.nvmefix_version = "1.0.9"
|
||||
self.sidecarfixup_version = "1.0.2"
|
||||
self.debugenhancer_version = "1.0.3"
|
||||
self.innie_version = "1.3.0"
|
||||
self.fw_kext = "1.0.0"
|
||||
self.patcher_support_pkg_version = "0.0.10" # PatcherSupportPkg
|
||||
|
||||
# Get resource path
|
||||
self.current_path = Path(__file__).parent.parent.resolve()
|
||||
self.payload_path = self.current_path / Path("payloads")
|
||||
|
||||
# Hardware
|
||||
self.computer: device_probe.Computer = None # type: ignore
|
||||
|
||||
self.custom_model: Optional[str] = None
|
||||
self.custom_mxm_gpu: bool = False
|
||||
|
||||
# Patcher Settings
|
||||
self.opencore_debug = False
|
||||
self.opencore_build = "RELEASE"
|
||||
self.kext_debug = False
|
||||
self.verbose_debug = False
|
||||
self.os_support = 12.0
|
||||
self.metal_build = False
|
||||
self.imac_vendor = "None"
|
||||
self.wifi_build = False
|
||||
self.gui_mode = False
|
||||
self.serial_settings = "Minimal"
|
||||
self.showpicker = True
|
||||
self.vault = False
|
||||
self.sip_status = True
|
||||
self.secure_status = False
|
||||
self.detected_os = 0
|
||||
self.boot_efi = False
|
||||
self.drm_support = False
|
||||
self.allow_oc_everywhere = False
|
||||
self.custom_cpu_model = 2
|
||||
self.custom_cpu_model_value = ""
|
||||
self.custom_color = ""
|
||||
self.download_ram = False
|
||||
self.disallow_cpufriend = False
|
||||
self.recovery_status = False
|
||||
self.override_smbios = "Default"
|
||||
self.apecid_support = False
|
||||
self.firewire_boot = False
|
||||
self.nvme_boot = False
|
||||
self.disable_amfi = False
|
||||
self.terascale_2_patch = False
|
||||
|
||||
# OS Versions
|
||||
self.tiger = 8
|
||||
self.leopard = 9
|
||||
self.snow_leopard = 10
|
||||
self.lion = 11
|
||||
self.mountain_lion = 12
|
||||
self.mavericks = 13
|
||||
self.yosemite = 14
|
||||
self.el_capitan = 15
|
||||
self.sierra = 16
|
||||
self.high_sierra = 17
|
||||
self.mojave = 18
|
||||
self.catalina = 19
|
||||
self.big_sur = 20
|
||||
self.monterey = 21
|
||||
|
||||
# Vendor IDs
|
||||
self.pci_nvidia = "10DE"
|
||||
self.pci_amd_ati = "1002"
|
||||
self.pci_intel = "8086"
|
||||
self.pci_broadcom = "14E4"
|
||||
self.pci_atheros = "168C"
|
||||
self.pci_apple = "106B"
|
||||
|
||||
# Class Codes
|
||||
# https://pci-ids.ucw.cz/read/PD
|
||||
self.classcode_sata = "01060100"
|
||||
self.classcode_nvme = "02080100"
|
||||
self.classcode_nvme_generic = "02800100"
|
||||
self.classcode_wifi = "00800200"
|
||||
self.classcode_gpu = "00000300"
|
||||
self.classcode_gpu_variant = "00800300"
|
||||
self.classcode_xhci = "30030C00"
|
||||
|
||||
# Nvidia GPU Architecture
|
||||
self.arch_tesla = "NV50"
|
||||
self.arch_fermi = "GF100"
|
||||
self.arch_kepler = "GK100"
|
||||
|
||||
# External Files
|
||||
self.url_patcher_support_pkg = "https://github.com/dortania/PatcherSupportPkg/releases/download/"
|
||||
|
||||
# Payload Location
|
||||
# OpenCore
|
||||
@property
|
||||
def opencore_zip_source(self):
|
||||
return self.payload_path / Path(f"OpenCore/OpenCore-{self.opencore_build}.zip")
|
||||
|
||||
@property
|
||||
def plist_template(self):
|
||||
return self.payload_path / Path("Config/config.plist")
|
||||
|
||||
# Mount Location
|
||||
@property
|
||||
def payload_mnt1_path(self):
|
||||
return self.payload_path / Path("mnt1")
|
||||
|
||||
# ACPI
|
||||
@property
|
||||
def pci_ssdt_path(self):
|
||||
return self.payload_path / Path("ACPI/SSDT-CPBG.aml")
|
||||
|
||||
@property
|
||||
def windows_ssdt_path(self):
|
||||
return self.payload_path / Path("ACPI/SSDT-PCI.aml")
|
||||
|
||||
# Drivers
|
||||
@property
|
||||
def nvme_driver_path(self):
|
||||
return self.payload_path / Path("Drivers/NvmExpressDxe.efi")
|
||||
|
||||
@property
|
||||
def exfat_legacy_driver_path(self):
|
||||
return self.payload_path / Path("Drivers/ExFatDxeLegacy.efi")
|
||||
|
||||
@property
|
||||
def xhci_driver_path(self):
|
||||
return self.payload_path / Path("Drivers/XhciDxe.efi")
|
||||
|
||||
# Kexts
|
||||
@property
|
||||
def payload_kexts_path(self):
|
||||
return self.payload_path / Path("Kexts")
|
||||
|
||||
@property
|
||||
def lilu_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/Lilu-v{self.lilu_version}.zip")
|
||||
|
||||
@property
|
||||
def whatevergreen_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/WhateverGreen-v{self.whatevergreen_version}.zip")
|
||||
|
||||
@property
|
||||
def airportbcrmfixup_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/AirportBrcmFixup-v{self.airportbcrmfixup_version}.zip")
|
||||
|
||||
@property
|
||||
def restrictevents_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-v{self.restrictevents_version}.zip")
|
||||
|
||||
@property
|
||||
def restrictevents_mbp_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-MBP91-v{self.restrictevents_mbp_version}.zip")
|
||||
|
||||
@property
|
||||
def bcm570_path(self):
|
||||
return self.payload_kexts_path / Path(f"Ethernet/CatalinaBCM5701Ethernet-v{self.bcm570_version}.zip")
|
||||
|
||||
@property
|
||||
def marvel_path(self):
|
||||
return self.payload_kexts_path / Path(f"Ethernet/MarvelYukonEthernet-v{self.marvel_version}.zip")
|
||||
|
||||
@property
|
||||
def nforce_path(self):
|
||||
return self.payload_kexts_path / Path(f"Ethernet/nForceEthernet-v{self.nforce_version}.zip")
|
||||
|
||||
@property
|
||||
def mce_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/AppleMCEReporterDisabler-v{self.mce_version}.zip")
|
||||
|
||||
@property
|
||||
def mousse_path(self):
|
||||
return self.payload_kexts_path / Path(f"SSE/AAAMouSSE-v{self.mousse_version}.zip")
|
||||
|
||||
@property
|
||||
def telemetrap_path(self):
|
||||
return self.payload_kexts_path / Path(f"SSE/telemetrap-v{self.telemetrap_version}.zip")
|
||||
|
||||
@property
|
||||
def corecaptureelcap_path(self):
|
||||
return self.payload_kexts_path / Path(f"Wifi/corecaptureElCap-v{self.corecaptureelcap_version}.zip")
|
||||
|
||||
@property
|
||||
def io80211elcap_path(self):
|
||||
return self.payload_kexts_path / Path(f"Wifi/IO80211ElCap-v{self.io80211elcap_version}.zip")
|
||||
|
||||
@property
|
||||
def io80211high_sierra_path(self):
|
||||
return self.payload_kexts_path / Path(f"Wifi/IO80211HighSierra-v{self.io80211high_sierra_version}.zip")
|
||||
|
||||
@property
|
||||
def io80211mojave_path(self):
|
||||
return self.payload_kexts_path / Path(f"Wifi/IO80211Mojave-v{self.io80211mojave_version}.zip")
|
||||
|
||||
@property
|
||||
def applealc_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/AppleALC-v{self.applealc_version}.zip")
|
||||
|
||||
@property
|
||||
def piixata_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/AppleIntelPIIXATA-v{self.piixata_version}.zip")
|
||||
|
||||
@property
|
||||
def backlight_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/AppleBacklightFixup-v{self.backlight_version}.zip")
|
||||
|
||||
@property
|
||||
def backlight_injector_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/BacklightInjector-v{self.backlight_injector_version}.zip")
|
||||
|
||||
@property
|
||||
def cpufriend_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/CPUFriend-v{self.cpufriend_version}.zip")
|
||||
|
||||
@property
|
||||
def nightshift_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/NightShiftEnabler-v{self.nightshift_version}.zip")
|
||||
|
||||
@property
|
||||
def smcspoof_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/SMC-Spoof-v{self.smcspoof_version}.zip")
|
||||
|
||||
@property
|
||||
def nvmefix_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/NVMeFix-v{self.nvmefix_version}.zip")
|
||||
|
||||
@property
|
||||
def sidecarfixup_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/SidecarFixup-v{self.sidecarfixup_version}.zip")
|
||||
|
||||
@property
|
||||
def debugenhancer_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/DebugEnhancer-v{self.debugenhancer_version}.zip")
|
||||
|
||||
@property
|
||||
def innie_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/Innie-v{self.innie_version}.zip")
|
||||
|
||||
@property
|
||||
def plist_folder_path(self):
|
||||
return self.payload_kexts_path / Path("Plists")
|
||||
|
||||
@property
|
||||
def platform_plugin_plist_path(self):
|
||||
return self.plist_folder_path / Path("PlatformPlugin")
|
||||
|
||||
@property
|
||||
def fw_family_path(self):
|
||||
return self.payload_kexts_path / Path(f"FireWire/IOFireWireFamily-v{self.fw_kext}.zip")
|
||||
|
||||
@property
|
||||
def fw_sbp2_path(self):
|
||||
return self.payload_kexts_path / Path(f"FireWire/IOFireWireSBP2-v{self.fw_kext}.zip")
|
||||
|
||||
@property
|
||||
def fw_bus_path(self):
|
||||
return self.payload_kexts_path / Path(f"FireWire/IOFireWireSerialBusProtocolTransport-v{self.fw_kext}.zip")
|
||||
|
||||
# Build Location
|
||||
@property
|
||||
def build_path(self):
|
||||
return self.current_path / Path("Build-Folder/")
|
||||
|
||||
@property
|
||||
def opencore_release_folder(self):
|
||||
return self.build_path / Path(f"OpenCore-{self.opencore_build}")
|
||||
|
||||
@property
|
||||
def opencore_zip_copied(self):
|
||||
return self.build_path / Path(f"OpenCore-{self.opencore_build}.zip")
|
||||
|
||||
@property
|
||||
def oc_folder(self):
|
||||
return self.opencore_release_folder / Path("EFI/OC/")
|
||||
|
||||
@property
|
||||
def plist_path(self):
|
||||
return self.oc_folder / Path("config.plist")
|
||||
|
||||
@property
|
||||
def acpi_path(self):
|
||||
return self.oc_folder / Path("ACPI")
|
||||
|
||||
@property
|
||||
def drivers_path(self):
|
||||
return self.oc_folder / Path("Drivers")
|
||||
|
||||
@property
|
||||
def kexts_path(self):
|
||||
return self.oc_folder / Path("Kexts")
|
||||
|
||||
@property
|
||||
def resources_path(self):
|
||||
return self.oc_folder / Path("Resources")
|
||||
|
||||
@property
|
||||
def map_kext_folder(self):
|
||||
return self.kexts_path / Path("USB-Map.kext")
|
||||
|
||||
@property
|
||||
def map_contents_folder(self):
|
||||
return self.map_kext_folder / Path("Contents")
|
||||
|
||||
@property
|
||||
def pp_kext_folder(self):
|
||||
return self.kexts_path / Path("CPUFriendDataProvider.kext")
|
||||
|
||||
@property
|
||||
def pp_contents_folder(self):
|
||||
return self.pp_kext_folder / Path("Contents")
|
||||
|
||||
@property
|
||||
def agdp_kext_folder(self):
|
||||
return self.kexts_path / Path("AGDP-Override.kext")
|
||||
|
||||
@property
|
||||
def agdp_contents_folder(self):
|
||||
return self.agdp_kext_folder / Path("Contents")
|
||||
|
||||
@property
|
||||
def agpm_kext_folder(self):
|
||||
return self.kexts_path / Path("AGPM-Override.kext")
|
||||
|
||||
@property
|
||||
def agpm_contents_folder(self):
|
||||
return self.agpm_kext_folder / Path("Contents")
|
||||
|
||||
@property
|
||||
def amc_kext_folder(self):
|
||||
return self.kexts_path / Path("AMC-Override.kext")
|
||||
|
||||
@property
|
||||
def amc_contents_folder(self):
|
||||
return self.amc_kext_folder / Path("Contents")
|
||||
|
||||
# Tools
|
||||
@property
|
||||
def macserial_path(self):
|
||||
return self.payload_path / Path("Tools/macserial")
|
||||
|
||||
@property
|
||||
def gfxutil_path(self):
|
||||
return self.payload_path / Path("Tools/gfxutil")
|
||||
|
||||
@property
|
||||
def vault_path(self):
|
||||
return self.payload_path / Path("Tools/CreateVault/sign.command")
|
||||
|
||||
# Icons
|
||||
@property
|
||||
def app_icon_path(self):
|
||||
return self.current_path / Path("OC-Patcher.icns")
|
||||
|
||||
@property
|
||||
def icon_path_external(self):
|
||||
return self.payload_path / Path("Icon/External/.VolumeIcon.icns")
|
||||
|
||||
@property
|
||||
def icon_path_internal(self):
|
||||
return self.payload_path / Path("Icon/Internal/.VolumeIcon.icns")
|
||||
|
||||
@property
|
||||
def icon_path_sd(self):
|
||||
return self.payload_path / Path("Icon/SD-Card/.VolumeIcon.icns")
|
||||
|
||||
@property
|
||||
def icon_path_ssd(self):
|
||||
return self.payload_path / Path("Icon/SSD/.VolumeIcon.icns")
|
||||
|
||||
@property
|
||||
def gui_path(self):
|
||||
return self.payload_path / Path("Icon/Resources.zip")
|
||||
|
||||
# Apple Payloads Paths
|
||||
|
||||
@property
|
||||
def payload_apple_root_path_zip(self):
|
||||
return self.payload_path / Path("Apple.zip")
|
||||
|
||||
@property
|
||||
def payload_apple_root_path(self):
|
||||
return self.payload_path / Path("Apple")
|
||||
|
||||
@property
|
||||
def payload_apple_kexts_path(self):
|
||||
return self.payload_apple_root_path / Path("Extensions")
|
||||
|
||||
@property
|
||||
def payload_apple_frameworks_path(self):
|
||||
return self.payload_apple_root_path / Path("Frameworks")
|
||||
|
||||
@property
|
||||
def payload_apple_frameworks_path_accel(self):
|
||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration")
|
||||
|
||||
@property
|
||||
def payload_apple_frameworks_path_accel_ts2(self):
|
||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
|
||||
|
||||
@property
|
||||
def payload_apple_frameworks_path_accel_ivy(self):
|
||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-Ivy-Bridge")
|
||||
|
||||
@property
|
||||
def payload_apple_lauchd_path(self):
|
||||
return self.payload_apple_root_path / Path("LaunchDaemons")
|
||||
|
||||
@property
|
||||
def payload_apple_lauchd_path_accel(self):
|
||||
return self.payload_apple_lauchd_path / Path("Graphics-Acceleration")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path(self):
|
||||
return self.payload_apple_root_path / Path("PrivateFrameworks")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_accel(self):
|
||||
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_accel_ts2(self):
|
||||
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_brightness(self):
|
||||
return self.payload_apple_private_frameworks_path / Path("Brightness-Control")
|
||||
|
||||
# Apple Extensions
|
||||
@property
|
||||
def audio_path(self):
|
||||
return self.payload_apple_kexts_path / Path("Audio")
|
||||
|
||||
# GPU Kexts and Bundles
|
||||
|
||||
@property
|
||||
def legacy_graphics(self):
|
||||
return self.payload_apple_kexts_path / Path("Graphics-Acceleration")
|
||||
|
||||
@property
|
||||
def legacy_nvidia_path(self):
|
||||
return self.legacy_graphics / Path("Nvidia-Tesla-Fermi")
|
||||
|
||||
@property
|
||||
def legacy_nvidia_kepler_path(self):
|
||||
return self.legacy_graphics / Path("Nvidia-Kepler")
|
||||
|
||||
@property
|
||||
def legacy_amd_path(self):
|
||||
return self.legacy_graphics / Path("AMD-TeraScale")
|
||||
|
||||
@property
|
||||
def legacy_amd_path_ts2(self):
|
||||
return self.legacy_graphics / Path("AMD-TeraScale-2")
|
||||
|
||||
@property
|
||||
def legacy_intel_gen1_path(self):
|
||||
return self.legacy_graphics / Path("Intel-Gen5-Ironlake")
|
||||
|
||||
@property
|
||||
def legacy_intel_gen2_path(self):
|
||||
return self.legacy_graphics / Path("Intel-Gen6-SandyBridge")
|
||||
|
||||
@property
|
||||
def legacy_intel_gen3_path(self):
|
||||
return self.legacy_graphics / Path("Intel-Gen7-IvyBridge")
|
||||
|
||||
@property
|
||||
def legacy_general_path(self):
|
||||
return self.legacy_graphics / Path("General-Patches")
|
||||
|
||||
@property
|
||||
def legacy_brightness(self):
|
||||
return self.payload_apple_kexts_path / Path("Brightness-Control")
|
||||
|
||||
csr_values = {
|
||||
"CSR_ALLOW_UNTRUSTED_KEXTS": False, # 0x1 - Allows Unsigned Kexts - Introduced in El Capitan # noqa: E241
|
||||
"CSR_ALLOW_UNRESTRICTED_FS": False, # 0x2 - File System Access - Introduced in El Capitan # noqa: E241
|
||||
"CSR_ALLOW_TASK_FOR_PID": False, # 0x4 - Unrestricted Debugging - Introduced in El Capitan # noqa: E241
|
||||
"CSR_ALLOW_KERNEL_DEBUGGER": False, # 0x8 - Allow Kernel Debugger - Introduced in El Capitan # noqa: E241
|
||||
"CSR_ALLOW_APPLE_INTERNAL": False, # 0x10 - Set AppleInternal Features - Introduced in El Capitan # noqa: E241
|
||||
"CSR_ALLOW_UNRESTRICTED_DTRACE": False, # 0x20 - Unrestricted DTrace usage - Introduced in El Capitan # noqa: E241
|
||||
"CSR_ALLOW_UNRESTRICTED_NVRAM": False, # 0x40 - Unrestricted NVRAM write - Introduced in El Capitan # noqa: E241
|
||||
"CSR_ALLOW_DEVICE_CONFIGURATION": False, # 0x80 - Allow Device Configuration(?) - Introduced in El Capitan # noqa: E241
|
||||
"CSR_ALLOW_ANY_RECOVERY_OS": False, # 0x100 - Disable BaseSystem Verification - Introduced in Sierra # noqa: E241
|
||||
"CSR_ALLOW_UNAPPROVED_KEXTS": False, # 0x200 - Allow Unapproved Kexts - Introduced in High Sierra # noqa: E241
|
||||
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE": False, # 0x400 - Override Executable Policy - Introduced in Mojave # noqa: E241
|
||||
"CSR_ALLOW_UNAUTHENTICATED_ROOT": False, # 0x800 - Allow Root Volume Mounting - Introduced in Big Sur # noqa: E241
|
||||
}
|
||||
|
||||
root_patch_sip_mojave = [
|
||||
# Variables required to root patch in Mojave and Catalina
|
||||
"CSR_ALLOW_UNTRUSTED_KEXTS",
|
||||
"CSR_ALLOW_UNRESTRICTED_FS",
|
||||
"CSR_ALLOW_UNAPPROVED_KEXTS",
|
||||
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE",
|
||||
]
|
||||
|
||||
root_patch_sip_big_sur = [
|
||||
# Variables required to root patch in Big Sur and Monterey
|
||||
"CSR_ALLOW_UNTRUSTED_KEXTS",
|
||||
"CSR_ALLOW_UNRESTRICTED_FS",
|
||||
"CSR_ALLOW_UNAPPROVED_KEXTS",
|
||||
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE",
|
||||
"CSR_ALLOW_UNAUTHENTICATED_ROOT",
|
||||
]
|
||||
|
||||
sbm_values = [
|
||||
"j137",
|
||||
"j680",
|
||||
"j132",
|
||||
"j174",
|
||||
"j140k",
|
||||
"j780",
|
||||
"j213",
|
||||
"j140a",
|
||||
"j152f",
|
||||
"j160",
|
||||
"j230k",
|
||||
"j214k",
|
||||
"j223",
|
||||
"j215",
|
||||
"j185",
|
||||
"j185f",
|
||||
]
|
||||
|
||||
board_id = {
|
||||
"MacBook1,1": "Mac-F4208CC8",
|
||||
"MacBook2,1": "Mac-F4208CA9",
|
||||
"MacBook3,1": "Mac-F22788C8",
|
||||
"MacBook4,1": "Mac-F22788A9",
|
||||
"MacBook5,1": "Mac-F42D89C8",
|
||||
"MacBook5,2": "Mac-F22788AA",
|
||||
"MacBook6,1": "Mac-F22C8AC8",
|
||||
"MacBook7,1": "Mac-F22C89C8",
|
||||
"MacBook8,1": "Mac-BE0E8AC46FE800CC",
|
||||
"MacBook9,1": "Mac-9AE82516C7C6B903",
|
||||
"MacBook10,1": "Mac-EE2EBD4B90B839A8",
|
||||
"MacBookAir1,1": "Mac-F42C8CC8",
|
||||
"MacBookAir2,1": "Mac-F42D88C8",
|
||||
"MacBookAir3,1": "Mac-942452F5819B1C1B",
|
||||
"MacBookAir3,2": "Mac-942C5DF58193131B",
|
||||
"MacBookAir4,1": "Mac-C08A6BB70A942AC2",
|
||||
"MacBookAir4,2": "Mac-742912EFDBEE19B3",
|
||||
"MacBookAir5,1": "Mac-66F35F19FE2A0D05",
|
||||
"MacBookAir5,2": "Mac-2E6FAB96566FE58C",
|
||||
"MacBookAir6,1": "Mac-35C1E88140C3E6CF",
|
||||
"MacBookAir6,2": "Mac-7DF21CB3ED6977E5",
|
||||
"MacBookAir7,1": "Mac-9F18E312C5C2BF0B",
|
||||
"MacBookAir7,2": "Mac-937CB26E2E02BB01",
|
||||
"MacBookAir8,1": "Mac-827FAC58A8FDFA22",
|
||||
"MacBookAir8,2": "Mac-226CB3C6A851A671",
|
||||
"MacBookAir9,1": "Mac-0CFF9C7C2B63DF8D",
|
||||
"MacBookPro1,1": "Mac-F425BEC8",
|
||||
"MacBookPro1,2": "Mac-F42DBEC8",
|
||||
"MacBookPro2,1": "Mac-F42189C8",
|
||||
"MacBookPro2,2": "Mac-F42187C8",
|
||||
"MacBookPro3,1": "Mac-F4238BC8",
|
||||
"MacBookPro4,1": "Mac-F42C89C8",
|
||||
"MacBookPro5,1": "Mac-F42D86C8",
|
||||
"MacBookPro5,2": "Mac-F2268EC8",
|
||||
"MacBookPro5,3": "Mac-F22587C8",
|
||||
"MacBookPro5,4": "Mac-F22587A1",
|
||||
"MacBookPro5,5": "Mac-F2268AC8",
|
||||
"MacBookPro6,1": "Mac-F22589C8",
|
||||
"MacBookPro6,2": "Mac-F22586C8",
|
||||
"MacBookPro7,1": "Mac-F222BEC8",
|
||||
"MacBookPro8,1": "Mac-94245B3640C91C81",
|
||||
"MacBookPro8,2": "Mac-94245A3940C91C80",
|
||||
"MacBookPro8,3": "Mac-942459F5819B171B",
|
||||
"MacBookPro9,1": "Mac-4B7AC7E43945597E",
|
||||
"MacBookPro9,2": "Mac-6F01561E16C75D06",
|
||||
"MacBookPro10,1": "Mac-C3EC7CD22292981F",
|
||||
"MacBookPro10,2": "Mac-AFD8A9D944EA4843",
|
||||
"MacBookPro11,1": "Mac-189A3D4F975D5FFC",
|
||||
"MacBookPro11,2": "Mac-3CBD00234E554E41",
|
||||
"MacBookPro11,3": "Mac-2BD1B31983FE1663",
|
||||
"MacBookPro11,4": "Mac-06F11FD93F0323C5",
|
||||
"MacBookPro11,5": "Mac-06F11F11946D27C5",
|
||||
"MacBookPro12,1": "Mac-E43C1C25D4880AD6",
|
||||
"MacBookPro13,1": "Mac-473D31EABEB93F9B",
|
||||
"MacBookPro13,2": "Mac-66E35819EE2D0D05",
|
||||
"MacBookPro13,3": "Mac-A5C67F76ED83108C",
|
||||
"MacBookPro14,1": "Mac-B4831CEBD52A0C4C",
|
||||
"MacBookPro14,2": "Mac-CAD6701F7CEA0921",
|
||||
"MacBookPro14,3": "Mac-551B86E5744E2388",
|
||||
"MacBookPro15,1": "Mac-937A206F2EE63C01",
|
||||
"MacBookPro15,2": "Mac-827FB448E656EC26",
|
||||
"MacBookPro15,3": "Mac-1E7E29AD0135F9BC",
|
||||
"MacBookPro15,4": "Mac-53FDB3D8DB8CA971",
|
||||
"MacBookPro16,1": "Mac-E1008331FDC96864",
|
||||
"MacBookPro16,2": "Mac-5F9802EFE386AA28",
|
||||
"MacBookPro16,3": "Mac-E7203C0F68AA0004",
|
||||
"MacBookPro16,4": "Mac-A61BADE1FDAD7B05",
|
||||
"Macmini1,1": "Mac-F4208EC8",
|
||||
"Macmini2,1": "Mac-F4208EAA",
|
||||
"Macmini3,1": "Mac-F22C86C8",
|
||||
"Macmini4,1": "Mac-F2208EC8",
|
||||
"Macmini5,1": "Mac-8ED6AF5B48C039E1",
|
||||
"Macmini5,2": "Mac-4BC72D62AD45599E",
|
||||
"Macmini5,3": "Mac-7BA5B2794B2CDB12",
|
||||
"Macmini6,1": "Mac-031AEE4D24BFF0B1",
|
||||
"Macmini6,2": "Mac-F65AE981FFA204ED",
|
||||
"Macmini7,1": "Mac-35C5E08120C7EEAF",
|
||||
"Macmini8,1": "Mac-7BA5B2DFE22DDD8C",
|
||||
"iMac4,1": "Mac-F42786C8",
|
||||
"iMac4,2": "Mac-F4218EC8",
|
||||
"iMac5,1": "Mac-F4228EC8",
|
||||
"iMac5,2": "Mac-F4218EC8",
|
||||
"iMac6,1": "Mac-F4218FC8",
|
||||
"iMac7,1": "Mac-F42386C8",
|
||||
"iMac8,1": "Mac-F227BEC8",
|
||||
"iMac9,1": "Mac-F2218FA9",
|
||||
"iMac10,1": "Mac-F221DCC8",
|
||||
# "iMac10,1": "Mac-F2268CC8",
|
||||
"iMac11,1": "Mac-F2268DAE",
|
||||
"iMac11,2": "Mac-F2238AC8",
|
||||
"iMac11,3": "Mac-F2238BAE",
|
||||
"iMac12,1": "Mac-942B5BF58194151B",
|
||||
"iMac12,2": "Mac-942B59F58194171B",
|
||||
"iMac13,1": "Mac-00BE6ED71E35EB86",
|
||||
"iMac13,2": "Mac-FC02E91DDD3FA6A4",
|
||||
"iMac13,3": "Mac-7DF2A3B5E5D671ED",
|
||||
"iMac14,1": "Mac-031B6874CF7F642A",
|
||||
"iMac14,2": "Mac-27ADBB7B4CEE8E61",
|
||||
"iMac14,3": "Mac-77EB7D7DAF985301",
|
||||
"iMac14,4": "Mac-81E3E92DD6088272",
|
||||
"iMac15,1": "Mac-42FD25EABCABB274",
|
||||
"iMac16,1": "Mac-A369DDC4E67F1C45",
|
||||
"iMac16,2": "Mac-FFE5EF870D7BA81A",
|
||||
"iMac17,1": "Mac-DB15BD556843C820",
|
||||
"iMac18,1": "Mac-4B682C642B45593E",
|
||||
"iMac18,2": "Mac-77F17D7DA9285301",
|
||||
"iMac18,3": "Mac-BE088AF8C5EB4FA2",
|
||||
"iMac19,1": "Mac-AA95B1DDAB278B95",
|
||||
"iMac19,2": "Mac-63001698E7A34814",
|
||||
"iMac20,1": "Mac-CFF7D910A743CAAF",
|
||||
"iMac20,2": "Mac-AF89B6D9451A490B",
|
||||
"iMacPro1,1": "Mac-7BA5B2D9E42DDD94",
|
||||
"MacPro1,1": "Mac-F4208DC8",
|
||||
"MacPro2,1": "Mac-F4208DA9",
|
||||
"MacPro3,1": "Mac-F42C88C8",
|
||||
"MacPro4,1": "Mac-F221BEC8",
|
||||
"MacPro5,1": "Mac-F221BEC8",
|
||||
"MacPro6,1": "Mac-F60DEB81FF30ACF6",
|
||||
"MacPro7,1": "Mac-27AD2F918AE68F61",
|
||||
"Xserve1,1": "Mac-F4208AC8",
|
||||
"Xserve2,1": "Mac-F42289C8",
|
||||
"Xserve3,1": "Mac-F223BEC8",
|
||||
}
|
||||
@@ -1,957 +0,0 @@
|
||||
# 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",
|
||||
"Dortania1,1",
|
||||
]
|
||||
|
||||
# CPU patches
|
||||
|
||||
MissingSSE42 = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir3,2",
|
||||
"MacBookPro4,1",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro7,1",
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
"iMac10,1",
|
||||
"MacPro3,1",
|
||||
"Xserve2,1",
|
||||
"Dortania1,1",
|
||||
]
|
||||
|
||||
SSEEmulator = ["MacPro3,1", "Xserve2,1", "Dortania1,1"]
|
||||
|
||||
DualSocket = ["MacPro3,1", "MacPro4,1", "MacPro5,1", "Xserve2,1", "Xserve3,1", "Dortania1,1"]
|
||||
|
||||
pciSSDT = ["MacBookPro6,1", "MacBookPro6,2", "iMac11,1", "iMac11,2", "iMac11,3", "Dortania1,1"]
|
||||
|
||||
# Ethernet patches
|
||||
|
||||
EthernetNvidia = [
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"Macmini3,1",
|
||||
"iMac9,1",
|
||||
"iMac10,1",
|
||||
"Dortania1,1",
|
||||
]
|
||||
EthernetMarvell = ["MacBook4,1", "MacBookPro4,1", "iMac7,1", "iMac8,1", "Dortania1,1"]
|
||||
EthernetBroadcom = [
|
||||
"MacBookAir4,1",
|
||||
"MacBookAir4,2",
|
||||
"MacBookPro6,1",
|
||||
"MacBookPro6,2",
|
||||
"MacBookPro7,1",
|
||||
"MacBookPro8,1",
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
"Macmini4,1",
|
||||
"Macmini5,1",
|
||||
"Macmini5,2",
|
||||
"Macmini5,3",
|
||||
"iMac11,1",
|
||||
"iMac11,2",
|
||||
"iMac11,3",
|
||||
"iMac12,1",
|
||||
"iMac12,2",
|
||||
"Dortania1,1",
|
||||
]
|
||||
|
||||
# Wifi patches
|
||||
|
||||
WifiAtheros = ["iMac10,1", "iMac11,1", "iMac11,2", "iMac11,3", "iMac12,1", "iMac12,2", "MacPro3,1", "MacPro4,1", "Dortania1,1"]
|
||||
|
||||
WifiBCM94328 = ["MacBook4,1", "MacBookAir2,1", "MacBookPro4,1", "iMac7,1", "iMac8,1", "Dortania1,1"]
|
||||
|
||||
WifiBCM94322 = [
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir3,2",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro7,1",
|
||||
"Macmini3,1",
|
||||
"iMac9,1",
|
||||
"MacPro5,1",
|
||||
"Dortania1,1",
|
||||
]
|
||||
|
||||
WifiBCM94331 = [
|
||||
"MacBook6,1", # PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)
|
||||
"MacBook7,1", # PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)
|
||||
"MacBookAir4,1", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookAir4,2", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookAir5,1", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookAir5,2", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookPro6,1", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookPro6,2", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookPro8,1", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookPro8,2", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookPro8,3", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookPro9,1", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookPro9,2", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookPro10,1", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"MacBookPro10,2", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"Macmini4,1", # PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)
|
||||
"Macmini5,1", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"Macmini5,2", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"Macmini5,3", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"Macmini6,1", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"Macmini6,2", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"iMac13,1", # PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)
|
||||
"iMac13,2", # PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)
|
||||
"iMac13,3", # PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)
|
||||
"Dortania1,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",
|
||||
]
|
||||
|
||||
nvidiaHDEF = [
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir3,2",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro7,1",
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
"iMac9,1",
|
||||
"iMac10,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
|
||||
"Macmini6,1", # Intel 4000
|
||||
"Macmini6,2", # Intel 4000
|
||||
"iMac13,1", # Intel 4000
|
||||
"iMac13,3", # Intel 4000
|
||||
]
|
||||
|
||||
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",
|
||||
]
|
||||
|
||||
LegacyHID = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
"MacBookPro4,1",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro7,1",
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
"iMac10,1",
|
||||
"MacPro3,1",
|
||||
"Dortania1,1",
|
||||
]
|
||||
|
||||
NVMePatch = ["MacPro3,1", "MacPro4,1", "Xserve3,1", "Dortania1,1"]
|
||||
|
||||
XhciSupport = [
|
||||
"MacBookAir5,1",
|
||||
"MacBookAir5,2",
|
||||
"MacBookAir6,1",
|
||||
"MacBookAir6,2",
|
||||
"MacBookAir7,1",
|
||||
"MacBookAir7,2",
|
||||
"MacBookPro9,1",
|
||||
"MacBookPro9,2",
|
||||
"MacBookPro10,1",
|
||||
"MacBookPro10,2",
|
||||
"MacBookPro11,1",
|
||||
"MacBookPro11,2",
|
||||
"MacBookPro11,3",
|
||||
"MacBookPro11,4",
|
||||
"MacBookPro11,5",
|
||||
"MacBookPro12,1",
|
||||
"Macmini6,1",
|
||||
"Macmini6,2",
|
||||
"Macmini7,1",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
"iMac15,1",
|
||||
"iMac16,1",
|
||||
"iMac16,2",
|
||||
"MacPro6,1",
|
||||
"Dortania1,1",
|
||||
]
|
||||
|
||||
SidecarPatch = [
|
||||
"MacBook8,1",
|
||||
"MacBookAir5,1",
|
||||
"MacBookAir5,2",
|
||||
"MacBookAir6,1",
|
||||
"MacBookAir6,2",
|
||||
"MacBookAir7,1",
|
||||
"MacBookAir7,2",
|
||||
"MacBookPro9,1",
|
||||
"MacBookPro9,2",
|
||||
"MacBookPro10,1",
|
||||
"MacBookPro10,2",
|
||||
"MacBookPro11,1",
|
||||
"MacBookPro11,2",
|
||||
"MacBookPro11,3",
|
||||
"MacBookPro11,4",
|
||||
"MacBookPro11,5",
|
||||
"MacBookPro12,1",
|
||||
"MacBookPro13,1",
|
||||
"MacBookPro13,2",
|
||||
"MacBookPro13,3",
|
||||
"MacBookPro14,1",
|
||||
"MacBookPro14,2",
|
||||
"MacBookPro14,3",
|
||||
"Macmini6,1",
|
||||
"Macmini6,2",
|
||||
"Macmini7,1",
|
||||
"Macmini8,1",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
"iMac15,1",
|
||||
"iMac16,1",
|
||||
"iMac16,2",
|
||||
"iMac17,1",
|
||||
"iMac18,1",
|
||||
"MacPro5,1",
|
||||
"MacPro6,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",
|
||||
]
|
||||
|
||||
HiDPIpicker = ["MacBook8,1", "MacBookPro10,1", "MacBookPro10,2", "MacBookPro11,1", "MacBookPro11,2", "MacBookPro11,3", "iMac15,1", "Dortania1,1"]
|
||||
|
||||
IDEPatch = ["MacBook4,1", "MacBookPro4,1", "iMac7,1", "iMac8,1", "MacPro3,1", "Xserve2,1", "Dortania1,1"]
|
||||
|
||||
# 11" Air
|
||||
MacBookAir61 = [
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir4,1",
|
||||
"MacBookAir5,1",
|
||||
"MacBookAir6,1",
|
||||
]
|
||||
|
||||
# Classic MacBook and 13" Air
|
||||
MacBookAir62 = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,2",
|
||||
"MacBookAir4,2",
|
||||
"MacBookAir5,2",
|
||||
"MacBookAir6,2",
|
||||
]
|
||||
|
||||
# Retina MacBook
|
||||
MacBook81 = [
|
||||
"MacBook8,1",
|
||||
]
|
||||
|
||||
# MacBook Pro 13"
|
||||
|
||||
MacBookPro111 = [
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro7,1",
|
||||
"MacBookPro8,1",
|
||||
"MacBookPro9,2",
|
||||
"MacBookPro10,2",
|
||||
"MacBookPro11,1",
|
||||
]
|
||||
|
||||
# MacBook Pro 15" (iGPU)
|
||||
|
||||
MacBookPro112 = ["MacBookPro11,2"]
|
||||
|
||||
# MacBook Pro 15" and 17" (dGPU)
|
||||
|
||||
MacBookPro113 = [
|
||||
"MacBookPro4,1",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro6,1",
|
||||
"MacBookPro6,2",
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
"MacBookPro9,1",
|
||||
"MacBookPro10,1",
|
||||
"MacBookPro11,3",
|
||||
]
|
||||
|
||||
# Mac Mini
|
||||
|
||||
Macmini71 = ["Macmini3,1", "Macmini4,1", "Macmini5,1", "Macmini5,2", "Macmini5,3", "Macmini6,1", "Macmini6,2"]
|
||||
# iMacPro = dGPU only iMacs
|
||||
iMacPro11 = [
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
"iMac10,1",
|
||||
"iMac11,1",
|
||||
"iMac11,2",
|
||||
"iMac11,3",
|
||||
"iMac12,1",
|
||||
"iMac12,2",
|
||||
]
|
||||
|
||||
# iMac = AMD and Nvidia GPU with iGPU
|
||||
iMac151 = [
|
||||
"iMac13,2",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
"iMac15,1",
|
||||
]
|
||||
# iMac = Intel iGPU
|
||||
iMac144 = ["iMac13,1", "iMac14,1", "iMac14,4"]
|
||||
|
||||
# Mac Pro and Xserve
|
||||
MacPro71 = ["MacPro3,1", "MacPro4,1", "MacPro5,1", "Xserve2,1", "Xserve3,1", "Dortania1,1"]
|
||||
|
||||
XXerve = [
|
||||
"Xserve3,1",
|
||||
]
|
||||
|
||||
iXac = [
|
||||
"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",
|
||||
]
|
||||
|
||||
XacBookNormal = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
]
|
||||
|
||||
XacBookAir = [
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir3,2",
|
||||
"MacBookAir4,1",
|
||||
"MacBookAir4,2",
|
||||
"MacBookAir5,1",
|
||||
"MacBookAir5,2",
|
||||
]
|
||||
|
||||
XacBookPro = [
|
||||
"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",
|
||||
]
|
||||
|
||||
XacPro = [
|
||||
"MacPro3,1",
|
||||
"MacPro4,1",
|
||||
"MacPro5,1",
|
||||
]
|
||||
|
||||
Xacmini = [
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
"Macmini5,1",
|
||||
"Macmini5,2",
|
||||
"Macmini5,3",
|
||||
"Macmini6,1",
|
||||
"Macmini6,2",
|
||||
]
|
||||
|
||||
ControllerTypes = [
|
||||
"",
|
||||
"-EHCI",
|
||||
"-EHC1",
|
||||
"-EHC2",
|
||||
"-XHC1",
|
||||
"-OHC1",
|
||||
"-OHC2",
|
||||
"-UHC1",
|
||||
"-UHC2",
|
||||
"-UHC3",
|
||||
"-UHC4",
|
||||
"-InternalHub-EHC1",
|
||||
"-InternalHub-EHC1-InternalHub",
|
||||
"-InternalHub-EHC2",
|
||||
"-InternalHub",
|
||||
]
|
||||
|
||||
upgradableMXMGPUs = ["iMac10,1", "iMac11,1", "iMac11,2", "iMac11,3", "iMac12,1", "iMac12,2", "Xserve3,1", "Dortania1,1"]
|
||||
|
||||
NightShift = [
|
||||
"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",
|
||||
"MacPro5,1",
|
||||
"Xserve2,1",
|
||||
"Xserve3,1",
|
||||
"Dortania1,1",
|
||||
]
|
||||
|
||||
UGAtoGOP = [
|
||||
"MacBook4,1",
|
||||
"MacBookPro4,1",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"MacPro3,1",
|
||||
"Xserve2,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",
|
||||
]
|
||||
|
||||
NoAPFSsupport = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBookAir2,1",
|
||||
"MacBookPro4,1",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"Macmini3,1",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
"MacPro3,1",
|
||||
"MacPro4,1",
|
||||
"Xserve2,1",
|
||||
"Xserve3,1",
|
||||
"Dortania1,1",
|
||||
]
|
||||
|
||||
NoRootPatch11 = [
|
||||
"MacBookAir5,1",
|
||||
"MacBookAir5,2",
|
||||
"MacBookPro9,1",
|
||||
"MacBookPro9,2",
|
||||
"MacBookPro10,1",
|
||||
"MacBookPro10,2",
|
||||
"Macmini6,1",
|
||||
"Macmini6,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
"MacPro4,1",
|
||||
"MacPro5,1",
|
||||
"Xserve3,1",
|
||||
]
|
||||
|
||||
NoExFat = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookPro4,1",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro6,1",
|
||||
"MacBookPro6,2",
|
||||
"MacBookPro7,1",
|
||||
"Macmini3,1",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
"iMac10,1",
|
||||
"iMac11,1",
|
||||
"MacPro3,1",
|
||||
"MacPro4,1",
|
||||
"MacPro5,1",
|
||||
"Xserve2,1",
|
||||
"Xserve3,1",
|
||||
"Dortania1,1",
|
||||
]
|
||||
|
||||
SandyIGPU = [
|
||||
"MacBookAir4,1",
|
||||
"MacBookAir4,2",
|
||||
"MacBookPro8,1",
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
"Macmini5,1",
|
||||
"Macmini5,2",
|
||||
"Macmini5,3",
|
||||
]
|
||||
|
||||
windows_audio = [
|
||||
"MacBookAir4,1",
|
||||
"MacBookAir4,2",
|
||||
"MacBookAir5,1",
|
||||
"MacBookAir5,2",
|
||||
"MacBookPro8,1",
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
"MacBookPro9,1",
|
||||
"MacBookPro9,2",
|
||||
"MacBookPro10,1",
|
||||
"MacBookPro10,2",
|
||||
"Macmini5,1",
|
||||
"Macmini5,2",
|
||||
"Macmini5,3",
|
||||
"Macmini6,1",
|
||||
"Macmini6,2",
|
||||
"iMac12,1",
|
||||
"iMac12,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
]
|
||||
|
||||
NoAGPMSupport = ["MacBook4,1", "MacBookPro4,1", "iMac7,1", "iMac8,1", "MacPro3,1", "Xserve2,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",
|
||||
]
|
||||
|
||||
AMCSupport = [
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
# "MacBookPro9,1",
|
||||
# "MacBookPro10,1"
|
||||
]
|
||||
|
||||
NoFireWireSupport = [
|
||||
"MacBook5,1",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir1,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir3,2",
|
||||
]
|
||||
|
||||
RecoveryIgnore = ["Update", "VM", "Recovery", "Preboot"]
|
||||
@@ -1,499 +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/)
|
||||
|
||||
import hashlib
|
||||
import os
|
||||
import requests
|
||||
import shutil
|
||||
import subprocess
|
||||
import zipfile
|
||||
from pathlib import Path
|
||||
|
||||
from Resources import Constants, device_probe, ModelArray, SysPatchArray, Utilities
|
||||
|
||||
|
||||
class PatchSysVolume:
|
||||
def __init__(self, model, versions):
|
||||
self.model = model
|
||||
self.constants: Constants.Constants = versions
|
||||
self.root_mount_path = None
|
||||
self.sip_enabled = True
|
||||
self.sbm_enabled = True
|
||||
self.amfi_enabled = True
|
||||
self.fv_enabled = True
|
||||
self.nvidia_legacy = False
|
||||
self.amd_ts1 = False
|
||||
self.amd_ts2 = False
|
||||
self.iron_gpu = False
|
||||
self.sandy_gpu = False
|
||||
self.ivy_gpu = False
|
||||
self.nvidia_legacy = False
|
||||
self.brightness_legacy = False
|
||||
self.legacy_audio = False
|
||||
self.added_kexts = False
|
||||
self.amfi_must_disable = False
|
||||
self.no_patch = True
|
||||
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
# Big Sur and newer use APFS snapshots
|
||||
self.mount_location = "/System/Volumes/Update/mnt1"
|
||||
else:
|
||||
self.mount_location = "/"
|
||||
self.mount_extensions = f"{self.mount_location}/System/Library/Extensions"
|
||||
self.mount_frameworks = f"{self.mount_location}/System/Library/Frameworks"
|
||||
self.mount_lauchd = f"{self.mount_location}/System/Library/LaunchDaemons"
|
||||
self.mount_private_frameworks = f"{self.mount_location}/System/Library/PrivateFrameworks"
|
||||
|
||||
def elevated(self, *args, **kwargs) -> subprocess.CompletedProcess:
|
||||
if os.getuid() == 0:
|
||||
return subprocess.run(*args, **kwargs)
|
||||
else:
|
||||
return subprocess.run(["sudo"] + [args[0][0]] + args[0][1:], **kwargs)
|
||||
|
||||
def find_mount_root_vol(self, patch):
|
||||
self.root_mount_path = Utilities.get_disk_path()
|
||||
if self.root_mount_path.startswith("disk"):
|
||||
print(f"- Found Root Volume at: {self.root_mount_path}")
|
||||
if Path(self.mount_extensions).exists():
|
||||
print("- Root Volume is already mounted")
|
||||
if patch is True:
|
||||
self.patch_root_vol()
|
||||
return True
|
||||
else:
|
||||
self.unpatch_root_vol()
|
||||
return True
|
||||
else:
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
print("- Mounting APFS Snapshot as writable")
|
||||
self.elevated(["mount", "-o", "nobrowse", "-t", "apfs", f"/dev/{self.root_mount_path}", self.mount_location], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
elif self.constants.detected_os == self.constants.catalina:
|
||||
print("- Mounting Root Volume as writable")
|
||||
self.elevated(["mount", "-uw", "/"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
if Path(self.mount_extensions).exists():
|
||||
print("- Successfully mounted the Root Volume")
|
||||
if patch is True:
|
||||
self.patch_root_vol()
|
||||
return True
|
||||
else:
|
||||
self.unpatch_root_vol()
|
||||
return True
|
||||
else:
|
||||
print("- Failed to mount the Root Volume")
|
||||
print("- Recommend rebooting the machine and trying to patch again")
|
||||
if self.constants.gui_mode is False:
|
||||
input("- Press [ENTER] to exit: ")
|
||||
else:
|
||||
print("- Could not find root volume")
|
||||
if self.constants.gui_mode is False:
|
||||
input("- Press [ENTER] to exit: ")
|
||||
|
||||
def unpatch_root_vol(self):
|
||||
print("- Reverting to last signed APFS snapshot")
|
||||
self.elevated(["bless", "--mount", self.mount_location, "--bootefi", "--last-sealed-snapshot"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def rebuild_snapshot(self):
|
||||
if self.constants.gui_mode is False:
|
||||
input("Press [ENTER] to continue with cache rebuild: ")
|
||||
print("- Rebuilding Kernel Cache (This may take some time)")
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
result = self.elevated(["kmutil", "install", "--volume-root", self.mount_location, "--update-all"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
else:
|
||||
result = self.elevated(["kextcache", "-i", "/"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
if result.returncode != 0:
|
||||
self.success_status = False
|
||||
print("- Unable to build new kernel cache")
|
||||
print("\nPlease report this to Github")
|
||||
print("Reason for Patch Failure:")
|
||||
print(result.stdout.decode())
|
||||
print("")
|
||||
print("\nPlease reboot the machine to avoid potential issues rerunning the patcher")
|
||||
if self.constants.gui_mode is False:
|
||||
input("Press [ENTER] to continue")
|
||||
else:
|
||||
self.success_status = True
|
||||
print("- Successfully built new kernel cache")
|
||||
if self.constants.gui_mode is False and self.constants.detected_os > self.constants.catalina:
|
||||
input("Press [ENTER] to continue with snapshotting")
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
print("- Creating new APFS snapshot")
|
||||
self.elevated(["bless", "--folder", f"{self.mount_location}/System/Library/CoreServices", "--bootefi", "--create-snapshot"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
self.unmount_drive()
|
||||
print("- Patching complete")
|
||||
print("\nPlease reboot the machine for patches to take effect")
|
||||
if self.constants.gui_mode is False:
|
||||
input("Press [ENTER] to continue")
|
||||
|
||||
def unmount_drive(self):
|
||||
print("- Unmounting Root Volume (Don't worry if this fails)")
|
||||
self.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def delete_old_binaries(self, vendor_patch):
|
||||
for delete_current_kext in vendor_patch:
|
||||
delete_path = Path(self.mount_extensions) / Path(delete_current_kext)
|
||||
if Path(delete_path).exists():
|
||||
print(f"- Deleting {delete_current_kext}")
|
||||
self.elevated(["sudo", "rm", "-R", delete_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
else:
|
||||
print(f"- Couldn't find {delete_current_kext}, skipping")
|
||||
|
||||
def add_new_binaries(self, vendor_patch, vendor_location):
|
||||
for add_current_kext in vendor_patch:
|
||||
existing_path = Path(self.mount_extensions) / Path(add_current_kext)
|
||||
if Path(existing_path).exists():
|
||||
print(f"- Found conflicting kext, Deleting Root Volume's {add_current_kext}")
|
||||
self.elevated(["rm", "-R", existing_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
print(f"- Adding {add_current_kext}")
|
||||
self.elevated(["cp", "-R", f"{vendor_location}/{add_current_kext}", self.mount_extensions], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
self.elevated(["chmod", "-Rf", "755", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
self.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def add_brightness_patch(self):
|
||||
self.delete_old_binaries(SysPatchArray.DeleteBrightness)
|
||||
self.add_new_binaries(SysPatchArray.AddBrightness, self.constants.legacy_brightness)
|
||||
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_private_frameworks_path_brightness}/", self.mount_private_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
self.elevated(["chmod", "-Rf", "755", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
self.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def add_audio_patch(self):
|
||||
self.delete_old_binaries(SysPatchArray.DeleteVolumeControl)
|
||||
self.add_new_binaries(SysPatchArray.AddVolumeControl, self.constants.audio_path)
|
||||
|
||||
def gpu_accel_legacy_nvidia_big_sur(self):
|
||||
self.delete_old_binaries(SysPatchArray.DeleteNvidiaAccel11)
|
||||
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
|
||||
self.add_new_binaries(SysPatchArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
|
||||
|
||||
def gpu_framebuffer_legacy_nvidia(self):
|
||||
self.add_new_binaries(SysPatchArray.AddNvidiaBrightness, self.constants.legacy_nvidia_path)
|
||||
|
||||
def gpu_accel_legacy_ts1_big_sur(self):
|
||||
self.delete_old_binaries(SysPatchArray.DeleteAMDAccel11)
|
||||
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
|
||||
self.add_new_binaries(SysPatchArray.AddAMDAccel11, self.constants.legacy_amd_path)
|
||||
|
||||
def gpu_accel_legacy_ts2_big_sur(self):
|
||||
self.delete_old_binaries(SysPatchArray.DeleteAMDAccel11)
|
||||
self.delete_old_binaries(SysPatchArray.DeleteAMDAccel11TS2)
|
||||
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
|
||||
self.add_new_binaries(SysPatchArray.AddAMDAccel11, self.constants.legacy_amd_path)
|
||||
|
||||
def gpu_framebuffer_legacy_amd(self):
|
||||
self.add_new_binaries(SysPatchArray.AddAMDBrightness, self.constants.legacy_amd_path)
|
||||
|
||||
def gpu_accel_legacy_ironlake_big_sur(self):
|
||||
self.delete_old_binaries(SysPatchArray.DeleteNvidiaAccel11)
|
||||
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
|
||||
self.add_new_binaries(SysPatchArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
||||
|
||||
def gpu_framebuffer_legacy_ironlake(self):
|
||||
self.add_new_binaries(SysPatchArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
||||
|
||||
def gpu_accel_legacy_sandybridge_big_sur(self):
|
||||
self.delete_old_binaries(SysPatchArray.DeleteNvidiaAccel11)
|
||||
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
|
||||
self.add_new_binaries(SysPatchArray.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
||||
|
||||
def gpu_framebuffer_legacy_sandybridge(self):
|
||||
self.add_new_binaries(SysPatchArray.AddIntelGen2Accel, self.constants.legacy_intel_gen1_path)
|
||||
|
||||
def gpu_framebuffer_ivybridge_big_sur(self):
|
||||
self.add_new_binaries(SysPatchArray.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
|
||||
print("- Fixing Acceleration in CoreMedia")
|
||||
subprocess.run(["defaults", "write", "com.apple.coremedia", "hardwareVideoDecoder", "-string", "disable"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
print("- Merging Ivy Bridge Frameworks")
|
||||
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_frameworks_path_accel_ivy}/", self.mount_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def gpu_accel_legacy_extended(self):
|
||||
print("- Merging general legacy Frameworks")
|
||||
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_frameworks_path_accel}/", self.mount_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
if Path(self.mount_lauchd / Path("HiddHack.plist")).exists():
|
||||
print("- Removing legacy HiddHack")
|
||||
self.elevated(["rm", f"{self.mount_lauchd}/HiddHack.plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
print("- Adding IOHID-Fixup.plist")
|
||||
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_lauchd_path_accel}/", self.mount_lauchd], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
self.elevated(["chmod", "755", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
self.elevated(["chown", "root:wheel", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
print("- Merging general legacy PrivateFrameworks")
|
||||
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_private_frameworks_path_accel}/", self.mount_private_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def gpu_accel_legacy_extended_ts2(self):
|
||||
print("- Merging TeraScale 2 legacy Frameworks")
|
||||
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_frameworks_path_accel_ts2}/", self.mount_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
print("- Merging TeraScale 2 PrivateFrameworks")
|
||||
self.elevated(["rsync", "-r", "-i", f"{self.constants.payload_apple_private_frameworks_path_accel_ts2}/", self.mount_private_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
print("- Fixing Acceleration in CMIO")
|
||||
subprocess.run(["defaults", "write", "com.apple.cmio", "CMIO_Unit_Input_ASC.DoNotUseOpenCL", "-bool", "true"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def patch_root_vol(self):
|
||||
print(f"- Running patches for {self.model}")
|
||||
# Graphics patches
|
||||
if self.nvidia_legacy is True:
|
||||
print("- Installing legacy Nvidia Patches")
|
||||
if self.constants.detected_os == self.constants.big_sur:
|
||||
print("- Detected Big Sur, installing Acceleration patches")
|
||||
self.gpu_accel_legacy_nvidia_big_sur()
|
||||
self.added_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_framebuffer_legacy_nvidia()
|
||||
|
||||
if self.amd_ts1 is True:
|
||||
print("- Installing legacy TeraScale 1 Patches")
|
||||
if self.constants.detected_os == self.constants.big_sur:
|
||||
print("- Detected Big Sur, installing Acceleration patches")
|
||||
self.gpu_accel_legacy_ts1_big_sur()
|
||||
self.added_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_framebuffer_legacy_amd()
|
||||
|
||||
if self.amd_ts2 is True:
|
||||
print("- Installing legacy TeraScale 2 Patches")
|
||||
if self.constants.detected_os == self.constants.big_sur:
|
||||
print("- Detected Big Sur, installing Acceleration patches")
|
||||
self.gpu_accel_legacy_ts2_big_sur()
|
||||
self.added_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_framebuffer_legacy_amd()
|
||||
|
||||
if self.iron_gpu is True:
|
||||
print("- Installing legacy Ironlake Patches")
|
||||
if self.constants.detected_os == self.constants.big_sur:
|
||||
print("- Detected Big Sur, installing Acceleration patches")
|
||||
self.gpu_accel_legacy_ironlake_big_sur()
|
||||
self.added_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_framebuffer_legacy_ironlake()
|
||||
|
||||
if self.sandy_gpu is True:
|
||||
print("- Installing legacy Sandy Bridge Patches")
|
||||
if self.constants.detected_os == self.constants.big_sur:
|
||||
print("- Detected Big Sur, installing Acceleration patches")
|
||||
self.gpu_accel_legacy_sandybridge_big_sur()
|
||||
self.added_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_framebuffer_legacy_sandybridge()
|
||||
|
||||
if self.ivy_gpu is True:
|
||||
print("- Installing Ivy Bridge Patches")
|
||||
self.gpu_framebuffer_ivybridge_big_sur()
|
||||
|
||||
if self.amd_ts2 is True:
|
||||
# TeraScale 2 patches must be installed after Intel HD3000
|
||||
self.add_new_binaries(SysPatchArray.AddAMDAccel11TS2, self.constants.legacy_amd_path_ts2)
|
||||
|
||||
if self.added_kexts is True:
|
||||
self.gpu_accel_legacy_extended()
|
||||
if self.amd_ts2 is True:
|
||||
self.gpu_accel_legacy_extended_ts2()
|
||||
|
||||
# Misc patches
|
||||
if self.brightness_legacy is True:
|
||||
print("- Installing legacy Brightness Control")
|
||||
self.add_brightness_patch()
|
||||
|
||||
if self.legacy_audio is True:
|
||||
print("- Fixing Volume Control Support")
|
||||
self.add_audio_patch()
|
||||
|
||||
self.rebuild_snapshot()
|
||||
|
||||
def check_files(self):
|
||||
if Path(self.constants.payload_apple_root_path).exists():
|
||||
print("- Found Apple Binaries")
|
||||
if self.constants.gui_mode is False:
|
||||
patch_input = input("Would you like to redownload?(y/n): ")
|
||||
if patch_input in {"y", "Y", "yes", "Yes"}:
|
||||
shutil.rmtree(Path(self.constants.payload_apple_root_path))
|
||||
self.download_files()
|
||||
else:
|
||||
self.download_files()
|
||||
else:
|
||||
print("- Apple binaries missing")
|
||||
self.download_files()
|
||||
|
||||
def download_files(self):
|
||||
if self.constants.detected_os == self.constants.monterey:
|
||||
os_ver = "12-Monterey"
|
||||
elif self.constants.detected_os == self.constants.big_sur:
|
||||
os_ver = "11-Big-Sur"
|
||||
elif self.constants.detected_os == self.constants.catalina:
|
||||
os_ver = "10.15-Catalina"
|
||||
elif self.constants.detected_os == self.constants.mojave:
|
||||
os_ver = "10.14-Mojave"
|
||||
link = f"{self.constants.url_patcher_support_pkg}{self.constants.patcher_support_pkg_version}/{os_ver}.zip"
|
||||
|
||||
if Path(self.constants.payload_apple_root_path).exists():
|
||||
print("- Removing old Apple Binaries folder")
|
||||
Path(self.constants.payload_apple_root_path).unlink()
|
||||
if Path(self.constants.payload_apple_root_path_zip).exists():
|
||||
print("- Removing old Apple Binaries zip")
|
||||
Path(self.constants.payload_apple_root_path_zip).unlink()
|
||||
|
||||
Utilities.download_file(link, self.constants.payload_apple_root_path_zip)
|
||||
|
||||
if self.constants.payload_apple_root_path_zip.exists():
|
||||
print("- Download completed")
|
||||
print("- Unzipping download...")
|
||||
try:
|
||||
subprocess.run(["unzip", self.constants.payload_apple_root_path_zip], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path).stdout.decode()
|
||||
print("- Renaming folder")
|
||||
os.rename(self.constants.payload_path / Path(os_ver), self.constants.payload_apple_root_path)
|
||||
Path(self.constants.payload_apple_root_path_zip).unlink()
|
||||
print("- Binaries downloaded to:")
|
||||
print(self.constants.payload_path)
|
||||
if self.constants.gui_mode is False:
|
||||
input("Press [ENTER] to continue")
|
||||
except zipfile.BadZipFile:
|
||||
print("- Couldn't unzip")
|
||||
return
|
||||
else:
|
||||
print("- Download failed, please verify the below link works:")
|
||||
print(link)
|
||||
input("Press [ENTER] to continue")
|
||||
def detect_gpus(self):
|
||||
dgpu = self.constants.computer.dgpu
|
||||
igpu = self.constants.computer.igpu
|
||||
if dgpu:
|
||||
print(f"- Found GFX0: {Utilities.friendly_hex(dgpu.vendor_id)}:{Utilities.friendly_hex(dgpu.device_id)}")
|
||||
if dgpu.arch in [device_probe.NVIDIA.Archs.Tesla, device_probe.NVIDIA.Archs.Fermi]:
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
self.nvidia_legacy = True
|
||||
self.amfi_must_disable = True
|
||||
elif dgpu.arch == device_probe.AMD.Archs.TeraScale_1:
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
self.amd_ts1 = True
|
||||
self.amfi_must_disable = True
|
||||
# TODO: Enable TS2 support
|
||||
elif dgpu.arch == device_probe.AMD.Archs.TeraScale_2:
|
||||
# Requires manual permission from user to avoid medical issues
|
||||
if self.constants.detected_os > self.constants.catalina and self.constants.terascale_2_patch is True:
|
||||
self.amd_ts2 = True
|
||||
self.amfi_must_disable = True
|
||||
if igpu and igpu.class_code != 0xFFFFFF:
|
||||
print(f"- Found IGPU: {Utilities.friendly_hex(igpu.vendor_id)}:{Utilities.friendly_hex(igpu.device_id)}")
|
||||
if igpu.arch == device_probe.Intel.Archs.Iron_Lake:
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
self.iron_gpu = True
|
||||
self.amfi_must_disable = True
|
||||
elif igpu.arch == device_probe.Intel.Archs.Sandy_Bridge:
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
self.sandy_gpu = True
|
||||
self.amfi_must_disable = True
|
||||
elif igpu.arch == device_probe.Intel.Archs.Ivy_Bridge:
|
||||
if self.constants.detected_os > self.constants.big_sur:
|
||||
self.ivy_gpu = True
|
||||
elif isinstance(igpu, device_probe.NVIDIA):
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
self.nvidia_legacy = True
|
||||
self.amfi_must_disable = True
|
||||
|
||||
def detect_patch_set(self):
|
||||
self.detect_gpus()
|
||||
if self.model in ModelArray.LegacyBrightness:
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
self.brightness_legacy = True
|
||||
|
||||
if self.model in ["iMac7,1", "iMac8,1"]:
|
||||
if self.constants.detected_os > self.constants.catalina:
|
||||
self.legacy_audio = True
|
||||
|
||||
Utilities.cls()
|
||||
print("The following patches will be applied:")
|
||||
if self.nvidia_legacy is True:
|
||||
print("- Add Legacy Nvidia Tesla Graphics Patch")
|
||||
elif self.amd_ts1 is True:
|
||||
print("- Add Legacy ATI TeraScale 1 Graphics Patch")
|
||||
elif self.amd_ts2 is True:
|
||||
print("- Add Legacy ATI TeraScale 2 Graphics Patch")
|
||||
if self.iron_gpu is True:
|
||||
print("- Add Legacy Intel IronLake Graphics Patch")
|
||||
elif self.sandy_gpu is True:
|
||||
print("- Add Legacy Intel Sandy Bridge Graphics Patch")
|
||||
elif self.ivy_gpu is True:
|
||||
print("- Add Legacy Intel Ivy Bridge Graphics Patch")
|
||||
if self.brightness_legacy is True:
|
||||
print("- Add Legacy Brightness Control")
|
||||
if self.legacy_audio is True:
|
||||
print("- Add legacy Audio Control")
|
||||
|
||||
self.no_patch = not any(
|
||||
[
|
||||
self.nvidia_legacy,
|
||||
self.amd_ts1,
|
||||
self.amd_ts2,
|
||||
self.iron_gpu,
|
||||
self.sandy_gpu,
|
||||
self.ivy_gpu,
|
||||
self.brightness_legacy,
|
||||
self.legacy_audio,
|
||||
]
|
||||
)
|
||||
|
||||
def verify_patch_allowed(self):
|
||||
self.sip_enabled, self.sbm_enabled, self.amfi_enabled, self.fv_enabled = Utilities.patching_status()
|
||||
if self.sip_enabled is True:
|
||||
print("\nCannot patch! Please disable System Integrity Protection (SIP).")
|
||||
print("Disable SIP in Patcher Settings and Rebuild OpenCore\n")
|
||||
print("Ensure the following bits are set for csr-active-config:")
|
||||
print("\n".join(self.constants.root_patch_sip_big_sur if self.constants.detected_os > self.constants.catalina else self.constants.root_patch_sip_mojave))
|
||||
print("For Hackintoshes, please set csr-active-config to '030A0000' (0xA03)")
|
||||
print("For non-OpenCore Macs, please run 'csrutil disable' and \n'csrutil authenticated-root disable' in RecoveryOS")
|
||||
|
||||
if self.sbm_enabled is True:
|
||||
print("\nCannot patch! Please disable Apple Secure Boot.")
|
||||
print("Disable SecureBootModel in Patcher Settings and Rebuild OpenCore")
|
||||
print("For Hackintoshes, set SecureBootModel to Disabled")
|
||||
|
||||
if self.fv_enabled is True:
|
||||
print("\nCannot patch! Please disable FileVault.")
|
||||
print("Go to System Preferences -> Security and disable FileVault")
|
||||
|
||||
if self.amfi_enabled is True and self.amfi_must_disable is True:
|
||||
print("\nCannot patch! Please disable AMFI.")
|
||||
print("For Hackintoshes, please add amfi_get_out_of_my_way=1 to boot-args")
|
||||
|
||||
if any([self.sip_enabled, self.sbm_enabled, self.fv_enabled, self.amfi_enabled if self.amfi_must_disable else False]):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
# Entry Function
|
||||
def start_patch(self):
|
||||
print("- Starting Patch Process")
|
||||
print(f"- Determinging Required Patch set for Darwin {self.constants.detected_os}")
|
||||
self.detect_patch_set()
|
||||
if self.no_patch is False and self.constants.gui_mode is False:
|
||||
change_menu = input("Would you like to continue with Root Volume Patching?(y/n): ")
|
||||
else:
|
||||
change_menu = None
|
||||
print("- No Root Patches required for your machine!")
|
||||
if self.constants.gui_mode is False:
|
||||
input("\nPress [ENTER] to return to the main menu: ")
|
||||
if change_menu in ["y", "Y"]:
|
||||
print("- Continuing with Patching")
|
||||
print("- Verifying whether Root Patching possible")
|
||||
if self.verify_patch_allowed() is True:
|
||||
print("- Patcher is capable of patching")
|
||||
self.check_files()
|
||||
self.find_mount_root_vol(True)
|
||||
elif self.constants.gui_mode is False:
|
||||
input("\nPress [ENTER] to return to the main menu: ")
|
||||
|
||||
else:
|
||||
print("- Returning to main menu")
|
||||
|
||||
def start_unpatch(self):
|
||||
print("- Starting Unpatch Process")
|
||||
if self.verify_patch_allowed() is True:
|
||||
self.find_mount_root_vol(False)
|
||||
if self.constants.gui_mode is False:
|
||||
input("\nPress [ENTER] to return to the main menu")
|
||||
@@ -1,192 +0,0 @@
|
||||
# Lists Root patches used by SysPatch.py
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
DeleteNvidiaAccel11 = [
|
||||
"AMDRadeonX4000.kext",
|
||||
"AMDRadeonX4000HWServices.kext",
|
||||
"AMDRadeonX5000.kext",
|
||||
"AMDRadeonX5000HWServices.kext",
|
||||
"AMDRadeonX6000.kext",
|
||||
"AMDRadeonX6000Framebuffer.kext",
|
||||
"AMDRadeonX6000HWServices.kext",
|
||||
"AppleIntelBDWGraphics.kext",
|
||||
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||
"AppleIntelHD4000Graphics.kext",
|
||||
"AppleIntelHD5000Graphics.kext",
|
||||
"AppleIntelICLGraphics.kext",
|
||||
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||
"AppleIntelKBLGraphics.kext",
|
||||
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||
"AppleIntelSKLGraphics.kext",
|
||||
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||
"AppleIntelFramebufferAzul.kext",
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleParavirtGPU.kext",
|
||||
"GeForce.kext",
|
||||
"IOAcceleratorFamily2.kext",
|
||||
"IOGPUFamily.kext",
|
||||
]
|
||||
|
||||
DeleteAMDAccel11 = [
|
||||
"AMDRadeonX4000.kext",
|
||||
"AMDRadeonX4000HWServices.kext",
|
||||
"AMDRadeonX5000.kext",
|
||||
"AMDRadeonX5000HWServices.kext",
|
||||
"AMDRadeonX6000.kext",
|
||||
"AMDRadeonX6000Framebuffer.kext",
|
||||
"AMDRadeonX6000HWServices.kext",
|
||||
"AMD7000Controller.kext", # AMDSupport Dependency
|
||||
"AMD8000Controller.kext", # AMDSupport Dependency
|
||||
"AMD9000Controller.kext", # AMDSupport Dependency
|
||||
"AMD9500Controller.kext", # AMDSupport Dependency
|
||||
"AMD10000Controller.kext", # AMDSupport Dependency
|
||||
"AppleIntelBDWGraphics.kext",
|
||||
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||
"AppleIntelHD4000Graphics.kext",
|
||||
"AppleIntelHD5000Graphics.kext",
|
||||
"AppleIntelICLGraphics.kext",
|
||||
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||
"AppleIntelKBLGraphics.kext",
|
||||
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||
"AppleIntelSKLGraphics.kext",
|
||||
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||
"AppleIntelFramebufferAzul.kext",
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleParavirtGPU.kext",
|
||||
"GeForce.kext",
|
||||
"IOGPUFamily.kext",
|
||||
]
|
||||
|
||||
DeleteAMDAccel11TS2 = [
|
||||
"AppleCameraInterface.kext",
|
||||
]
|
||||
|
||||
AddNvidiaAccel11 = [
|
||||
"GeForceGA.bundle",
|
||||
"GeForceTesla.kext",
|
||||
"GeForceTeslaGLDriver.bundle",
|
||||
"GeForceTeslaVADriver.bundle",
|
||||
"NVDANV50HalTesla.kext",
|
||||
"NVDAResmanTesla.kext",
|
||||
"IOSurface.kext",
|
||||
]
|
||||
|
||||
AddNvidiaBrightness = [
|
||||
"GeForceGA.bundle",
|
||||
"GeForceTesla.kext",
|
||||
"GeForceTeslaGLDriver.bundle",
|
||||
"GeForceTeslaVADriver.bundle",
|
||||
"NVDANV50HalTesla.kext",
|
||||
"NVDAResmanTesla.kext",
|
||||
]
|
||||
|
||||
AddNvidiaKeplerAccel11 = [
|
||||
"GeForce.kext",
|
||||
"GeForceAIRPlugin.bundle",
|
||||
"GeForceGLDriver.bundle",
|
||||
"GeForceMTLDriver.bundle",
|
||||
"GeForceVADriver.bundle",
|
||||
"NVDAGF100Hal.kext",
|
||||
"NVDAGK100Hal.kext",
|
||||
"NVDAResman.kext",
|
||||
"NVDAStartup.kext",
|
||||
"NVSMU.kext",
|
||||
]
|
||||
|
||||
AddAMDAccel11 = [
|
||||
"AMD2400Controller.kext",
|
||||
"AMD2600Controller.kext",
|
||||
"AMD3800Controller.kext",
|
||||
"AMD4600Controller.kext",
|
||||
"AMD4800Controller.kext",
|
||||
"AMD5000Controller.kext",
|
||||
"AMD6000Controller.kext",
|
||||
"AMDFramebuffer.kext",
|
||||
"AMDLegacyFramebuffer.kext",
|
||||
"AMDLegacySupport.kext",
|
||||
"AMDRadeonVADriver.bundle",
|
||||
"AMDRadeonVADriver2.bundle",
|
||||
"AMDRadeonX3000.kext",
|
||||
"AMDRadeonX3000GLDriver.bundle",
|
||||
"AMDShared.bundle",
|
||||
"AMDSupport.kext",
|
||||
"ATIRadeonX2000.kext",
|
||||
"ATIRadeonX2000GA.plugin",
|
||||
"ATIRadeonX2000GLDriver.bundle",
|
||||
"ATIRadeonX2000VADriver.bundle",
|
||||
]
|
||||
|
||||
AddAMDBrightness = [
|
||||
"AMD2400Controller.kext",
|
||||
"AMD2600Controller.kext",
|
||||
"AMD3800Controller.kext",
|
||||
"AMD4600Controller.kext",
|
||||
"AMD4800Controller.kext",
|
||||
"AMD5000Controller.kext",
|
||||
"AMD6000Controller.kext",
|
||||
"AMDLegacyFramebuffer.kext",
|
||||
"AMDLegacySupport.kext",
|
||||
"AMDRadeonVADriver.bundle",
|
||||
"AMDRadeonVADriver2.bundle",
|
||||
# "AMDRadeonX3000.kext",
|
||||
# "AMDRadeonX3000GLDriver.bundle",
|
||||
"AMDShared.bundle",
|
||||
"ATIRadeonX2000.kext",
|
||||
"ATIRadeonX2000GA.plugin",
|
||||
"ATIRadeonX2000GLDriver.bundle",
|
||||
"ATIRadeonX2000VADriver.bundle",
|
||||
]
|
||||
|
||||
AddAMDAccel11TS2 = [
|
||||
"IOSurface.kext",
|
||||
]
|
||||
|
||||
AddIntelGen1Accel = [
|
||||
"AppleIntelHDGraphics.kext",
|
||||
"AppleIntelHDGraphicsFB.kext",
|
||||
"AppleIntelHDGraphicsGA.plugin",
|
||||
"AppleIntelHDGraphicsGLDriver.bundle",
|
||||
"AppleIntelHDGraphicsVADriver.bundle",
|
||||
]
|
||||
|
||||
AddIntelGen2Accel = [
|
||||
"AppleIntelHD3000Graphics.kext",
|
||||
"AppleIntelHD3000GraphicsGA.plugin",
|
||||
"AppleIntelHD3000GraphicsGLDriver.bundle",
|
||||
"AppleIntelHD3000GraphicsVADriver.bundle",
|
||||
"AppleIntelSNBGraphicsFB.kext",
|
||||
"AppleIntelSNBVA.bundle",
|
||||
]
|
||||
|
||||
AddIntelGen3Accel = [
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleIntelHD4000Graphics.kext",
|
||||
"AppleIntelHD4000GraphicsGLDriver.bundle",
|
||||
"AppleIntelHD4000GraphicsMTLDriver.bundle",
|
||||
"AppleIntelHD4000GraphicsVADriver.bundle",
|
||||
"AppleIntelIVBVA.bundle",
|
||||
"AppleIntelGraphicsShared.bundle",
|
||||
]
|
||||
|
||||
AddGeneralAccel = ["IOAcceleratorFamily2.kext", "IOSurface.kext"]
|
||||
|
||||
DeleteBrightness = ["AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext"]
|
||||
|
||||
AddBrightness = [
|
||||
"AppleBacklight.kext",
|
||||
"AppleBacklightExpert.kext",
|
||||
]
|
||||
|
||||
AddVolumeControl = [
|
||||
"AppleHDA.kext",
|
||||
"IOAudioFamily.kext",
|
||||
]
|
||||
|
||||
DeleteVolumeControl = [
|
||||
"AppleVirtIO.kext",
|
||||
"AppleVirtualGraphics.kext",
|
||||
"AppleVirtualPlatform.kext",
|
||||
"ApplePVPanic.kext",
|
||||
"AppleVirtIOStorage.kext",
|
||||
]
|
||||
@@ -1,260 +0,0 @@
|
||||
# Copyright (C) 2020-2021, Dhinak G
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
import math
|
||||
from pathlib import Path
|
||||
import plistlib
|
||||
import subprocess
|
||||
import requests
|
||||
import hashlib
|
||||
import requests
|
||||
|
||||
from Resources import Constants
|
||||
|
||||
|
||||
def hexswap(input_hex: str):
|
||||
hex_pairs = [input_hex[i : i + 2] for i in range(0, len(input_hex), 2)]
|
||||
hex_rev = hex_pairs[::-1]
|
||||
hex_str = "".join(["".join(x) for x in hex_rev])
|
||||
return hex_str.upper()
|
||||
|
||||
|
||||
def header(lines):
|
||||
lines = [i for i in lines if i is not None]
|
||||
total_length = len(max(lines, key=len)) + 4
|
||||
print("#" * (total_length))
|
||||
for line in lines:
|
||||
left_side = math.floor(((total_length - 2 - len(line.strip())) / 2))
|
||||
print("#" + " " * left_side + line.strip() + " " * (total_length - len("#" + " " * left_side + line.strip()) - 1) + "#")
|
||||
print("#" * total_length)
|
||||
|
||||
|
||||
RECOVERY_STATUS = None
|
||||
|
||||
|
||||
def check_recovery():
|
||||
global RECOVERY_STATUS # pylint: disable=global-statement # We need to cache the result
|
||||
|
||||
if RECOVERY_STATUS is None:
|
||||
RECOVERY_STATUS = Path("/System/Library/BaseSystem").exists()
|
||||
|
||||
return RECOVERY_STATUS
|
||||
|
||||
|
||||
def get_disk_path():
|
||||
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
root_mount_path = root_partition_info["DeviceIdentifier"]
|
||||
root_mount_path = root_mount_path[:-2] if root_mount_path.count("s") > 1 else root_mount_path
|
||||
return root_mount_path
|
||||
|
||||
|
||||
def csr_decode(csr_active_config):
|
||||
if csr_active_config is None:
|
||||
csr_active_config = b"\x00\x00\x00\x00"
|
||||
sip_int = int.from_bytes(csr_active_config, byteorder="little")
|
||||
i = 0
|
||||
for current_sip_bit in Constants.Constants.csr_values:
|
||||
if sip_int & (1 << i):
|
||||
Constants.Constants.csr_values[current_sip_bit] = True
|
||||
i = i + 1
|
||||
|
||||
# Can be adjusted to whatever OS needs patching
|
||||
sip_needs_change = all(Constants.Constants.csr_values[i] for i in Constants.Constants.root_patch_sip_big_sur)
|
||||
if sip_needs_change is True:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
def friendly_hex(integer: int):
|
||||
return "{:02X}".format(integer)
|
||||
|
||||
|
||||
def patching_status():
|
||||
# Detection for Root Patching
|
||||
sip_enabled = True # System Integrity Protection
|
||||
sbm_enabled = True # Secure Boot Status (SecureBootModel)
|
||||
amfi_enabled = True # Apple Mobile File Integrity
|
||||
fv_enabled = True # FileVault
|
||||
|
||||
amfi_1 = "amfi_get_out_of_my_way=0x1"
|
||||
amfi_2 = "amfi_get_out_of_my_way=1"
|
||||
|
||||
if get_nvram("boot-args", decode=False) and amfi_1 in get_nvram("boot-args", decode=False) or amfi_2 in get_nvram("boot-args", decode=False):
|
||||
amfi_enabled = False
|
||||
if get_nvram("HardwareModel", "94B73556-2197-4702-82A8-3E1337DAFBFB", decode=False) not in Constants.Constants.sbm_values:
|
||||
sbm_enabled = False
|
||||
|
||||
if get_nvram("csr-active-config", decode=False) and csr_decode(get_nvram("csr-active-config", decode=False)) is False:
|
||||
sip_enabled = False
|
||||
|
||||
fv_status: str = subprocess.run("fdesetup status".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||
if fv_status.startswith("FileVault is Off"):
|
||||
fv_enabled = False
|
||||
|
||||
return sip_enabled, sbm_enabled, amfi_enabled, fv_enabled
|
||||
|
||||
|
||||
clear = True
|
||||
|
||||
|
||||
def disable_cls():
|
||||
global clear
|
||||
clear = False
|
||||
|
||||
|
||||
def cls():
|
||||
global clear
|
||||
if not clear:
|
||||
return
|
||||
if not check_recovery():
|
||||
os.system("cls" if os.name == "nt" else "clear")
|
||||
else:
|
||||
print("\u001Bc")
|
||||
|
||||
|
||||
def get_nvram(variable: str, uuid: str = None, *, decode: bool = False):
|
||||
# TODO: Properly fix for El Capitan, which does not print the XML representation even though we say to
|
||||
|
||||
if uuid is not None:
|
||||
uuid += ":"
|
||||
else:
|
||||
uuid = ""
|
||||
result = subprocess.run(f"nvram -x {uuid}{variable}".split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.strip()
|
||||
try:
|
||||
value = plistlib.loads(result)[f"{uuid}{variable}"]
|
||||
except plistlib.InvalidFileException:
|
||||
return None
|
||||
if decode:
|
||||
value = value.strip(b"\0").decode()
|
||||
return value
|
||||
|
||||
|
||||
def download_file(link, location):
|
||||
print("- Attempting download from following link:")
|
||||
print(link)
|
||||
if Path(location).exists():
|
||||
print("- Removing old file")
|
||||
Path(location).unlink()
|
||||
response = requests.get(link, stream=True)
|
||||
with location.open("wb") as file:
|
||||
count = 0
|
||||
for chunk in response.iter_content(1024 * 1024 * 4):
|
||||
file.write(chunk)
|
||||
count += len(chunk)
|
||||
cls()
|
||||
print(f"- Downloading package")
|
||||
print(f"- {count / 1024 / 1024}MB Downloaded")
|
||||
checksum = hashlib.sha256()
|
||||
with location.open("rb") as file:
|
||||
chunk = file.read(1024 * 1024 * 16)
|
||||
while chunk:
|
||||
checksum.update(chunk)
|
||||
chunk = file.read(1024 * 1024 * 16)
|
||||
print(f"- Checksum: {checksum.hexdigest()}")
|
||||
|
||||
|
||||
# def menu(title, prompt, menu_options, add_quit=True, auto_number=False, in_between=[], top_level=False):
|
||||
# return_option = ["Q", "Quit", None] if top_level else ["B", "Back", None]
|
||||
# if add_quit: menu_options.append(return_option)
|
||||
|
||||
# cls()
|
||||
# header(title)
|
||||
# print()
|
||||
|
||||
# for i in in_between: print(i)
|
||||
# if in_between: print()
|
||||
|
||||
# for index, option in enumerate(menu_options):
|
||||
# if auto_number and not (index == (len(menu_options) - 1) and add_quit):
|
||||
# option[0] = str((index + 1))
|
||||
# print(option[0] + ". " + option[1])
|
||||
|
||||
# print()
|
||||
# selected = input(prompt)
|
||||
|
||||
# keys = [option[0].upper() for option in menu_options]
|
||||
# if not selected or selected.upper() not in keys:
|
||||
# return
|
||||
# if selected.upper() == return_option[0]:
|
||||
# return -1
|
||||
# else:
|
||||
# menu_options[keys.index(selected.upper())][2]() if menu_options[keys.index(selected.upper())][2] else None
|
||||
|
||||
|
||||
class TUIMenu:
|
||||
def __init__(self, title, prompt, options=None, return_number_instead_of_direct_call=False, add_quit=True, auto_number=False, in_between=None, top_level=False, loop=False):
|
||||
self.title = title
|
||||
self.prompt = prompt
|
||||
self.in_between = in_between or []
|
||||
self.options = options or []
|
||||
self.return_number_instead_of_direct_call = return_number_instead_of_direct_call
|
||||
self.auto_number = auto_number
|
||||
self.add_quit = add_quit
|
||||
self.top_level = top_level
|
||||
self.loop = loop
|
||||
self.added_quit = False
|
||||
|
||||
def add_menu_option(self, name, description="", function=None, key=""):
|
||||
self.options.append([key, name, description, function])
|
||||
|
||||
def start(self):
|
||||
return_option = ["Q", "Quit"] if self.top_level else ["B", "Back"]
|
||||
if self.add_quit and not self.added_quit:
|
||||
self.add_menu_option(return_option[1], function=None, key=return_option[0])
|
||||
self.added_quit = True
|
||||
|
||||
while True:
|
||||
cls()
|
||||
header(self.title)
|
||||
print()
|
||||
|
||||
for i in self.in_between:
|
||||
print(i)
|
||||
if self.in_between:
|
||||
print()
|
||||
|
||||
for index, option in enumerate(self.options):
|
||||
if self.auto_number and not (index == (len(self.options) - 1) and self.add_quit):
|
||||
option[0] = str((index + 1))
|
||||
print(option[0] + ". " + option[1])
|
||||
for i in option[2]:
|
||||
print("\t" + i)
|
||||
|
||||
print()
|
||||
selected = input(self.prompt)
|
||||
|
||||
keys = [option[0].upper() for option in self.options]
|
||||
if not selected or selected.upper() not in keys:
|
||||
if self.loop:
|
||||
continue
|
||||
else:
|
||||
return
|
||||
if self.add_quit and selected.upper() == return_option[0]:
|
||||
return -1
|
||||
elif self.return_number_instead_of_direct_call:
|
||||
return self.options[keys.index(selected.upper())][0]
|
||||
else:
|
||||
self.options[keys.index(selected.upper())][3]() if self.options[keys.index(selected.upper())][3] else None
|
||||
if not self.loop:
|
||||
return
|
||||
|
||||
|
||||
class TUIOnlyPrint:
|
||||
def __init__(self, title, prompt, in_between=None):
|
||||
self.title = title
|
||||
self.prompt = prompt
|
||||
self.in_between = in_between or []
|
||||
|
||||
def start(self):
|
||||
cls()
|
||||
header(self.title)
|
||||
print()
|
||||
|
||||
for i in self.in_between:
|
||||
print(i)
|
||||
if self.in_between:
|
||||
print()
|
||||
|
||||
return input(self.prompt)
|
||||
@@ -1,383 +0,0 @@
|
||||
import binascii
|
||||
import enum
|
||||
import itertools
|
||||
import plistlib
|
||||
import subprocess
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any, ClassVar, Optional, Type
|
||||
|
||||
from Resources import PCIIDArray, Utilities, ioreg
|
||||
|
||||
|
||||
@dataclass
|
||||
class CPU:
|
||||
name: str
|
||||
flags: list[str]
|
||||
|
||||
|
||||
@dataclass
|
||||
class PCIDevice:
|
||||
VENDOR_ID: ClassVar[int] # Default vendor id, for subclasses.
|
||||
|
||||
vendor_id: int # The vendor ID of this PCI device
|
||||
device_id: int # The device ID of this PCI device
|
||||
class_code: int # The class code of this PCI device
|
||||
|
||||
# ioregistryentry: Optional[ioreg.IORegistryEntry] = None
|
||||
name: Optional[str] = None # Name of IORegistryEntry
|
||||
model: Optional[str] = None # model property
|
||||
pci_path: Optional[str] = None
|
||||
|
||||
# def __getstate__(self):
|
||||
# state = self.__dict__.copy()
|
||||
# state.pop("ioregistryentry")
|
||||
# return state
|
||||
|
||||
@classmethod
|
||||
def from_ioregistry(cls, entry: ioreg.IORegistryEntry, anti_spoof=False):
|
||||
if anti_spoof and "IOName" in entry.properties:
|
||||
vendor_id, device_id = (int(i, 16) for i in entry.properties["IOName"][3:].split(","))
|
||||
else:
|
||||
vendor_id, device_id = [int.from_bytes(entry.properties[i][:4], byteorder="little") for i in ["vendor-id", "device-id"]]
|
||||
|
||||
device = cls(vendor_id, device_id, int.from_bytes(entry.properties["class-code"][:6], byteorder="little"), name=entry.name)
|
||||
if "model" in entry.properties:
|
||||
device.model = entry.properties["model"].strip(b"\0").decode()
|
||||
device.populate_pci_path(entry)
|
||||
return device
|
||||
|
||||
# @staticmethod
|
||||
# def vendor_detect_old(device):
|
||||
# for i in [NVIDIA, AMD]:
|
||||
# if i.detect(device):
|
||||
# return i
|
||||
# return None
|
||||
|
||||
def vendor_detect(self, *, inherits: ClassVar[Any] = None, classes: list = None):
|
||||
for i in classes or itertools.chain.from_iterable([subclass.__subclasses__() for subclass in PCIDevice.__subclasses__()]):
|
||||
if issubclass(i, inherits or object) and i.detect(self):
|
||||
return i
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def detect(cls, device):
|
||||
return device.vendor_id == cls.VENDOR_ID and ((device.class_code == cls.CLASS_CODE) if getattr(cls, "CLASS_CODE", None) else True) # type: ignore # pylint: disable=no-member
|
||||
|
||||
# def acpi_path(self):
|
||||
# # Eventually
|
||||
# raise NotImplementedError
|
||||
|
||||
def populate_pci_path(self, entry: ioreg.IORegistryEntry):
|
||||
# Based off gfxutil logic, seems to work.
|
||||
paths = []
|
||||
while entry:
|
||||
if entry.entry_class == "IOPCIDevice":
|
||||
location = [hex(int(i, 16)) for i in entry.location.split(",") + ["0"]]
|
||||
paths.append(f"Pci({location[0]},{location[1]})")
|
||||
elif entry.entry_class == "IOACPIPlatformDevice":
|
||||
paths.append(f"PciRoot({hex(int(entry.properties.get('_UID', 0)))})")
|
||||
break
|
||||
elif entry.entry_class in ["IOPCI2PCIBridge", "IOPCIBridge", "AppleACPIPCI"]:
|
||||
pass
|
||||
else:
|
||||
# There's something in between that's not PCI! Abort
|
||||
paths = []
|
||||
break
|
||||
entry = entry.parent
|
||||
self.pci_path = "/".join(reversed(paths))
|
||||
|
||||
|
||||
@dataclass
|
||||
class GPU(PCIDevice):
|
||||
arch: enum.Enum = field(init=False) # The architecture, see subclasses.
|
||||
|
||||
def __post_init__(self):
|
||||
self.detect_arch()
|
||||
|
||||
def detect_arch(self):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
@dataclass
|
||||
class WirelessCard(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x028000 # 00800200 hexswapped
|
||||
country_code: str = field(init=False)
|
||||
chipset: enum.Enum = field(init=False)
|
||||
|
||||
def __post_init__(self):
|
||||
system_profiler = plistlib.loads(subprocess.run("system_profiler -xml SPAirPortDataType".split(), stdout=subprocess.PIPE).stdout)
|
||||
self.country_code = system_profiler[0]["_items"][0]["spairport_airport_interfaces"][0]["spairport_wireless_country_code"]
|
||||
self.detect_chipset()
|
||||
|
||||
def detect_chipset(self):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
@dataclass
|
||||
class NVMeController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x010802
|
||||
|
||||
aspm: Optional[int] = None
|
||||
parent_aspm: Optional[int] = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class SATAController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x010601
|
||||
|
||||
|
||||
@dataclass
|
||||
class NVIDIA(GPU):
|
||||
VENDOR_ID: ClassVar[int] = 0x10DE
|
||||
|
||||
class Archs(enum.Enum):
|
||||
# pylint: disable=invalid-name
|
||||
Fermi = "Fermi"
|
||||
Tesla = "Tesla"
|
||||
Kepler = "Kepler"
|
||||
Unknown = "Unknown"
|
||||
|
||||
arch: Archs = field(init=False)
|
||||
|
||||
def detect_arch(self):
|
||||
# G80/G80GL
|
||||
if self.device_id in PCIIDArray.nvidia_ids.tesla_ids:
|
||||
self.arch = NVIDIA.Archs.Tesla
|
||||
elif self.device_id in PCIIDArray.nvidia_ids.fermi_ids:
|
||||
self.arch = NVIDIA.Archs.Fermi
|
||||
elif self.device_id in PCIIDArray.nvidia_ids.kepler_ids:
|
||||
self.arch = NVIDIA.Archs.Kepler
|
||||
else:
|
||||
self.arch = NVIDIA.Archs.Unknown
|
||||
|
||||
|
||||
@dataclass
|
||||
class AMD(GPU):
|
||||
VENDOR_ID: ClassVar[int] = 0x1002
|
||||
|
||||
class Archs(enum.Enum):
|
||||
# pylint: disable=invalid-name
|
||||
Legacy_GCN = "Legacy GCN"
|
||||
TeraScale_1 = "TeraScale 1"
|
||||
TeraScale_2 = "TeraScale 2"
|
||||
Polaris = "Polaris"
|
||||
Vega = "Vega"
|
||||
Navi = "Navi"
|
||||
Unknown = "Unknown"
|
||||
|
||||
arch: Archs = field(init=False)
|
||||
|
||||
def detect_arch(self):
|
||||
if self.device_id in PCIIDArray.amd_ids.legacy_gcn_ids:
|
||||
self.arch = AMD.Archs.Legacy_GCN
|
||||
elif self.device_id in PCIIDArray.amd_ids.terascale_1_ids:
|
||||
self.arch = AMD.Archs.TeraScale_1
|
||||
elif self.device_id in PCIIDArray.amd_ids.terascale_2_ids:
|
||||
self.arch = AMD.Archs.TeraScale_2
|
||||
elif self.device_id in PCIIDArray.amd_ids.polaris_ids:
|
||||
self.arch = AMD.Archs.Polaris
|
||||
elif self.device_id in PCIIDArray.amd_ids.vega_ids:
|
||||
self.arch = AMD.Archs.Vega
|
||||
elif self.device_id in PCIIDArray.amd_ids.navi_ids:
|
||||
self.arch = AMD.Archs.Navi
|
||||
else:
|
||||
self.arch = AMD.Archs.Unknown
|
||||
|
||||
|
||||
@dataclass
|
||||
class Intel(GPU):
|
||||
VENDOR_ID: ClassVar[int] = 0x8086
|
||||
|
||||
class Archs(enum.Enum):
|
||||
# pylint: disable=invalid-name
|
||||
Iron_Lake = "Iron Lake"
|
||||
Sandy_Bridge = "Sandy Bridge"
|
||||
Ivy_Bridge = "Ivy Bridge"
|
||||
Unknown = "Unknown"
|
||||
|
||||
arch: Archs = field(init=False)
|
||||
|
||||
def detect_arch(self):
|
||||
if self.device_id in PCIIDArray.intel_ids.iron_ids:
|
||||
self.arch = Intel.Archs.Iron_Lake
|
||||
elif self.device_id in PCIIDArray.intel_ids.sandy_ids:
|
||||
self.arch = Intel.Archs.Sandy_Bridge
|
||||
elif self.device_id in PCIIDArray.intel_ids.ivy_ids:
|
||||
self.arch = Intel.Archs.Ivy_Bridge
|
||||
else:
|
||||
self.arch = Intel.Archs.Unknown
|
||||
|
||||
|
||||
@dataclass
|
||||
class Broadcom(WirelessCard):
|
||||
VENDOR_ID: ClassVar[int] = 0x14E4
|
||||
|
||||
class Chipsets(enum.Enum):
|
||||
# pylint: disable=invalid-name
|
||||
AirportBrcmNIC = "AirportBrcmNIC supported"
|
||||
AirPortBrcm4360 = "AirPortBrcm4360 supported"
|
||||
AirPortBrcm4331 = "AirPortBrcm4331 supported"
|
||||
AirPortBrcm43224 = "AppleAirPortBrcm43224 supported"
|
||||
Unknown = "Unknown"
|
||||
|
||||
chipset: Chipsets = field(init=False)
|
||||
|
||||
def detect_chipset(self):
|
||||
if self.device_id in PCIIDArray.broadcom_ids.AirPortBrcmNIC:
|
||||
self.chipset = Broadcom.Chipsets.AirportBrcmNIC
|
||||
elif self.device_id in PCIIDArray.broadcom_ids.AirPortBrcm4360:
|
||||
self.chipset = Broadcom.Chipsets.AirPortBrcm4360
|
||||
elif self.device_id in PCIIDArray.broadcom_ids.AirPortBrcm4331:
|
||||
self.chipset = Broadcom.Chipsets.AirPortBrcm4331
|
||||
elif self.device_id in PCIIDArray.broadcom_ids.AppleAirPortBrcm43224:
|
||||
self.chipset = Broadcom.Chipsets.AirPortBrcm43224
|
||||
else:
|
||||
self.chipset = Broadcom.Chipsets.Unknown
|
||||
|
||||
|
||||
@dataclass
|
||||
class Atheros(WirelessCard):
|
||||
VENDOR_ID: ClassVar[int] = 0x168C
|
||||
|
||||
class Chipsets(enum.Enum):
|
||||
# pylint: disable=invalid-name
|
||||
# Well there's only one model but
|
||||
AirPortAtheros40 = "AirPortAtheros40 supported"
|
||||
Unknown = "Unknown"
|
||||
|
||||
chipset: Chipsets = field(init=False)
|
||||
|
||||
def detect_chipset(self):
|
||||
if self.device_id in PCIIDArray.atheros_ids.AtherosWifi:
|
||||
self.chipset = Atheros.Chipsets.AirPortAtheros40
|
||||
else:
|
||||
self.chipset = Atheros.Chipsets.Unknown
|
||||
|
||||
|
||||
@dataclass
|
||||
class Computer:
|
||||
real_model: Optional[str] = None
|
||||
real_board_id: Optional[str] = None
|
||||
reported_model: Optional[str] = None
|
||||
reported_board_id: Optional[str] = None
|
||||
gpus: list[GPU] = field(default_factory=list)
|
||||
igpu: Optional[GPU] = None # Shortcut for IGPU
|
||||
dgpu: Optional[GPU] = None # Shortcut for GFX0
|
||||
storage: list[PCIDevice] = field(default_factory=list)
|
||||
wifi: Optional[WirelessCard] = None
|
||||
cpu: Optional[CPU] = None
|
||||
oclp_version: Optional[str] = None
|
||||
ioregistry: Optional[ioreg.IOReg] = None
|
||||
|
||||
@staticmethod
|
||||
def probe():
|
||||
computer = Computer()
|
||||
computer.ioregistry = ioreg.IOReg()
|
||||
computer.gpu_probe()
|
||||
computer.dgpu_probe()
|
||||
computer.igpu_probe()
|
||||
computer.wifi_probe()
|
||||
computer.storage_probe()
|
||||
computer.smbios_probe()
|
||||
computer.cpu_probe()
|
||||
return computer
|
||||
|
||||
def gpu_probe(self):
|
||||
# Chain together two iterators: one for class code 00000300, the other for class code 00800300
|
||||
devices = itertools.chain(self.ioregistry.find(property=("class-code", binascii.a2b_hex("00000300"))), self.ioregistry.find(property=("class-code", binascii.a2b_hex("00800300"))))
|
||||
|
||||
for device in devices:
|
||||
vendor: Type[GPU] = PCIDevice.from_ioregistry(device).vendor_detect(inherits=GPU) # type: ignore
|
||||
if vendor:
|
||||
self.gpus.append(vendor.from_ioregistry(device)) # type: ignore
|
||||
|
||||
def dgpu_probe(self):
|
||||
device = next(self.ioregistry.find(name="GFX0"), None)
|
||||
if not device:
|
||||
# No devices
|
||||
return
|
||||
|
||||
vendor: Type[GPU] = PCIDevice.from_ioregistry(device).vendor_detect(inherits=GPU) # type: ignore
|
||||
if vendor:
|
||||
self.dgpu = vendor.from_ioregistry(device) # type: ignore
|
||||
|
||||
def igpu_probe(self):
|
||||
device = next(self.ioregistry.find(name="IGPU"), None)
|
||||
if not device:
|
||||
# No devices
|
||||
return
|
||||
|
||||
vendor: Type[GPU] = PCIDevice.from_ioregistry(device).vendor_detect(inherits=GPU) # type: ignore
|
||||
if vendor:
|
||||
self.igpu = vendor.from_ioregistry(device) # type: ignore
|
||||
|
||||
def wifi_probe(self):
|
||||
# result = subprocess.run("ioreg -r -c IOPCIDevice -a -d2".split(), stdout=subprocess.PIPE).stdout.strip()
|
||||
devices = self.ioregistry.find(property=("class-code", binascii.a2b_hex(Utilities.hexswap(hex(WirelessCard.CLASS_CODE)[2:].zfill(8)))))
|
||||
# if not result:
|
||||
# # No devices
|
||||
# print("A")
|
||||
# return
|
||||
|
||||
# devices = plistlib.loads(result)
|
||||
# devices = [i for i in devices if i["class-code"] == binascii.a2b_hex("00800200")]
|
||||
|
||||
# if not devices:
|
||||
# # No devices
|
||||
# print("B")
|
||||
# return
|
||||
|
||||
for device in devices:
|
||||
vendor: Type[WirelessCard] = PCIDevice.from_ioregistry(device, anti_spoof=True).vendor_detect(inherits=WirelessCard) # type: ignore
|
||||
if vendor:
|
||||
self.wifi = vendor.from_ioregistry(device, anti_spoof=True) # type: ignore
|
||||
break
|
||||
|
||||
def storage_probe(self):
|
||||
sata_controllers = self.ioregistry.find(entry_class="IOPCIDevice", property=("class-code", binascii.a2b_hex(Utilities.hexswap(hex(SATAController.CLASS_CODE)[2:].zfill(8)))))
|
||||
nvme_controllers = itertools.chain.from_iterable(
|
||||
[
|
||||
# self.ioregistry.find(entry_class="IOPCIDevice", property=("class-code", binascii.a2b_hex(Utilities.hexswap(hex(NVMeController.CLASS_CODE)[2:].zfill(8))))),
|
||||
self.ioregistry.find(entry_class="IOPCIDevice", children={"entry_class": "IONVMeController"}),
|
||||
]
|
||||
)
|
||||
for device in sata_controllers:
|
||||
self.storage.append(SATAController.from_ioregistry(device))
|
||||
for device in nvme_controllers:
|
||||
aspm = device.properties.get("pci-aspm-default", 0)
|
||||
if isinstance(aspm, bytes):
|
||||
aspm = int.from_bytes(aspm, byteorder="little")
|
||||
|
||||
if device.parent.parent.entry_class == "IOPCIDevice":
|
||||
parent_aspm = device.parent.parent.properties.get("pci-aspm-default", 0)
|
||||
if isinstance(parent_aspm, bytes):
|
||||
parent_aspm = int.from_bytes(parent_aspm, byteorder="little")
|
||||
else:
|
||||
parent_aspm = None
|
||||
|
||||
controller = NVMeController.from_ioregistry(device)
|
||||
controller.aspm = aspm
|
||||
controller.parent_aspm = parent_aspm
|
||||
|
||||
if controller.vendor_id != 0x106B:
|
||||
self.storage.append(controller)
|
||||
|
||||
def smbios_probe(self):
|
||||
# Reported model
|
||||
entry = next(self.ioregistry.find(name="Root")).children[0]
|
||||
self.reported_model = entry.properties["model"].strip(b"\0").decode()
|
||||
self.reported_board_id = entry.properties.get("board-id", entry.properties.get("target-type", b"")).strip(b"\0").decode()
|
||||
|
||||
# Real model
|
||||
# TODO: We previously had logic for OC users using iMacPro1,1 with incorrect ExposeSensitiveData. Add logic?
|
||||
self.real_model = Utilities.get_nvram("oem-product", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True) or self.reported_model
|
||||
self.real_board_id = Utilities.get_nvram("oem-board", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True) or self.reported_board_id
|
||||
|
||||
# OCLP version
|
||||
self.oclp_version = Utilities.get_nvram("OCLP-Version", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
|
||||
|
||||
def cpu_probe(self):
|
||||
self.cpu = CPU(
|
||||
subprocess.run("sysctl machdep.cpu.brand_string".split(), stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip(),
|
||||
subprocess.run("sysctl machdep.cpu.features".split(), stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip().split(" "),
|
||||
)
|
||||
@@ -1,83 +0,0 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
import plistlib
|
||||
import subprocess
|
||||
from typing import Generator
|
||||
|
||||
|
||||
@dataclass
|
||||
class IORegistryEntry:
|
||||
name: str
|
||||
entry_class: str
|
||||
properties: dict
|
||||
location: str
|
||||
children: list[IORegistryEntry]
|
||||
parent: IORegistryEntry
|
||||
|
||||
|
||||
class IOReg:
|
||||
def __init__(self):
|
||||
self.ioreg = plistlib.loads(subprocess.run("ioreg -a -l".split(), stdout=subprocess.PIPE).stdout.strip())
|
||||
self.tree = self.recurse(self.ioreg, None)
|
||||
|
||||
def recurse(self, entry, parent):
|
||||
converted = IORegistryEntry(
|
||||
entry["IORegistryEntryName"],
|
||||
entry["IOObjectClass"],
|
||||
{
|
||||
i: v
|
||||
for i, v in entry.items()
|
||||
if i
|
||||
not in [
|
||||
"IOServiceBusyState",
|
||||
"IOServiceBusyTime",
|
||||
"IOServiceState",
|
||||
"IORegistryEntryLocation",
|
||||
"IORegistryEntryName",
|
||||
"IORegistryEntryID",
|
||||
"IOObjectClass",
|
||||
"IORegistryEntryChildren",
|
||||
"IOObjectRetainCount",
|
||||
]
|
||||
},
|
||||
entry.get("IORegistryEntryLocation"),
|
||||
[],
|
||||
parent,
|
||||
)
|
||||
|
||||
for i in entry.get("IORegistryEntryChildren", []):
|
||||
converted.children.append(self.recurse(i, converted))
|
||||
|
||||
return converted
|
||||
|
||||
def parse_conditions(self, entry: IORegistryEntry, **kwargs):
|
||||
conditions = []
|
||||
if "parent" in kwargs:
|
||||
conditions.append(self.parse_conditions(entry.parent, **kwargs["parent"]))
|
||||
if "children" in kwargs:
|
||||
conditions.append(any(self.parse_conditions(i, **kwargs["children"]) for i in entry.children))
|
||||
if "name" in kwargs:
|
||||
conditions.append(kwargs["name"] == entry.name)
|
||||
if "entry_class" in kwargs:
|
||||
conditions.append(kwargs["entry_class"] == entry.entry_class)
|
||||
if "key" in kwargs:
|
||||
conditions.append(kwargs["key"] in entry.properties)
|
||||
if "property" in kwargs:
|
||||
conditions.append(kwargs["property"][0] in entry.properties and entry.properties[kwargs["property"][0]] == kwargs["property"][1])
|
||||
|
||||
return all(conditions)
|
||||
|
||||
def find(self, root: IORegistryEntry = None, **kwargs) -> Generator[IORegistryEntry, None, None]:
|
||||
if not root:
|
||||
root = self.tree
|
||||
|
||||
if not kwargs:
|
||||
return
|
||||
|
||||
if self.parse_conditions(root, **kwargs):
|
||||
yield root
|
||||
|
||||
for i in root.children:
|
||||
for j in self.find(i, **kwargs):
|
||||
yield j
|
||||
79
SOURCE.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# Build and run from source
|
||||
|
||||
OpenCore Legacy Patcher at its core is a python-based TUI/CLI based application. This means that to run the project from source, you simply need to invoke the OpenCore-Patcher.command file via Python.
|
||||
|
||||
For developers wishing to validate mainline changes, you may use these nightly links:
|
||||
|
||||
* [GUI (Graphical Based App)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app-wxpython/main/OpenCore-Patcher.app%20%28GUI%29.zip)
|
||||
* [TUI (Text Based App)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app/main/OpenCore-Patcher-TUI.app.zip)
|
||||
|
||||
**Warning**: These binaries should not be used without first consulting the [CHANGELOG](./CHANGELOG.md). Do not distribute these links in forums, instead direct to this file.
|
||||
|
||||
* Users running new builds of the project without understanding what has changed are at higher of bricking their installation as they do not read any warnings provided in the CHANGELOG. We wish to minimize these situations as much as possible.
|
||||
|
||||
## Getting Started
|
||||
|
||||
To start, ensure you have python 3.6 or newer installed. Additionally ensure that they were downloaded from the Official source, [python.org](https://www.python.org/downloads/macos/).
|
||||
|
||||
* Python installations either preinstalled or provided with Xcode/Xcode Tools are unsupported due to reliablility issues
|
||||
|
||||
Once Python is installed, open Terminal and run the following:
|
||||
|
||||
```sh
|
||||
# Move into a directory to store the project
|
||||
cd ~/Developer
|
||||
# Clone project
|
||||
git clone https://github.com/dortania/OpenCore-Legacy-Patcher
|
||||
# Move into Project directory
|
||||
cd ./OpenCore-Legacy-Patcher
|
||||
# Install Python dependacies used by the project
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
## Running OpenCore Legacy Patcher
|
||||
|
||||
To run the project from source, simply invoke via python3:
|
||||
|
||||
```sh
|
||||
# Launch TUI
|
||||
python3 OpenCore-Patcher.command
|
||||
```
|
||||
|
||||
```sh
|
||||
# Launch GUI
|
||||
python3 OpenCore-Patcher-GUI.command
|
||||
```
|
||||
|
||||
Note that the OpenCore-Patcher.command file can be run as both a TUI and a CLI utility for other programs to call. If no core arguments are passed, the TUI is initialized. Otherwise the CLI will start:
|
||||
|
||||
```sh
|
||||
# Launch CLI
|
||||
python3 OpenCore-Patcher.command --build --model iMac12,2 --verbose
|
||||
```
|
||||
|
||||
See `-h`/`--help` for more information on supported CLI arguments.
|
||||
|
||||
## Generating prebuilt binaries
|
||||
|
||||
The main goal of generating prebuilt binaries is to strip the requirement of a local python installation for users. For developers, there's very little benefit besides enabling dark mode support in the GUI. For development, simply use the OpenCore-Patcher.command file with a python3 installation.
|
||||
|
||||
* Note that due to PyInstaller's linking mechanism, binaries generated on Catalina and newer are not compatible with High Sierra and older
|
||||
* To ensure the largest compatibility, generate binaries on macOS Mojave. These binaries will be compatible with macOS 10.9 to macOS 12.
|
||||
* Currently our build system is a [Macmini8,1 provided by MacStadium](https://www.macstadium.com/opensource) running macOS Mojave (10.14.6).
|
||||
|
||||
```sh
|
||||
# Install PyInstaller
|
||||
pip3 install pyinstaller
|
||||
# Move into project directory
|
||||
cd ~/Developer/OpenCore-Legacy-Patcher/
|
||||
# Create the pyinstaller based Application (replace OpenCore-Patcher.spec with OpenCore-Patcher-GUI.spec for GUI binary)
|
||||
pyinstaller OpenCore-Patcher.spec
|
||||
# Post PyInstaller clean up (only for the TUI)
|
||||
./after_pyinstaller.sh
|
||||
# Open build folder
|
||||
open ./dist/
|
||||
```
|
||||
|
||||
Once done, you'll find the application generated at `./dist/OpenCore-Patcher.app`:
|
||||
|
||||

|
||||
@@ -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
@@ -0,0 +1,14 @@
|
||||
import subprocess
|
||||
from resources import constants
|
||||
|
||||
patcher_support_pkg_version = constants.Constants().patcher_support_pkg_version
|
||||
binary_packages = ["Universal-Binaries"]
|
||||
|
||||
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
@@ -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
|
||||
24
data/cpu_data.py
Normal file
@@ -0,0 +1,24 @@
|
||||
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
|
||||
apple_m1_ultra = 117
|
||||
14
data/dylib_data.py
Normal file
@@ -0,0 +1,14 @@
|
||||
# Data for SkyLightShim Plugin systems
|
||||
class shim_list:
|
||||
shim_pathing = {
|
||||
"CoreWLAN.dylib": "/System/Library/CoreServices/WiFiAgent.app/Contents/MacOS/WiFiAgent",
|
||||
"BacklightFixup.dylib": "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow",
|
||||
}
|
||||
|
||||
shim_legacy_accel = [
|
||||
"CoreWLAN.dylib",
|
||||
]
|
||||
|
||||
shim_legacy_accel_keyboard = [
|
||||
"BacklightFixup.dylib",
|
||||
]
|
||||
477
data/example_data.py
Normal file
@@ -0,0 +1,477 @@
|
||||
# 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,
|
||||
)
|
||||
|
||||
MacBookPro111_Stock = device_probe.Computer(
|
||||
real_model='MacBookPro11,1',
|
||||
real_board_id='Mac-189A3D4F975D5FFC',
|
||||
reported_model='MacBookPro11,1',
|
||||
reported_board_id='Mac-189A3D4F975D5FFC',
|
||||
gpus=[
|
||||
device_probe.Intel(vendor_id=32902, device_id=2606, class_code=196608, name='IGPU', model='Intel Iris', acpi_path='IOACPIPlane:/_SB/PCI0@0/IGPU@20000', pci_path='PciRoot(0x0)/Pci(0x2,0x0)')
|
||||
],
|
||||
igpu=device_probe.Intel(vendor_id=32902, device_id=2606, class_code=196608, name='IGPU', model='Intel Iris', acpi_path='IOACPIPlane:/_SB/PCI0@0/IGPU@20000', pci_path='PciRoot(0x0)/Pci(0x2,0x0)'),
|
||||
dgpu=None,
|
||||
storage=[
|
||||
device_probe.SATAController(vendor_id=6987, device_id=37251, class_code=67073, name='SSD0', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/RP06@1c0005/SSD0@0', pci_path='PciRoot(0x0)/Pci(0x1c,0x5)/Pci(0x0,0x0)')
|
||||
],
|
||||
usb_controllers=[
|
||||
device_probe.XHCIController(vendor_id=32902, device_id=39985, class_code=787248, name='XHC1', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/XHC1@140000', pci_path='PciRoot(0x0)/Pci(0x14,0x0)')
|
||||
],
|
||||
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17312, class_code=163840, name='ARPT', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/RP03@1c0002/ARPT@0', pci_path='PciRoot(0x0)/Pci(0x1c,0x2)/Pci(0x0,0x0)'),
|
||||
cpu=device_probe.CPU(
|
||||
name='Intel(R) Core(TM) i5-4258U CPU @ 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', 'PCLMULQDQ', 'DTES64', 'MON', 'DSCPL', 'VMX', '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='0.4.2',
|
||||
opencore_version='DBG-077-2022-01-10',
|
||||
bluetooth_chipset='BRCM20702 Hub',
|
||||
third_party_sata_ssd=False
|
||||
)
|
||||
|
||||
MacBookPro141_SSD_Upgrade = device_probe.Computer(
|
||||
real_model='MacBookPro14,1',
|
||||
real_board_id='Mac-B4831CEBD52A0C4C',
|
||||
reported_model='MacBookPro14,1',
|
||||
reported_board_id='Mac-B4831CEBD52A0C4C',
|
||||
gpus=[
|
||||
device_probe.Intel(vendor_id=32902, device_id=22822, class_code=196608, name='IGPU', model='Intel Iris Plus Graphics 640', acpi_path='IOACPIPlane:/_SB/PCI0@0/IGPU@20000', pci_path='PciRoot(0x0)/Pci(0x2,0x0)')
|
||||
],
|
||||
igpu=device_probe.Intel(vendor_id=32902, device_id=22822, class_code=196608, name='IGPU', model='Intel Iris Plus Graphics 640', acpi_path='IOACPIPlane:/_SB/PCI0@0/IGPU@20000', pci_path='PciRoot(0x0)/Pci(0x2,0x0)'),
|
||||
dgpu=None,
|
||||
storage=[
|
||||
device_probe.NVMeController(vendor_id=6535, device_id=20499, class_code=67586, name='SSD0', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/RP01@1c0000/SSD0@0', pci_path='PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)', aspm=2)
|
||||
],
|
||||
usb_controllers=[
|
||||
device_probe.XHCIController(vendor_id=32902, device_id=40239, class_code=787248, name='XHC1', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/XHC1@140000', pci_path='PciRoot(0x0)/Pci(0x14,0x0)'),
|
||||
device_probe.XHCIController(vendor_id=32902, device_id=5588, class_code=787248, name='XHC2', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/RP05@1c0004/UPSB@0/DSB2@20000/XHC2@0', pci_path='PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)')
|
||||
],
|
||||
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17315, class_code=163840, name='ARPT', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/RP09@1d0000/ARPT@0', pci_path='PciRoot(0x0)/Pci(0x1d,0x0)/Pci(0x0,0x0)'),
|
||||
cpu=device_probe.CPU(
|
||||
name='Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz',
|
||||
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='0.4.1',
|
||||
opencore_version=None,
|
||||
bluetooth_chipset=None,
|
||||
third_party_sata_ssd=False)
|
||||
|
||||
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,
|
||||
)
|
||||
|
||||
iMac122_Upgraded_Nvidia = 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=229376, name='IGPU', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/IGPU@20000', pci_path='PciRoot(0x0)/Pci(0x2,0x0)'),
|
||||
device_probe.NVIDIA(vendor_id=4318, device_id=4092, class_code=196608, name='GFX0', model='Quadro K1000M by Nick[D]vB', acpi_path='IOACPIPlane:/_SB/PCI0@0/P0P2@10000/GFX0@0', pci_path='PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)')],
|
||||
igpu=device_probe.Intel(vendor_id=32902, device_id=258, class_code=229376, name='IGPU', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/IGPU@20000', pci_path='PciRoot(0x0)/Pci(0x2,0x0)'),
|
||||
dgpu=device_probe.NVIDIA(vendor_id=4318, device_id=4092, class_code=196608, name='GFX0', model='Quadro K1000M by Nick[D]vB', acpi_path='IOACPIPlane:/_SB/PCI0@0/P0P2@10000/GFX0@0', 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, acpi_path='IOACPIPlane:/_SB/PCI0@0/SATA@1f0002', pci_path='PciRoot(0x0)/Pci(0x1f,0x2)')
|
||||
],
|
||||
usb_controllers=[
|
||||
device_probe.EHCIController(vendor_id=32902, device_id=7213, class_code=787232, name='EHC2', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/EHC2@1a0007', pci_path='PciRoot(0x0)/Pci(0x1a,0x7)'),
|
||||
device_probe.EHCIController(vendor_id=32902, device_id=7206, class_code=787232, name='EHC1', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/EHC1@1d0007', pci_path='PciRoot(0x0)/Pci(0x1d,0x7)')
|
||||
],
|
||||
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17201, class_code=163840, name='ARPT', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/RP02@1c0001/ARPT@0', 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', 'x2APIC', 'POPCNT', 'AES', 'PCID', 'XSAVE', 'OSXSAVE', 'TSCTMR', 'AVX1.0']
|
||||
),
|
||||
oclp_version='0.3.3',
|
||||
opencore_version=None,
|
||||
bluetooth_chipset='BRCM2046 Hub',
|
||||
third_party_sata_ssd=True
|
||||
)
|
||||
|
||||
iMac151_Stock = device_probe.Computer(
|
||||
real_model='iMac15,1',
|
||||
real_board_id='Mac-42FD25EABCABB274',
|
||||
reported_model='iMac15,1',
|
||||
reported_board_id='Mac-42FD25EABCABB274',
|
||||
gpus=[
|
||||
device_probe.Intel(vendor_id=32902, device_id=1042, class_code=196608, name='IGPU', model='Intel Iris Pro', acpi_path=None, pci_path='PciRoot(0x0)/Pci(0x2,0x0)'),
|
||||
device_probe.AMD(vendor_id=4098, device_id=26640, class_code=196608, name='GFX0', model='AMD Radeon R9 M290X', acpi_path=None, pci_path='PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)')
|
||||
],
|
||||
igpu=device_probe.Intel(vendor_id=32902, device_id=1042, class_code=196608, name='IGPU', model='Intel Iris Pro', acpi_path=None, pci_path='PciRoot(0x0)/Pci(0x2,0x0)'),
|
||||
dgpu=device_probe.AMD(vendor_id=4098, device_id=26640, class_code=196608, name='GFX0', model='AMD Radeon R9 M290X', acpi_path=None, pci_path='PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)'),
|
||||
storage=[
|
||||
device_probe.SATAController(vendor_id=32902, device_id=35842, class_code=67073, name='SATA', model=None, acpi_path=None, pci_path='PciRoot(0x0)/Pci(0x1f,0x2)'),
|
||||
device_probe.SATAController(vendor_id=6987, device_id=37251, class_code=67073, name='SSD0', model=None, acpi_path=None, pci_path='PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)')
|
||||
],
|
||||
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17312, class_code=163840, name='ARPT', model=None, acpi_path=None, pci_path='PciRoot(0x0)/Pci(0x1c,0x2)/Pci(0x0,0x0)'),
|
||||
cpu=device_probe.CPU(
|
||||
name='Intel(R) Core(TM) i5-4690 CPU @ 3.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', '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,
|
||||
bluetooth_chipset='BRCM20702 Hub',
|
||||
third_party_sata_ssd=False
|
||||
)
|
||||
|
||||
iMac201_Stock = device_probe.Computer(
|
||||
real_model='iMac20,1',
|
||||
real_board_id='Mac-CFF7D910A743CAAF',
|
||||
reported_model='iMac20,1',
|
||||
reported_board_id='Mac-CFF7D910A743CAAF',
|
||||
gpus=[
|
||||
device_probe.Intel(vendor_id=32902, device_id=39880, class_code=196608, name='IGPU', model='Intel HD Graphics CFL', acpi_path='IOACPIPlane:/_SB/PCI0@0/IGPU@20000', pci_path='PciRoot(0x0)/Pci(0x2,0x0)'),
|
||||
device_probe.AMD(vendor_id=4098, device_id=29504, class_code=196608, name='GFX0', model='AMD Radeon Pro 5300', acpi_path='IOACPIPlane:/_SB/PCI0@0/PEG0@10000/EGP0@0/EGP1@0/GFX0@0', pci_path='PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)')
|
||||
],
|
||||
igpu=device_probe.Intel(vendor_id=32902, device_id=39880, class_code=196608, name='IGPU', model='Intel HD Graphics CFL', acpi_path='IOACPIPlane:/_SB/PCI0@0/IGPU@20000', pci_path='PciRoot(0x0)/Pci(0x2,0x0)'),
|
||||
dgpu=device_probe.AMD(vendor_id=4098, device_id=29504, class_code=196608, name='GFX0', model='AMD Radeon Pro 5300', acpi_path='IOACPIPlane:/_SB/PCI0@0/PEG0@10000/EGP0@0/EGP1@0/GFX0@0', pci_path='PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)'),
|
||||
storage=[],
|
||||
usb_controllers=[
|
||||
device_probe.XHCIController(vendor_id=32902, device_id=1773, class_code=787248, name='XHC1', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/XHC1@140000', pci_path='PciRoot(0x0)/Pci(0x14,0x0)'),
|
||||
device_probe.XHCIController(vendor_id=32902, device_id=5612, class_code=787248, name='XHC2', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/RP05@1c0004/UPSB@0/DSB2@20000/XHC2@0', pci_path='PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)')
|
||||
],
|
||||
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17508, class_code=163840, name='ARPT', model=None, acpi_path='IOACPIPlane:/_SB/PCI0@0/RP01@1c0000/ARPT@0', pci_path='PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)'),
|
||||
cpu=device_probe.CPU(
|
||||
name='Intel(R) Core(TM) i5-10500 CPU @ 3.10GHz',
|
||||
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,
|
||||
bluetooth_chipset=None,
|
||||
third_party_sata_ssd=False
|
||||
)
|
||||
|
||||
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"
|
||||
)
|
||||
11
data/mirror_data.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# Mirrors of Apple's InstallAssistant.ppkg
|
||||
# Currently only listing important Installers no longer on Apple's servers
|
||||
|
||||
Install_macOS_Big_Sur_11_2_3 = {
|
||||
"Version": "11.2.3",
|
||||
"Build": "20D91",
|
||||
"Link": "https://archive.org/download/install-assistant-20D91/InstallAssistant.pkg",
|
||||
"Size": 12211077798,
|
||||
"Source": "Archive.org",
|
||||
"integrity": None,
|
||||
}
|
||||
279
data/model_array.py
Normal file
@@ -0,0 +1,279 @@
|
||||
# Lists all models and required patches
|
||||
# Copyright (C) 2020-2022, 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
|
||||
]
|
||||
|
||||
LegacyBrightness = [
|
||||
"MacBook5,2",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,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",
|
||||
]
|
||||
|
||||
IntelNvidiaDRM = [
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
]
|
||||
|
||||
# Mac Pro and Xserve
|
||||
MacPro = ["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",
|
||||
]
|
||||
47
data/os_data.py
Normal file
@@ -0,0 +1,47 @@
|
||||
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
|
||||
|
||||
|
||||
class os_conversion:
|
||||
|
||||
def os_to_kernel(os):
|
||||
# Convert OS version to major XNU version
|
||||
if os.startswith("10."):
|
||||
return (int(os.split(".")[1]) + 4)
|
||||
else:
|
||||
return (int(os.split(".")[0]) + 9)
|
||||
|
||||
def kernel_to_os(kernel):
|
||||
# Convert major XNU version to OS version
|
||||
if kernel >= os_data.big_sur:
|
||||
return str((kernel - 9))
|
||||
else:
|
||||
return str((f"10.{kernel - 4}"))
|
||||
|
||||
def is_os_newer(source_major, source_minor, target_major, target_minor):
|
||||
# Check if OS version 1 is newer than OS version 2
|
||||
if source_major < target_major:
|
||||
return True
|
||||
elif source_major == target_major:
|
||||
if source_minor < target_minor:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
@@ -1,10 +1,20 @@
|
||||
# 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/
|
||||
curie_ids = [
|
||||
0x0040, # NV40 [GeForce 6800 Ultra]
|
||||
0x00f0, # BR02
|
||||
0x0220, # NV44A
|
||||
0x0140, # NV43 [GeForce 6600 GT]
|
||||
0x0160, # NV44 [GeForce 6500]
|
||||
0x0090, # G70 [GeForce 7800 GTX]
|
||||
0x01d0, # G72 [GeForce 7350 LE]
|
||||
0x0390, # G73 [GeForce 7650 GS]
|
||||
0x0290, # G71 [GeForce 7900 GTX]
|
||||
]
|
||||
|
||||
tesla_ids = [
|
||||
# G80
|
||||
0x0190, # G80 [GeForce 8800 GTS / 8800 GTX]
|
||||
@@ -514,240 +524,465 @@ class nvidia_ids:
|
||||
]
|
||||
|
||||
|
||||
maxwell_ids = [
|
||||
0x1381, # GM107 [GeForce GTX 750]
|
||||
0x1392, # GM107 [GeForce GTX 860M]
|
||||
0x139a, # GM107 [GeForce GTX 950M]
|
||||
0x139b, # GM107 [GeForce GTX 960M]
|
||||
0x13b0, # GM107 [Quadro M2000M]
|
||||
|
||||
0x1340, # GM108
|
||||
0x1341, # GM108 [GeForce 840M]
|
||||
0x1346, # GM108 [GeForce 930M]
|
||||
0x1347, # GM108 [GeForce 940M]
|
||||
0x134d, # GM108 [GeForce 940MX]
|
||||
|
||||
0x13c0, # GM204 [GeForce GTX 980]
|
||||
0x13c2, # GM204 [GeForce GTX 970]
|
||||
0x13d7, # GM204 [GeForce GTX 980M]
|
||||
0x13d8, # GM204 [GeForce GTX 970M]
|
||||
0x13d9, # GM204 [GeForce GTX 965M]
|
||||
|
||||
0x1401, # GM206 [GeForce GTX 960]
|
||||
0x1407, # GM206 [GeForce GTX 750 v2]
|
||||
0x1427, # GM206 [GeForce GTX 965M v2]
|
||||
]
|
||||
|
||||
pascal_ids = [
|
||||
0x15f7, # GP100 [Tesla P100 PCIe 12GB]
|
||||
0x15f8, # GP100 [Tesla P100 PCIe 16GB]
|
||||
0x15f9, # GP100 [Tesla P100 SXM2 16GB]
|
||||
|
||||
0x1b00, # GP102 [GeForce TITAN X]
|
||||
0x1b02, # GP102 [GeForce TITAN Xp]
|
||||
0x1b06, # GP102 [GeForce GTX 1080 Ti]
|
||||
0x1b30, # GP102 [Quadro P6000]
|
||||
0x1b38, # GP102 [Tesla P40]
|
||||
|
||||
0x1b80, # GP104 [GeForce GTX 1080]
|
||||
0x1b81, # GP104 [GeForce GTX 1070]
|
||||
0x1b82, # GP104 [GeForce GTX 1070 Ti]
|
||||
0x1b83, # GP104 [GeForce GTX 1060 6GB]
|
||||
0x1b84, # GP104 [GeForce GTX 1060 3GB]
|
||||
0x1ba0, # GP104 [GeForce GTX 1080 Mobile]
|
||||
0x1ba1, # GP104 [GeForce GTX 1070 Mobile]
|
||||
0x1ba2, # GP104 [GeForce GTX 1070 Mobile]
|
||||
0x1bb0, # GP104 [Quadro P5000]
|
||||
0x1bb3, # GP104 [Tesla P4]
|
||||
0x1bb6, # GP104 [Quadro P5000 Mobile]
|
||||
0x1bb7, # GP104 [Quadro P4000 Mobile]
|
||||
0x1bb8, # GP104 [Quadro P3000 Mobile]
|
||||
0x1be0, # GP104 [GeForce GTX 1080 Mobile]
|
||||
0x1be1, # GP104 [GeForce GTX 1070 Mobile]
|
||||
|
||||
0x1c02, # GP106 [GeForce GTX 1060 3GB]
|
||||
0x1c03, # GP106 [GeForce GTX 1060 6GB]
|
||||
0x1c20, # GP106 [GeForce GTX 1060 Mobile]
|
||||
0x1c23, # GP106 [GeForce GTX 1060]
|
||||
0x1c60, # GP106 [GeForce GTX 1060 Mobile]
|
||||
0x1c61, # GP106 [GeForce GTX 1050 Ti Mobile]
|
||||
0x1c62, # GP106 [GeForce GTX 1050 Mobile]
|
||||
|
||||
0x1c81, # GP107 [GeForce GTX 1050]
|
||||
0x1c82, # GP107 [GeForce GTX 1050 Ti]
|
||||
0x1c83, # GP107 [GeForce GTX 1050 3GB]
|
||||
0x1c8c, # GP107 [GeForce GTX 1050 Ti Mobile]
|
||||
0x1c8d, # GP107 [GeForce GTX 1050 Mobile]
|
||||
0x1c8f, # GP107 [GeForce GTX 1050 Ti Max-Q]
|
||||
0x1c92, # GP107 [GeForce GTX 1050 Max-Q]
|
||||
|
||||
0x1d01, # GP108 [GeForce GT 1030]
|
||||
0x1d10, # GP108 [GeForce MX150]
|
||||
0x1d12, # GP108 [GeForce MX150]
|
||||
]
|
||||
|
||||
|
||||
class amd_ids:
|
||||
legacy_gcn_ids = [
|
||||
# AMDRadeonX4000
|
||||
# AMDBonaireGraphicsAccelerator
|
||||
0x6640,
|
||||
0x6641,
|
||||
0x6646,
|
||||
0x6647,
|
||||
0x6650,
|
||||
0x6651,
|
||||
0x665C,
|
||||
0x665D,
|
||||
# AMDFijiGraphicsAccelerator
|
||||
0x7300,
|
||||
0x730F,
|
||||
# AMDHawaiiGraphicsAccelerator
|
||||
0x67B0,
|
||||
# AMDPitcairnGraphicsAccelerator
|
||||
0x6800,
|
||||
0x6801,
|
||||
0x6806,
|
||||
0x6808,
|
||||
0x6810,
|
||||
0x6818,
|
||||
0x6819,
|
||||
# AMDTahitiGraphicsAccelerator
|
||||
0x6790,
|
||||
0x6798,
|
||||
0x679A,
|
||||
0x679E,
|
||||
0x6780,
|
||||
# AMDTongaGraphicsAccelerator
|
||||
0x6920,
|
||||
0x6921,
|
||||
0x6930,
|
||||
0x6938,
|
||||
0x6939,
|
||||
# AMDVerdeGraphicsAccelerator
|
||||
0x6820,
|
||||
0x6821,
|
||||
0x6823,
|
||||
0x6825,
|
||||
0x6827,
|
||||
0x682B,
|
||||
0x682D,
|
||||
0x682F,
|
||||
0x6835,
|
||||
0x6839,
|
||||
0x683B,
|
||||
0x683D,
|
||||
0x683F,
|
||||
|
||||
gcn_7000_ids = [
|
||||
# GCN v1
|
||||
# AMDPitcairnGraphicsAccelerator - AMD7000Controller
|
||||
0x6800, # HD 7970M
|
||||
0x6801, # HD 8970M
|
||||
0x6806, # Unknown
|
||||
0x6808, # W7000
|
||||
0x6810, # R7 370 / R9 270X/370X
|
||||
0x6818, # HD 7870
|
||||
0x6819, # HD 7850 / R7 265 / R9 270 1024SP
|
||||
# AMDTahitiGraphicsAccelerator - AMD7000Controller
|
||||
0x6790, # Unknown
|
||||
0x6798, # HD 7970/8970 OEM / R9 280X / D700
|
||||
0x679A, # HD 7950/8950 OEM / R9 280
|
||||
0x679E, # HD 7870 XT
|
||||
0x6780, # W9000
|
||||
# AMDVerdeGraphicsAccelerator - AMD7000Controller
|
||||
0x6820, # HD 8890M / R9 M275X/M375X / M5100
|
||||
0x6821, # HD 8870M / R9 M270X/M370X
|
||||
0x6823, # HD 8850M / R9 M265X
|
||||
0x6825, # HD 7870M
|
||||
0x6827, # HD 7850M/8850M
|
||||
0x682B, # HD 8830M / R7 250 / R7 M465X
|
||||
0x682D, # M4000
|
||||
0x682F, # HD 7730M
|
||||
0x6835, # R9 255
|
||||
0x6839, # Unknown
|
||||
0x683B, # Unknown
|
||||
0x683D, # HD 7770/8760 / R7 250X
|
||||
0x683F, # HD 7750/8740 / R7 250E
|
||||
]
|
||||
|
||||
gcn_8000_ids = [
|
||||
# GCN v2
|
||||
# AMDBonaireGraphicsAccelerator - AMD8000Controller
|
||||
0x6640, # M6100
|
||||
0x6641, # HD 8930M
|
||||
0x6646, # R9 M280X / W6170M
|
||||
0x6647, # R9 M270X/M280X
|
||||
0x6650, # Unknown
|
||||
0x6651, # Unknown
|
||||
0x665C, # HD 7790/8770 / R7 360 / R9 260/360
|
||||
0x665D, # R7 200
|
||||
# AMDHawaiiGraphicsAccelerator - AMD8000Controller
|
||||
0x67B0, # R9 290X/390X
|
||||
]
|
||||
|
||||
gcn_9000_ids = [
|
||||
# GCN v3
|
||||
# AMDFijiGraphicsAccelerator - AMD9000Controller
|
||||
0x7300, # R9 FURY / NANO
|
||||
0x730F, # Unknown
|
||||
# AMDTongaGraphicsAccelerator - AMD9000Controller
|
||||
0x6920, # R9 M395/ M395X
|
||||
0x6921, # R9 M295X / M390X
|
||||
0x6930, # Unknown
|
||||
0x6938, # R9 380X / R9 M295X
|
||||
0x6939, # R9 285/380
|
||||
]
|
||||
|
||||
polaris_ids = [
|
||||
# GCN v4
|
||||
# AMDRadeonX4000
|
||||
# AMDBaffinGraphicsAccelerator
|
||||
0x67E0,
|
||||
0x67E3,
|
||||
0x67E8,
|
||||
0x67EB,
|
||||
0x67EF,
|
||||
0x67FF,
|
||||
0x67E1,
|
||||
0x67E7,
|
||||
0x67E9,
|
||||
# AMDEllesmereGraphicsAccelerator
|
||||
0x67C0,
|
||||
0x67C1,
|
||||
0x67C2,
|
||||
0x67C4,
|
||||
0x67C7,
|
||||
0x67DF,
|
||||
0x67D0,
|
||||
0x67C8,
|
||||
0x67C9,
|
||||
0x67CA,
|
||||
0x67CC,
|
||||
0x67CF,
|
||||
# AMDBaffinGraphicsAccelerator - AMD9500Controller
|
||||
0x67E0, # Pro WX 4170
|
||||
0x67E3, # Pro WX 4100
|
||||
0x67E8, # Pro WX 4130/4150
|
||||
0x67EB, # Pro V5300X
|
||||
0x67EF, # 460/560D / Pro 450/455/460/555/555X/560/560X
|
||||
0x67FF, # 550 640SP / RX 560/560X
|
||||
0x67E1, # Unknown
|
||||
0x67E7, # Unknown
|
||||
0x67E9, # Unknown
|
||||
# AMDEllesmereGraphicsAccelerator - AMD9500Controller
|
||||
0x67C0, # Pro WX 7100 Mobile
|
||||
0x67C1, # Unknown
|
||||
0x67C2, # Pro V7300X / V7350x2
|
||||
0x67C4, # Pro WX 7100
|
||||
0x67C7, # Pro WX 5100
|
||||
0x67DF, # 470/480/570/570X/580/580X/590
|
||||
0x67D0, # Pro V7300X / V7350x2
|
||||
0x67C8, # Unknown
|
||||
0x67C9, # Unknown
|
||||
0x67CA, # Unknown
|
||||
0x67CC, # Unknown
|
||||
0x67CF, # Unknown
|
||||
]
|
||||
|
||||
vega_ids = [
|
||||
# GCN v5
|
||||
# AMDRadeonX5000
|
||||
# AMDVega10GraphicsAccelerator
|
||||
0x6860,
|
||||
0x6861,
|
||||
0x6862,
|
||||
0x6863,
|
||||
0x6864,
|
||||
0x6867,
|
||||
0x6868,
|
||||
0x6869,
|
||||
0x686A,
|
||||
0x686B,
|
||||
0x686C,
|
||||
0x686D,
|
||||
0x686E,
|
||||
0x686F,
|
||||
0x687F,
|
||||
# AMDVega12GraphicsAccelerator
|
||||
0x69A0,
|
||||
0x69A1,
|
||||
0x69A2,
|
||||
0x69A3,
|
||||
0x69AF,
|
||||
# AMDVega20GraphicsAccelerator
|
||||
0x66A0,
|
||||
0x66A1,
|
||||
0x66A2,
|
||||
0x66A3,
|
||||
0x66A7,
|
||||
0x66AF,
|
||||
# AMDVega10GraphicsAccelerator - AMD10000Controller
|
||||
0x6860, # Instinct MI25
|
||||
0x6861, # Pro WX 9100
|
||||
0x6862, # Pro SSG
|
||||
0x6863, # Vega Frontier
|
||||
0x6864, # Pro V340
|
||||
0x6867, # Pro Vega 56
|
||||
0x6868, # Pro WX 8100/8200
|
||||
0x6869, # Pro Vega 48
|
||||
0x686A, # Unknown
|
||||
0x686B, # Pro Vega 64X
|
||||
0x686C, # Instinct MI25
|
||||
0x686D, # Unknown
|
||||
0x686E, # Unknown
|
||||
0x686F, # Unknown
|
||||
0x687F, # RX Vega 56/64
|
||||
# AMDVega12GraphicsAccelerator - AMD10000Controller
|
||||
0x69A0, # Unknown
|
||||
0x69A1, # Unknown
|
||||
0x69A2, # Unknown
|
||||
0x69A3, # Unknown
|
||||
0x69AF, # Unknown
|
||||
# AMDVega20GraphicsAccelerator - AMD10000Controller
|
||||
0x66A0, # Instinct
|
||||
0x66A1, # Pro VII/Instinct MI50
|
||||
0x66A2, # Unknown
|
||||
0x66A3, # Pro Vega II/ Pro Vega II Duo
|
||||
0x66A7, # Unknown
|
||||
0x66AF, # VII
|
||||
]
|
||||
|
||||
navi_ids = [
|
||||
# AMDRadeonX6000
|
||||
# AMDNavi10GraphicsAccelerator
|
||||
0x7310,
|
||||
0x7312,
|
||||
0x7318,
|
||||
0x7319,
|
||||
0x731A,
|
||||
0x731B,
|
||||
0x731F,
|
||||
0x7310, # Pro W5700X
|
||||
0x7312, # Pro W5700
|
||||
0x7318, # Unknown
|
||||
0x7319, # Unknown
|
||||
0x731A, # Unknown
|
||||
0x731B, # Unknown
|
||||
0x731F, # RX 5600/5600 XT / 5700/5700 XT
|
||||
# AMDNavi12GraphicsAccelerator
|
||||
0x7360,
|
||||
0x7360, # 5600M
|
||||
# AMDNavi14GraphicsAccelerator
|
||||
0x7340,
|
||||
0x7341,
|
||||
0x7343,
|
||||
0x7347,
|
||||
0x734F,
|
||||
0x7340, # 5500/5500M / Pro 5500M
|
||||
0x7341, # Pro W5500
|
||||
0x7343, # Unknown
|
||||
0x7347, # Pro W5500M
|
||||
0x734F, # Pro W5300M
|
||||
# AMDNavi21GraphicsAccelerator
|
||||
0x73A2,
|
||||
0x73AB,
|
||||
0x73BF,
|
||||
0x73A2, # Pro W6900X
|
||||
0x73AB, # Pro W6800X/Pro W6800X Duo
|
||||
0x73BF, # 6800/6800 XT / 6900 XT
|
||||
0x73A3, # Pro W6800
|
||||
# AMDNavi23GraphicsAccelerator
|
||||
0x73E3, # Pro W6600
|
||||
0x73FF, # 6600/6600 XT/6600M
|
||||
0x73E0, # Unknown
|
||||
]
|
||||
|
||||
r500_ids = [
|
||||
0x7187, # X1300/X1550
|
||||
0x7146, # X1300/X1550
|
||||
0x71c5, # Mobile X1600
|
||||
0x7249, # X1900 XT
|
||||
]
|
||||
|
||||
terascale_1_ids = [
|
||||
0x9400,
|
||||
0x9401,
|
||||
0x9402,
|
||||
0x9403,
|
||||
0x9581,
|
||||
0x9583,
|
||||
0x9588,
|
||||
0x94C8,
|
||||
0x94C9,
|
||||
0x9500,
|
||||
0x9501,
|
||||
0x9505,
|
||||
0x9507,
|
||||
0x9504,
|
||||
0x9506,
|
||||
0x9598,
|
||||
0x9488,
|
||||
0x9599,
|
||||
0x9591,
|
||||
0x9593,
|
||||
0x9440,
|
||||
0x9442,
|
||||
0x944A,
|
||||
0x945A,
|
||||
0x9490,
|
||||
0x949E,
|
||||
0x9480,
|
||||
0x9540,
|
||||
0x9541,
|
||||
0x954E,
|
||||
0x954F,
|
||||
0x9552,
|
||||
0x9553,
|
||||
0x94A0,
|
||||
0x9400, # HD 2900 PRO/XT
|
||||
0x9401, # HD 2900 XT
|
||||
0x9402, # Unknown
|
||||
0x9403, # HD 2900 PRO
|
||||
0x9581, # HD 2600 (mobile)
|
||||
0x9583, # HD 2600 XT/2700 (mobile)
|
||||
0x9588, # HD 2600 XT
|
||||
0x94C8, # HD 2400 XT (mobile)
|
||||
0x94C9, # HD 2400 (mobile)
|
||||
0x9500, # HD 3850 X2
|
||||
0x9501, # HD 3870
|
||||
0x9505, # HD 3690/3850
|
||||
0x9507, # HD 3830
|
||||
0x9504, # HD 3850 (mobile)
|
||||
0x9506, # HD 3850 X2 (mobile)
|
||||
0x9598, # HD 3650/3750/4570/4580
|
||||
0x9488, # HD 4670 (mobile)
|
||||
0x9599, # HD 3650 AGP
|
||||
0x9591, # HD 3650 (mobile)
|
||||
0x9593, # HD 3670 (mobile)
|
||||
0x9440, # HD 4870
|
||||
0x9442, # HD 4850
|
||||
0x944A, # HD 4850 (mobile)
|
||||
0x945A, # HD 4870 (mobile)
|
||||
0x9490, # HD 4670
|
||||
0x949E, # FirePro V5700
|
||||
0x9480, # HD 4650/5165 (mobile)
|
||||
0x9540, # HD 4550
|
||||
0x9541, # Unknown
|
||||
0x954E, # Unknown
|
||||
0x954F, # HD 4350/4550
|
||||
0x9552, # HD 4330/4350/4550 (mobile)
|
||||
0x9553, # HD 4530/4570/545v (mobile)
|
||||
0x94A0, # HD 4830
|
||||
]
|
||||
|
||||
terascale_2_ids = [
|
||||
0x6738,
|
||||
0x6739,
|
||||
0x6720,
|
||||
0x6722,
|
||||
0x6768,
|
||||
0x6770,
|
||||
0x6779,
|
||||
0x6760,
|
||||
0x6761,
|
||||
0x68E0,
|
||||
0x6898,
|
||||
0x6899,
|
||||
0x68B8,
|
||||
0x68B0,
|
||||
0x68B1,
|
||||
0x68A0,
|
||||
0x68A1,
|
||||
0x6840,
|
||||
0x6841,
|
||||
0x68D8,
|
||||
0x68C0,
|
||||
0x68C1,
|
||||
0x68D9,
|
||||
0x6750,
|
||||
0x6758,
|
||||
0x6759,
|
||||
0x6740,
|
||||
0x6741,
|
||||
0x6745,
|
||||
0x6738, # HD 6870
|
||||
0x6739, # HD 6850
|
||||
0x6720, # HD 6970M/6990M
|
||||
0x6722, # Unknown
|
||||
0x6768, # Unknown
|
||||
0x6770, # HD 6450A/7450A
|
||||
0x6779, # HD 6450/7450/8450 / R5 230 OEM
|
||||
0x6760, # HD 6400M/7400M
|
||||
0x6761, # HD 6430M
|
||||
0x68E0, # HD 5430/5450/547
|
||||
0x6898, # HD 5870
|
||||
0x6899, # HD 5850
|
||||
0x68B8, # HD 5770
|
||||
0x68B0, # Unknown
|
||||
0x68B1, # Unknown
|
||||
0x68A0, # HD 5870 (mobile)
|
||||
0x68A1, # HD 5850 (mobile)
|
||||
0x6840, # HD 7500M/7600M
|
||||
0x6841, # HD 7550M/7570M/7650M
|
||||
0x68D8, # HD 5670/5690/5730
|
||||
0x68C0, # HD 5730 / 6570M
|
||||
0x68C1, # HD 5650/5750 / 6530M/6550M
|
||||
0x68D9, # HD 5550/5570/5630/6510/6610/7570
|
||||
0x6750, # HD 6650A/7650A
|
||||
0x6758, # HD 6670/7670
|
||||
0x6759, # HD 6570/7570/8550
|
||||
0x6740, # HD 6730M/6770M/7690M XT
|
||||
0x6741, # HD 6630M/6650M/6750M/7670M/7690M
|
||||
0x6745, # Unknown
|
||||
]
|
||||
|
||||
|
||||
class intel_ids:
|
||||
# https://dgpu-docs.intel.com/devices/hardware-table.html
|
||||
gma_950_ids = [
|
||||
0x2582, # 915G
|
||||
0x2592, # 915GM
|
||||
0x2772, # 945G
|
||||
0x27A2, # 945GM
|
||||
]
|
||||
|
||||
gma_x3100_ids = [
|
||||
0x2a02, # 965GM
|
||||
]
|
||||
|
||||
iron_ids = [
|
||||
# AppleIntelHDGraphics IDs
|
||||
0x0044,
|
||||
0x0046,
|
||||
0x0044, # Unknown
|
||||
0x0046, # HD Graphics
|
||||
]
|
||||
|
||||
sandy_ids = [
|
||||
# AppleIntelHD3000Graphics IDs
|
||||
# AppleIntelSNBGraphicsFB IDs
|
||||
0x0106,
|
||||
0x0601,
|
||||
0x0116,
|
||||
0x0102,
|
||||
0x0126,
|
||||
0x0106, # HD Graphics 2000
|
||||
0x0601, # Unknown
|
||||
0x0116, # HD Graphics 3000
|
||||
0x0102, # HD Graphics 2000
|
||||
0x0126, # HD Graphics 3000
|
||||
]
|
||||
|
||||
ivy_ids = [
|
||||
# AppleIntelHD4000Graphics IDs
|
||||
# AppleIntelFramebufferCapri IDs
|
||||
0x0152,
|
||||
0x0156,
|
||||
0x0162,
|
||||
0x0166,
|
||||
0x0152, # HD Graphics 2500
|
||||
0x0156, # HD Graphics 2500
|
||||
0x0162, # HD Graphics 4000
|
||||
0x0166, # HD Graphics 4000
|
||||
]
|
||||
|
||||
haswell_ids = [
|
||||
# AppleIntelHD5000Graphics IDs
|
||||
# AppleIntelFramebufferAzul IDs
|
||||
0x0D26, # Iris Pro Graphics P5200
|
||||
0x0A26, # HD Graphics 5000
|
||||
0x0A2E, # Iris Graphics 5100
|
||||
0x0D22, # Iris Pro Graphics 5200
|
||||
0x0412, # HD Graphics 4600
|
||||
]
|
||||
|
||||
broadwell_ids = [
|
||||
# AppleIntelBDWGraphicsFramebuffer IDs
|
||||
0x0BD1, # Unknown
|
||||
0x0BD2, # Unknown
|
||||
0x0BD3, # Unknown
|
||||
0x1606, # HD Graphics
|
||||
0x160E, # HD Graphics
|
||||
0x1616, # HD Graphics 5500
|
||||
0x161E, # HD Graphics 5300
|
||||
0x1626, # HD Graphics 6000
|
||||
0x1622, # Iris Pro Graphics 6200
|
||||
0x1612, # HD Graphics 5600
|
||||
0x162B, # Iris Graphics 6100
|
||||
]
|
||||
|
||||
skylake_ids = [
|
||||
# AppleIntelSKLGraphicsFramebuffer IDs
|
||||
0x1916, # HD Graphics 520
|
||||
0x191E, # HD Graphics 515
|
||||
0x1926, # Iris Graphics 540
|
||||
0x1927, # Iris Graphics 550
|
||||
0x1912, # HD Graphics 530
|
||||
0x1932, # Iris Pro Graphics 580
|
||||
0x1902, # HD Graphics 510
|
||||
0x1917, # Unknown
|
||||
0x193B, # Iris Pro Graphics 580
|
||||
0x191B, # HD Graphics 530
|
||||
]
|
||||
|
||||
kaby_lake_ids = [
|
||||
# AppleIntelKBLGraphicsFramebuffer IDs
|
||||
0x5912, # HD Graphics 630
|
||||
0x5916, # HD Graphics 620
|
||||
0x591B, # HD Graphics 630
|
||||
0x591C, # UHD Graphics 615
|
||||
0x591E, # HD Graphics 615
|
||||
0x5926, # Iris Plus Graphics 640
|
||||
0x5927, # Iris Plus Graphics 650
|
||||
0x5923, # HD Graphics 635
|
||||
]
|
||||
|
||||
coffee_lake_ids = [
|
||||
# AppleIntelCFLGraphicsFramebuffer IDs
|
||||
0x3E9B, # UHD Graphics 630
|
||||
0x3EA5, # Iris Plus Graphics 655
|
||||
0x3EA6, # Unknown
|
||||
0x3E92, # UHD Graphics 630
|
||||
0x3E91, # UHD Graphics 630
|
||||
0x3E98, # UHD Graphics 630
|
||||
]
|
||||
|
||||
comet_lake_ids = [
|
||||
0x9BC8, # UHD Graphics 630
|
||||
0x9BC5, # UHD Graphics 630
|
||||
0x9BC4, # UHD Graphics
|
||||
]
|
||||
|
||||
ice_lake_ids = [
|
||||
# AppleIntelICLLPGraphicsFramebuffer IDs
|
||||
0xFF05, # Unknown
|
||||
0x8A70, # Unknown
|
||||
0x8A71, # Unknown
|
||||
0x8A51, # Iris Plus Graphics G7
|
||||
0x8A5C, # Iris Plus Graphics G4
|
||||
0x8A5D, # Unknown
|
||||
0x8A52, # Iris Plus Graphics G7
|
||||
0x8A53, # Iris Plus Graphics G7
|
||||
0x8A5A, # Iris Plus Graphics G4
|
||||
0x8A5B, # Unknown
|
||||
]
|
||||
|
||||
AppleIntel8254XEthernet = [
|
||||
# AppleIntel8254XEthernet IDs
|
||||
0x1096, # 80003ES2LAN
|
||||
0x100F, # 82545EM
|
||||
0x105E, # 82571EB/82571GB
|
||||
]
|
||||
|
||||
AppleIntelI210Ethernet = [
|
||||
# AppleIntelI210Ethernet IDs
|
||||
0x1533, # I210
|
||||
0x15F2, # I225
|
||||
0x15F3, # I225
|
||||
0x3100, # I225
|
||||
0x3101, # I225
|
||||
0x5502, # I225
|
||||
0x0D9F, # I225
|
||||
0x15F8, # I225
|
||||
0x15F7, # I225
|
||||
0x15FD, # I225
|
||||
]
|
||||
|
||||
Intel82574L = [
|
||||
# Intel82574L IDs
|
||||
0x104B, # 82566DC
|
||||
0x10F6, # 82574L
|
||||
]
|
||||
|
||||
|
||||
class broadcom_ids:
|
||||
AppleBCMWLANBusInterfacePCIe = [
|
||||
0x43DC, # BCM4355
|
||||
0x4464, # BCM4364
|
||||
0x4488, # BCM4377b
|
||||
0x4425, # BCM4378 (M1)
|
||||
0x4433, # BCM4387 (M1 Pro/Max/Ultra)
|
||||
]
|
||||
|
||||
AirPortBrcmNIC = [
|
||||
# AirPortBrcmNIC IDs
|
||||
0x43BA, # BCM43602
|
||||
@@ -782,6 +1017,82 @@ class broadcom_ids:
|
||||
0x432D, # BCM4322 - never used by Apple
|
||||
]
|
||||
|
||||
AppleBCM5701Ethernet = [
|
||||
# AppleBCM5701Ethernet IDs
|
||||
0x1684, # BCM5764M
|
||||
0x16B0, # BCM57761
|
||||
0x16B4, # BCM57765
|
||||
0x1682, # BCM57762
|
||||
0x1686, # BCM57766
|
||||
]
|
||||
|
||||
|
||||
class aquantia_ids:
|
||||
AppleEthernetAquantiaAqtion = [
|
||||
# AppleEthernetAquantiaAqtion IDs
|
||||
0x0001, # AQC107
|
||||
0xD107, # AQC107
|
||||
0x07B1, # AQC107
|
||||
0x80B1, # AQC107
|
||||
0x87B1, # AQC107
|
||||
0x88B1, # AQC107
|
||||
0x89B1, # AQC107
|
||||
0x91B1, # AQC107
|
||||
0x92B1, # AQC107
|
||||
0x00C0, # AQC113
|
||||
0x04C0, # AQC113
|
||||
]
|
||||
|
||||
|
||||
class marvell_ids:
|
||||
MarvelYukonEthernet = [
|
||||
# AppleYukon2.kext IDs
|
||||
# AppleYukon2 supports 2 vendors (Marvell and SysKonnect)
|
||||
0x9E00,
|
||||
0x2100,
|
||||
0x9E00,
|
||||
0x2200,
|
||||
0x9E00,
|
||||
0x8100,
|
||||
0x9E00,
|
||||
0x8200,
|
||||
0x9E00,
|
||||
0x9100,
|
||||
0x9E00,
|
||||
0x9200,
|
||||
0x9000,
|
||||
0x2100,
|
||||
0x9000,
|
||||
0x2200,
|
||||
0x9000,
|
||||
0x8100,
|
||||
0x9000,
|
||||
0x8200,
|
||||
0x9000,
|
||||
0x9100,
|
||||
0x9000,
|
||||
0x9200,
|
||||
0x9E00,
|
||||
0x2200,
|
||||
0x9E00,
|
||||
0x2200,
|
||||
]
|
||||
|
||||
|
||||
class syskonnect_ids:
|
||||
MarvelYukonEthernet = [
|
||||
# AppleYukon2.kext IDs
|
||||
# AppleYukon2 supports 2 vendors (Marvell and SysKonnect)
|
||||
0x4365,
|
||||
0x4360,
|
||||
0x435A,
|
||||
0x4354,
|
||||
0x4362,
|
||||
0x4363,
|
||||
0x00BA,
|
||||
0x436A,
|
||||
]
|
||||
|
||||
|
||||
class atheros_ids:
|
||||
AtherosWifi = [
|
||||
132
data/sip_data.py
Normal file
@@ -0,0 +1,132 @@
|
||||
from data import os_data
|
||||
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
|
||||
}
|
||||
|
||||
csr_values_extended = {
|
||||
"CSR_ALLOW_UNTRUSTED_KEXTS": {
|
||||
"name": "CSR_ALLOW_UNTRUSTED_KEXTS",
|
||||
"description": "Allows Unsigned Kexts to be hot loaded from disk",
|
||||
"introduced": os_data.os_data.el_capitan.value,
|
||||
"introduced_friendly": "El Capitan",
|
||||
"value": 0x1,
|
||||
},
|
||||
"CSR_ALLOW_UNRESTRICTED_FS": {
|
||||
"name": "CSR_ALLOW_UNRESTRICTED_FS",
|
||||
"description": "File System Access",
|
||||
"introduced": os_data.os_data.el_capitan.value,
|
||||
"introduced_friendly": "El Capitan",
|
||||
"value": 0x2,
|
||||
},
|
||||
"CSR_ALLOW_TASK_FOR_PID": {
|
||||
"name": "CSR_ALLOW_TASK_FOR_PID",
|
||||
"description": "Unrestricted task_for_pid()",
|
||||
"introduced": os_data.os_data.el_capitan.value,
|
||||
"introduced_friendly": "El Capitan",
|
||||
"value": 0x4,
|
||||
},
|
||||
"CSR_ALLOW_KERNEL_DEBUGGER": {
|
||||
"name": "CSR_ALLOW_KERNEL_DEBUGGER",
|
||||
"description": "Allow Kernel Debugger",
|
||||
"introduced": os_data.os_data.el_capitan.value,
|
||||
"introduced_friendly": "El Capitan",
|
||||
"value": 0x8,
|
||||
},
|
||||
"CSR_ALLOW_APPLE_INTERNAL": {
|
||||
"name": "CSR_ALLOW_APPLE_INTERNAL",
|
||||
"description": "Set AppleInternal Features",
|
||||
"introduced": os_data.os_data.el_capitan.value,
|
||||
"introduced_friendly": "El Capitan",
|
||||
"value": 0x10,
|
||||
},
|
||||
# "CSR_ALLOW_DESTRUCTIVE_DTRACE": {
|
||||
# "name": "CSR_ALLOW_DESTRUCTIVE_DTRACE",
|
||||
# "description": "Allow destructive DTrace",
|
||||
# "deprecated": True,
|
||||
# "introduced": os_data.os_data.el_capitan.value,
|
||||
# "introduced_friendly": "El Capitan",
|
||||
# "value": 0x20,
|
||||
# },
|
||||
"CSR_ALLOW_UNRESTRICTED_DTRACE": {
|
||||
"name": "CSR_ALLOW_UNRESTRICTED_DTRACE",
|
||||
"description": "Unrestricted DTrace usage",
|
||||
"introduced": os_data.os_data.el_capitan.value,
|
||||
"introduced_friendly": "El Capitan",
|
||||
"value": 0x20,
|
||||
},
|
||||
"CSR_ALLOW_UNRESTRICTED_NVRAM": {
|
||||
"name": "CSR_ALLOW_UNRESTRICTED_NVRAM",
|
||||
"description": "Unrestricted NVRAM write",
|
||||
"introduced": os_data.os_data.el_capitan.value,
|
||||
"introduced_friendly": "El Capitan",
|
||||
"value": 0x40,
|
||||
},
|
||||
"CSR_ALLOW_DEVICE_CONFIGURATION": {
|
||||
"name": "CSR_ALLOW_DEVICE_CONFIGURATION",
|
||||
"description": "Allow custom DeviceTree (iOS)",
|
||||
"introduced": os_data.os_data.el_capitan.value,
|
||||
"introduced_friendly": "El Capitan",
|
||||
"value": 0x80,
|
||||
},
|
||||
"CSR_ALLOW_ANY_RECOVERY_OS": {
|
||||
"name": "CSR_ALLOW_ANY_RECOVERY_OS",
|
||||
"description": "Skip BaseSystem Verification",
|
||||
"introduced": os_data.os_data.sierra.value,
|
||||
"introduced_friendly": "Sierra",
|
||||
"value": 0x100,
|
||||
},
|
||||
"CSR_ALLOW_UNAPPROVED_KEXTS": {
|
||||
"name": "CSR_ALLOW_UNAPPROVED_KEXTS",
|
||||
"description": "Allow Unnotarized Kexts to be hot loaded from disk",
|
||||
"introduced": os_data.os_data.high_sierra.value,
|
||||
"introduced_friendly": "High Sierra",
|
||||
"value": 0x200,
|
||||
},
|
||||
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE": {
|
||||
"name": "CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE",
|
||||
"description": "Override Executable Policy",
|
||||
"introduced": os_data.os_data.mojave.value,
|
||||
"introduced_friendly": "Mojave",
|
||||
"value": 0x400,
|
||||
},
|
||||
"CSR_ALLOW_UNAUTHENTICATED_ROOT": {
|
||||
"name": "CSR_ALLOW_UNAUTHENTICATED_ROOT",
|
||||
"description": "Allow Root Volume Mounting",
|
||||
"introduced": os_data.os_data.big_sur.value,
|
||||
"introduced_friendly": "Big Sur",
|
||||
"value": 0x800,
|
||||
},
|
||||
}
|
||||
|
||||
root_patch_sip_mojave = [
|
||||
# Variables required to root patch in Mojave and Catalina
|
||||
"CSR_ALLOW_UNTRUSTED_KEXTS", # 0x1 - Required for hot loading modded Kexts
|
||||
"CSR_ALLOW_UNRESTRICTED_FS", # 0x2 - Mount and Edit System Partitions
|
||||
"CSR_ALLOW_UNAPPROVED_KEXTS", # 0x200 - Required for hot loading modded Kexts
|
||||
]
|
||||
|
||||
root_patch_sip_big_sur = [
|
||||
# Variables required to root patch in Big Sur and Monterey
|
||||
"CSR_ALLOW_UNRESTRICTED_FS", # 0x2 - Required to mount and edit root volume, as well as load modded platform binaries
|
||||
"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.
|
||||
3007
data/smbios_data.py
Normal file
580
data/sys_patch_dict.py
Normal file
@@ -0,0 +1,580 @@
|
||||
# Dictionary defining patch sets used during Root Volume patching (sys_patch.py)
|
||||
# Copyright (C) 2022, Mykola Grymalyuk
|
||||
|
||||
# Schema for sys_patch_dict.py:
|
||||
# Supports 6 types of higher level keys:
|
||||
# - OS Support: Supported OSes by patchse - Dictionary of Min/Max Kernel Major and Minor versions
|
||||
# - Install: Install to root volume - Dictionary of strings with string value of source
|
||||
# - Install Non-Root: Install to data partition - Dictionary of strings with string value of source
|
||||
# - Remove: Files to remove - Array of strings
|
||||
# - Processes: Additional processes to run - Dictionary of strings with boolean value of requires root
|
||||
# - Display Name: User-friendly name - String
|
||||
|
||||
# File Storage is based off the origin, ie. '10.13.6/System/Library/Extensions/IOSurface.kext'
|
||||
# Stubbed binaries are OS specific, they use the 'os_major' variable to denounce which folder to use
|
||||
|
||||
from data import os_data
|
||||
|
||||
def SystemPatchDictionary(os_major, os_minor, non_metal_os_support):
|
||||
# @os_major: XNU Kernel Major (int)
|
||||
# @os_minor: XNU Kernel Minor (int)
|
||||
# @non_metal_os_support: Array of supported OSes (XNU Kernel Majors (int))
|
||||
sys_patch_dict = {
|
||||
"Graphics": {
|
||||
"Non-Metal Common": {
|
||||
"Display Name": "",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": non_metal_os_support[0],
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": non_metal_os_support[-1],
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"IOSurface.kext": "10.15.7",
|
||||
},
|
||||
"/System/Library/Frameworks": {
|
||||
"OpenGL.framework": "10.14.3",
|
||||
"CoreDisplay.framework": f"10.14.4-{os_major}",
|
||||
"IOSurface.framework": f"10.15.7-{os_major}",
|
||||
"QuartzCore.framework": f"10.15.7-{os_major}",
|
||||
**({ "WebKit.framework": "11.6" } if os_major >= os_data.os_data.monterey else {}),
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"GPUSupport.framework": "10.14.3",
|
||||
"SkyLight.framework": f"10.14.6-{os_major}",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
"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",
|
||||
],
|
||||
},
|
||||
"Install Non-Root": {
|
||||
"/Library/Application Support/SkyLightPlugins": {
|
||||
**({ "DropboxHack.dylib": "SkyLightPlugins" } if os_major >= os_data.os_data.monterey else {}),
|
||||
**({ "DropboxHack.txt": "SkyLightPlugins" } if os_major >= os_data.os_data.monterey else {}),
|
||||
},
|
||||
},
|
||||
"Processes": {
|
||||
# 'When Space Allows' option introduced in 12.4 (XNU 21.5)
|
||||
**({"defaults write /Library/Preferences/.GlobalPreferences.plist ShowDate -int 1": True } if os_data.os_conversion.is_os_newer(os_data.os_data.monterey, 4, os_major, os_minor) else {}),
|
||||
},
|
||||
},
|
||||
"Non-Metal IOAccelerator Common": {
|
||||
# TeraScale 2 and Nvidia Web Drivers broke in Mojave due to mismatched structs in
|
||||
# the IOAccelerator stack
|
||||
"Display Name": "",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": non_metal_os_support[0],
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": non_metal_os_support[-1],
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"IOAcceleratorFamily2.kext": "10.13.6",
|
||||
"IOSurface.kext": "10.14.6",
|
||||
},
|
||||
"/System/Library/Frameworks": {
|
||||
"IOSurface.framework": f"10.14.6-{os_major}",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"GPUSupport.framework": "10.13.6",
|
||||
"IOAccelerator.framework": f"10.13.6-{os_major}",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
"AppleCameraInterface.kext"
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
"Metal Common": {
|
||||
"Display Name": "",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.monterey,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Frameworks": {
|
||||
"OpenCL.framework": "11.6",
|
||||
"WebKit.framework": "11.6",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"AppleGVA.framework": "10.15.7",
|
||||
"AppleGVACore.framework": "10.15.7",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
"Legacy GVA": {
|
||||
"Display Name": "",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": non_metal_os_support[0],
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"AppleGVA.framework": "10.13.6",
|
||||
"AppleGVACore.framework": "10.15.7",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
"Nvidia Tesla": {
|
||||
"Display Name": "Graphics: Nvidia Tesla",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.mojave,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"GeForceGA.bundle": "10.13.6",
|
||||
"GeForceTesla.kext": "10.13.6",
|
||||
"GeForceTeslaGLDriver.bundle": "10.13.6",
|
||||
"GeForceTeslaVADriver.bundle": "10.13.6",
|
||||
"NVDANV50HalTesla.kext": "10.13.6",
|
||||
"NVDAResmanTesla.kext": "10.13.6",
|
||||
# Apple dropped NVDAStartup in 12.0 Beta 7 (XNU 21.1)
|
||||
**({ "NVDAStartup.kext": "12.0 Beta 6" } if os_data.os_conversion.is_os_newer(os_data.os_data.monterey, 0, os_major, os_minor) else {})
|
||||
},
|
||||
},
|
||||
},
|
||||
"Nvidia Kepler": {
|
||||
"Display Name": "Graphics: Nvidia Kepler",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
# 12.0 beta 7 (XNU 21.1)
|
||||
"OS Major": os_data.os_data.monterey,
|
||||
"OS Minor": 1
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"GeForceAIRPlugin.bundle": "11.0 Beta 3",
|
||||
"GeForceGLDriver.bundle": "11.0 Beta 3",
|
||||
"GeForceMTLDriver.bundle": "11.0 Beta 3",
|
||||
"GeForce.kext": "12.0 Beta 6",
|
||||
"GeForceVADriver.bundle": "12.0 Beta 6",
|
||||
"NVDAGF100Hal.kext": "12.0 Beta 6",
|
||||
"NVDAGK100Hal.kext": "12.0 Beta 6",
|
||||
"NVDAResman.kext": "12.0 Beta 6",
|
||||
"NVDAStartup.kext": "12.0 Beta 6",
|
||||
},
|
||||
},
|
||||
},
|
||||
"Nvidia Web Drivers": {
|
||||
"Display Name": "Graphics: Nvidia Web Drivers",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.mojave,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"NVDAStartupWeb.kext": "10.13.6",
|
||||
"GeForceTeslaWeb.kext": "10.13.6",
|
||||
"GeForceWeb.kext": "10.13.6",
|
||||
"NVDAGF100HalWeb.kext": "10.13.6",
|
||||
"NVDAGK100HalWeb.kext": "10.13.6",
|
||||
"NVDAGM100HalWeb.kext": "10.13.6",
|
||||
"NVDAGP100HalWeb.kext": "10.13.6",
|
||||
"NVDANV50HalTeslaWeb.kext": "10.13.6",
|
||||
"NVDAResmanTeslaWeb.kext": "10.13.6",
|
||||
"NVDAResmanWeb.kext": "10.13.6",
|
||||
"GeForceVADriverWeb.bundle": "10.13.6",
|
||||
"GeForceAIRPluginWeb.bundle": "10.13.6",
|
||||
"GeForceGLDriverWeb.bundle": "10.13.6",
|
||||
"GeForceMTLDriverWeb.bundle": "10.13.6",
|
||||
"GeForceTeslaGAWeb.bundle": "10.13.6",
|
||||
"GeForceTeslaGLDriverWeb.bundle": "10.13.6",
|
||||
"GeForceTeslaVADriverWeb.bundle": "10.13.6",
|
||||
},
|
||||
},
|
||||
},
|
||||
"AMD TeraScale Common": {
|
||||
"Display Name": "",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.mojave,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AMDFramebuffer.kext": "10.13.6",
|
||||
"AMDLegacyFramebuffer.kext": "10.13.6",
|
||||
"AMDLegacySupport.kext": "10.13.6",
|
||||
"AMDShared.bundle": "10.13.6",
|
||||
"AMDSupport.kext": "10.13.6",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
"AMD7000Controller.kext",
|
||||
"AMD8000Controller.kext",
|
||||
"AMD9000Controller.kext",
|
||||
"AMD9500Controller.kext",
|
||||
"AMD10000Controller.kext",
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
"AMD TeraScale 1": {
|
||||
"Display Name": "Graphics: AMD TeraScale 1",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.mojave,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AMD2400Controller.kext": "10.13.6",
|
||||
"AMD2600Controller.kext": "10.13.6",
|
||||
"AMD3800Controller.kext": "10.13.6",
|
||||
"AMD4600Controller.kext": "10.13.6",
|
||||
"AMD4800Controller.kext": "10.13.6",
|
||||
"ATIRadeonX2000.kext": "10.13.6",
|
||||
"ATIRadeonX2000GA.plugin": "10.13.6",
|
||||
"ATIRadeonX2000GLDriver.bundle": "10.13.6",
|
||||
"ATIRadeonX2000VADriver.bundle": "10.13.6",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
# Following removals are a work around for 0.4.3 and older root patches
|
||||
# Previously TS1 and TS2 patch sets were shared, now they're split off
|
||||
# Due to this, updating to 0.4.4 or newer can break kmutil linking
|
||||
"AMD5000Controller.kext",
|
||||
"AMD6000Controller.kext",
|
||||
"AMDRadeonVADriver.bundle",
|
||||
"AMDRadeonVADriver2.bundle",
|
||||
"AMDRadeonX3000.kext",
|
||||
"AMDRadeonX3000GLDriver.bundle",
|
||||
],
|
||||
},
|
||||
},
|
||||
"AMD TeraScale 2": {
|
||||
"Display Name": "Graphics: AMD TeraScale 2",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.mojave,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AMD5000Controller.kext": "10.13.6",
|
||||
"AMD6000Controller.kext": "10.13.6",
|
||||
"AMDRadeonVADriver.bundle": "10.13.6",
|
||||
"AMDRadeonVADriver2.bundle": "10.13.6",
|
||||
"AMDRadeonX3000.kext": "10.13.6",
|
||||
"AMDRadeonX3000GLDriver.bundle": "10.13.6",
|
||||
},
|
||||
"/System/Library/Frameworks": {
|
||||
"OpenCL.framework": "10.13.6",
|
||||
},
|
||||
},
|
||||
},
|
||||
"Intel Ironlake": {
|
||||
"Display Name": "Graphics: Intel Ironlake",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.mojave,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleIntelHDGraphics.kext": "10.13.6",
|
||||
"AppleIntelHDGraphicsFB.kext": "10.13.6",
|
||||
"AppleIntelHDGraphicsGA.plugin": "10.13.6",
|
||||
"AppleIntelHDGraphicsGLDriver.bundle": "10.13.6",
|
||||
"AppleIntelHDGraphicsVADriver.bundle": "10.13.6",
|
||||
},
|
||||
},
|
||||
},
|
||||
"Intel Sandy Bridge": {
|
||||
"Display Name": "Graphics: Intel Sandy Bridge",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.mojave,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleIntelHD3000Graphics.kext": "10.13.6",
|
||||
"AppleIntelHD3000GraphicsGA.plugin": "10.13.6",
|
||||
"AppleIntelHD3000GraphicsGLDriver.bundle": "10.13.6",
|
||||
"AppleIntelHD3000GraphicsVADriver.bundle": "10.13.6",
|
||||
"AppleIntelSNBGraphicsFB.kext": "10.13.6",
|
||||
"AppleIntelSNBVA.bundle": "10.13.6",
|
||||
},
|
||||
},
|
||||
},
|
||||
"Intel Ivy Bridge": {
|
||||
"Display Name": "Graphics: Intel Ivy Bridge",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.monterey,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Processes": {
|
||||
"defaults write com.apple.coremedia hardwareVideoDecoder -string enable": False,
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleIntelHD4000GraphicsGLDriver.bundle": "11.0 Beta 6",
|
||||
"AppleIntelHD4000GraphicsMTLDriver.bundle": "11.0 Beta 6",
|
||||
"AppleIntelHD4000GraphicsVADriver.bundle": "11.3 Beta 1",
|
||||
"AppleIntelFramebufferCapri.kext": "11.4",
|
||||
"AppleIntelHD4000Graphics.kext": "11.4",
|
||||
"AppleIntelIVBVA.bundle": "11.4",
|
||||
"AppleIntelGraphicsShared.bundle": "11.4", # libIGIL-Metal.dylib pulled from 11.0 Beta 6
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"Audio": {
|
||||
"Legacy Realtek": {
|
||||
"Display Name": "Audio: Legacy Realtek Audio",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.sierra,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
# For iMac7,1 and iMac8,1 units with legacy Realtek HD Audio
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleHDA.kext": "10.11.6",
|
||||
"IOAudioFamily.kext": "10.11.6",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
"AppleVirtIO.kext",
|
||||
"AppleVirtualGraphics.kext",
|
||||
"AppleVirtualPlatform.kext",
|
||||
"ApplePVPanic.kext",
|
||||
"AppleVirtIOStorage.kext",
|
||||
],
|
||||
},
|
||||
},
|
||||
# For Mac Pros with non-UGA/GOP GPUs
|
||||
"Legacy Non-GOP": {
|
||||
"Display Name": "Audio: Legacy non-GOP Audio",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.mojave,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleHDA.kext": "10.13.6",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"Networking": {
|
||||
"Legacy WiFi": {
|
||||
"Display Name": "Networking: Legacy WiFi",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.monterey,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/usr/libexec": {
|
||||
"airportd": "11.5.2",
|
||||
},
|
||||
"/System/Library/CoreServices": {
|
||||
"WiFiAgent.app": "11.5.2",
|
||||
},
|
||||
},
|
||||
"Install Non-Root": {
|
||||
"/Library/Application Support/SkyLightPlugins": {
|
||||
**({ "CoreWLAN.dylib": "SkyLightPlugins" } if os_major >= os_data.os_data.monterey else {}),
|
||||
**({ "CoreWLAN.txt": "SkyLightPlugins" } if os_major >= os_data.os_data.monterey else {}),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"Brightness": {
|
||||
"Legacy Brightness": {
|
||||
"Display Name": "Brightness: Legacy Brightness",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.high_sierra,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleBacklight.kext": "10.12.6",
|
||||
"AppleBacklightExpert.kext": "10.12.6",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"DisplayServices.framework": "10.12.6",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": [
|
||||
"AGDCBacklightControl.kext",
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
"Miscellaneous": {
|
||||
"Legacy GMUX": {
|
||||
"Display Name": "Miscellaneous: Legacy GMUX",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.high_sierra,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": {
|
||||
"AppleMuxControl.kext": "10.12.6",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
"AppleBacklight.kext",
|
||||
],
|
||||
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": [
|
||||
"AGDCBacklightControl.kext",
|
||||
"AppleMuxControl.kext",
|
||||
],
|
||||
},
|
||||
},
|
||||
"Legacy Keyboard Backlight": {
|
||||
"Display Name": "Miscellaneous: Legacy Keyboard Backlight",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": non_metal_os_support[0],
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": non_metal_os_support[-1],
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Processes": {
|
||||
"defaults write /Library/Preferences/.GlobalPreferences.plist Moraea_BacklightHack -bool true": True,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return sys_patch_dict
|
||||
@@ -69,7 +69,6 @@ module.exports = {
|
||||
children: [
|
||||
'START',
|
||||
'MODELS',
|
||||
['BENIFITS', 'Benefits and drawbacks'],
|
||||
]
|
||||
|
||||
},
|
||||
@@ -98,7 +97,7 @@ module.exports = {
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'MONTEREY-DROP',
|
||||
['MONTEREY-DROP', 'macOS Monterey Support'],
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -130,11 +129,11 @@ module.exports = {
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'ISSUES-HOLD',
|
||||
'TESTED',
|
||||
'TERMS',
|
||||
'HOW',
|
||||
'PATCHEXPLAIN',
|
||||
'CLI',
|
||||
]
|
||||
|
||||
},
|
||||
|
||||
129
docs/ACCEL.md
@@ -1,5 +1,6 @@
|
||||
# Working Around Legacy Acceleration Issues
|
||||
|
||||
* [Broken Background Blurs](#broken-background-blurs)
|
||||
* [Downloading older non-Metal Apps](#downloading-older-non-metal-apps)
|
||||
* [Unable to run Zoom](#unable-to-run-zoom)
|
||||
* [Unable to grant special permissions to apps (ie. Camera Access to Zoom)](#unable-to-grant-special-permissions-to-apps-ie-camera-access-to-zoom)
|
||||
@@ -7,13 +8,44 @@
|
||||
* [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)
|
||||
* [Black Boxes on HD3000 iGPUs](#black-boxes-on-hd3000-igpus)
|
||||
|
||||
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
|
||||
|
||||
Metal is Apple's in-house graphics API that acts as a replacement for OpenGL/OpenCL, introduced in 2015. With the release of macOS Mojave, every system without a Metal-capable GPU was dropped.
|
||||
|
||||
| Graphics Vendor | Architecture | Series | Supports Metal |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| ATI | TeraScale 1 | 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> |
|
||||
|
||||
:::
|
||||
|
||||
## Broken Background Blurs
|
||||
|
||||
By default with the non-Metal acceleration patches, many background blur menus may act distorted when moving a cursor over it. With 0.4.1 and newer, users can enable a new Beta Blur feature to try and resolve the issue:
|
||||
|
||||

|
||||
|
||||
Do note that enabling beta blurs can be more demanding on slower hardware
|
||||
## Downloading older non-Metal Apps
|
||||
|
||||
Many Apple apps now have direct reliance on Metal for proper functioning, however legacy builds of these apps still do work in Big Sur. See below for archive of many apps such as Pages, iMovie, GarageBand.
|
||||
@@ -30,6 +62,10 @@ 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:
|
||||
@@ -41,6 +77,20 @@ 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.
|
||||
@@ -51,19 +101,21 @@ Due to the Metal Backend, the enhanced color output of these apps seems to heavi
|
||||
|
||||
## Cannot press "Done" when editing a Sidebar Widget
|
||||
|
||||
To work around this, simply press Tab to hover over and press spacebar to simulate a click.
|
||||
Workaround: Press some combination of Tab, or Tab and then Shift-Tab, or just Shift-Tab until the "Done" button is highlighted. Then press spacebar to activate the button, the same as in any other dialog with a highlighted button halo.
|
||||
|
||||
## Wake from sleep heavily distorted on AMD/ATI 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:
|
||||
|
||||
@@ -71,4 +123,65 @@ The best way to achieve this is to boot Recovery (or Single User Mode if the dGP
|
||||
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, however note that you'll need to use older drivers (5.2.6):
|
||||
|
||||
* [DisplayLink USB Graphics Software for macOS - For Mojave and Catalina - 5.2.6](https://www.synaptics.com/products/displaylink-graphics/downloads/macos-5.2.6)
|
||||
|
||||
Note this driver only provides partial support in macOS, full graphics acceleration is not currently available on the displays driven by DisplayLink
|
||||
|
||||
## Erratic Colours on ATI TeraScale 2 GPUs (HD5000/HD6000)
|
||||
|
||||
Resolved with OpenCore Legacy Patcher v0.4.2
|
||||
|
||||
::: details Legacy Fix (prior to 0.4.2)
|
||||
|
||||
Due to an odd bug with ATI's TeraScale 2 GPUs, many users will experience erratic/strobing colours once finished installing 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 experience a login loop. To work around this is quite simple:
|
||||
|
||||
1. Boot macOS in Single User Mode
|
||||
* Press Cmd+S in OpenCore's menu when you turn the Mac on
|
||||
2. When command line prompt appears, enter the dGPU disabler argument (at the bottom)
|
||||
3. Reboot and patched macOS should work normally
|
||||
4. If you still want to use the dGPU, run OpenCore Legacy Patcher and enable TS2 Acceleration from settings. Then root patch your Mac again
|
||||
* TUI: `Patcher Settings -> Misc Settings -> TeraScale 2 Accel`
|
||||
* GUI: `Patcher Settings -> Developer Settings -> Set 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
|
||||
```
|
||||
|
||||
## Black Boxes on HD3000 iGPUs
|
||||
|
||||
A somewhat strange issue on Intel HD3000-based Macs, on 3rd party displays sometimes UI elements may become black and unreadable. To resolve, select either the generic `Display` or `Display P3` Color Profiles in Display Settings.
|
||||
|
||||
* Mainly applicable for HDMI Displays, DVI and DisplayPort are generally unaffected
|
||||
* If you're inside Setup Assistant, press `Cmd` + `Option` + `Control` + `T` to launch Terminal. From there, run `open /System/Applications/System\ Preferences.app`
|
||||
|
||||
|
||||
| Default Color Profile | Display/Display P3 Profile |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
@@ -1,24 +0,0 @@
|
||||
# Benefits and Drawbacks between OpenCore Legacy Patcher and other patchers
|
||||
|
||||
With OpenCore Legacy Patcher we recommend users go through the below table to understand what the benefits and drawbacks are compared to other patchers. There are positive and negatives to each and we feel transparency is most important when patching another users machine. There should be no grey areas where users may be mislead.
|
||||
|
||||
* Note: [Patched Sur](https://github.com/BenSova/Patched-Sur) and [MicropatcherAutomator](https://github.com/moosethegoose2213/automator-for-barrykn-micropatcher) are iterations of [BarryKN's micropatcher](https://github.com/barrykn/big-sur-micropatcher) and therefore share many of the same benefits and limitations. Patched Sur is used for this comparison as it's the most common form of BarryKN's patcher users will find.
|
||||
|
||||
| Features | [OpenCore Legacy Patcher](https://github.com/dortania/OpenCore-Legacy-Patcher/) | [Patched Sur](https://github.com/BenSova/Patched-Sur) |
|
||||
| :--- | :--- | :--- |
|
||||
| Over The Air Updates | <span style="color:#30BCD5">Native System Preferences, additionally supports Deltas (~2GB) for Metal GPUs</span> | <span style="color:red">Inside Patcher Sur app (~12GB), only available when InstallAssistants release.</span> InstallAssistants generally available same day as System Preference updates, however developer betas will lag behind by 1 day compared to OTAs |
|
||||
| FileVault | <span style="color:#30BCD5">Supported on Metal GPUs</span> | <span style="color:red">Not supported</span> |
|
||||
| System Integrity Protection | <span style="color:#30BCD5">Fully enabled on Metal GPUs</span> | <span style="color:red">Disabled for early 2013 and older during the patching process and first boot afterwards, otherwise enabled</span> |
|
||||
| APFS Snapshots | <span style="color:#30BCD5">Fully enabled</span> | <span style="color:red">Disabled</span> |
|
||||
| User facing | <span style="color:red">TUI interface</span> | <span style="color:#30BCD5">SwiftUI interface, more user friendly</span> |
|
||||
| Supported OSes | <span style="color:#30BCD5">10.7-11</span> | <span style="color:red">10.15-11</span> |
|
||||
| Firmware Patching | <span style="color:#30BCD5">None required</span> | <span style="color:red">Required for models without native APFS support</span> |
|
||||
| BootCamp Switching | <span style="color:red">Requires EFI Conversion for Start Disk support, otherwise still supported</span> | <span style="color:#30BCD5">Native</span> |
|
||||
| Legacy GPU Acceleration | <span style="color:#30BCD5">In active development</span>, see Acceleration Progress Tracker: [Link](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) | <span style="color:red">Currently not researching</span> |
|
||||
| El Capitan-era Wifi cards | <span style="color:#30BCD5">Supported</span> | <span style="colorred">Not supported</span> |
|
||||
| WPA Wireless Support | <span style="color:#30BCD5">Supported</span> | <span style="color:red">Minority may experience issues on early 2013 and older Models</span> |
|
||||
| Personal Hotspot Support | <span style="color:#30BCD5">Native</span> | <span style="color:red">Often requires extra steps to achieve on early 2013 and older Models</span> |
|
||||
| HEVC/H.265 Support for Mac Pros and iMacs with Polaris+ GPUs | <span style="color:#30BCD5">Supported</span> | <span style="color:red">Not supported</span> |
|
||||
| Big Sur-styled Boot Picker | <span style="color:#30BCD5">Available</span>, though as a shim to the original boot picker | <span style="color:red">Not available</span> |
|
||||
| Hibernation Support | <span style="color:#30BCD5">Supports 3rd party SATA SSDs on 2011 and older models in addition to stock drives</span> | <span style="color:red">Only supports stock drives on 2011 and older models</span> |
|
||||
| Sidecar Support | <span style="color:#30BCD5">Supports any Mac with Metal Intel iGPU</span>, artifacting way exhibited on high movement screen content | <span style="color:red">Not supported at all</span> |
|
||||
16
docs/BOOT.md
@@ -8,14 +8,26 @@ Reboot machine while holding `Option` to select the EFI Boot entry with the Open
|
||||
|
||||

|
||||
|
||||
Now that you've loaded OpenCore, now select Install macOS!:
|
||||
Now that you've loaded OpenCore, now select Install macOS:
|
||||
|
||||
* This will be the OpenCore Picker
|
||||
|
||||

|
||||
|
||||
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:
|
||||
You will soon reach the installer screen! If you enabled verbose mode when building OCLP, a lot of text will run across the screen. From there it's just like any normal macOS install. For an example of how the boot process looks, see the following video:
|
||||
|
||||
* [OpenCore Legacy Patcher Boot Process](https://www.youtube.com/watch?v=AN3zsbQV_n4)
|
||||
|
||||
If your Mac is looping back into the beginning of the setup after the first reboot, turn it off, start it again and hold `Option`. This time select the option with a grey hard disk icon, it can say "macOS Installer" or the name you gave the disk during the installer process. Keep repeating this step after every reboot if necessary.
|
||||
|
||||

|
||||
|
||||
|
||||
::: warning
|
||||
|
||||
**MacBookPro11,3 Note**: When booting macOS Monterey, you'll need to boot into safe mode if acceleration patches are not installed yet. [Otherwise you'll hit a black screen due to missing NVIDIA drivers.](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/522) Safe Mode can be entered by holding Shift+Enter when selecting macOS Monterey in OCLP's Boot Menu.
|
||||
|
||||
:::
|
||||
|
||||
# Once installed and booting, head to [Post-Installation](./POST-INSTALL.md)
|
||||
|
||||
|
||||
@@ -2,35 +2,27 @@
|
||||
|
||||
Now that we have a macOS installer, lets now build our OpenCore configuration!
|
||||
|
||||
First Download the latest release:
|
||||
If you haven't downloaded OpenCore Patcher yet, do so now:
|
||||
|
||||
* [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
|
||||
|
||||
Next, run the `OpenCore-Patcher.app`:
|
||||
|
||||

|
||||

|
||||
|
||||
From here you have a couple important options:
|
||||
Here we'll select Build and Install OpenCore and start building:
|
||||
|
||||
* Build OpenCore
|
||||
* Install OpenCore to USB/internal drive
|
||||
* Change Model
|
||||
* Patcher Settings
|
||||
|
||||
If you're patching for a different machine than you're running, please select "Change Model" and enter the updated SMBIOS. For more advanced users, you may also tweak the patcher's build settings via "Patcher Settings"
|
||||
|
||||
Now lets enter "Build OpenCore":
|
||||
|
||||

|
||||
|
||||
The process should be quite quick to build, once finished you'll be plopped back to the main menu.
|
||||
|
||||
Next lets run `Install OpenCore to USB/internal drive`:
|
||||
|
||||
| Select Drive | Select EFI/FAT32 Partition |
|
||||
| Start Building | Finished Building |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
Once it finishes building, you'll want to select the Install OpenCore button:
|
||||
|
||||
* If you created a macOS USB manually and don't see it listed, make sure it's either formatted as GUID/GPT or has a FAT32 partition for OpenCore to sit on
|
||||
|
||||
|
||||
| Select Drive | Select Partition |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
* If you have issues, please ensure you install OpenCore onto a FAT32 partition to ensure your Mac is able to boot it. You will need to format your drive as GUID/GPT in Disk Utility
|
||||
|
||||
# Once finished, head to [Booting OpenCore and macOS](./BOOT.md)
|
||||
|
||||
41
docs/CLI.md
@@ -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
|
||||
@@ -1,8 +1,6 @@
|
||||
# How to debug with OpenCore
|
||||
|
||||
For those who've hit an odd bug and unsure if it's user error or patcher, the below will tell you how to get more verbose debug information as well as logs to help [file issues with us](https://github.com/dortania/OpenCore-Legacy-Patcher/issues)
|
||||
|
||||
* For users who are less experienced, we recommend asking on the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN) for help.
|
||||
For those who've hit an odd bug and unsure if it's user error or patcher, we recommend asking on the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN) for help.
|
||||
|
||||
## Debugging yourself
|
||||
|
||||
@@ -36,6 +34,10 @@ From there, you'll have a log on your desktop.
|
||||
|
||||
## Filing an issue with us
|
||||
|
||||
::: warning
|
||||
Currently issues have been disabled due to [current events](ISSUES-HOLD.md). You can continue to receive support in the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN), where there are active members of the community available.
|
||||
:::
|
||||
|
||||
Now that you have proper logs, you can now [file issues with us](https://github.com/dortania/OpenCore-Legacy-Patcher/issues). Reminder we want the following info:
|
||||
|
||||
* Model patching for (ie. MacBookPro10,1)
|
||||
|
||||
@@ -27,9 +27,16 @@ Current hardware we own:
|
||||
|
||||
| Model | CPU | GPU | Owner | Notes |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| MacBook5,1 | Penryn | 9400M | Mykola | N/A |
|
||||
| MacBook7,1 | Penryn | GT320M | Dhinak | N/A |
|
||||
| MacBook7,1 | Penryn | GT320M | Mykola | N/A |
|
||||
| MacBookPro5,3 | Penryn | 9400M + 9600M | Dhinak | Display's partially broken |
|
||||
| MacBookPro8,2 | Sandy Bridge | HD3000 | Mykola | Dead dGPU |
|
||||
| MacPro3,1 | Penryn | GTX 680 | Dhinak | N/A |
|
||||
| Macmini4,1 | Penryn | GT320M | Dhinak | N/A |
|
||||
| iMac11,2 | Clarksdale | HD4670 | Mykola | N/A |
|
||||
| MacPro3,1 | Penryn | HD5770, RX570, GT710 | Mykola | N/A |
|
||||
|
||||
Dead Hardware:
|
||||
| Model | CPU | GPU | Owner | Notes |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| MacPro3,1 | Penryn | HD5770, RX570, GT710 | Mykola | No longer powers on |
|
||||
| MacPro4,1 | Westmere | HD7950 | Mykola | Dead Northbridge on CPU Tray |
|
||||
|
||||
@@ -1,59 +1,49 @@
|
||||
# Download and build macOS Installers
|
||||
|
||||
* [Downloading](#downloading)
|
||||
* [Building](#building)
|
||||
|
||||
This doc is centered around downloading and writing the macOS installer to a USB. If you're already familiar with how to do this, you can skip.
|
||||
|
||||
* Note: 16GB+ USB will be required for the installer
|
||||
|
||||
## Downloading
|
||||
## Creating the installer
|
||||
|
||||
The simplest way to download macOS installs would be to use installinstallmacos:
|
||||
With OpenCore Legacy Patcher, our new GUI includes a download menu for macOS installers. So to start off, you'll want to grab our app:
|
||||
|
||||
```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
|
||||
```
|
||||
* [OpenCore Legacy Patcher Release Apps](https://github.com/dortania/OpenCore-Legacy-Patcher/releases)
|
||||
|
||||
* Note: On El Capitan (10.11) and older, you'll need to specify a catalog at the end of the command:
|
||||
For this guide, we'll be using the standard OpenCore-Patcher (GUI).
|
||||
|
||||
```
|
||||
--catalogurl https://swscan.apple.com/content/catalogs/others/index-11-10.15-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog
|
||||
```
|
||||
Once downloaded, open the app and you should be greeted with this menu:
|
||||
|
||||

|
||||

|
||||
|
||||
As you can see, we get a nice list of macOS installers. If you need a particular versions of macOS, you can select it by typing the number next to it. For this example we'll choose 10:
|
||||
First we'll want to select the "Create macOS Installer" button. This will present you with 2 options:
|
||||
|
||||

|
||||

|
||||
|
||||
This is going to take a while as we're downloading the entire 12GB+ macOS installer.
|
||||
For this example, we'll assume you'll need an installer. Selecting this option will download Apple's Installer Catalogs and build a list for you to choose:
|
||||
|
||||
Once finished, you'll find in your `~/macOS-Installer/` folder a DMG containing the macOS Installer, called `Install_macOS_11.1-20C69.dmg` for example. Mount it and you'll find the installer application.
|
||||
| Downloading | Listed Installers |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
* Note: We recommend to move the Install macOS.app into the `/Applications` folder, as we'll be executing commands from there.
|
||||
* Note 2: Running Cmd+Shift+G in Finder will allow you to easily jump to `~/macOS-installer`
|
||||
Since the patcher officially supports Big Sur and newer for patching, only those entires will be shown. For ourselves, we'll select 12.1 as that's the latest public release at the time of writing. This will download and install the macOS installer to your applications folder.
|
||||
|
||||

|
||||
| Downloading the Installer | Requesting to install | Finished Installing |
|
||||
| :--- | :--- | :--- |
|
||||
|  |  |  |
|
||||
|
||||

|
||||
Once finished, you can proceed to write the installer onto a USB drive.
|
||||
|
||||
## Building
|
||||
* Note: The entire USB drive will be formatted
|
||||
|
||||
Now we'll be formatting the USB to prep for both the macOS installer and OpenCore. We'll want to use macOS Extended (HFS+) with a GUID partition map(Using GUID is important for the patcher). This will create two partitions: the main `MyVolume` and a second called `EFI` which is used as a boot partition where your Mac's firmware will check for boot files. `EFI` partitions will be hidden by default, so don't worry if you don't immediately see them.
|
||||
| Select Downloaded Installer | Select disk to format |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
* Note: By default, Disk Utility only shows partitions – press Cmd/Win+2 to show all devices (alternatively you can press the View button)
|
||||
Now the patcher will start the installer flashing!
|
||||
|
||||

|
||||
|
||||
Next run the `createinstallmedia` command provided by [Apple](https://support.apple.com/en-us/HT201372). Note that the command is made for USB's formatted with the name `MyVolume`:
|
||||
|
||||
```sh
|
||||
sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
|
||||
```
|
||||
|
||||
* Note: You can also replace the `createinstallmedia` path with that of where your installer's located (same idea with the drive name).
|
||||
|
||||

|
||||
| Flashing | Success Prompt | Finished Flashing |
|
||||
| :--- | :--- |
|
||||
|  |  |  |
|
||||
|
||||
# Once finished, head to [Building and installing OpenCore](./BUILD.md)
|
||||
|
||||
17
docs/ISSUES-HOLD.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# The current hold on new issues and pull requests
|
||||
|
||||
As written with the release of OpenCore Legacy Patcher 0.4.3, and macOS 12.3:
|
||||
|
||||
> With today's macOS 12.3 release, I decided it would be best to release this build of OpenCore Legacy Patcher to ensure some important issues are resolved with today's release (namely Open/Save dialog problem introduced by Apple in the 12.3 Betas)
|
||||
>
|
||||
> As the situation develops back home with my family in Ukraine, I am unlikely to continue the development of OpenCore Legacy Patcher in the near future. At most, there may be potential PatcherSupportPkg updates from ASentientBot and the rest of the amazing non-Metal development team however otherwise development may potentially be taken over by others later on. Issues will continue to remain closed for the time being.
|
||||
>
|
||||
> With regards to the future of this project, this release should be treated as its last major release for the next couple of months. When WWDC2022 is presented, I hope my country will be in a calmer situation where we can tinker with Macs again peacefully.
|
||||
>
|
||||
> This is not a final goodbye for me with this project, just a round-about way to say I'll be returning someday. I want to give the biggest thank you's to the community and to the many amazing developers within it. OpenCore Legacy Patcher is not just my project, it's the cumulation of many people that are all responsible for where we are today.
|
||||
>
|
||||
> -- Mykola
|
||||
|
||||
If you encounter new issues with the patcher that do not have solutions easily available, our helpful community in the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN) can provide support in the meantime. You should still provide as much information as you can by [gathering debug logs](DEBUG.md) when you ask for help.
|
||||
|
||||
<!-- And from us developers, tinkerers, and dreamers in this little community, it's definitely a mutual thanks and welcome! crystall1nedev <3 -->
|
||||
@@ -9,14 +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. For integration into other projects, please request written permission.
|
||||
Remaining files within OpenCore Legacy Patcher are copyrighted 2020-2022 Mykola Grymalyuk & Dhinak G. For integration into other projects, please request written permission.
|
||||
|
||||
@@ -20,8 +20,8 @@ Regarding OS support, see below:
|
||||
|
||||
| Support Entry | Supported OSes | Description | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| HostOS | macOS 10.9 - macOS 11 | Refers to OSes where running OpenCore-Patcher.app are supported | Supports 10.7+ if [Python 3.9 or higher](https://www.python.org/downloads/) is manually installed, simply run the `OpenCore-Patcher.command` located in the repo |
|
||||
| TargetOS | macOS 11 | Refers to OSes that can be patched to run with OpenCore | May support 10.4 and newer (in a potentially broken state). No support provided. |
|
||||
| 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. |
|
||||
|
||||
### MacBook
|
||||
|
||||
@@ -32,9 +32,10 @@ Regarding OS support, see below:
|
||||
| MacBook3,1 | Late 2007 | ^^ | ^^ |
|
||||
| MacBook4,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - No GPU Acceleration in Mavericks and newer<br/>- No Keyboard and Trackpad<br/>- No USB |
|
||||
| MacBook5,1 | Late 2008 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> |
|
||||
| MacBook5,2 | Early 2009 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- Trackpad is recognized as mouse<br/>- Brightness control partially supported |
|
||||
| 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 |
|
||||
| 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 +49,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 +77,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
|
||||
|
||||
@@ -98,8 +104,8 @@ Regarding OS support, see below:
|
||||
| iMac5,1 | Late 2006 | ^^ | 32-Bit Firmware limitation |
|
||||
| iMac5,2 | ^^ | ^^ | ^^ |
|
||||
| iMac6,1 | ^^ | ^^ | ^^ |
|
||||
| iMac7,1 | Mid-2007 | <span style="color:#30BCD5"> YES </span> | - Requires an [SSE4.1 CPU Upgrade](https://lowendmac.com/2018/penryn-t9300-9500-cpu-upgrades-for-the-2007-imac/)<br/>- GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- Brightness control partially supported on Nvidia GPUs, AMD unsupported<br/>- Stock Bluetooth 2.0 card non-functional |
|
||||
| iMac8,1 | Early 2008 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)))<br/>- Brightness control partially supported on Nvidia GPUs, AMD unsupported |
|
||||
| iMac7,1 | Mid-2007 | <span style="color:#30BCD5"> YES </span> | - Requires an [SSE4.1 CPU Upgrade](https://lowendmac.com/2018/penryn-t9300-9500-cpu-upgrades-for-the-2007-imac/)<br/>- GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- Stock Bluetooth 2.0 card non-functional |
|
||||
| iMac8,1 | Early 2008 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))) |
|
||||
| iMac9,1 | Early 2009 | ^^ | ^^ |
|
||||
| iMac10,1 | Late 2009 | ^^ | - GPU is socketed, [recommend upgrading to Metal GPU](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/?post=17425857#post-17425857) <br/>- GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)) |
|
||||
| iMac11,1 | ^^ | ^^ | ^^ |
|
||||
@@ -113,6 +119,8 @@ Regarding OS support, see below:
|
||||
| iMac14,1 | Late 2013 | ^^ | ^^ |
|
||||
| iMac14,2 | ^^ | ^^ | ^^ |
|
||||
| iMac14,3 | ^^ | ^^ | ^^ |
|
||||
| iMac14,4 | Mid-2014 | ^^ | ^^ |
|
||||
| iMac15,1 | Late 2014, Mid-2015 | ^^ | ^^ |
|
||||
|
||||
* 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)
|
||||
|
||||
|
||||
@@ -1,72 +1,89 @@
|
||||
# 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
|
||||
|
||||
Current models with full, unhindered support in OpenCore Legacy Patcher are the following:
|
||||
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:
|
||||
|
||||
* iMac13,x and newer
|
||||
* iMac10,1-12,x included if Wireless Card and Bluetooth upgraded as well as Metal GPU
|
||||
* Macmini7,1 and newer
|
||||
* MacBook8,1 and newer
|
||||
* MacBookAir6,x and newer
|
||||
* MacBookPro11,x and newer
|
||||
* MacPro3,1 and newer
|
||||
* Requires Wireless Card and Bluetooth upgrade for 3,1-5,1 as well as Metal GPU
|
||||
* iMac14,4
|
||||
* iMac15,1
|
||||
* MacBook8,1
|
||||
* MacBookAir6,1
|
||||
* MacBookAir6,2
|
||||
* MacBookPro11,1
|
||||
* MacBookPro11,2
|
||||
* MacBookPro11,3
|
||||
|
||||
## Current Hardware Drawbacks:
|
||||
::: details Model names
|
||||
|
||||
Below is a list of hardware that currently has issues with Monterey:
|
||||
* iMac (21.5-inch, Mid 2014)
|
||||
* iMac (Retina 5K, 27-inch, Late 2014)
|
||||
* MacBook (Retina, 12-inch, Early 2015)
|
||||
* MacBook Air (11-inch, Mid 2013)
|
||||
* MacBook Air (13-inch, Mid 2013)
|
||||
* MacBook Air (11-inch, Early 2014)
|
||||
* MacBook Air (13-inch, Early 2014)
|
||||
* MacBook Pro (Retina, 13-inch, Late 2013)
|
||||
* MacBook Pro (Retina, 15-inch, Late 2013)
|
||||
* MacBook Pro (Retina, 13-inch, Mid 2014)
|
||||
* MacBook Pro (Retina, 15-inch, Mid 2014)
|
||||
|
||||
* [Acceleration Support Dropped](#acceleration-support-dropped)
|
||||
* [Metal GPUs](#metal-gpus)
|
||||
* [Non-Metal GPUs](#non-metal-gpus)
|
||||
* [Bluetooth Support Dropped](#bluetooth-support-dropped)
|
||||
* [Wireless Support Dropped](#wireless-support-dropped)
|
||||
:::
|
||||
|
||||
## Acceleration Support Dropped
|
||||
All of these models now have support in OpenCore Legacy Patcher.
|
||||
|
||||
### Metal GPUs
|
||||
## Current Monterey Issues
|
||||
|
||||
* Intel HD4000 iGPUs lost support
|
||||
### MacBookPro11,3 booting issue without Kepler acceleration
|
||||
|
||||
By default these machines require root volume patches to gain graphics acceleration in Monterey. OpenCore Legacy Patcher supports readding support however SIP and FileVault can no longer be enabled due to root patching:
|
||||
Due to the display being routed through the NVIDIA Kepler card and macOS being rendered on the Intel iGPU, users have been experiencing issues booting without post-install patches applied ([see here for more info](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/522).) Currently the only workaround is to install the patches in safe mode, by holding down `Shift+Enter` when you select macOS in the OCLP boot picker.
|
||||
|
||||
* Macmini6,x
|
||||
* MacBookAir5,x
|
||||
* MacBookPro9,x
|
||||
* MacBookPro10,x
|
||||
## Previously Broken Hardware
|
||||
|
||||
Note: Currently HD 4000 support in Monterey is not perfect, following are broken:
|
||||
::: details iMac15,1 5K Display Output Issue (Resolved in 0.3.2 and newer)
|
||||
|
||||
::: details HD 4000 Issues
|
||||
|
||||
* Photo Booth app crashing
|
||||
* Safari sites crash if request camera access
|
||||
* Full Screen recoding crashing with Screenshot app
|
||||
* AirPlay to Mac crashes
|
||||
* Full Screen apps crashes
|
||||
* Disable "Hide menubar in Full Screen" to avoid crash
|
||||
* Documentation:
|
||||
* [5K iMac and UEFI: Fixing the dreaded output limitation](https://khronokernel.github.io/macos/2021/12/08/5K-UEFI.html)
|
||||
* Associated Github Issue:
|
||||
* [5k Output issues on iMac15,1 (27" 5k iMac - 2014) #359](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/359)
|
||||
|
||||
:::
|
||||
|
||||
### Non-Metal GPUs
|
||||
::: details macOS 12.0 Beta 4 issue on 2012 to early 2013 machines (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
|
||||
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:
|
||||
|
||||
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):
|
||||
* [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 Wifi support in macOS Monterey due to their legacy Wireless chipset:
|
||||
|
||||
* iMac12,x and older
|
||||
* Macmini5,x and older
|
||||
* MacBook7,1 and older
|
||||
* MacBookAir4,x and older
|
||||
* MacBookPro8,x and older
|
||||
* Macmini3,1 and older
|
||||
* MacBook5,x and older
|
||||
* MacBookAir2,1 and older
|
||||
* MacBookPro7,1 and older
|
||||
* MacBookPro6,x is exempt
|
||||
* MacPro5,1 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/)
|
||||
Note: BCM943224, BCM94331, BCM94360 and BCM943602 are still fully support by OpenCore Legacy Patcher
|
||||
|
||||
## Bluetooth Support Dropped
|
||||
:::
|
||||
|
||||
::: details Bluetooth Support Dropped (Resolved in 0.2.5 and newer)
|
||||
|
||||
* BRCM2046 and BRCM2070 Bluetooth Chipsets lost support
|
||||
|
||||
@@ -79,7 +96,9 @@ The following models lost Bluetooth support in macOS Monterey due to their legac
|
||||
* MacBookPro8,1 and older
|
||||
* MacPro5,1 and older
|
||||
|
||||
::: details Dropped Firmwares
|
||||
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):
|
||||
|
||||
@@ -102,19 +121,48 @@ Here are the firmwares macOS Monterey Dropped (previously located within IOBluet
|
||||
|
||||
:::
|
||||
|
||||
Note: Native BRCM20702 and BRCM20703 are still fully support by OpenCore Legacy Patcher
|
||||
::: details Ivy Bridge iGPU Acceleration (Resolved in 0.1.7 and newer)
|
||||
|
||||
## Wireless Support Dropped
|
||||
* Intel HD4000 iGPUs lost support
|
||||
|
||||
* Broadcom BCM94328, BCM94322 and Atheros Wireless Chipsets 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:
|
||||
|
||||
The following models lost Bluetooth support in macOS Monterey due to their legacy Wireless chipset:
|
||||
* Macmini6,x
|
||||
* MacBookAir5,x
|
||||
* MacBookPro9,x
|
||||
* MacBookPro10,x
|
||||
|
||||
:::
|
||||
|
||||
::: details NVIDIA Kepler dGPU Acceleration (Resolved in 0.2.5 and newer)
|
||||
|
||||
* NVIDIA Kepler dGPUs 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:
|
||||
|
||||
* MacBookPro9,1
|
||||
* MacBookPro10,1
|
||||
* MacBookPro11,3
|
||||
* iMac13,x
|
||||
* iMac14,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
|
||||
* Macmini3,1 and older
|
||||
* MacBook5,x and older
|
||||
* MacBookAir2,1 and older
|
||||
* MacBookPro7,1 and older
|
||||
* MacPro5,1 and older
|
||||
* Macmini5,x and older
|
||||
* MacBook7,1 and older
|
||||
* MacBookAir4,x and older
|
||||
* MacBookPro8,x and older
|
||||
|
||||
Note: BCM943224, BCM94331, BCM94360 and BCM943602 are still fully support by OpenCore Legacy Patcher
|
||||
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/)
|
||||
|
||||
:::
|
||||
|
||||
@@ -14,12 +14,38 @@ Below is a run down of the main logic OpenCore Legacy Patcher uses to gain nativ
|
||||
|
||||
::: details Configuration Explanation
|
||||
|
||||
### ACPI -> Add
|
||||
|
||||
* SSDT-CPBG
|
||||
* Reason: Resolves Kernel Panic on Arrendale Macs in early Big Sur builds
|
||||
* Logic: Disable dummy CPBG device in ACPI
|
||||
* Models: MacBookPro6,x and iMac11,x
|
||||
* SSDT-PCI
|
||||
* Reason: Patch Windows Audio support for Sandy and Ivy Bridge
|
||||
* Logic: Removes PCI0's 32-bit Allocation Limitation
|
||||
* Models: All Sandy and Ivy Bridge Macs, excluding MacPro6,1
|
||||
* SSDT-DGPU
|
||||
* Reason: Allows for software based deMUX disabling dGPUs in 2011 MacBook Pros
|
||||
* Logic: Sends power down request to dGPU via ACPI
|
||||
* Models: MacBookPro8,2 and MacBookPro8,3 with dead dGPUs
|
||||
|
||||
### ACPI -> Patch
|
||||
|
||||
* EHCx and XHC1 Patches
|
||||
* `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
|
||||
* `BUF0` to `BUF1` Patch
|
||||
* Reason: To be paired with SSDT-PCI
|
||||
* `_INI` to `XINI` Patch
|
||||
* Reason: To be paired with SSDT-DGPU
|
||||
|
||||
### Booter -> Patch
|
||||
|
||||
* Reroute `HW_BID` to `OC_BID`
|
||||
* Reason: Allows macOS installers to be used on unsupported models
|
||||
* Logic: Reroutes Board ID macOS checks to custom variable
|
||||
* Models: All systems using VMM spoofing
|
||||
|
||||
### Booter -> Quirks
|
||||
|
||||
@@ -30,21 +56,13 @@ Below is a run down of the main logic OpenCore Legacy Patcher uses to gain nativ
|
||||
|
||||
### DeviceProperties -> Add
|
||||
|
||||
* `PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1C,0x5)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)`
|
||||
* Reason: Required to ensure Wifi works with full, native support
|
||||
* Logic: Tricks AirPortBrcmNIC.kext into thinking our device is a BCM94360 (`14e4,43ba`)
|
||||
* Models: Machines with BCM943224 and BCM94331 chipsets
|
||||
* `PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)`
|
||||
* Reason: Required to ensure Brightness Control works on upgraded iMacs
|
||||
* Logic: Sets AppleBackLight properties
|
||||
* Models: iMac11,x and iMac12,x with upgraded Nvidia Metal GPUs
|
||||
* Models: iMac11,x and iMac12,x with upgraded NVIDIA Metal GPUs
|
||||
* `PciRoot(0x0)/Pci(0x2,0x0)`
|
||||
* Reason: Disables internal GPU to fix sleep issues on upgrades iMacs
|
||||
* Reason: Disables internal GPU to fix sleep issues on upgraded iMacs
|
||||
* Logic: Tricks macOS into thinking iGPU is a generic PCI device
|
||||
* Models: iMac12,x with upgraded Metal GPUs
|
||||
|
||||
@@ -53,15 +71,32 @@ 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)
|
||||
* Force FileVault on Broken Seal Patch
|
||||
* Reason: Allow FileVault on root patched Macs
|
||||
* Logic: Forces APFS.kext to always return true on FileVault support
|
||||
* Models: Any model needing root patches
|
||||
* Disable Library Validation Enforcement Patch
|
||||
* Reason: non-Metal Root Volume Patches do not pass library validation tests
|
||||
* Logic: Forces Library Validation function to always return not required
|
||||
* Models: Non-Metal GPUs
|
||||
* SurPlus Patch
|
||||
* Reason: macOS 11.3-12.0.1 require systems to have RDRAND support in the CPU for stable boot
|
||||
* Logic: Forces RDRAND code to return predetermined value
|
||||
* Models: All pre-Ivy Bridge Macs
|
||||
* Reroute `kern.hv_vmm_present` Patch
|
||||
* Reason: Allows macOS to be installed and updated on unsupported hardware
|
||||
* Logic: Forces userspace to see system as Virtual Machine
|
||||
* Models: Any model using VMM spoofing
|
||||
|
||||
|
||||
### Kernel -> Quirks
|
||||
|
||||
* ThridPartyDrives
|
||||
* ThirdPartyDrives
|
||||
* Reason: Required to avoid Hibernation wake issues on 3rd party drives
|
||||
* Logic: Patches AppleAHCIPort.kext into support
|
||||
* Models: All models with standard SATA ports
|
||||
@@ -73,13 +108,13 @@ Below is a run down of the main logic OpenCore Legacy Patcher uses to gain nativ
|
||||
### Misc -> Security
|
||||
|
||||
* SecureBootModel
|
||||
* Reason: Required to ensure seamless OS updates with Big Sur
|
||||
* Logic: Sets iMacPro1,1's Secure Enclave Identifier (j137)
|
||||
* Models: All models require
|
||||
* Reason: Required to allow native OS updates on T2 model spoofs
|
||||
* Logic: Sets T2's Secure Enclave Identifier
|
||||
* Models: All models required that spoof T2 model with minimal or higher
|
||||
|
||||
### NVRAM -> Add
|
||||
|
||||
* `-v debug=0x100`
|
||||
* `-v keepsyms=1 debug=0x100`
|
||||
* Reason: Used to see debug info of macOS's kernel and kexts, and avoids reboots on panic
|
||||
* Logic: Adds args to NVRAM
|
||||
* Models: Only set when Verbose Boot is enabled by the user
|
||||
@@ -100,6 +135,10 @@ 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
|
||||
* `-revasset`
|
||||
* Reason: Enables Content Caching when using VMM spoofing
|
||||
* Logic: Adds args to NVRAM
|
||||
* Models: Any model using VMM spoofing
|
||||
|
||||
### UEFI -> ProtocolOverrides
|
||||
|
||||
@@ -123,13 +162,25 @@ Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into m
|
||||
* Models: All models require
|
||||
* WhateverGreen
|
||||
* Reason: Patches GPU Frameworks and kext to ensure proper support
|
||||
* Models: All models require
|
||||
* Models: All models require when spoofing or have non-stock GPU
|
||||
* CPUFriend
|
||||
* Reason: Patches IOx86PlatformPlugin to restore previous CPU profiles
|
||||
* Models: 2012 and newer models
|
||||
* Models: All models using minimal or higher spoofing
|
||||
* AirportBrcmFixup
|
||||
* Reason: Patches IO80211 and co to fix networking support for unsupported cards
|
||||
* Models: BCM943224 and BCM94331
|
||||
* Reason: Patches IO80211 and co to fix networking support for unsupported cards, and fix bugs on native ones as well (ie. random degraded network performance)
|
||||
* Models: BCM943224, BCM94331, BCM94360 and BCM943602
|
||||
* BlueToolFixup
|
||||
* Reason: Patches BlueTool to enable bluetooth functionality on Monterey
|
||||
* Models: All models with pre-BCM94360 wireless cards or 3rd-party chipsets
|
||||
* Bluetooth-Spoof
|
||||
* Reason: Injects extra data into certain bluetooth chipsets for recognition by the system
|
||||
* Models: Models with the BCM2070 or BCM2046 chipsets
|
||||
* FeatureUnlock (Night Shift)
|
||||
* Reason: Patches CoreBrightness.framework to enable Night Shift on unsupported models
|
||||
* Models: 2011 or older
|
||||
* FeatureUnlock (Sidecar/AirPlay)
|
||||
* Reason: Patches SidecarCore.framework and AirPlaySupport.framework to enable Sidecar and AirPlay to Mac on unsupported models
|
||||
* Models: All models with Metal capable GPUs
|
||||
* RestrictEvents
|
||||
* Reason: Disables memory errors on MacPro7,1
|
||||
* Models: Mac Pros and Xserves
|
||||
@@ -137,8 +188,8 @@ Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into m
|
||||
### Ethernet
|
||||
|
||||
* nForceEthernet
|
||||
* Reason: Inject old Nvidia Ethernet kext to resolve networking in Catalina and newer
|
||||
* Models: 2010 and older Nvidia Ethernet require
|
||||
* Reason: Inject old NVIDIA Ethernet kext to resolve networking in Catalina and newer
|
||||
* Models: 2010 and older NVIDIA Ethernet require
|
||||
* MarvelYukonEthernet
|
||||
* Reason: Inject old Marvel Ethernet kext to resolve networking in Catalina and newer
|
||||
* Models: 2008 and older Marvel Ethernet require
|
||||
@@ -151,7 +202,7 @@ Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into m
|
||||
|
||||
* USBMap
|
||||
* Reason: Inject old USB map profiles to fix USB
|
||||
* Models: All models require
|
||||
* Models: All models require when spoofing moderate or higher, as well as pre-2012 models
|
||||
|
||||
### SSE
|
||||
|
||||
@@ -159,7 +210,7 @@ Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into m
|
||||
* Reason: Translates SSE4.2 instructions to compatible code for SSE4,1 CPUs, required for AMD Metal drives
|
||||
* Models: MacPro3,1
|
||||
* telemetrap
|
||||
* Reason: Ensures temelemtry.plugin doesn't run, required for SSE4,1 CPUs
|
||||
* Reason: Ensures telemetry.plugin doesn't run, required for SSE4,1 CPUs
|
||||
* Models: Penryn CPUs
|
||||
|
||||
### Wifi
|
||||
@@ -176,39 +227,95 @@ Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into m
|
||||
### Misc
|
||||
|
||||
* AppleBackLightFixup
|
||||
* Reason: Patch AppleBacklight for iMacs with Nvidia Metal GPU upgrades
|
||||
* Models: iMac11,x, iMac12,x with upgraded Nvidia Metal GPUs
|
||||
* Reason: Patch AppleBacklight for iMacs with NVIDIA Metal GPU upgrades
|
||||
* Models: iMac11,x, iMac12,x with upgraded NVIDIA Metal GPUs
|
||||
* AppleIntelPIIXATA
|
||||
* Reason: Fix IDE support on MacPro3,1
|
||||
* Models: MacPro3,1
|
||||
* AppleIntelMCEDisabler
|
||||
* Reason: Fix dual socket support in Catalina and newer
|
||||
* Models: Mac Pros and Xserves
|
||||
* NightShiftEnabler
|
||||
* Reason: Enables NightShift support on unsupported models
|
||||
* Models: 2011 and older, MacBookPro9,x included
|
||||
* SMC-Spoof
|
||||
* Reason: Spoofs SMC version to 9.9999
|
||||
* Models: All models require
|
||||
* Models: All models require when spoofing minimal or higher
|
||||
:::
|
||||
|
||||
## 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
|
||||
::: details Audio Patches (11.0+)
|
||||
|
||||
### 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
|
||||
|
||||
:::
|
||||
|
||||
::: details Acceleration Patches
|
||||
::: details Legacy Wireless Patches (12.0+)
|
||||
|
||||
Applicable for BCM94328, BCM94322 and Atheros Wifi cards
|
||||
|
||||
### CoreServices
|
||||
|
||||
* WiFiAgent.app
|
||||
|
||||
### /usr/libexec
|
||||
|
||||
* airportd
|
||||
|
||||
:::
|
||||
|
||||
::: details NVIDIA Kepler Graphics Acceleration Patches (12.0+)
|
||||
|
||||
### Extensions
|
||||
|
||||
* GeForce.kext
|
||||
* GeForceAIRPlugin.bundle
|
||||
* GeForceGLDriver.bundle
|
||||
* GeForceMTLDriver.bundle
|
||||
* GeForceVADriver.bundle
|
||||
* NVDAGF100Hal.kext
|
||||
* NVDAGK100Hal.kext
|
||||
* NVDAResman.kext
|
||||
* NVDAStartup.kext
|
||||
|
||||
### Frameworks
|
||||
|
||||
* OpenCL (libCLVMNVPTXPlugin.dylib, NVPTX.dylib)
|
||||
* Reason: Re-add Kepler hardware acceleration support
|
||||
|
||||
:::
|
||||
|
||||
|
||||
::: details Intel Ivy Bridge Graphics Acceleration Patches (12.0+)
|
||||
|
||||
### Extensions
|
||||
|
||||
* AppleIntelIVBVA.bundle
|
||||
* AppleIntelFramebufferCapri.kext
|
||||
* AppleIntelGraphicsShared.bundle
|
||||
* AppleIntelHD4000Graphics.kext
|
||||
* AppleIntelHD4000GraphicsGLDriver.bundle
|
||||
* AppleIntelHD4000GraphicsMTLDriver.bundle
|
||||
* AppleIntelHD4000GraphicsVADriver.bundle
|
||||
|
||||
### PrivateFrameworks
|
||||
|
||||
* AppleGVA/AppleGVACore
|
||||
* Reason: Enable DRM support
|
||||
|
||||
### Frameworks
|
||||
|
||||
* OpenCL (libCLVMIGILPlugin.dylib)
|
||||
* Reason: Re-add Ivy Bridge hardware acceleration support
|
||||
* WebKit (com.apple.WebProcess.sb)
|
||||
* Reason: Re-add Ivy Bridge Safari rendering support
|
||||
:::
|
||||
|
||||
::: details non-Metal Graphics Acceleration Patches (11.0+)
|
||||
|
||||
### Extensions
|
||||
|
||||
@@ -222,7 +329,7 @@ Note, GPU Acceleration Patches are not public yet, the below section is simply d
|
||||
|
||||
#### Dropped Acceleration Binaries
|
||||
|
||||
* Nvidia Binaries
|
||||
* NVIDIA Binaries
|
||||
* GeForceGA.bundle
|
||||
* GeForceTesla.kext
|
||||
* Skip IOFree Panic - Mojave+
|
||||
@@ -292,10 +399,4 @@ Note, GPU Acceleration Patches are not public yet, the below section is simply d
|
||||
* SkyLight.framework
|
||||
* Logic: Copied from Mojave, heavy modifications/shims
|
||||
|
||||
### LaunchDaemons
|
||||
|
||||
* HiddHack.plist
|
||||
* Reason: Fixes unresponsive input when patching Skylight
|
||||
* Logic: Forces `hidd` to register events, as Skylight handles them by default in Big Sur
|
||||
|
||||
:::
|
||||
|
||||
@@ -20,35 +20,85 @@ And voila! No more USB drive required
|
||||
|
||||
To do this, run the OpenCore Patcher and head to Patcher Settings:
|
||||
|
||||

|
||||
| GUI Settings | TUI Settings
|
||||
| :--- | :--- |
|
||||
| |  |
|
||||
|
||||
Here you can change different patcher settings, however the main interest is:
|
||||
|
||||
* Set ShowPicker Mode
|
||||
* Show Boot Picker (GUI)
|
||||
* Set ShowPicker Mode (TUI)
|
||||
|
||||
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.
|
||||
For many users, SIP will be enabled by default on build. For Intel HD 4000 users, you may have noticed that SIP is partially disabled. This is to ensure full compatibility with macOS Monterey and allow seamless booting between it and older OSes. However for users who do not plan to boot Monterey, you can re-enable under Patcher Settings.
|
||||
|
||||
Note: Machines with non-Metal GPUs cannot enable SIP in Big Sur either due to patched root volume
|
||||
|
||||
| SIP Enabled | SIP Lowered (Root Patching) | SIP Disabled |
|
||||
| :--- | :--- | :--- |
|
||||
|  |  |  |
|
||||
|
||||
::: warning
|
||||
|
||||
If you're unsure whether you should enable SIP, leave as-is. Systems where you have already ran the Post Install Root Patching cannot enable SIP without potentially breaking the current install.
|
||||
|
||||
:::
|
||||
|
||||
## 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:
|
||||
Users with OCLP v0.4.4 or higher will be prompted to install these patches after installation or whenever patches are not detected on the system. We recommend rebuilding OpenCore with the latest version of OCLP to take advantage of these new features.
|
||||
|
||||
* SIP: Disabled
|
||||
* SecureBootModel: Disabled
|
||||
### Running Post Install patches manually
|
||||
|
||||
Once set, rebuild OpenCore, install to drive and reboot. Then, Post-Install Volume patches will run just fine
|
||||
If you're using OCLP v0.4.3 or earlier, or need to run the patcher manually, you can do so with the app. There is no harm in trying to run the Patcher, as without compatible hardware nothing will be done. You can see below on whether your hardware needs root volume patching.
|
||||
|
||||
To apply the Post-Install Volume patches [to test out the Beta Graphics Acceleration Patches system](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108), select option #3 as shown below:
|
||||
| Listing Patches | Patching Finished |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||

|
||||
|
||||
And go ahead to option #1 and let the OCLP patcher apply the needed legacy video patches.
|
||||
::: warning
|
||||
|
||||

|
||||
With OpenCore Legacy Patcher versions prior to v0.4.4, Root Patching requires a network connection by default to grab associated resources. If your system is having difficulties with wifi or ethernet, you can grab the newest release :
|
||||
|
||||
Reboot your system and check out the now working graphics acceleration on your legacy system. This is still Beta software.
|
||||
* [OpenCore Legacy Patcher releases](https://github.com/dortania/OpenCore-Legacy-Patcher/releases/latest)
|
||||
|
||||
:::
|
||||
|
||||
::: details Unsupported GPUs in macOS Big Sur
|
||||
|
||||
* NVIDIA:
|
||||
* Tesla (8000 - 300 series)
|
||||
* AMD:
|
||||
* TeraScale (2000 - 6000 series)
|
||||
* Intel:
|
||||
* Iron Lake
|
||||
* Sandy Bridge (2000 - 3000 series)
|
||||
|
||||
:::
|
||||
|
||||
::: details Unsupported GPUs in macOS Monterey
|
||||
|
||||
* NVIDIA:
|
||||
* Tesla (8000 - 300 series)
|
||||
* Kepler (600 - 800 series)
|
||||
* AMD:
|
||||
* TeraScale (2000 - 6000 series)
|
||||
* Intel:
|
||||
* Iron Lake
|
||||
* Sandy Bridge (2000 - 3000 series)
|
||||
* Ivy Bridge (4000 series)
|
||||
|
||||
:::
|
||||
|
||||
::: details Unsupported Wireless Cards in macOS Monterey
|
||||
|
||||
* Broadcom:
|
||||
* BCM94328
|
||||
* BCM94322
|
||||
* Atheros
|
||||
|
||||
:::
|
||||
|
||||
@@ -11,10 +11,16 @@ meta:
|
||||
|
||||
features:
|
||||
- title: Built with security in mind
|
||||
details: Supporting System Integrity Protection(SIP), FileVault 2, .im4m Secure Boot and Vaulting. You're just as secure as a supported Mac
|
||||
details: Supporting System Integrity Protection(SIP), FileVault 2, .im4m Secure Boot and Vaulting. For many machines, you're just as secure as a supported Mac.
|
||||
- title: Native OTA updates
|
||||
details: Install updates the moment they come out just like on a supported Mac, and no more 12GB+ updates.
|
||||
details: Install updates the moment they come out, with native System Preferences support, just like a supported Mac.
|
||||
- title: Zero firmware patching
|
||||
details: No need to patch APFS ROM support, all protocol upgrades are done in memory and never permanent.
|
||||
footer: Copyright © Dortania 2020-2021
|
||||
details: Using the capabilities of the OpenCore boot manager, our protocol upgrades are done in memory and are never permanent.
|
||||
- title: Supporting more hardware
|
||||
details: New life is breathed into your decade-old graphics card or WiFi and bluetooth chipsets.
|
||||
- title: The newest features
|
||||
details: Unlock Sidecar, AirPlay to Mac, Night Shift, and Universal Control, even on natively supported models!
|
||||
- title: A helpful community
|
||||
details: Whether it's getting started or learning the specifics, you can always find answers with our amazing community of tinkerers, developers, and dreamers.
|
||||
footer: Copyright © Dortania 2020-2022
|
||||
---
|
||||
BIN
docs/ResXtreme.zip
Normal file
@@ -1,28 +1,13 @@
|
||||
# What is OpenCore?
|
||||
|
||||
This is a sophisticated boot loader used to inject and patch data in memory, instead of on disk. This means we're able to get near-native experience on many unsupported Macs with Metal GPUs. This includes many of the long desired features of other patchers such as:
|
||||
This is a sophisticated boot loader used to inject and patch data in memory, instead of on disk. This means we're able to get near-native experience on many unsupported Macs.
|
||||
|
||||
* System Integrity Protection, FileVault 2, .im4m Secure Boot and Vaulting
|
||||
* Native OTA OS DELTA updates on all Macs
|
||||
* Recovery OS, Safe Mode and Single-user Mode booting
|
||||
* WPA Wifi and Personal Hotspot support
|
||||
|
||||
While many PC users from the Hackintosh community are familiar with OpenCore, OpenCore was designed as Mac and PC agnostic ensuring both platforms can use it easily. And with OpenCore Legacy Patcher, we help automate the process making running with OpenCore that much easier.
|
||||
|
||||
For advanced troubleshooting, we highly recommend users check out the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN) as this is generally the quickest way to get a hold of us developers and get help from the community.
|
||||
|
||||
For those who wish to support this patcher, please see the [Supporting the Patcher page](./DONATE.md)
|
||||
|
||||
## Patcher Warnings
|
||||
|
||||
Since this patcher tricks macOS into thinking you're running a newer Mac, certain functionality may be broken:
|
||||
|
||||
* Boot Camp Assistant.app
|
||||
* We recommend following our [guide on getting a UEFI Windows Install working](./WINDOWS.md). Legacy MBR Based installs won't show up in OpenCore
|
||||
* We recommend viewing the [OpenCore Patcher Terminology Page](./TERMS.md) if you have questions
|
||||
* For troubleshooting, join the [OpenCore Patcher Paradise Discord Server](https://discord.gg/rqdPgH8xSN) and see our [Troubleshooting Page](./TROUBLESHOOTING.md)
|
||||
|
||||
## How do I get started?
|
||||
|
||||
1. The first step of ensuring whether your model is support is checking here:
|
||||
1. The first step of ensuring whether your model is supported is checking here:
|
||||
|
||||
* [Supported Models](./MODELS.md)
|
||||
|
||||
|
||||
@@ -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
|
||||
--- | ---
|
||||
|
||||
206
docs/TESTED.md
@@ -4,115 +4,127 @@ To aid users in troubleshooting, we've compiled a list of users who've reported
|
||||
|
||||
### MacBook
|
||||
|
||||
| SMBIOS | Tested | Tester | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| MacBook4,1 | <span style="color:#30BCD5"> YES </span> | Mami | - Stock Model<br/>- Couldn't install due to broke USB support |
|
||||
| MacBook5,1 | ^^ | air.man | - Stock Model<br/>- Patcher version 0.0.19 |
|
||||
| MacBook5,2 | ^^ | Finder352 | ^^ |
|
||||
| MacBook6,1 | ^^ | Finder352 | ^^ |
|
||||
| MacBook7,1 | ^^ | MykolaG | ^^ |
|
||||
| ^^ | ^^ | Jazzzny | ^^ |
|
||||
| ^^ | ^^ | AlexSakha67 | - Stock Model<br/>- Patcher version 0.0.20 |
|
||||
| SMBIOS | Tested | Tester | Model | Version | Comment |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| MacBook4,1 | <span style="color:#30BCD5"> YES </span> | Mami | Stock | Unknown | Couldn't install due to broke USB support |
|
||||
| MacBook5,1 | ^^ | air.man | ^^ | 0.0.19 | N/A |
|
||||
| MacBook5,2 | ^^ | Finder352 | ^^ | ^^ | ^^ |
|
||||
| MacBook6,1 | ^^ | Finder352 | ^^ | ^^ | ^^ |
|
||||
| MacBook7,1 | ^^ | MykolaG | ^^ | ^^ | ^^ |
|
||||
| ^^ | ^^ | Jazzzny | ^^ | ^^ | ^^ |
|
||||
| ^^ | ^^ | AlexSakha67 | ^^ | 0.0.20 | ^^ |
|
||||
| MacBook8,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | ^^ |
|
||||
|
||||
### MacBook Air
|
||||
|
||||
| SMBIOS | Tested | Tester | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| MacBookAir2,1 | No reports | N/A | N/A |
|
||||
| MacBookAir3,1 | ^^ | ^^ | ^^ |
|
||||
| MacBookAir3,2 | <span style="color:#30BCD5"> YES </span> | houser42 | - Stock model <br/>- Patcher version unknown |
|
||||
| MacBookAir4,1 | No reports | N/A | N/A |
|
||||
| MacBookAir4,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookAir5,1 | <span style="color:#30BCD5"> YES </span> | Ausdauersportler | - Stock Model<br/>- Patcher version 0.0.9 |
|
||||
| ^^ | ^^ | webg3 | Stock Model |
|
||||
| MacBookAir5,2 | ^^ | Bab-droid | - Stock Model<br/>- Patcher version 0.0.19 |
|
||||
| ^^ | ^^ | K-Hobert | - Stock model <br/>- Patcher version unknown |
|
||||
| ^^ | ^^ | cboukouv | - Stock model <br/>- Patcher version 0.0.21 |
|
||||
| SMBIOS | Tested | Tester | Model | Version | Comment |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| MacBookAir2,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | N/A |
|
||||
| MacBookAir3,1 | <span style="color:#30BCD5"> YES </span> | uvesten | Stock | 0.3.3 | ^^ |
|
||||
| MacBookAir3,2 | ^^ | houser42 | ^^ | Unknown | ^^ |
|
||||
| MacBookAir4,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | ^^ |
|
||||
| MacBookAir4,2 | <span style="color:#30BCD5"> YES </span> | bdwilson1907 | Stock | 0.3.1 | Intermittent keyboard backlight |
|
||||
| MacBookAir5,1 | ^^ | Ausdauersportler | ^^ | 0.0.9 | N/A |
|
||||
| ^^ | ^^ | webg3 | ^^ | Unknown | ^^ |
|
||||
| MacBookAir5,2 | ^^ | Bab-droid | ^^ | 0.0.19 | ^^ |
|
||||
| ^^ | ^^ | K-Hobert | ^^ | Unknown | ^^ |
|
||||
| ^^ | ^^ | cboukouv | ^^ | 0.0.21 | ^^ |
|
||||
| MacBookAir6,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | N/A |
|
||||
| MacBookAir6,2 | ^^ | ^^ | ^^ | ^^ | ^^ |
|
||||
|
||||
### MacBook Pro
|
||||
|
||||
| SMBIOS | Tested | Tester | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| MacBookPro4,1 | <span style="color:#30BCD5"> YES </span> | cboukouv | - Stock model <br/>- Patcher version 0.0.19 |
|
||||
| MacBookPro5,1 | ^^ | GURU_Jasho#5736 | - Stock model <br/>- Patcher version 0.0.21 |
|
||||
| MacBookPro5,2 | ^^ | hvds | ^^ |
|
||||
| MacBookPro5,3 | ^^ | kommtzeitkonrad | - Stock model <br/>- Patcher version 0.0.22 |
|
||||
| MacBookPro5,4 | No reports | N/A | N/A |
|
||||
| MacBookPro5,5 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro6,1 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro6,2 | <span style="color:#30BCD5"> YES </span> | Jakeluke | - Stock model, dGPU broken <br/>- Patcher version unknown |
|
||||
| MacBookPro7,1 | ^^ | fussel132 | - Stock model <br/>-Patcher version v0.1.2 |
|
||||
| MacBookPro8,1 | ^^ | AvaQueen | - Stock model <br/>- Patcher version 0.0.19 |
|
||||
| MacBookPro8,2 | ^^ | air.man | - Stock model, dGPU disabled <br/>- Patcher version 0.0.22 |
|
||||
| ^^ | ^^ | cboukouv | - Stock model <br/>- Patcher version 0.0.19 |
|
||||
| MacBookPro8,3 | ^^ | lulujyc | - Stock model, dGPU disabled <br/>- Patcher version 0.1.4 |
|
||||
| MacBookPro9,1 | <span style="color:#30BCD5"> YES </span> | jbdamiano | - Stock model <br/>- Patcher version 0.0.19 |
|
||||
| ^^ | ^^ | dennes544 | ^^|
|
||||
| ^^ | ^^ | cgrazy | ^^ |
|
||||
| ^^ | ^^ | LIPA85 | ^^ |
|
||||
| MacBookPro9,2 | ^^ | alexx17xx | - Stock model <br/>- Patcher version 0.0.19 |
|
||||
| ^^ | ^^ | Arvxistanx | ^^ |
|
||||
| ^^ | ^^ | CyberDroid1 | - Stock model<br/>- Patcher version 0.0.16 |
|
||||
| ^^ | ^^ | woefi | - BCM94331CAX upgrade<br/>- Patcher version 0.0.13 |
|
||||
| ^^ | ^^ | whgmkeller | - Stock model<br/>- Patcher version 0.0.11 |
|
||||
| ^^ | ^^ | vinaypundith | - Patcher version 0.0.7 |
|
||||
| MacBookPro10,1 | ^^ | traviswparker | - Stock model <br/>- Patcher version 0.0.14 |
|
||||
| ^^ | ^^ | il-rollino | - Upgraded BCM94360CSAX <br/>- Patcher version 0.0.21 |
|
||||
| MacBookPro10,2 | No reports | N/A | N/A |
|
||||
| SMBIOS | Tested | Tester | Model | Version | Comment |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| MacBookPro4,1 | <span style="color:#30BCD5"> YES </span> | cboukouv | Stock | 0.0.19 | N/A |
|
||||
| MacBookPro5,1 | ^^ | GURU_Jasho#5736 | ^^ | 0.0.21 | ^^ |
|
||||
| MacBookPro5,2 | ^^ | hvds | ^^ | ^^ | ^^ |
|
||||
| MacBookPro5,3 | ^^ | kommtzeitkonrad | ^^ | 0.0.22 | ^^ |
|
||||
| MacBookPro5,4 | <span style="color:red"> NO </span> | N/A | N/A | N/A | N/A |
|
||||
| MacBookPro5,5 | ^^ | ^^ | ^^ | ^^ | ^^ |
|
||||
| MacBookPro6,1 | ^^ | ^^ | ^^ | ^^ | ^^ |
|
||||
| MacBookPro6,2 | <span style="color:#30BCD5"> YES </span> | Jakeluke | Stock | Unknown | dGPU broken |
|
||||
| MacBookPro7,1 | ^^ | fussel132 | ^^ | 0.1.2 | N/A
|
||||
| ^^ | ^^ | casey1234 | Upgraded SSD | 0.3.3 | ^^ |
|
||||
| MacBookPro8,1 | ^^ | AvaQueen | Stock | 0.0.19 | ^^ |
|
||||
| MacBookPro8,1 | ^^ | charly-black | Upgraded BCM94331PCIEBT4CAX | 0.3.1 | ^^ |
|
||||
| MacBookPro8,2 | ^^ | air.man | Stock | 0.0.22 | dGPU disabled |
|
||||
| ^^ | ^^ | cboukouv | ^^ | 0.0.19 | N/A |
|
||||
| MacBookPro8,3 | ^^ | lulujyc | ^^ | 0.1.4 | dGPU disabled |
|
||||
| MacBookPro9,1 | ^^ | jbdamiano | Stock | 0.0.19 | N/A |
|
||||
| ^^ | ^^ | dennes544 | ^^ | ^^ | ^^ |
|
||||
| ^^ | ^^ | cgrazy | ^^ | ^^ | ^^ |
|
||||
| ^^ | ^^ | LIPA85 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro9,2 | ^^ | alexx17xx | ^^ | ^^ | ^^ |
|
||||
| ^^ | ^^ | Arvxistanx | ^^ | ^^ | ^^ |
|
||||
| ^^ | ^^ | CyberDroid1 | ^^ | 0.0.16 | ^^ |
|
||||
| ^^ | ^^ | woefi | Upgraded BCM94331CAX | 0.0.13 | ^^ |
|
||||
| ^^ | ^^ | whgmkeller | Stock | 0.0.11 | ^^ |
|
||||
| ^^ | ^^ | vinaypundith | Unknown | 0.0.7 | ^^ |
|
||||
| ^^ | ^^ | casey1234 | Upgraded RAM and SSD | 0.3.3 | ^^ |
|
||||
| ^^ | ^^ | crystall1nedev | ^^ | 0.4.4 | ^^ |
|
||||
| MacBookPro10,1 | ^^ | traviswparker | Stock | 0.0.14 | ^^ |
|
||||
| ^^ | ^^ | il-rollino | Upgraded BCM94360CSAX | 0.0.21 | ^^ |
|
||||
| MacBookPro10,2 | ^^ | akidone | ^^ | 0.3.0 | ^^ |
|
||||
| MacBookPro11,1 | ^^ | ParaDoX1994 | Stock | 0.4.4 | ^^ |
|
||||
| MacBookPro11,2 | ^^ | casey1234 | ^^ | 0.3.3 | ^^ |
|
||||
| MacBookPro11,3 | <span style="color:red"> NO </span> | N/A | N/A | N/A | ^^ |
|
||||
|
||||
### Mac mini
|
||||
|
||||
| SMBIOS | Tested | Tester | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| Macmini3,1 | No reports | N/A | N/A |
|
||||
| Macmini4,1 | ^^ | ^^ | ^^ |
|
||||
| Macmini5,1 | ^^ | ^^ | ^^ |
|
||||
| Macmini5,2 | ^^ | ^^ | ^^ |
|
||||
| Macmini5,3 | ^^ | ^^ | ^^ |
|
||||
| Macmini6,1 | <span style="color:#30BCD5"> YES </span> | cicofz | - Stock model <br/>- Patcher version 0.0.21 |
|
||||
| ^^ | ^^ | Stig124 | - Stock model <br/>- Patcher version 0.0.19 |
|
||||
| ^^ | ^^ | mwidjaya | - Stock model <br/>- Patcher version 0.0.18 |
|
||||
| Macmini6,2 | ^^ | Shelbs | - Stock model <br/>- Patcher version 0.0.16 |
|
||||
| SMBIOS | Tested | Tester | Model | Version | Comment |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| Macmini3,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | N/A |
|
||||
| Macmini4,1 | <span style="color:#30BCD5"> YES </span> | Towster15#6369 | Stock | 0.4.4 | Does not have internal SATA cable, booted and installed to SSD over USB 2.0 instead |
|
||||
| Macmini5,1 | <span style="color:red"> NO </span> | N/A | N/A | N/A | N/A |
|
||||
| Macmini5,2 | <span style="color:#30BCD5"> YES </span> | charly-black | Dual Core 2.7GHz<br/>AMD HD6630M | Patcher Version 0.3.1 | ^^ |
|
||||
| Macmini5,3 | ^^ | ^^ | ^^ | ^^ | ^^ |
|
||||
| Macmini6,1 | ^^ | cicofz | Stock | 0.0.21 | ^^ |
|
||||
| ^^ | ^^ | Stig124 | ^^ | 0.0.19 | ^^ |
|
||||
| ^^ | ^^ | mwidjaya | ^^ |0.0.18 | ^^ |
|
||||
| Macmini6,2 | ^^ | Shelbs | ^^ | 0.0.16 | ^^ |
|
||||
|
||||
### iMac
|
||||
|
||||
| SMBIOS | Tested | Tester | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| iMac7,1 | No reports | N/A | N/A |
|
||||
| iMac8,1 | <span style="color:#30BCD5"> YES </span> | EduCovas | - Stock Model<br/>- Patcher version 0.0.21 |
|
||||
| iMac9,1 | ^^ | Allanrfox | ^^ |
|
||||
| ^^ | ^^ | Jakeluke | ^^ |
|
||||
| iMac10,1 | ^^ | Ausdauersportler | - Upgraded with WX4150 |
|
||||
| iMac11,1 | ^^ | internetzel | - Upgraded with RX580 mobile |
|
||||
| iMac11,2 | ^^ | MykolaG | - Stock Model<br/>- Patcher version 0.0.21 |
|
||||
| ^^ | ^^ | iMac-iPad | - Stock Model<br/>- Patcher version 0.0.21 |
|
||||
| ^^ | ^^ | vinaypundith | - Patcher version 0.0.19 |
|
||||
| iMac11,3 | ^^ | Ausdauersportler | - Upgraded with Polaris GPU<br/>- Upgraded BCM943602CDP<br/>- Patcher version 0.0.21 |
|
||||
| iMac12,1 | ^^ | shnockdu | - Upgraded with Kepler GPU<br/>- Patcher version 0.0.21 |
|
||||
| ^^ | ^^ | StephN999 | - Upgraded WX4150 GPU<br/>- Upgraded BCM94360CD<br/>- Patcher version 0.0.21 |
|
||||
| iMac12,2 | ^^ | Ausdauersportler | - Upgraded with Polaris GPU<br/>- Upgraded BCM943602CDP<br/>- Patcher version 0.0.21 |
|
||||
| iMac13,1 | ^^ | alexx17xx | - Stock Model<br/>- Patcher version 0.0.19 |
|
||||
| iMac13,2 | ^^ | Alain13 | ^^ |
|
||||
| ^^ | ^^ | algernonpule | - Stock Model<br/>- Patcher version 0.0.19 |
|
||||
| iMac13,3 | No reports | N/A | N/A |
|
||||
| iMac14,1 | <span style="color:#30BCD5"> YES </span> | woefi | - Upgraded NVMe<br/>- Patcher version 0.0.21 |
|
||||
| ^^ | ^^ | mikeboss | - Stock Model<br/>- Patcher version 0.0.19 |
|
||||
| iMac14,2 | ^^ | OKonnel | - Stock Model<br/>- Patcher version 0.0.22 |
|
||||
| ^^ | ^^ | mibaxx | - Stock Model<br/>- Patcher version 0.0.21 |
|
||||
| iMac14,3 | No reports | N/A | N/A |
|
||||
| SMBIOS | Tested | Tester | Model | Version | Comment |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| iMac7,1 | <span style="color:#30BCD5"> YES </span> | lulujyc | iMac 20-inch<br/>Upgraded BCM94352HMB | 0.3.1 | The USB 1.1 controller is unstable on Big Sur+, using USB hubs (forcing USB 2.0) can fix unrecognized keyboard/ mouse. |
|
||||
| iMac8,1 | ^^ | EduCovas | Stock | 0.0.21 | N/A |
|
||||
| iMac9,1 | ^^ | Allanrfox | ^^ | ^^ | ^^ |
|
||||
| ^^ | ^^ | Jakeluke | ^^ | ^^ | ^^ |
|
||||
| iMac10,1 | ^^ | Ausdauersportler | Upgraded WX4150 | Unknown | ^^ |
|
||||
| iMac11,1 | ^^ | internetzel | - Upgraded RX580 mobile | ^^ | ^^ |
|
||||
| iMac11,2 | ^^ | MykolaG | Stock | 0.0.21 | ^^ |
|
||||
| ^^ | ^^ | iMac-iPad | ^^ | ^^ | ^^ |
|
||||
| ^^ | ^^ | vinaypundith | Unknown | 0.0.19 | ^^ |
|
||||
| iMac11,3 | ^^ | Ausdauersportler | Upgraded Polaris GPU<br/>Upgraded BCM943602CDP | 0.0.21 | ^^ |
|
||||
| iMac12,1 | ^^ | shnockdu | Upgraded Kepler GPU | ^^ | ^^ |
|
||||
| ^^ | ^^ | StephN999 | Upgraded WX4150 GPU<br/>BCM94360CD| ^^ | ^^ |
|
||||
| iMac12,2 | ^^ | Ausdauersportler | Upgraded Polaris GPU<br/>Upgraded BCM943602CDP | ^^ | ^^ |
|
||||
| iMac13,1 | ^^ | alexx17xx | Stock | 0.0.19 | ^^ |
|
||||
| iMac13,2 | ^^ | Alain13 | ^^ | ^^ | ^^ |
|
||||
| ^^ | ^^ | algernonpule | ^^ | ^^ | ^^ |
|
||||
| iMac13,3 | <span style="color:red"> NO </span> | N/A | N/A | N/A | ^^ |
|
||||
| iMac14,1 | <span style="color:#30BCD5"> YES </span> | woefi | Upgraded NVMe | 0.0.21 | ^^ |
|
||||
| ^^ | ^^ | mikeboss | Stock | 0.0.19 | ^^ |
|
||||
| iMac14,2 | ^^ | OKonnel | ^^ | 0.0.22 | ^^ |
|
||||
| ^^ | ^^ | mibaxx | ^^ | 0.0.21 | ^^ |
|
||||
| iMac14,3 | <span style="color:red"> NO </span> | N/A | N/A | N/A | ^^ |
|
||||
| iMac15,1 | <span style="color:#30BCD5"> YES </span> | JakubMazur | Upgraded RAM<br/>Upgraded Radeon R9 M295X<br/>Upgraded Quad-Core Intel Core i7 | 0.4.1 | ^^ |
|
||||
|
||||
### Mac Pro
|
||||
|
||||
| SMBIOS | Tested | Tester | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| MacPro3,1 | <span style="color:#30BCD5"> YES </span> | MykolaG | - Upgraded with RX 470 and BCM94360CD<br/>- Stock Bluetooth card removed<br/>- Patcher version 0.1.6 |
|
||||
| ^^ | ^^ | christiann | - Upgraded with RX 560 and BCM94322<br/>- Stock Bluetooth card removed<br/>- Patcher version 0.0.21 |
|
||||
| ^^ | ^^ | gw463 | - Upgraded GTX 680<br/>- Upgraded BCM94360<br/>- Patcher version 0.0.22 |
|
||||
| ^^ | ^^ | AlexSakha67 | - Upgraded R9 280<br/>- Patcher version 0.0.20 |
|
||||
| ^^ | ^^ | nekton1 | - Upgraded GTX 680<br/>- Patcher version 0.0.20 |
|
||||
| ^^ | ^^ | Pri-est | - Patcher version 0.0.9 |
|
||||
| ^^ | ^^ | vinaypundith | - Upgraded GTX 680<br/>- Upgraded BCM94360CD<br/>- Patcher version 0.0.6 |
|
||||
| MacPro4,1 | ^^ | ^^ | - Patcher version 0.0.9 |
|
||||
| MacPro5,1 | ^^ | woefi | - Upgraded with RX 580<br/>- Patcher version 0.0.21 |
|
||||
| ^^ | ^^ | Mabrouk Oscar | - Patcher version 0.0.21 |
|
||||
| ^^ | ^^ | astuffedtiger | - MacPro4,1 flashed to 5,1<br/>- Patcher version 0.0.18 |
|
||||
| SMBIOS | Tested | Tester | Model | Version | Comment |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| MacPro3,1 | <span style="color:#30BCD5"> YES </span> | MykolaG | Upgraded RX 470<br/>Upgraded BCM94360CD<br/>Stock Bluetooth card removed | 0.1.6 | N/A |
|
||||
| ^^ | ^^ | christiann |Upgraded RX 560<br/>Upgraded BCM94322<br/>Stock Bluetooth card removed | 0.0.21 | ^^ |
|
||||
| ^^ | ^^ | gw463 | Upgraded GTX 680<br/>Upgraded BCM94360 | 0.0.22 | ^^ |
|
||||
| ^^ | ^^ | AlexSakha67 | Upgraded R9 280 | 0.0.20 | ^^ |
|
||||
| ^^ | ^^ | nekton1 | Upgraded GTX 680 | ^^ | ^^ |
|
||||
| ^^ | ^^ | Pri-est | Unknown | 0.0.9 | ^^ |
|
||||
| ^^ | ^^ | vinaypundith | Upgraded GTX 680<br/>Upgraded BCM94360CD | 0.0.6 | ^^ |
|
||||
| ^^ | ^^ | ParaDoX1994 | Upgraded HD 7950<br/>Stock Bluetooth card removed | 0.4.4 | ^^ |
|
||||
| MacPro4,1 | ^^ | vinaypundith | Unknown | 0.0.9 | ^^ |
|
||||
| MacPro5,1 | ^^ | woefi | Upgraded with RX 580 | 0.0.21 | ^^ |
|
||||
| ^^ | ^^ | Mabrouk Oscar | Unknown | ^^ | ^^ |
|
||||
| ^^ | ^^ | astuffedtiger | MacPro4,1 flashed to 5,1 | 0.0.18 | ^^ |
|
||||
|
||||
@@ -10,6 +10,14 @@ 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)
|
||||
* [No Graphics Acceleration](#no-graphics-acceleration)
|
||||
* [Black Screen on MacBookPro11,3 in macOS Monterey](#black-screen-on-macbookpro113-in-macos-monterey)
|
||||
* [No DisplayPort Output on Mac Pros with NVIDIA Kepler](#no-displayport-output-on-mac-pros-with-NVIDIA-kepler)
|
||||
* [Volume Hash Mismatch Error in macOS Monterey](#volume-hash-mismatch-error-in-macos-monterey)
|
||||
* [Cannot Disable SIP in recoveryOS](#cannot-disable-sip-in-recoveryos)
|
||||
* [Stuck on "Less than a minute remaining..."](#stuck-on-less-than-a-minute-remaining)
|
||||
|
||||
|
||||
## Stuck on `This version of Mac OS X is not supported on this platform`
|
||||
|
||||
@@ -68,3 +76,69 @@ 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/)
|
||||
|
||||
## 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.
|
||||
|
||||
## No Graphics Acceleration
|
||||
|
||||
|
||||
In macOS, each release generally means GPU drivers are dropped from the OS. With macOS Big Sur, currently all non-Metal GPUs require additional patches to gain acceleration. In addition, macOS Monterey removed Graphics Drivers for both Intel Ivy Bridge and NVIDIA Kepler.
|
||||
|
||||
If you're using OCLP v0.4.4, you should have been prompted to install Root Volume patches after first boot from installation of macOS. If you need to do this manually, you can within our app. Once rebooted, acceleration will be re-enabled as well as brightness control for laptops.
|
||||
|
||||
## Black Screen on MacBookPro11,3 in macOS Monterey
|
||||
|
||||
Due to Apple dropping NVIDIA Kepler support in macOS Monterey, [MacBookPro11,3's GMUX has difficulties switching back to the iGPU to display macOS correctly.](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/522) To work-around this issue, boot the MacBookPro11,3 in Safe Mode and once macOS is installed, run OCLP's Post Install Root Patches to enable GPU Acceleration for the NVIDIA dGPU.
|
||||
|
||||
* Safe Mode can be started by holding Shift+Enter when selecting macOS Monterey in OCLP's Boot Menu.
|
||||
|
||||
## No DisplayPort Output on Mac Pros with NVIDIA Kepler
|
||||
|
||||
If you're having troubles with DisplayPort output on Mac Pros, try enabling Minimal Spoofing in Settings -> SMBIOS Settings and rebuild/install OpenCore. This will trick macOS drivers into thinking you have a newer MacPro7,1 and play nicer.
|
||||
|
||||

|
||||
|
||||
## Volume Hash Mismatch Error in macOS Monterey
|
||||
|
||||
A semi-common popup some users face is the "Volume Hash Mismatch" error:
|
||||
|
||||
<p align="center">
|
||||
<img src="../images/Hash-Mismatch.png">
|
||||
</p>
|
||||
|
||||
What this error signifies is that the OS detects the boot volume's hash does not match to what the OS detects, this error is generally cosmetic and can be ignored. However if your system starts to crash spontaneously shortly after, you'll want to reinstall macOS fresh without importing any data at first.
|
||||
|
||||
* Note that this bug affects native Macs as well and is not due to issues with unsupported Macs: [OSX Daily: “Volume Hash Mismatch” Error in MacOS Monterey](https://osxdaily.com/2021/11/10/volume-hash-mismatch-error-in-macos-monterey/)
|
||||
|
||||
Additionally it can help to disable FeatureUnlock in Settings -> Misc Settings as this tool can be strenuous on systems with weaker memory stability.
|
||||
|
||||
## Cannot Disable SIP in recoveryOS
|
||||
|
||||
With OCLP, the patcher will always overwrite the current SIP value on boot to ensure that users don't brick an installation after NVRAM reset. However for users wanting to disable SIP entirely, this can be done easily.
|
||||
|
||||
Head into the GUI, Patcher Settings and toggle the bits you need disabled from SIP:
|
||||
|
||||
| SIP Enabled | SIP Lowered (Root Patching) | SIP Disabled |
|
||||
| :--- | :--- | :--- |
|
||||
|  |  |  |
|
||||
|
||||
## Intermediate issues with USB 1.1 and Bluetooth on MacPro3,1 - MacPro5,1
|
||||
|
||||
For those experiencing issues with USB 1.1 devices (such as mice, keyboards and bluetooth chipsets), macOS Big Sur and newer have weakened OS-side reliability for the UHCI controller in older Mac Pros.
|
||||
|
||||
* UHCI is a USB 1.1 controller that is hooked together with the USB 2.0 ports in your system. Whenever a USB 1.1 device is detected, the UHCI controller is given ownership of the device at a hardware/firmware level.
|
||||
* EHCI is the USB 2.0 controller in older Mac Pros
|
||||
|
||||
Because of this, we recommend placing a USB 2.0/3.0 hub between your devices and the port on the Mac Pro. UHCI and EHCI cannot both be used at once, so using a USB hub will always force the EHCI controller on.
|
||||
|
||||
* Alternatively, you can try cold starting the hardware and see if macOS recognizes the UHCI controller properly
|
||||
|
||||
## Stuck on "Less than a minute remaining..."
|
||||
|
||||
A common area for systems to get "stuck", namely for units that are missing the `AES` CPU instruction/older mobile hardware. During this stange a lot of heavy cryptography is performed, which can make systems appear to be stuck when in reality they are working quite hard to finish up the installation.
|
||||
|
||||
Because this step can take a few hours or more depending on drive speeds, be patient at this stage and do not manually reboot your machine as this will break the installation and require you to reinstall. If you think your system has stalled, press the Caps Lock key. If the light turns on, your system is busy.
|
||||
|
||||
@@ -4,12 +4,10 @@ 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
|
||||
* You'll need to mount the drive's EFI partition, and delete the `EFI/OC` and `System` folders
|
||||
* Note **do not** delete the entire EFI folder, this will likely break any existing Windows and Linux installations
|
||||
* [See here for example how to mount](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html)
|
||||
* [See here for an example on 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)
|
||||
2. [Reset NVRAM](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.
|
||||
|
||||
@@ -4,7 +4,7 @@ With OpenCore Legacy Patcher, generally there's very little reason for users to
|
||||
|
||||
For those who do wish to update, it's actually quite easy. Simply [download the latest release](https://github.com/dortania/OpenCore-Legacy-Patcher/releases) and rerun the patcher:
|
||||
|
||||

|
||||

|
||||
|
||||
Then simply rebuild your OpenCore build and install again. Then voila, OpenCore is updated!
|
||||
|
||||
|
||||
@@ -6,15 +6,19 @@ To install UEFI is actually super simple! All it requires is to boot Windows' In
|
||||
|
||||
* Note: UEFI Windows is generally quite usable for Arrendale and newer models, however machines with Penryn CPUs may experience issues
|
||||
* Recommended Models:
|
||||
* MacBookAir4,x and newer
|
||||
* MacBookPro8,x and newer
|
||||
* Macmini5,x and newer
|
||||
* iMac11,x and newer
|
||||
* MacPro4,1 and newer
|
||||
* Xserve3,1 and newer
|
||||
* MacBookAir4,x - 5,x
|
||||
* MacBookPro8,x - 10,x
|
||||
* Macmini5,x - 6,x
|
||||
* iMac11,x - 13,x
|
||||
|
||||
Once you know your model is supported, you're good to go with the rest of this guide
|
||||
|
||||
* Newer models than listed here will already natively support UEFI Windows through Boot Camp
|
||||
|
||||
For MacPro4,1/5,1 and Xserve3,1 users, please be aware that Windows has troubles with automatic installation, so please refer to cdf's guide on manual installation:
|
||||
|
||||
* [cdf's Mac Pro Thread](https://forums.macrumors.com/threads/opencore-on-the-mac-pro.2207814/)
|
||||
|
||||
## Disk Formatting
|
||||
|
||||
To start off, we'll need the following:
|
||||
@@ -61,6 +65,21 @@ The open terminal and run `rsync` on the USB drive (replace CCCOMA_X64 with the
|
||||
rsync -r -P /Volumes/CCCOMA_X64/ /Volumes/W10USB
|
||||
```
|
||||
|
||||
::: details If you get an error about install.wim
|
||||
|
||||
One of the files, `install.wim`, may be too big for the FAT32 file system to hold. If this is the case, you should enter the commands below rather than the one above. This assumes you have `wimlib` installed, if not you can install it with [Homebrew](https://brew.sh):
|
||||
|
||||
```
|
||||
# Copy everything but the install.wim file
|
||||
rsync -vha -P --exclude=sources/install.wim /Volumes/CCCOMA_X64/ /Volumes/W10USB
|
||||
|
||||
# Use wimlib to split the install.wim file into a size that fits
|
||||
wimlib-imagex split /Volumes/CCCOMA_X64/sources/install.wim /Volumes/W10USB/sources/install.swm 4000
|
||||
```
|
||||
|
||||
Once that's completed, you can continue.
|
||||
:::
|
||||
|
||||

|
||||
|
||||
Command will take some time, so sit back and get some coffee. Once finished, the root of the USB drive should look as follows:
|
||||
@@ -75,14 +94,34 @@ Once done, lets reboot into OpenCore's Menu and you'll see a new Windows' entry:
|
||||
|
||||

|
||||
|
||||
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
|
||||
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, or with [brigadier](https://github.com/timsutton/brigadier) in Windows.
|
||||
|
||||

|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "This version of Boot Camp is not intended for this computer model."
|
||||
|
||||
If you built OpenCore with Moderate or higher SMBIOS spoofing, you'll get an error when trying to install Boot Camp drivers. You can solve this by either rebuilding OpenCore with a lower spoof level, or running the installer from `Drivers/Apple/BootCamp.msi`.
|
||||
|
||||
| Setup.exe | BootCamp.msi |
|
||||
| :--- | :--- |
|
||||
|  |  |
|
||||
|
||||
::: details BootCamp.msi quirks
|
||||
|
||||
If needed, you can run it from the command line as administrator:
|
||||
|
||||
```
|
||||
set __COMPAT_LAYER=WIN7RTM && start \path\to\BootCamp\Drivers\Apple\Bootcamp.msi'
|
||||
```
|
||||
|
||||
Make sure to substitute `\path\to` with the location of the BootCamp folder.
|
||||
|
||||
You can also open `Properties` on the file to change the compatibility to `Previous version of Windows` in case you have BootCamp 4.0 drivers (the above command does this already.)
|
||||
|
||||
:::
|
||||
|
||||
### iMac12,x Bluescreen after driver installation
|
||||
|
||||
Currently Intel's iGPU drivers for the HD 3000 series do not support UEFI booting in Windows. Recommended solution is to simply disable: [iMac 12,1 Windows 10 Boot Loop – Fix Intel Graphics issue](https://zzq.org/?p=39)
|
||||
Currently Intel's iGPU drivers for the HD 3000 series do not support UEFI booting in Windows. The recommended solution is to simply disable: [iMac 12,1 Windows 10 Boot Loop – Fix Intel Graphics issue](https://zzq.org/?p=39)
|
||||
|
||||
15544
docs/package-lock.json
generated
3016
gui/gui_main.py
Normal file
43
gui/menu_redirect.py
Normal file
@@ -0,0 +1,43 @@
|
||||
import wx
|
||||
import time
|
||||
|
||||
class RedirectText(object):
|
||||
def __init__(self,aWxTextCtrl, sleep):
|
||||
self.out=aWxTextCtrl
|
||||
self.sleep = sleep
|
||||
|
||||
def write(self,string):
|
||||
self.out.WriteText(string)
|
||||
wx.GetApp().Yield()
|
||||
if self.sleep:
|
||||
time.sleep(0.01)
|
||||
|
||||
def fileno(self):
|
||||
return 1
|
||||
|
||||
def flush(self):
|
||||
pass
|
||||
|
||||
class RedirectLabel(object):
|
||||
def __init__(self,aWxTextCtrl):
|
||||
self.out=aWxTextCtrl
|
||||
|
||||
def write(self,string):
|
||||
if string.endswith("MB/s"):
|
||||
self.out.SetLabel(string)
|
||||
self.out.Centre(wx.HORIZONTAL)
|
||||
wx.GetApp().Yield()
|
||||
time.sleep(0.01)
|
||||
|
||||
def flush(self):
|
||||
pass
|
||||
|
||||
class RedirectLabelAll(object):
|
||||
def __init__(self,aWxTextCtrl):
|
||||
self.out=aWxTextCtrl
|
||||
|
||||
def write(self,string):
|
||||
self.out.SetLabel(string)
|
||||
self.out.Centre(wx.HORIZONTAL)
|
||||
wx.GetApp().Yield()
|
||||
time.sleep(0.01)
|
||||
BIN
images/HD3000-Default-Colors.png
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
images/HD3000-Display-Colors.png
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
images/Hash-Mismatch.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
images/OCLP-GUI-Build-Finished.png
Normal file
|
After Width: | Height: | Size: 427 KiB |
BIN
images/OCLP-GUI-Build-Start.png
Normal file
|
After Width: | Height: | Size: 307 KiB |
BIN
images/OCLP-GUI-Create-Installer-Menu.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
images/OCLP-GUI-EFI-Finished-Install.png
Normal file
|
After Width: | Height: | Size: 206 KiB |
BIN
images/OCLP-GUI-EFI-Needs-Permission.png
Normal file
|
After Width: | Height: | Size: 246 KiB |
BIN
images/OCLP-GUI-EFI-Select-Disk.png
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
images/OCLP-GUI-EFI-Select-Partition.png
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
images/OCLP-GUI-Installer-Download-Catalog.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
images/OCLP-GUI-Installer-Download-Finished.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
images/OCLP-GUI-Installer-Download-Listed-Products.png
Normal file
|
After Width: | Height: | Size: 265 KiB |
BIN
images/OCLP-GUI-Installer-Download-Progress.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
images/OCLP-GUI-Installer-Finished-Script.png
Normal file
|
After Width: | Height: | Size: 213 KiB |
BIN
images/OCLP-GUI-Installer-Flashing-Process.png
Normal file
|
After Width: | Height: | Size: 212 KiB |
BIN
images/OCLP-GUI-Installer-Format-USB.png
Normal file
|
After Width: | Height: | Size: 196 KiB |
BIN
images/OCLP-GUI-Installer-Needs-Installing.png
Normal file
|
After Width: | Height: | Size: 247 KiB |
BIN
images/OCLP-GUI-Installer-Select-Local-Installer.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
images/OCLP-GUI-Installer-Sucess-Prompt.png
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
images/OCLP-GUI-Main-Menu.png
Normal file
|
After Width: | Height: | Size: 210 KiB |
BIN
images/OCLP-GUI-Root-Patch-Finished.png
Normal file
|
After Width: | Height: | Size: 283 KiB |
BIN
images/OCLP-GUI-Root-Patch.png
Normal file
|
After Width: | Height: | Size: 176 KiB |
BIN
images/OCLP-GUI-SMBIOS-Minimal.png
Normal file
|
After Width: | Height: | Size: 252 KiB |
BIN
images/OCLP-GUI-Settings-Beta-Blur.png
Normal file
|
After Width: | Height: | Size: 238 KiB |
BIN
images/OCLP-GUI-Settings-SIP-Disabled.png
Normal file
|
After Width: | Height: | Size: 506 KiB |
BIN
images/OCLP-GUI-Settings-SIP-Enabled.png
Normal file
|
After Width: | Height: | Size: 496 KiB |
BIN
images/OCLP-GUI-Settings-SIP-Root-Patch.png
Normal file
|
After Width: | Height: | Size: 499 KiB |
BIN
images/OCLP-GUI-Settings-ShowPicker.png
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
images/OCLP-TUI-Root-Patch-List.png
Normal file
|
After Width: | Height: | Size: 298 KiB |
BIN
images/OCLP-TUI-Root-Patch-Option.png
Normal file
|
After Width: | Height: | Size: 297 KiB |
BIN
images/OCLP-TUI-Settings.png
Normal file
|
After Width: | Height: | Size: 309 KiB |
BIN
images/build-dist.png
Normal file
|
After Width: | Height: | Size: 240 KiB |