mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-15 21:28:55 +10:00
Compare commits
165 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be4ef6a7f2 | ||
|
|
a24570de05 | ||
|
|
fb85c42c52 | ||
|
|
c6bef2d8aa | ||
|
|
7dc80475c3 | ||
|
|
404e855443 | ||
|
|
5683fedd25 | ||
|
|
2fc21e6f07 | ||
|
|
8db6085ed1 | ||
|
|
ca4fd2286f | ||
|
|
df6ca71124 | ||
|
|
3fb624fc7d | ||
|
|
89e36d762b | ||
|
|
f24a7f4229 | ||
|
|
55b3641965 | ||
|
|
8baca06246 | ||
|
|
f7b160f449 | ||
|
|
fc65423ee2 | ||
|
|
8c25110568 | ||
|
|
dad8d1224a | ||
|
|
ed78b5632c | ||
|
|
6bb274638e | ||
|
|
bb78f59b9d | ||
|
|
0c960438f2 | ||
|
|
c1849c0d28 | ||
|
|
e62335cae5 | ||
|
|
b4644f4b80 | ||
|
|
1d22ea51b4 | ||
|
|
241fe052aa | ||
|
|
51eb22bc94 | ||
|
|
084ee663b2 | ||
|
|
1fb46d0d76 | ||
|
|
1faa8055ab | ||
|
|
b50f376990 | ||
|
|
13ffc64ce6 | ||
|
|
9676c2c08a | ||
|
|
9317e11009 | ||
|
|
211e8fbb71 | ||
|
|
f2bfb7c479 | ||
|
|
35722875ee | ||
|
|
86a9789b18 | ||
|
|
18c49d0902 | ||
|
|
f7ec0ddf21 | ||
|
|
c2d26b4903 | ||
|
|
cf7a553f0b | ||
|
|
434dedb815 | ||
|
|
214e31e8e3 | ||
|
|
ed63f12f2b | ||
|
|
91417bf75d | ||
|
|
be62a3f7db | ||
|
|
f5b467c4fb | ||
|
|
fd17caf03d | ||
|
|
37862961df | ||
|
|
c05238875f | ||
|
|
60f4182184 | ||
|
|
526c009866 | ||
|
|
55b76aff9a | ||
|
|
e6f44a902a | ||
|
|
26e69d0084 | ||
|
|
9cfe1a493c | ||
|
|
b4e0c79d13 | ||
|
|
e2440a075e | ||
|
|
59c5393bc4 | ||
|
|
685491d0ba | ||
|
|
0f64b8b2d9 | ||
|
|
e800612bcf | ||
|
|
ae1d73eac1 | ||
|
|
fab6daae5e | ||
|
|
cc68e098eb | ||
|
|
b95bd4e357 | ||
|
|
36f69c4f21 | ||
|
|
829f1f6bc1 | ||
|
|
d73d62f68c | ||
|
|
5b6b8d6e1a | ||
|
|
01b0bc4c67 | ||
|
|
5537340c87 | ||
|
|
eda96d0f93 | ||
|
|
65a11b30d7 | ||
|
|
5f5d5daebf | ||
|
|
226a59e9c1 | ||
|
|
840f47d861 | ||
|
|
c5adf1eeea | ||
|
|
70b4381003 | ||
|
|
2a315b7a57 | ||
|
|
e8b4e3dfdf | ||
|
|
c5dd7ec6c9 | ||
|
|
3aed0438fc | ||
|
|
58314caed4 | ||
|
|
bd8c6b4d9f | ||
|
|
7134e30640 | ||
|
|
e8ee2a2657 | ||
|
|
c9a14e242d | ||
|
|
69f4bbc7a6 | ||
|
|
5ecd453c75 | ||
|
|
d7eebbe171 | ||
|
|
1038be303b | ||
|
|
d12b39bd98 | ||
|
|
d6161481ef | ||
|
|
2455cb1233 | ||
|
|
d2312e3cce | ||
|
|
3ff6f68236 | ||
|
|
8b0625eb41 | ||
|
|
97a86fcd92 | ||
|
|
9631cc48bd | ||
|
|
84a3341788 | ||
|
|
d547ecdcf0 | ||
|
|
e0fd78c7af | ||
|
|
87f412b469 | ||
|
|
6003d6c457 | ||
|
|
20d04d307d | ||
|
|
24a1e35f54 | ||
|
|
ef4983d907 | ||
|
|
423bf8f20c | ||
|
|
55e6aeaf0a | ||
|
|
509137f519 | ||
|
|
169ea95dc4 | ||
|
|
e21efa975c | ||
|
|
b9bd01750c | ||
|
|
7691184ca2 | ||
|
|
2bba8f474a | ||
|
|
a5bb29142f | ||
|
|
74857b1d16 | ||
|
|
c19cbd9f41 | ||
|
|
b6630b685a | ||
|
|
b01adb9c10 | ||
|
|
44c2f9cbd4 | ||
|
|
e0d16b2d28 | ||
|
|
4f9ce33912 | ||
|
|
9b3bf07494 | ||
|
|
4982edef33 | ||
|
|
549bf1686b | ||
|
|
f3c3c83140 | ||
|
|
e3fa2e857f | ||
|
|
f973817819 | ||
|
|
c3e0765aae | ||
|
|
3a50a602e0 | ||
|
|
8487eab010 | ||
|
|
8ac64ff9c0 | ||
|
|
e754a7d06f | ||
|
|
b3f6607768 | ||
|
|
b92daff30e | ||
|
|
abdac48f83 | ||
|
|
c9fae32eb6 | ||
|
|
a762d7efe8 | ||
|
|
c044e8acc9 | ||
|
|
f2cc423c31 | ||
|
|
218507b8a7 | ||
|
|
e29895830c | ||
|
|
e5a260b74b | ||
|
|
5e45ea92bc | ||
|
|
6020eae937 | ||
|
|
0dbffc5a3e | ||
|
|
233ded0924 | ||
|
|
985e053e90 | ||
|
|
9a483181a1 | ||
|
|
d762b37851 | ||
|
|
e531d30c3c | ||
|
|
ca8e1a7bf0 | ||
|
|
31a29e0b3e | ||
|
|
1126a49dc5 | ||
|
|
0fce7adad1 | ||
|
|
8976496e52 | ||
|
|
077b9f67b2 | ||
|
|
8f8778f0f6 | ||
|
|
adcceb0c10 |
2
.github/workflows/build-app-wxpython.yml
vendored
2
.github/workflows/build-app-wxpython.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Build Binary
|
||||
run: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3 Build-Binary.command --reset_binaries --branch "${{ env.branch }}" --commit "${{ env.commiturl }}" --commit_date "${{ env.commitdate }}" --key "${{ env.ANALYTICS_KEY }}" --site "${{ env.ANALYTICS_SITE }}"
|
||||
run: /Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Binary.command --reset_binaries --branch "${{ env.branch }}" --commit "${{ env.commiturl }}" --commit_date "${{ env.commitdate }}" --key "${{ env.ANALYTICS_KEY }}" --site "${{ env.ANALYTICS_SITE }}"
|
||||
|
||||
# - name: Import Certificate
|
||||
# if: (!security find-certificate -c "${{ env.MAC_CODESIGN_IDENTITY }}")
|
||||
|
||||
2
.github/workflows/validate.yml
vendored
2
.github/workflows/validate.yml
vendored
@@ -14,4 +14,4 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Validate
|
||||
run: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3 OpenCore-Patcher-GUI.command --validate
|
||||
run: /Library/Frameworks/Python.framework/Versions/3.11/bin/python3 OpenCore-Patcher-GUI.command --validate
|
||||
|
||||
@@ -3,14 +3,15 @@
|
||||
# Generate stand alone application for OpenCore-Patcher
|
||||
# Copyright (C) 2022-2023 - Mykola Grymalyuk
|
||||
|
||||
from pathlib import Path
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import argparse
|
||||
import os
|
||||
import subprocess
|
||||
import plistlib
|
||||
import time
|
||||
import sys
|
||||
import platform
|
||||
import subprocess
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from resources import constants
|
||||
|
||||
@@ -30,11 +31,12 @@ class CreateBinary:
|
||||
|
||||
def __init__(self):
|
||||
start = time.time()
|
||||
print("Starting build script")
|
||||
self._set_cwd()
|
||||
|
||||
print("Starting build script")
|
||||
self.args = self._parse_arguments()
|
||||
|
||||
self._set_cwd()
|
||||
print(f"Current Working Directory:\n- {os.getcwd()}")
|
||||
|
||||
self._preflight_processes()
|
||||
self._build_binary()
|
||||
@@ -48,7 +50,6 @@ class CreateBinary:
|
||||
"""
|
||||
|
||||
os.chdir(Path(__file__).resolve().parent)
|
||||
print(f"Current Working Directory:\n- {os.getcwd()}")
|
||||
|
||||
|
||||
def _parse_arguments(self):
|
||||
|
||||
51
CHANGELOG.md
51
CHANGELOG.md
@@ -1,5 +1,54 @@
|
||||
# OpenCore Legacy Patcher changelog
|
||||
|
||||
## 1.0.0
|
||||
- Resolve BCM2046 and BCM2070 support on macOS 13.3 and newer
|
||||
- Workaround 13.3+ Kernel Panic on AMD GCN GPUs playing DRM content
|
||||
- Add new macOS Installer download menu (Jazzzny)
|
||||
- Refresh download UI (Jazzzny)
|
||||
- Add support for Universal 2 distribution (x86_64 and ARM64)
|
||||
- Drops Rosetta requirement on Apple Silicon Macs
|
||||
- Note building from source will require Python 3.11 or newer and up-to-date Python modules
|
||||
- Update font handling code, fixing font issues on Yosemite and El Capitan
|
||||
- Resolve incorrect RELEASE usage of OpenCore binaries when DEBUG enabled
|
||||
- Add RenderBox.framework patch for 3802-based Intel GPUs on macOS 13.3 and newer
|
||||
- Works around Weather and Widget freezing
|
||||
- Applicable for Intel Ivy Bridge and Haswell iGPUs
|
||||
- Add macOS Sonoma support to PatcherSupportPkg validation in CI
|
||||
- Implement basic support for macOS Sonoma:
|
||||
- Supports same range of hardware as Ventura, in addition to:
|
||||
- iMac18,x
|
||||
- MacBook10,1
|
||||
- MacBookPro14,x
|
||||
- [T1 chip currently unsupported in Sonoma](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1103)
|
||||
- Resolved issues:
|
||||
- Graphics Acceleration support for 3802 and non-Metal GPUs
|
||||
- UI corruption on 31001 GPUs
|
||||
- Wireless Networking for BCM94360, 4360, 4350, 4331 and 43224
|
||||
- USB ethernet support for adapters based on ECM protocol (ex. Realtek)
|
||||
- dGPU support for MacBookPro14,3
|
||||
- S1X/S3X NVMe Drive Support
|
||||
- PCIe-based FaceTime Camera support
|
||||
- Bluetooth support by switching to dynamic VMM spoofing
|
||||
- Increment Binaries:
|
||||
- OpenCorePkg 0.9.3 - release
|
||||
- Lilu 1.6.7 - release
|
||||
- WhateverGreen 1.6.6 - release
|
||||
- RestrictEvents 1.1.3 - (rolling - 4f233dd)
|
||||
- FeatureUnlock 1.1.5 - release
|
||||
- DebugEnhancer 1.0.8 - release
|
||||
- CPUFriend 1.2.7 - release
|
||||
- BlueToolFixup 2.6.8 - rolling (2305aaa)
|
||||
- CryptexFixup 1.0.2 - release
|
||||
- PatcherSupportPkg 1.3.2 - release
|
||||
- Build Server Changes:
|
||||
- Upgrade Python backend to 3.11.5
|
||||
- Upgrade Python modules:
|
||||
- requests - 2.31.0
|
||||
- pyobjc - 9.2
|
||||
- wxpython - 4.2.1
|
||||
- pyinstaller - 5.13.2
|
||||
- packaging - 23.1
|
||||
|
||||
## 0.6.8
|
||||
- Update non-Metal Binaries:
|
||||
- Improve experimental Menubar implementation stability
|
||||
@@ -33,7 +82,7 @@
|
||||
- utilities.py:
|
||||
- Fix indexing error on Device Paths (thx [@Ausdauersportler](https://github.com/Ausdauersportler))
|
||||
- Increment Binaries:
|
||||
- PatcherSupportPkg 1.2.2 - release
|
||||
- PatcherSupportPkg 1.2.2 - release
|
||||
|
||||
## 0.6.7
|
||||
- Resolve partition buttons overlapping in Install OpenCore UI
|
||||
|
||||
@@ -1,15 +1,23 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
import sys, os, time, subprocess
|
||||
import sys, os, time, subprocess, pathlib
|
||||
sys.path.append(os.path.abspath(os.getcwd()))
|
||||
from resources import constants
|
||||
block_cipher = None
|
||||
|
||||
datas = [
|
||||
('payloads.dmg', '.'),
|
||||
('Universal-Binaries.dmg', '.'),
|
||||
|
||||
]
|
||||
if pathlib.Path("DortaniaInternalResources.dmg").exists():
|
||||
datas.append(('DortaniaInternalResources.dmg', '.'))
|
||||
|
||||
|
||||
a = Analysis(['OpenCore-Patcher-GUI.command'],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[('payloads.dmg', '.'), ('Universal-Binaries.dmg', '.')],
|
||||
datas=datas,
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
@@ -33,7 +41,7 @@ exe = EXE(pyz,
|
||||
upx=True,
|
||||
console=False,
|
||||
disable_windowed_traceback=False,
|
||||
target_arch=None,
|
||||
target_arch="universal2",
|
||||
codesign_identity=None,
|
||||
entitlements_file=None )
|
||||
coll = COLLECT(exe,
|
||||
|
||||
@@ -93,7 +93,13 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m
|
||||
* [FixPCIeLinkrate](https://github.com/joevt/joevtApps)
|
||||
* [Jazzzny](https://github.com/Jazzzny)
|
||||
* Research and various contributions to the project
|
||||
* Aquantia Ethernet Patch
|
||||
* UEFI Legacy XHCI research and development
|
||||
* NVIDIA OpenCL research and development
|
||||
* `MacBook5,2` research and development
|
||||
* LegacyKeyboardInjector
|
||||
* Pre-Ivy Bridge Aquantia Ethernet Patch
|
||||
* Non-Metal Photo Booth Patch for Monterey+
|
||||
* GUI and Backend Development
|
||||
* Amazing users who've graciously donate hardware:
|
||||
* [JohnD](https://forums.macrumors.com/members/johnd.53633/) - 2013 Mac Pro
|
||||
* [SpiGAndromeda](https://github.com/SpiGAndromeda) - AMD Vega 64
|
||||
|
||||
@@ -8,6 +8,7 @@ SupportedSMBIOS = [
|
||||
"MacBook7,1",
|
||||
"MacBook8,1",
|
||||
"MacBook9,1",
|
||||
"MacBook10,1",
|
||||
# MacBook Air
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
@@ -46,6 +47,9 @@ SupportedSMBIOS = [
|
||||
"MacBookPro13,1",
|
||||
"MacBookPro13,2",
|
||||
"MacBookPro13,3",
|
||||
"MacBookPro14,1",
|
||||
"MacBookPro14,2",
|
||||
"MacBookPro14,3",
|
||||
# Mac Mini
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
@@ -76,6 +80,9 @@ SupportedSMBIOS = [
|
||||
"iMac16,1",
|
||||
"iMac16,2",
|
||||
"iMac17,1",
|
||||
"iMac18,1",
|
||||
"iMac18,2",
|
||||
"iMac18,3",
|
||||
# Mac Pro
|
||||
"MacPro3,1",
|
||||
"MacPro4,1",
|
||||
|
||||
244
data/pci_data.py
244
data/pci_data.py
@@ -411,6 +411,7 @@ class nvidia_ids:
|
||||
kepler_ids = [
|
||||
# GK104
|
||||
0x1180, # GK104 [GTX 680]
|
||||
0x1182, # GK104 [GTX 760 Ti]
|
||||
0x1183, # GK104 [GTX 660 Ti]
|
||||
0x1184, # GK104 [GTX 770]
|
||||
0x1185, # GK104 [GTX 660]
|
||||
@@ -418,88 +419,136 @@ class nvidia_ids:
|
||||
0x1187, # GK104 [GTX 760]
|
||||
0x1188, # GK104 [GTX 690]
|
||||
0x1189, # GK104 [GTX 670]
|
||||
0x118a, # GK104GL [GRID K520]
|
||||
0x118b, # GK104GL [GRID K2 GeForce USM]
|
||||
0x118c, # GK104 [GRID K2 NVS USM]
|
||||
0x118d, # GK104GL [GRID K200 vGPU]
|
||||
0x118E, # GK104 [GTX 760 OEM]
|
||||
0x118F, # GK104GL [Tesla K10]
|
||||
0x1198, # GTX 880M
|
||||
0x1199, # GK104 [GTX 870M]
|
||||
0x119A, # GTX 860M
|
||||
0x1191, # GK104 [GTX 760 Rev. 2]
|
||||
0x1193, # GK104 [GTX 760 Ti OEM]
|
||||
0x1194, # GK104GL [Tesla K8]
|
||||
0x1195, # GK104 [GTX 660 Rev. 2]
|
||||
0x1198, # GK104M [GTX 880M]
|
||||
0x1199, # GK104M [GTX 870M]
|
||||
0x119A, # GK104M [GTX 860M]
|
||||
0x119D, # GK104M [GTX 775M Mac Edition]
|
||||
0x119E, # GTX 780M
|
||||
0x119E, # GK104M [GTX 780M Mac Edition]
|
||||
0x119F, # GK104 [GTX 780M]
|
||||
0x11A0, # GK104 [GTX 680M]
|
||||
0x11A1, # GK104 [GTX 670MX]
|
||||
0x11A2, # GK104 [GTX 675MX]
|
||||
0x11A2, # GK104 [GTX 675MX Mac Edition]
|
||||
0x11A3, # GK104 [GTX 680MX]
|
||||
0x11A7, # GK104 [GTX 675MX]
|
||||
0x11A9, # GTX 870M
|
||||
0x11A8, # GK104GLM [Quadro K5100M]
|
||||
0x11A9, # GK104M [GTX 870M]
|
||||
0x11AF, # GK104GLM [GRID IceCube]
|
||||
0x11B0, # GK104GL [GRID K240Q / K260Q vGPU]
|
||||
0x11B1, # GK104GL [GRID K2 Tesla USM]
|
||||
0x11B4, # GK104GL [Quadro K4200]
|
||||
0x11B6, # Quadro K3100M
|
||||
0x11B7, # Quadro K4100M
|
||||
0x11B8, # Quadro K5100M
|
||||
0x11BA, # GK104 [K5000]
|
||||
0x11BC, # GK104 [K5000M]
|
||||
0x11BD, # GK104 [K4000M]
|
||||
0x11BE, # GK104 [K3000M]
|
||||
0x11B6, # GK104GLM [Quadro K3100M]
|
||||
0x11B7, # GK104GLM [Quadro K4100M]
|
||||
0x11B8, # GK104GLM [Quadro K5100M]
|
||||
0x11B9, # GK104GLM
|
||||
0x11BA, # GK104GL [Quadro K5000]
|
||||
0x11BC, # GK104GLM [Quadro K5000M]
|
||||
0x11BD, # GK104GLM [Quadro K4000M]
|
||||
0x11BE, # GK104GLM [Quadro K3000M]
|
||||
0x11BF, # GK104 [GRID K2]
|
||||
# GK106
|
||||
0x11C0, # GK106 [GTX 660]
|
||||
0x11C2, # GK106 [GTX 650 Ti BOOST]
|
||||
0x11c3, # GK106 [GTX 650 Ti OEM]
|
||||
0x11c4, # GK106 [GTX 645 OEM]
|
||||
0x11c5, # GK106 [GT 740]
|
||||
0x11C6, # GK106 [GTX 650 Ti]
|
||||
0x11C7, # GK106 [GTX 750 Ti]
|
||||
0x11C8, # GK106 [GTX 650 OEM]
|
||||
0x11E0, # GK106 [GTX 770M]
|
||||
0x11E1, # GTX 765M
|
||||
0x11E2, # GTX 765M
|
||||
0x11FA, # GK106 [K4000]
|
||||
0x11FC, # Quadro K2100M
|
||||
0x11CB, # GK106 [GT 740]
|
||||
0x11E0, # GK106M [GTX 770M]
|
||||
0x11E1, # GK106M [GTX 765M]
|
||||
0x11E2, # GK106M [GTX 765M]
|
||||
0x11E3, # GK106M [GTX 760M]
|
||||
0x11E7, # GK106M
|
||||
0x11FA, # GK106GL [Quadro K4000]
|
||||
0x11FC, # GL106GLM [Quadro K2100M]
|
||||
# GK107
|
||||
0x0FC0, # GK107 [GT 640]
|
||||
0x0FC1, # GK107 [GT 640]
|
||||
0x0FC2, # GK107 [GT 630]
|
||||
0x0FC5, # GK107 [GT 1030]
|
||||
0x0FC6, # GK107 [GTX 650]
|
||||
0x0FC8, # GK107 [GT 740]
|
||||
0x0FC9, # GK107 [GT 730]
|
||||
0x0FCD, # GK107M [GT 755M]
|
||||
0x0FCE, # GK107M [GT 640M LE]
|
||||
0x0FD1, # GK107 [GT 650M]
|
||||
0x0FD2, # GK107 [GT 640M]
|
||||
0x0FD3, # GK107 [GT 640M LE]
|
||||
0x0FD4, # GK107 [GTX 660M]
|
||||
0x0FD5, # GK107 [GT 650M]
|
||||
0x0FD6, # GK107M
|
||||
0x0FD8, # GK107 [GT 640M]
|
||||
0x0FD9, # GK107 [GT 645M]
|
||||
0x0FDF, # GK107M [ GT 740M]
|
||||
0x0FDB, # GK107M
|
||||
0x0FDF, # GK107M [GT 740M]
|
||||
0x0FE0, # GK107 [GTX 660M]
|
||||
0x0FE1, # GK107M [GT 730M]
|
||||
0x0FE2, # GK107M [GT 745M]
|
||||
0x0FE3, # GK107M [GT 745M]
|
||||
0x0FE4, # GK107M [GT 750M]
|
||||
0x0FE5, # GK107 [GeForce K340 USM]
|
||||
0x0FE6, # GK107 [GRID K1 NVS USM]
|
||||
0x0FE7, # GK107GL [GRID K100 vGPU]
|
||||
0x0FE8, # GK107M [N14P-GS]
|
||||
0x0FE9, # GK107 [GT 750M Mac Edition]
|
||||
0x0FEA, # GK107M [GT 755M Mac Edition]
|
||||
0x0FEC, # GK107M [710A]
|
||||
0x0FEE, # GK107M [810M]
|
||||
0x0FED, # GK107M [820M]
|
||||
0x0FEF, # GK107GL [GRID K340]
|
||||
0x0FF1, # GK107 [NVS 1000]
|
||||
0x0FF2, # GK107GL [GRID K1]
|
||||
0x0FF3, # GK107GL [Quadro K420]
|
||||
0x0FF6, # Quadro K1100M
|
||||
0x0FF5, # GK107GL [GRID K1 Tesla USM]
|
||||
0x0FF6, # GK107GLM [Quadro K1100M]
|
||||
0x0FF7, # GK107GL [GRID K140Q vGPU]
|
||||
0x0FF8, # GK107GLM [Quadro K500M]
|
||||
0x0FF9, # GK107 [K2000D]
|
||||
0x0FFA, # GK107 [K600]
|
||||
0x0FFB, # GK107 [K2000M]
|
||||
0x0FFC, # GK107 [K1000M]
|
||||
0x0FFD, # GK107 [NVS 510]
|
||||
0x0FFE, # GK107 [K2000]
|
||||
0x0FFF, # GK107 [410]
|
||||
0x0FFE, # GK107 [Quadro K2000]
|
||||
0x0FFF, # GK107 [Quadro 410]
|
||||
# GK110
|
||||
0x1001, # GK110B [GTX TITAN Z]
|
||||
0x1003, # GK110 [GTX Titan LE]
|
||||
0x1004, # GK110 [GTX 780]
|
||||
0x1005, # GK110 [GTX Titan]
|
||||
0x1007, # GK110 [GTX 780 Rev. 2]
|
||||
0x1008, # GK110 [GTX 780 Ti 6GB]
|
||||
0x100A, # GK110B [GTX 780 Ti]
|
||||
0x100C, # GK110B [GTX TITAN Black]
|
||||
0x101F, # GK110 [TEslA K20]
|
||||
0x1020, # GK110 [TEslA K2]
|
||||
0x1021, # GK110 [TEslA K2m]
|
||||
0x1022, # GK110 [TEslA K20C]
|
||||
0x101E, # GK110GL [Tesla K20X]
|
||||
0x101F, # GK110GL [Tesla K20]
|
||||
0x1020, # GK110GL [Tesla K20X]
|
||||
0x1021, # GK110GL [Tesla K20Xm]
|
||||
0x1022, # GK110GL [Tesla K20C]
|
||||
0x1023, # GK110BGL [Tesla K40m]
|
||||
0x1024, # GK180GL [Tesla K40c]
|
||||
0x1026, # GK110 [TEslA K20s]
|
||||
0x1028, # GK110 [TEslA K20m]
|
||||
0x102D, # GK210GL [Tesla K80]
|
||||
0x1026, # GK110GL [Tesla K20s]
|
||||
0x1027, # GK110BGL [Tesla K40st]
|
||||
0x1028, # GK110GL [Tesla K20m]
|
||||
0x1029, # GK110BGL [Tesla K40s]
|
||||
0x102A, # GK110BGL [Tesla K40t]
|
||||
0x102E, # GK110BGL [Tesla K40d]
|
||||
0x102F, # GK110BGL [Tesla Stella Solo]
|
||||
0x103A, # GK110GL [Quadro K6000]
|
||||
0x103C, # GK110GL [Quadro K5200]
|
||||
0x103F, # GK110BGL [Tesla Stella SXM]
|
||||
# GK180
|
||||
0x1024, # GK180GL [Tesla K40c]
|
||||
# GK208
|
||||
0x1280, # GK208 [GT 635]
|
||||
0x1281, # GK208 [GT 710]
|
||||
@@ -509,7 +558,9 @@ class nvidia_ids:
|
||||
0x1287, # GK208B [GT 730]
|
||||
0x1288, # GK208B [GT 720]
|
||||
0x1289, # GK208 [GT 710]
|
||||
0x128A, # GK208B
|
||||
0x128B, # GK208B [GT 710]
|
||||
0x128C, # GK208B
|
||||
0x1290, # GK208 [GT 730M]
|
||||
0x1291, # GK208 [GT 735M]
|
||||
0x1292, # GK208 [GT 740M]
|
||||
@@ -520,8 +571,11 @@ class nvidia_ids:
|
||||
0x1298, # GK208M [GT 720M]
|
||||
0x1299, # GK208BM [920M]
|
||||
0x129A, # GK208BM [910M]
|
||||
0x12A0, # GK208
|
||||
0x12B9, # GK208 [K610M]
|
||||
0x12BA, # GK208 [K510M]
|
||||
# GK210
|
||||
0x102D, # GK210GL [Tesla K80]
|
||||
]
|
||||
|
||||
|
||||
@@ -540,21 +594,23 @@ class nvidia_ids:
|
||||
0x137a, # GM108GLM [Quadro K620M / Quadro M500M]
|
||||
0x137b, # GM108GLM [Quadro M520 Mobile]
|
||||
0x137d, # GM108M [GeForce 940A]
|
||||
0x174d, # GM108M [GeForce MX130]
|
||||
0x174e, # GM108M [GeForce MX110]
|
||||
|
||||
0x1380, # GM107 [GeForce GTX 750 Ti]
|
||||
0x1381, # GM107 [GeForce GTX 750]
|
||||
0x1382, # GM107 [GeForce GTX 745]
|
||||
0x1380, # GM107 [GTX 750 Ti]
|
||||
0x1381, # GM107 [GTX 750]
|
||||
0x1382, # GM107 [GTX 745]
|
||||
0x1389, # GM107GL [GRID M30]
|
||||
0x1390, # GM107M [GeForce 845M]
|
||||
0x1391, # GM107M [GeForce GTX 850M]
|
||||
0x1392, # GM107M [GeForce GTX 860M]
|
||||
0x1391, # GM107M [GTX 850M]
|
||||
0x1392, # GM107M [GTX 860M]
|
||||
0x1393, # GM107M [GeForce 840M]
|
||||
0x1398, # GM107M [GeForce 845M]
|
||||
0x1399, # GM107M [GeForce 945M]
|
||||
0x139a, # GM107M [GeForce GTX 950M]
|
||||
0x139b, # GM107M [GeForce GTX 960M]
|
||||
0x139a, # GM107M [GTX 950M]
|
||||
0x139b, # GM107M [GTX 960M]
|
||||
0x139c, # GM107M [GeForce 940M]
|
||||
0x139d, # GM107M [GeForce GTX 750 Ti]
|
||||
0x139d, # GM107M [GTX 750 Ti]
|
||||
0x13b0, # GM107GLM [Quadro M2000M]
|
||||
0x13b1, # GM107GLM [Quadro M1000M]
|
||||
0x13b2, # GM107GLM [Quadro M600M]
|
||||
@@ -566,16 +622,24 @@ class nvidia_ids:
|
||||
0x13bb, # GM107GL [Quadro K620]
|
||||
0x13bc, # GM107GL [Quadro K1200]
|
||||
0x13bd, # GM107GL [Tesla M10]
|
||||
0x1789, # GM107GL [GRID M3-3020]
|
||||
0x179c, # GM107 [GeForce 940MX]
|
||||
|
||||
0x13c0, # GM204 [GeForce GTX 980]
|
||||
0x17c2, # GM200 [GTX TITAN X]
|
||||
0x17c8, # GM200 [GTX 980 Ti]
|
||||
0x17f0, # GM200GL [Quadro M6000]
|
||||
0x17f1, # GM200GL [Quadro M6000 24GB]
|
||||
0x17fd, # GM200GL [Tesla M40]
|
||||
|
||||
0x13c0, # GM204 [GTX 980]
|
||||
0x13c1, # GM204
|
||||
0x13c2, # GM204 [GeForce GTX 970]
|
||||
0x13c2, # GM204 [GTX 970]
|
||||
0x13c3, # GM204
|
||||
0x13d7, # GM204M [GeForce GTX 980M]
|
||||
0x13d8, # GM204M [GeForce GTX 970M]
|
||||
0x13d9, # GM204M [GeForce GTX 965M]
|
||||
0x13da, # GM204M [GeForce GTX 980 Mobile]
|
||||
0x13e7, # GM204GL [GeForce GTX 980 Engineering Sample]
|
||||
0x13d7, # GM204M [GTX 980M]
|
||||
0x13d8, # GM204M [GTX 970M]
|
||||
0x13d9, # GM204M [GTX 965M]
|
||||
0x13da, # GM204M [GTX 980 Mobile]
|
||||
0x13e7, # GM204GL [GTX 980 Engineering Sample]
|
||||
0x13f0, # GM204GL [Quadro M5000]
|
||||
0x13f1, # GM204GL [Quadro M4000]
|
||||
0x13f2, # GM204GL [Tesla M60]
|
||||
@@ -585,18 +649,21 @@ class nvidia_ids:
|
||||
0x13fa, # GM204GLM [Quadro M3000M]
|
||||
0x13fb, # GM204GLM [Quadro M5500]
|
||||
|
||||
0x1401, # GM206 [GeForce GTX 960]
|
||||
0x1402, # GM206 [GeForce GTX 950]
|
||||
0x1404, # GM206 [GeForce GTX 960 FAKE]
|
||||
0x1406, # GM206 [GeForce GTX 960 OEM]
|
||||
0x1407, # GM206 [GeForce GTX 750 v2]
|
||||
0x1427, # GM206M [GeForce GTX 965M]
|
||||
0x1401, # GM206 [GTX 960]
|
||||
0x1402, # GM206 [GTX 950]
|
||||
0x1404, # GM206 [GTX 960 FAKE]
|
||||
0x1406, # GM206 [GTX 960 OEM]
|
||||
0x1407, # GM206 [GTX 750 v2]
|
||||
0x1427, # GM206M [GTX 965M]
|
||||
0x1430, # GM206GL [Quadro M2000]
|
||||
0x1431, # GM206GL [Tesla M4]
|
||||
0x1436, # GM206GLM [Quadro M2200 Mobile]
|
||||
]
|
||||
|
||||
pascal_ids = [
|
||||
0x1725,
|
||||
0x172e,
|
||||
0x172f,
|
||||
0x15f0, # GP100GL [Quadro GP100]
|
||||
0x15f1, # GP100GL
|
||||
0x15f7, # GP100GL [Tesla P100 PCIe 12GB]
|
||||
@@ -604,10 +671,10 @@ class nvidia_ids:
|
||||
0x15f9, # GP100GL [Tesla P100 SXM2 16GB]
|
||||
|
||||
0x1b00, # GP102 [TITAN X]
|
||||
0x1b01, # GP102 [GeForce GTX 1080 Ti 10GB]
|
||||
0x1b01, # GP102 [GTX 1080 Ti 10GB]
|
||||
0x1b02, # GP102 [TITAN Xp]
|
||||
0x1b04, # GP102
|
||||
0x1b06, # GP102 [GeForce GTX 1080 Ti]
|
||||
0x1b06, # GP102 [GTX 1080 Ti]
|
||||
0x1b07, # GP102 [P102-100]
|
||||
0x1b30, # GP102GL [Quadro P6000]
|
||||
0x1b38, # GP102GL [Tesla P40]
|
||||
@@ -615,18 +682,18 @@ class nvidia_ids:
|
||||
0x1b70, # GP102GL
|
||||
0x1b78, # GP102GL
|
||||
|
||||
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]
|
||||
0x1b80, # GP104 [GTX 1080]
|
||||
0x1b81, # GP104 [GTX 1070]
|
||||
0x1b82, # GP104 [GTX 1070 Ti]
|
||||
0x1b83, # GP104 [GTX 1060 6GB]
|
||||
0x1b84, # GP104 [GTX 1060 3GB]
|
||||
0x1b87, # GP104 [P104-100]
|
||||
0x1ba0, # GP104M [GeForce GTX 1080 Mobile]
|
||||
0x1ba1, # GP104M [GeForce GTX 1070 Mobile]
|
||||
0x1ba2, # GP104M [GeForce GTX 1070 Mobile]
|
||||
0x1ba0, # GP104M [GTX 1080 Mobile]
|
||||
0x1ba1, # GP104M [GTX 1070 Mobile]
|
||||
0x1ba2, # GP104M [GTX 1070 Mobile]
|
||||
0x1ba9, # GP104M
|
||||
0x1baa, # GP104M
|
||||
0x1bad, # GP104 [GeForce GTX 1070 Engineering Sample]
|
||||
0x1bad, # GP104 [GTX 1070 Engineering Sample]
|
||||
0x1bb0, # GP104GL [Quadro P5000]
|
||||
0x1bb1, # GP104GL [Quadro P4000]
|
||||
0x1bb3, # GP104GL [Tesla P4]
|
||||
@@ -638,42 +705,42 @@ class nvidia_ids:
|
||||
0x1bb9, # GP104GLM [Quadro P4200 Mobile]
|
||||
0x1bbb, # GP104GLM [Quadro P3200 Mobile]
|
||||
0x1bc7, # GP104 [P104-101]
|
||||
0x1be0, # GP104BM [GeForce GTX 1080 Mobile]
|
||||
0x1be1, # GP104BM [GeForce GTX 1070 Mobile]
|
||||
0x1be0, # GP104BM [GTX 1080 Mobile]
|
||||
0x1be1, # GP104BM [GTX 1070 Mobile]
|
||||
|
||||
0x1c00, # GP106
|
||||
0x1c01, # GP106
|
||||
0x1c02, # GP106 [GeForce GTX 1060 3GB]
|
||||
0x1c03, # GP106 [GeForce GTX 1060 6GB]
|
||||
0x1c04, # GP106 [GeForce GTX 1060 5GB]
|
||||
0x1c06, # GP106 [GeForce GTX 1060 6GB Rev. 2]
|
||||
0x1c02, # GP106 [GTX 1060 3GB]
|
||||
0x1c03, # GP106 [GTX 1060 6GB]
|
||||
0x1c04, # GP106 [GTX 1060 5GB]
|
||||
0x1c06, # GP106 [GTX 1060 6GB Rev. 2]
|
||||
0x1c07, # GP106 [P106-100]
|
||||
0x1c09, # GP106 [P106-090]
|
||||
0x1c20, # GP106M [GeForce GTX 1060 Mobile]
|
||||
0x1c21, # GP106M [GeForce GTX 1050 Ti Mobile]
|
||||
0x1c22, # GP106M [GeForce GTX 1050 Mobile]
|
||||
0x1c23, # GP106M [GeForce GTX 1060 Mobile Rev. 2]
|
||||
0x1c20, # GP106M [GTX 1060 Mobile]
|
||||
0x1c21, # GP106M [GTX 1050 Ti Mobile]
|
||||
0x1c22, # GP106M [GTX 1050 Mobile]
|
||||
0x1c23, # GP106M [GTX 1060 Mobile Rev. 2]
|
||||
0x1c2d, # GP106M
|
||||
0x1c30, # GP106GL [Quadro P2000]
|
||||
0x1c31, # GP106GL [Quadro P2200]
|
||||
0x1c35, # GP106M [Quadro P2000 Mobile]
|
||||
0x1c36, # GP106 [P106M]
|
||||
0x1c60, # GP106BM [GeForce GTX 1060 Mobile 6GB]
|
||||
0x1c61, # GP106BM [GeForce GTX 1050 Ti Mobile]
|
||||
0x1c62, # GP106BM [GeForce GTX 1050 Mobile]
|
||||
0x1c60, # GP106BM [GTX 1060 Mobile 6GB]
|
||||
0x1c61, # GP106BM [GTX 1050 Ti Mobile]
|
||||
0x1c62, # GP106BM [GTX 1050 Mobile]
|
||||
0x1c70, # GP106GL
|
||||
|
||||
0x1c80,
|
||||
0x1c81, # GP107 [GeForce GTX 1050]
|
||||
0x1c82, # GP107 [GeForce GTX 1050 Ti]
|
||||
0x1c83, # GP107 [GeForce GTX 1050 3GB]
|
||||
0x1c8c, # GP107M [GeForce GTX 1050 Ti Mobile]
|
||||
0x1c8d, # GP107M [GeForce GTX 1050 Mobile]
|
||||
0x1c81, # GP107 [GTX 1050]
|
||||
0x1c82, # GP107 [GTX 1050 Ti]
|
||||
0x1c83, # GP107 [GTX 1050 3GB]
|
||||
0x1c8c, # GP107M [GTX 1050 Ti Mobile]
|
||||
0x1c8d, # GP107M [GTX 1050 Mobile]
|
||||
0x1c8e, # GP107M
|
||||
0x1c8f, # GP107M [GeForce GTX 1050 Ti Max-Q]
|
||||
0x1c8f, # GP107M [GTX 1050 Ti Max-Q]
|
||||
0x1c90, # GP107M [GeForce MX150]
|
||||
0x1c91, # GP107M [GeForce GTX 1050 3 GB Max-Q]
|
||||
0x1c92, # GP107M [GeForce GTX 1050 Mobile]
|
||||
0x1c91, # GP107M [GTX 1050 3 GB Max-Q]
|
||||
0x1c92, # GP107M [GTX 1050 Mobile]
|
||||
0x1c94, # GP107M [GeForce MX350]
|
||||
0x1c96, # GP107M [GeForce MX350]
|
||||
0x1ca7, # GP107GL
|
||||
@@ -687,8 +754,8 @@ class nvidia_ids:
|
||||
0x1cbb, # GP107GLM [Quadro P1000 Mobile]
|
||||
0x1cbc, # GP107GLM [Quadro P600 Mobile]
|
||||
0x1cbd, # GP107GLM [Quadro P620]
|
||||
0x1ccc, # GP107BM [GeForce GTX 1050 Ti Mobile]
|
||||
0x1ccd, # GP107BM [GeForce GTX 1050 Mobile]
|
||||
0x1ccc, # GP107BM [GTX 1050 Ti Mobile]
|
||||
0x1ccd, # GP107BM [GTX 1050 Mobile]
|
||||
0x1cfa, # GP107GL [Quadro P2000]
|
||||
0x1cfb, # GP107GL [Quadro P1000]
|
||||
|
||||
@@ -1104,6 +1171,13 @@ class broadcom_ids:
|
||||
0x43A0, # BCM4360
|
||||
]
|
||||
|
||||
# Not natively supported, but supported by AirportBrcmFixup
|
||||
AirPortBrcmNICThirdParty = [
|
||||
0x4357, # BCM43225
|
||||
0x43B1, # BCM4352
|
||||
0x43B2, # BCM4352 (2.4 GHz)
|
||||
]
|
||||
|
||||
AirPortBrcm4360 = [
|
||||
# AirPortBrcm4360 IDs (removed duplicates for 4360 class cards)
|
||||
0x4331, # BCM94331
|
||||
@@ -1155,6 +1229,8 @@ class aquantia_ids:
|
||||
0x92B1, # AQC107
|
||||
0x00C0, # AQC113
|
||||
0x04C0, # AQC113
|
||||
0x94C0, # AQC113
|
||||
0x93C0, # AQC113
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ smbios_dictionary = {
|
||||
"FirmwareFeatures": "0x8FC0FE13F",
|
||||
"SecureBootModel": None,
|
||||
"CPU Generation": cpu_data.CPUGen.kaby_lake.value,
|
||||
"Max OS Supported": os_data.os_data.max_os,
|
||||
"Max OS Supported": os_data.os_data.ventura,
|
||||
"Wireless Model": device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
"Bluetooth Model": bluetooth_data.bluetooth_data.BRCM20703_UART,
|
||||
"Screen Size": 12,
|
||||
@@ -708,7 +708,7 @@ smbios_dictionary = {
|
||||
],
|
||||
},
|
||||
"MacBookPro3,1": {
|
||||
"Marketing Name": "MacBook Pro (15-inch, 2.4 2.2GHz) ",
|
||||
"Marketing Name": "MacBook Pro (15-inch, 2.4 2.2GHz)",
|
||||
"Board ID": "Mac-F4238BC8",
|
||||
"FirmwareFeatures": "0xC0001407",
|
||||
"SecureBootModel": None,
|
||||
@@ -1251,7 +1251,7 @@ smbios_dictionary = {
|
||||
],
|
||||
},
|
||||
"MacBookPro13,2": {
|
||||
"Marketing Name": "MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports) ",
|
||||
"Marketing Name": "MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports)",
|
||||
"Board ID": "Mac-66E35819EE2D0D05",
|
||||
"FirmwareFeatures": "0x8FC0FE137",
|
||||
"SecureBootModel": None,
|
||||
@@ -1294,7 +1294,7 @@ smbios_dictionary = {
|
||||
"FirmwareFeatures": "0x8FF0FF57E",
|
||||
"SecureBootModel": None,
|
||||
"CPU Generation": cpu_data.CPUGen.kaby_lake.value,
|
||||
"Max OS Supported": os_data.os_data.max_os,
|
||||
"Max OS Supported": os_data.os_data.ventura,
|
||||
"Wireless Model": device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
"Bluetooth Model": bluetooth_data.bluetooth_data.BRCM20703_UART,
|
||||
"Screen Size": 13,
|
||||
@@ -1307,12 +1307,12 @@ smbios_dictionary = {
|
||||
],
|
||||
},
|
||||
"MacBookPro14,2": {
|
||||
"Marketing Name": "MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports) ",
|
||||
"Marketing Name": "MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)",
|
||||
"Board ID": "Mac-CAD6701F7CEA0921",
|
||||
"FirmwareFeatures": "0x8FF0FF57E",
|
||||
"SecureBootModel": None,
|
||||
"CPU Generation": cpu_data.CPUGen.kaby_lake.value,
|
||||
"Max OS Supported": os_data.os_data.max_os,
|
||||
"Max OS Supported": os_data.os_data.ventura,
|
||||
"Wireless Model": device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
"Bluetooth Model": bluetooth_data.bluetooth_data.BRCM20703_UART,
|
||||
"Screen Size": 13,
|
||||
@@ -1330,7 +1330,7 @@ smbios_dictionary = {
|
||||
"FirmwareFeatures": "0x8FF0FF57E",
|
||||
"SecureBootModel": None,
|
||||
"CPU Generation": cpu_data.CPUGen.kaby_lake.value,
|
||||
"Max OS Supported": os_data.os_data.max_os,
|
||||
"Max OS Supported": os_data.os_data.ventura,
|
||||
"Wireless Model": device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
"Bluetooth Model": bluetooth_data.bluetooth_data.BRCM20703_UART,
|
||||
"Screen Size": 15,
|
||||
@@ -2495,7 +2495,7 @@ smbios_dictionary = {
|
||||
"FirmwareFeatures": "0x8FD0FF576",
|
||||
"SecureBootModel": None,
|
||||
"CPU Generation": cpu_data.CPUGen.kaby_lake.value,
|
||||
"Max OS Supported": os_data.os_data.max_os,
|
||||
"Max OS Supported": os_data.os_data.ventura,
|
||||
"Wireless Model": device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
"Bluetooth Model": bluetooth_data.bluetooth_data.BRCM20703,
|
||||
"Ethernet Chipset": "Broadcom",
|
||||
@@ -2513,7 +2513,7 @@ smbios_dictionary = {
|
||||
"FirmwareFeatures": "0x8FD0FF576",
|
||||
"SecureBootModel": None,
|
||||
"CPU Generation": cpu_data.CPUGen.kaby_lake.value,
|
||||
"Max OS Supported": os_data.os_data.max_os,
|
||||
"Max OS Supported": os_data.os_data.ventura,
|
||||
"Wireless Model": device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
"Bluetooth Model": bluetooth_data.bluetooth_data.BRCM20703,
|
||||
"Ethernet Chipset": "Broadcom",
|
||||
@@ -2532,7 +2532,7 @@ smbios_dictionary = {
|
||||
"FirmwareFeatures": "0x8FD0FF576",
|
||||
"SecureBootModel": None,
|
||||
"CPU Generation": cpu_data.CPUGen.kaby_lake.value,
|
||||
"Max OS Supported": os_data.os_data.max_os,
|
||||
"Max OS Supported": os_data.os_data.ventura,
|
||||
"Wireless Model": device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
"Bluetooth Model": bluetooth_data.bluetooth_data.BRCM20703,
|
||||
"Ethernet Chipset": "Broadcom",
|
||||
|
||||
@@ -66,6 +66,7 @@ class SystemPatchDictionary():
|
||||
self.macOS_12_0_B7: float = 21.1
|
||||
self.macOS_12_4: float = 21.5
|
||||
self.macOS_12_5: float = 21.6
|
||||
self.macOS_13_3: float = 22.4
|
||||
|
||||
self._generate_sys_patch_dict()
|
||||
|
||||
@@ -102,6 +103,7 @@ class SystemPatchDictionary():
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"GPUSupport.framework": "10.14.3",
|
||||
"SkyLight.framework": f"10.14.6-{self.os_major}",
|
||||
**({"FaceCore.framework": f"13.5"} if self.os_major >= os_data.os_data.sonoma else {}),
|
||||
},
|
||||
"/System/Applications": {
|
||||
**({ "Photo Booth.app": "11.7.9"} if self.os_major >= os_data.os_data.monterey else {}),
|
||||
@@ -147,6 +149,8 @@ class SystemPatchDictionary():
|
||||
**({"defaults write /Library/Preferences/.GlobalPreferences.plist ShowDate -int 1": True } if self.os_float >= self.macOS_12_4 else {}),
|
||||
"defaults write /Library/Preferences/.GlobalPreferences.plist InternalDebugUseGPUProcessForCanvasRenderingEnabled -bool false": True,
|
||||
"defaults write /Library/Preferences/.GlobalPreferences.plist WebKitExperimentalUseGPUProcessForCanvasRenderingEnabled -bool false": True,
|
||||
**({"defaults write /Library/Preferences/.GlobalPreferences.plist WebKitPreferences.acceleratedDrawingEnabled -bool false": True} if self.os_major >= os_data.os_data.sonoma else {}),
|
||||
**({"defaults write /Library/Preferences/.GlobalPreferences.plist NSEnableAppKitMenus -bool false": True} if self.os_major >= os_data.os_data.sonoma else {}),
|
||||
},
|
||||
},
|
||||
"Non-Metal IOAccelerator Common": {
|
||||
@@ -344,7 +348,7 @@ class SystemPatchDictionary():
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Frameworks": {
|
||||
"Metal.framework": "12.5-3802",
|
||||
"Metal.framework": f"12.5-3802-{self.os_major}",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"MTLCompiler.framework": "12.5-3802",
|
||||
@@ -372,11 +376,13 @@ class SystemPatchDictionary():
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Frameworks": {
|
||||
"Metal.framework": "13.2.1",
|
||||
"Metal.framework": f"13.2.1-{self.os_major}",
|
||||
**({ "CoreImage.framework": "14.0 Beta 3" } if self.os_major >= os_data.os_data.ventura else {}),
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"MTLCompiler.framework": "13.2.1",
|
||||
"GPUCompiler.framework": "13.2.1",
|
||||
**({ "MTLCompiler.framework": "13.2.1" } if self.os_major == os_data.os_data.ventura else {}),
|
||||
**({ "GPUCompiler.framework": "13.2.1" } if self.os_major == os_data.os_data.ventura else {}),
|
||||
"RenderBox.framework": "13.2.1-3802" if self.os_major == os_data.os_data.ventura else "14.0-3802",
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -567,14 +573,14 @@ class SystemPatchDictionary():
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"GeForce.kext": "12.0 Beta 6",
|
||||
"GeForce.kext": "12.0 Beta 6" if self.os_major < os_data.os_data.sonoma else "12.0 Beta 6-23",
|
||||
"NVDAGF100Hal.kext": "12.0 Beta 6",
|
||||
"NVDAGK100Hal.kext": "12.0 Beta 6",
|
||||
"NVDAResman.kext": "12.0 Beta 6",
|
||||
"NVDAStartup.kext": "12.0 Beta 6",
|
||||
"GeForceAIRPlugin.bundle": "11.0 Beta 3",
|
||||
"GeForceGLDriver.bundle": "11.0 Beta 3",
|
||||
"GeForceMTLDriver.bundle": "11.0 Beta 3" if self.os_major <= os_data.os_data.monterey else f"11.0 Beta 3-{self.os_major}",
|
||||
"GeForceMTLDriver.bundle": "11.0 Beta 3" if self.os_major <= os_data.os_data.monterey else f"11.0 Beta 3-22",
|
||||
"GeForceVADriver.bundle": "12.0 Beta 6",
|
||||
},
|
||||
"/System/Library/Frameworks": {
|
||||
@@ -764,9 +770,9 @@ class SystemPatchDictionary():
|
||||
"AMD9000Controller.kext": "12.5",
|
||||
"AMD9500Controller.kext": "12.5",
|
||||
"AMD10000Controller.kext": "12.5",
|
||||
"AMDRadeonX4000.kext": "12.5",
|
||||
"AMDRadeonX4000.kext": "12.5" if self.os_major < os_data.os_data.sonoma else "12.5-23",
|
||||
"AMDRadeonX4000HWServices.kext": "12.5",
|
||||
"AMDFramebuffer.kext": "12.5",
|
||||
"AMDFramebuffer.kext": "12.5" if self.os_float < self.macOS_13_3 else "12.5-GCN",
|
||||
"AMDSupport.kext": "12.5",
|
||||
|
||||
"AMDRadeonVADriver.bundle": "12.5",
|
||||
@@ -777,6 +783,40 @@ class SystemPatchDictionary():
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
# For MacBookPro14,3 (and other AMD dGPUs that no longer function in Sonoma)
|
||||
# iMac18,2/3 still function with the generic framebuffer, however if issues arise
|
||||
# we'll downgrade them as well.
|
||||
"AMD Legacy GCN v2": {
|
||||
"Display Name": "Graphics: AMD Legacy GCN (2017)",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.sonoma,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AMD9500Controller.kext": "13.5.2",
|
||||
"AMD10000Controller.kext": "13.5.2",
|
||||
"AMDRadeonX4000.kext": "13.5.2",
|
||||
"AMDRadeonX4000HWServices.kext": "13.5.2",
|
||||
"AMDFramebuffer.kext": "13.5.2",
|
||||
"AMDSupport.kext": "13.5.2",
|
||||
|
||||
"AMDRadeonVADriver.bundle": "13.5.2",
|
||||
"AMDRadeonVADriver2.bundle": "13.5.2",
|
||||
"AMDRadeonX4000GLDriver.bundle": "13.5.2",
|
||||
"AMDMTLBronzeDriver.bundle": "13.5.2",
|
||||
"AMDShared.bundle": "13.5.2",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
# Used only for AMD Polaris with host lacking AVX2.0
|
||||
# Note missing framebuffers are not restored (ex. 'ATY,Berbice')
|
||||
"AMD Legacy Polaris": {
|
||||
@@ -793,7 +833,7 @@ class SystemPatchDictionary():
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AMDRadeonX4000.kext": "12.5",
|
||||
"AMDRadeonX4000.kext": "12.5" if self.os_major < os_data.os_data.sonoma else "12.5-23",
|
||||
"AMDRadeonX4000HWServices.kext": "12.5",
|
||||
|
||||
"AMDRadeonVADriver2.bundle": "12.5",
|
||||
@@ -817,7 +857,7 @@ class SystemPatchDictionary():
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AMDRadeonX5000.kext": "12.5",
|
||||
"AMDRadeonX5000.kext": "12.5" if self.os_major < os_data.os_data.sonoma else "12.5-23",
|
||||
|
||||
"AMDRadeonVADriver2.bundle": "12.5",
|
||||
"AMDRadeonX5000GLDriver.bundle": "12.5",
|
||||
@@ -911,8 +951,8 @@ class SystemPatchDictionary():
|
||||
"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",
|
||||
"AppleIntelFramebufferCapri.kext": "11.4" if self.os_major < os_data.os_data.sonoma else "11.4-23",
|
||||
"AppleIntelHD4000Graphics.kext": "11.4" if self.os_major < os_data.os_data.sonoma else "11.4-23",
|
||||
"AppleIntelIVBVA.bundle": "11.4",
|
||||
"AppleIntelGraphicsShared.bundle": "11.4", # libIGIL-Metal.dylib pulled from 11.0 Beta 6
|
||||
},
|
||||
@@ -932,8 +972,8 @@ class SystemPatchDictionary():
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleIntelFramebufferAzul.kext": "12.5",
|
||||
"AppleIntelHD5000Graphics.kext": "12.5",
|
||||
"AppleIntelFramebufferAzul.kext": "12.5" if self.os_major < os_data.os_data.sonoma else "12.5-23",
|
||||
"AppleIntelHD5000Graphics.kext": "12.5" if self.os_major < os_data.os_data.sonoma else "12.5-23",
|
||||
"AppleIntelHD5000GraphicsGLDriver.bundle": "12.5",
|
||||
"AppleIntelHD5000GraphicsMTLDriver.bundle": "12.5",
|
||||
"AppleIntelHD5000GraphicsVADriver.bundle": "12.5",
|
||||
@@ -956,8 +996,8 @@ class SystemPatchDictionary():
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleIntelBDWGraphics.kext": "12.5",
|
||||
"AppleIntelBDWGraphicsFramebuffer.kext": "12.5",
|
||||
"AppleIntelBDWGraphics.kext": "12.5" if self.os_major < os_data.os_data.sonoma else "12.5-23",
|
||||
"AppleIntelBDWGraphicsFramebuffer.kext": "12.5" if self.os_major < os_data.os_data.sonoma else "12.5-23",
|
||||
"AppleIntelBDWGraphicsGLDriver.bundle": "12.5",
|
||||
"AppleIntelBDWGraphicsMTLDriver.bundle": "12.5",
|
||||
"AppleIntelBDWGraphicsVADriver.bundle": "12.5",
|
||||
@@ -980,8 +1020,8 @@ class SystemPatchDictionary():
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleIntelSKLGraphics.kext": "12.5",
|
||||
"AppleIntelSKLGraphicsFramebuffer.kext": "12.5",
|
||||
"AppleIntelSKLGraphics.kext": "12.5" if self.os_major < os_data.os_data.sonoma else "12.5-23",
|
||||
"AppleIntelSKLGraphicsFramebuffer.kext": "12.5" if self.os_major < os_data.os_data.sonoma else "12.5-23",
|
||||
"AppleIntelSKLGraphicsGLDriver.bundle": "12.5",
|
||||
"AppleIntelSKLGraphicsMTLDriver.bundle": "12.5",
|
||||
"AppleIntelSKLGraphicsVADriver.bundle": "12.5",
|
||||
@@ -1084,6 +1124,8 @@ class SystemPatchDictionary():
|
||||
"Install": {
|
||||
"/usr/libexec": {
|
||||
"wps": "12.6.2",
|
||||
"wifip2pd": "12.6.2",
|
||||
"wifianalyticsd": "13.5",
|
||||
},
|
||||
"/System/Library/Frameworks": {
|
||||
"CoreWLAN.framework": "12.6.2",
|
||||
@@ -1091,9 +1133,45 @@ class SystemPatchDictionary():
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"CoreWiFi.framework": "12.6.2",
|
||||
"IO80211.framework": "12.6.2",
|
||||
"WiFiPeerToPeer.framework": "12.6.2",
|
||||
**({ "CoreAnalytics.framework": "13.5"} if self.os_major >= os_data.os_data.sonoma else {}),
|
||||
**({ "WiFiAnalytics.framework": "13.5"} if self.os_major >= os_data.os_data.sonoma else {}),
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
# May lord have mercy on our souls
|
||||
# Applicable for BCM943324, BCM94331, BCM94360, BCM943602
|
||||
"Modern Wireless": {
|
||||
"Display Name": "Networking: Modern Wireless",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.sonoma,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install": {
|
||||
"/usr/libexec": {
|
||||
"airportd": "13.5",
|
||||
"wifianalyticsd": "13.5",
|
||||
"wifip2pd": "13.5",
|
||||
},
|
||||
"/System/Library/Frameworks": {
|
||||
"CoreWLAN.framework": "13.5",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"CoreAnalytics.framework": "13.5",
|
||||
"CoreWiFi.framework": "13.5",
|
||||
"IO80211.framework": "13.5",
|
||||
"WiFiAnalytics.framework": "13.5",
|
||||
"WiFiPolicy.framework": "13.5",
|
||||
"WiFiPeerToPeer.framework": "13.5",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"Brightness": {
|
||||
"Legacy Backlight Control": {
|
||||
@@ -1185,6 +1263,27 @@ class SystemPatchDictionary():
|
||||
"IOUSBHostFamily.kext": "12.6.2",
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
"PCIe FaceTime Camera": {
|
||||
"Display Name": "Miscellaneous: PCIe FaceTime Camera",
|
||||
"OS Support": {
|
||||
"Minimum OS Support": {
|
||||
"OS Major": os_data.os_data.sonoma,
|
||||
"OS Minor": 0
|
||||
},
|
||||
"Maximum OS Support": {
|
||||
"OS Major": os_data.os_data.max_os,
|
||||
"OS Minor": 99
|
||||
},
|
||||
},
|
||||
"Install Non-Root": {
|
||||
"/Library/CoreMediaIO/Plug-Ins/DAL": {
|
||||
"AppleCamera.plugin": "14.0 Beta 1"
|
||||
},
|
||||
"/Library/LaunchDaemons": {
|
||||
"com.apple.cmio.AppleCameraAssistant.plist": "14.0 Beta 1"
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
243
docs/MODELS.md
243
docs/MODELS.md
@@ -1,13 +1,10 @@
|
||||
# Supported Models
|
||||
Any Intel-based Mac listed below can install and make use of OpenCore Legacy Patcher. To check your hardware model, open System Information and look for the `Model Identifier` key.
|
||||
* This applies even if Apple supports the model natively.
|
||||
* OpenCore Legacy Patcher does not support PowerPC- or Apple Silicon-based Macs.
|
||||
* If your model is not listed below, it is not supported by this patcher.
|
||||
|
||||
Any hardware supporting SSE4.1 CPU and 64-Bit firmware work on this patcher. To check your hardware model, run the following command on the applicable machine in the terminal:
|
||||
|
||||
```bash
|
||||
system_profiler SPHardwareDataType | grep 'Model Identifier'
|
||||
```
|
||||
|
||||
The below table will list all supported and unsupported functions of the patcher currently:
|
||||
|
||||
The below tables can be used to reference issues with a particular model, and see which OS would work best on your machine.
|
||||
* [MacBook](#macbook)
|
||||
* [MacBook Air](#macbook-air)
|
||||
* [MacBook Pro](#macbook-pro)
|
||||
@@ -16,146 +13,138 @@ The below table will list all supported and unsupported functions of the patcher
|
||||
* [Mac Pro](#mac-pro)
|
||||
* [Xserve](#xserve)
|
||||
|
||||
Regarding OS support, see below:
|
||||
::: details OpenCore Patcher application
|
||||
The patcher application requires **OS X Yosemite 10.10** or later to run.
|
||||
* **OS X El Capitan 10.11** or later is required to make macOS Ventura installers.
|
||||
|
||||
| Support Entry | Supported OSes | Description | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| HostOS | macOS 10.10 - macOS 13 | Refers to OSes where running OpenCore-Patcher.app are supported | Users running 10.9 or older are advised to upgrade to a newer operating system before using OCLP. |
|
||||
| TargetOS | macOS 11 - macOS 13 | Refers to OSes that can be patched to run with OpenCore | May support 10.4 and newer (in a potentially broken state). No support provided. |
|
||||
The patcher is designed to target **macOS Big Sur 11.x to macOS Ventura 13.x**.
|
||||
* Other versions may work, albeit in a broken state. No support is provided for any version outside of the above.
|
||||
:::
|
||||
|
||||
* macOS Ventura installer creation requires 10.11 or later
|
||||
|
||||
### MacBook
|
||||
|
||||
| SMBIOS | Year | Supported | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| MacBook1,1 | Mid 2006 | <span style="color:red"> NO </span> | 32-Bit CPU limitation |
|
||||
| MacBook2,1 | Late 2006 | ^^ | 32-Bit Firmware limitation |
|
||||
| MacBook3,1 | Late 2007 | ^^ | ^^ |
|
||||
| MacBook4,1 | Early 2008 | ^^ | - No GPU Acceleration in Mavericks and newer<br/>- No Keyboard and Trackpad<br/>- No USB |
|
||||
| MacBook5,1 | Late 2008 | <span style="color:#30BCD5"> YES </span> | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| MacBook5,2 | Early 2009, Mid 2009 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))<br/> - Trackpad gestures are partially broken |
|
||||
| MacBook6,1 | Late 2009 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)) |
|
||||
| MacBook7,1 | Mid 2010 | ^^ | ^^ |
|
||||
| MacBook8,1 | Mid 2015 | ^^ | <span style="color:green"> Everything is supported</span> |
|
||||
| MacBook9,1 | Early 2016 | ^^ | ^^ |
|
||||
| Model Name | Identifier | Tagged Issues |
|
||||
| :--- | :--- | :--- |
|
||||
| MacBook (13-inch, Late 2008) | `MacBook5,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)|
|
||||
| MacBook (13-inch, Early 2009)<br>MacBook (13-inch, Mid 2009) | `MacBook5,2` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)<br>- Trackpad gestures are partially broken |
|
||||
| MacBook (13-inch, Late 2009) | `MacBook6,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
|
||||
| MacBook (13-inch, Mid 2010) | `MacBook7,1` | ^^ |
|
||||
| MacBook (Retina, 12-inch, Early 2015) | `MacBook8,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
|
||||
| MacBook (Retina, 12-inch, Early 2016) | `MacBook9,1` | ^^ |
|
||||
| MacBook (Retina, 12-inch, 2017) | `MacBook10,1` | Supported by Apple |
|
||||
|
||||
### MacBook Air
|
||||
|
||||
| SMBIOS | Year | Supported | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| MacBookAir1,1 | Early 2008 | <span style="color:red"> NO </span> | Requires SSE4.1 CPU |
|
||||
| MacBookAir2,1 | Late 2008 | <span style="color:#30BCD5"> YES </span> | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| MacBookAir3,1 | Late 2010 | ^^ | ^^ |
|
||||
| MacBookAir3,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookAir4,1 | Mid 2011 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
|
||||
| MacBookAir4,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookAir5,1 | Mid 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
|
||||
| MacBookAir5,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookAir6,1 | Mid 2013, Early 2014 | ^^ | ^^ |
|
||||
| MacBookAir6,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookAir7,1 | Early 2015, 2017 | ^^ | ^^ |
|
||||
| MacBookAir7,2 | ^^ | ^^ | ^^ |
|
||||
| Model Name | Identifier | Tagged Issues |
|
||||
| :--- | :--- | :--- |
|
||||
| MacBook Air (13-inch, Late 2008)<br>MacBook Air (13-inch, Mid 2009) | `MacBookAir2,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)|
|
||||
| MacBook Air (11-inch, Late 2010) | `MacBookAir3,1` | ^^ |
|
||||
| MacBook Air (13-inch, Late 2010) | `MacBookAir3,2` | ^^ |
|
||||
| MacBook Air (11-inch, Mid 2011) | `MacBookAir4,1` | ^^ |
|
||||
| MacBook Air (13-inch, Mid 2011) | `MacBookAir4,2` | ^^ |
|
||||
| MacBook Air (11-inch, Mid 2012) | `MacBookAir5,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
|
||||
| MacBook Air (13-inch, Mid 2012) | `MacBookAir5,2` | ^^ |
|
||||
| MacBook Air (11-inch, Mid 2013)<br>MacBook Air (11-inch, Early 2014) | `MacBookAir6,1` | ^^ |
|
||||
| MacBook Air (13-inch, Mid 2013)<br>MacBook Air (13-inch, Early 2014) | `MacBookAir6,2` | ^^ |
|
||||
| MacBook Air (11-inch, Early 2015) | `MacBookAir7,1` | ^^ |
|
||||
| MacBook Air (13-inch, Early 2015)<br>MacBook Air (13-inch, 2017) | `MacBookAir7,2` | ^^ |
|
||||
| MacBook Air (Retina, 13-inch, 2018) | `MacBookAir8,1` | - Supported by Apple |
|
||||
| MacBook Air (Retina, 13-inch, 2019) | `MacBookAir9,1` | ^^ |
|
||||
| MacBook Air (Retina, 13-inch, 2020) | `MacBookAir10,1` | ^^ |
|
||||
|
||||
### MacBook Pro
|
||||
|
||||
| SMBIOS | Year | Supported | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| MacBookPro1,1 | Early 2006 | <span style="color:red"> NO </span> | 32-Bit CPU limitation |
|
||||
| MacBookPro1,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro2,1 | Late 2006 | ^^ | 32-Bit Firmware limitation |
|
||||
| MacBookPro2,2 | Late 2006 | ^^ | ^^ |
|
||||
| MacBookPro3,1 | Mid 2007 | ^^ | Requires SSE4.1 CPU |
|
||||
| MacBookPro4,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| MacBookPro5,1 | Late 2008 | ^^ | ^^ |
|
||||
| MacBookPro5,2 | Early 2009 | ^^ | ^^ |
|
||||
| MacBookPro5,3 | Mid 2009 | ^^ | ^^ |
|
||||
| MacBookPro5,4 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro5,5 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro6,1 | Mid 2010 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
|
||||
| MacBookPro6,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro7,1 | ^^ | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| MacBookPro8,1 | Early 2011 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
|
||||
| MacBookPro8,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro8,3 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro9,1 | Mid 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
|
||||
| MacBookPro9,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro10,1 | Mid 2012, Early 2013 | ^^ | ^^ |
|
||||
| MacBookPro10,2 | Late 2012, Early 2013 | ^^ | ^^ |
|
||||
| MacBookPro11,1 | Late 2013, Mid 2014 | ^^ | ^^ |
|
||||
| MacBookPro11,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro11,3 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro11,4 | Mid 2015 | ^^ | ^^ |
|
||||
| MacBookPro11,5 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro12,1 | Early 2015 | ^^ | ^^ |
|
||||
| MacBookPro13,1 | Late 2016 | ^^ | ^^ |
|
||||
| MacBookPro13,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro13,3 | ^^ | ^^ | ^^ |
|
||||
| Model Name | Identifier | Tagged Issues |
|
||||
| :--- | :--- | :--- |
|
||||
| MacBook Pro (15-inch, Early 2008)<br>MacBook Pro (17-inch, Early 2008) | `MacBookPro4,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)|
|
||||
| MacBook Pro (15-inch, Late 2008) | `MacBookPro5,1` | ^^ |
|
||||
| MacBook Pro (17-inch, Early 2009)<br>MacBook Pro (17-inch, Mid 2009) | `MacBookPro5,2` | ^^ |
|
||||
| MacBook Pro (15-inch, Mid 2009) | `MacBookPro5,3` | ^^ |
|
||||
| MacBook Pro (13-inch, Mid 2009) | `MacBookPro5,5` | ^^ |
|
||||
| MacBook Pro (17-inch, Mid 2010) | `MacBookPro6,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) |
|
||||
| MacBook Pro (15-inch, Mid 2010) | `MacBookPro6,2` | ^^ |
|
||||
| MacBook Pro (13-inch, Mid 2010) | `MacBookPro7,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
|
||||
| MacBook Pro (13-inch, Early 2011)<br>MacBook Pro (13-inch, Late 2011) | `MacBookPro8,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) |
|
||||
| MacBook Pro (15-inch, Early 2011)<br>MacBook Pro (15-inch, Late 2011) | `MacBookPro8,2` | ^^ |
|
||||
| MacBook Pro (17-inch, Early 2011)<br> | `MacBookPro8,3` | ^^ |
|
||||
| MacBook Pro (15-inch, Mid 2012) | `MacBookPro9,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
|
||||
| MacBook Pro (13-inch, Mid 2012) | `MacBookPro9,2` | ^^ |
|
||||
| MacBook Pro (Retina, 15-inch, Mid 2012)<br>MacBook Pro (Retina, 15-inch, Early 2013) | `MacBookPro10,1` | ^^ |
|
||||
| MacBook Pro (Retina, 13-inch, Late 2012)<br>MacBook Pro (Retina, 13-inch, Early 2013) | `MacBookPro10,2` | ^^ |
|
||||
| MacBook Pro (Retina, 13-inch, Late 2013)<br>MacBook Pro (Retina, 13-inch, Mid 2014) | `MacBookPro11,1` | ^^ |
|
||||
| MacBook Pro (Retina, 15-inch, Late 2013)<br>MacBook Pro (Retina, 15-inch, Mid 2014) | `MacBookPro11,2`<br>`MacBookPro11,3` | ^^ |
|
||||
| MacBook Pro (Retina, 15-inch, Mid 2015) | `MacBookPro11,4`<br>`MacBookPro11,5` | ^^ |
|
||||
| MacBook Pro (Retina, 13-inch, Early 2015) | `MacBookPro12,1` | ^^ |
|
||||
| MacBook Pro (13-inch, 2016, 2 Thunderbolt 3 ports) | `MacBookPro13,1` | ^^ |
|
||||
| MacBook Pro (13-inch, 2016, 4 Thunderbolt 3 ports) | `MacBookPro13,2` | ^^ |
|
||||
| MacBook Pro (15-inch, 2016) | `MacBookPro13,3` | ^^ |
|
||||
| MacBook Pro (13-inch, 2017, 2 Thunderbolt 3 ports) | `MacBookPro14,1` | - Supported by Apple |
|
||||
| MacBook Pro (13-inch, 2017, 4 Thunderbolt 3 ports) | `MacBookPro14,2` | ^^ |
|
||||
| MacBook Pro (15-inch, 2017) | `MacBookPro14,3` | ^^ |
|
||||
| MacBook Pro (13-inch, 2018, 4 Thunderbolt 3 ports)<br>MacBook Pro (13-inch, 2019, 4 Thunderbolt 3 ports) | `MacBookPro15,2` | ^^ |
|
||||
| MacBook Pro (15-inch, 2018)<br>MacBook Pro (15-inch, 2019) | `MacBookPro15,1` | ^^ |
|
||||
| MacBook Pro (13-inch, 2019, 2 Thunderbolt 3 ports) | `MacBookPro15,4` | ^^ |
|
||||
| MacBook Pro (16-inch, 2019) | `MacBookPro16,1`<br>`MacBookPro16,4` | ^^ |
|
||||
| MacBook Pro (13-inch, 2020, 4 Thunderbolt 3 ports) | `MacBookPro16,2` | ^^ |
|
||||
| MacBook Pro (13-inch, 2020, 2 Thunderbolt 3 ports) | `MacBookPro16,3` | ^^ |
|
||||
|
||||
### Mac mini
|
||||
|
||||
| SMBIOS | Year | Supported | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| Macmini1,1 | Early 2006 | <span style="color:red"> NO </span> | 32-Bit CPU limitation |
|
||||
| Macmini2,1 | Mid 2007 | ^^ | 32-Bit Firmware limitation |
|
||||
| Macmini3,1 | Early 2009 | <span style="color:#30BCD5"> YES </span> | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| Macmini4,1 | Mid 2010 | ^^ | ^^ |
|
||||
| Macmini5,1 | Mid 2011 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
|
||||
| Macmini5,2 | ^^ | ^^ | ^^ |
|
||||
| Macmini5,3 | ^^ | ^^ | ^^ |
|
||||
| Macmini6,1 | Late 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
|
||||
| Macmini6,2 | ^^ | ^^ | ^^ |
|
||||
| Macmini7,1 | Mid 2014 | ^^ | ^^ |
|
||||
| Model Name | Identifier | Tagged Issues |
|
||||
| :--- | :--- | :--- |
|
||||
| Mac mini (Early 2009) | `Macmini3,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
|
||||
| Mac mini (Mid 2010) | `Macmini4,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) |
|
||||
| Mac mini (Mid 2011) | `Macmini5,1`<br>`Macmini5,2`<br>`Macmini5,3` | ^^ |
|
||||
| Mac mini (Late 2012) | `Macmini6,1`<br>`Macmini6,2` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
|
||||
| Mac mini (Late 2014) | `Macmini7,1` | ^^ |
|
||||
| Mac mini (Late 2018) | `Macmini8,1` | - Supported by Apple |
|
||||
|
||||
### iMac
|
||||
|
||||
| SMBIOS | Year | Supported | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| iMac4,1 | Early 2006 | <span style="color:red"> NO </span> | 32-Bit CPU limitation |
|
||||
| iMac4,2 | Mid 2006 | ^^ | ^^ |
|
||||
| iMac5,1 | Late 2006 | ^^ | 32-Bit Firmware limitation |
|
||||
| iMac5,2 | ^^ | ^^ | ^^ |
|
||||
| iMac6,1 | ^^ | ^^ | ^^ |
|
||||
| iMac7,1 | Mid 2007 | <span style="color:#30BCD5"> YES </span> | - Requires an [SSE4.1 CPU Upgrade](https://lowendmac.com/2018/penryn-t9300-9500-cpu-upgrades-for-the-2007-imac/)<br/>- GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- Stock Bluetooth 2.0 card non-functional<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| iMac8,1 | Early 2008 | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| iMac9,1 | Early 2009 | ^^ | ^^ |
|
||||
| iMac10,1 | Late 2009 | ^^ | - GPU is socketed, [recommend upgrading to Metal GPU](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/?post=17425857#post-17425857) <br/>- GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)) <br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| iMac11,1 | ^^ | ^^ | - GPU Acceleration in Public Beta, see current issues ([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))|
|
||||
| iMac11,2 | Mid 2010 | ^^ | ^^ |
|
||||
| iMac11,3 | ^^ | ^^ | ^^ |
|
||||
| iMac12,1 | Mid 2011 | ^^ | ^^ |
|
||||
| iMac12,2 | ^^ | ^^ | ^^ |
|
||||
| iMac13,1 | Late 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
|
||||
| iMac13,2 | ^^ | ^^ | ^^ |
|
||||
| iMac13,3 | ^^ | ^^ | ^^ |
|
||||
| iMac14,1 | Late 2013 | ^^ | ^^ |
|
||||
| iMac14,2 | ^^ | ^^ | ^^ |
|
||||
| iMac14,3 | ^^ | ^^ | ^^ |
|
||||
| iMac14,4 | Mid 2014 | ^^ | ^^ |
|
||||
| iMac15,1 | Late 2014, Mid 2015 | ^^ | ^^ |
|
||||
| iMac16,1 | Late 2014, Mid 2015 | ^^ | ^^ |
|
||||
| iMac16,2 | Late 2014, Mid 2015 | ^^ | ^^ |
|
||||
| iMac17,1 | Late 2015, Early 2016 | ^^ | ^^ |
|
||||
|
||||
* For iMac10,1 through iMac12,x, we highly recommend users upgrade the GPU to a Metal supported model. See here for more information: [iMac late 2009 to mid-2011 Graphics Card Upgrade Guide](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/?post=17425857#post-17425857)
|
||||
| Model Name | Identifier | Tagged Issues |
|
||||
| :--- | :--- | :--- |
|
||||
| iMac (20-inch, Mid 2007)<br>iMac (24-inch, Mid 2007) | `iMac7,1` | - [Requires SSE4.1 CPU](https://lowendmac.com/2018/penryn-t9300-9500-cpu-upgrades-for-the-2007-imac/)<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)<br>- Remove stock Bluetooth to prevent panics |
|
||||
| iMac (20-inch, Early 2008)<br>iMac (24-inch, Early 2008) | `iMac8,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
|
||||
| iMac (20-inch, Early 2009)<br>iMac (24-inch, Early 2009)<br>iMac (20-inch, Mid 2009) | `iMac9,1` | - [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)<br>- [Recommend upgrading to Metal GPU](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/?post=17425857#post-17425857) |
|
||||
| iMac (21.5-inch, Late 2009)<br>iMac (27-inch, Late 2009)| `iMac10,1` | ^^ |
|
||||
| iMac (27-inch, Late 2009) | `iMac11,1` | ^^ |
|
||||
| iMac (21.5-inch, Mid 2010) | `iMac11,2` | ^^ |
|
||||
| iMac (27-inch, Mid 2010) | `iMac11,3` | ^^ |
|
||||
| iMac (21.5-inch, Mid 2011)<br>iMac (21.5-inch, Late 2011) | `iMac12,1` | ^^ |
|
||||
| iMac (27-inch, Mid 2011) | `iMac12,2` | ^^ |
|
||||
| iMac (21.5-inch, Late 2012) | `iMac13,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
|
||||
| iMac (27-inch, Late 2012) | `iMac13,2` | ^^ |
|
||||
| iMac (21.5-inch, Early 2013) | `iMac13,3` | ^^ |
|
||||
| iMac (21.5-inch, Late 2013) | `iMac14,1` | ^^ |
|
||||
| iMac (27-inch, Late 2013) | `iMac14,2`<br>`iMac14,3` | ^^ |
|
||||
| iMac (21.5-inch, Mid 2014) | `iMac14,4` | ^^ |
|
||||
| iMac (Retina 5K, 27-inch, Late 2014)<br>iMac (Retina 5K, 27-inch, Mid 2015) | `iMac15,1` | ^^ |
|
||||
| iMac (21.5-inch, Late 2015) | `iMac16,1` | ^^ |
|
||||
| iMac (Retina 4K, 21.5-inch, Late 2015) | `iMac16,2` | ^^ |
|
||||
| iMac (Retina 5K, 27-inch, Late 2015) | `iMac17,1` | ^^ |
|
||||
| iMac (21.5-inch, 2017) | `iMac18,1` | - Supported by Apple |
|
||||
| iMac (Retina 4K, 21.5-inch, 2017) | `iMac18,2` | ^^ |
|
||||
| iMac (Retina 5K, 27-inch, 2017) | `iMac18,3` | ^^ |
|
||||
| iMac (Retina 5K, 27-inch, 2019) | `iMac19,1` | ^^ |
|
||||
| iMac (Retina 4K, 21.5-inch, 2019) | `iMac19,2` | ^^ |
|
||||
| iMac (Retina 5K, 27-inch, 2020) | `iMac20,1`<br>`iMac20,2` | ^^ |
|
||||
| iMac Pro (2017) | `iMacPro1,1` | ^^ |
|
||||
|
||||
### Mac Pro
|
||||
|
||||
| SMBIOS | Year | Supported | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| MacPro1,1 | Mid 2006 | <span style="color:red"> NO </span> | 32-Bit Firmware limitation |
|
||||
| MacPro2,1 | Mid 2007 | ^^ | ^^ |
|
||||
| MacPro3,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)) <br/>- Potential boot issues with stock Bluetooth card, recommend removing to avoid kernel panics |
|
||||
| MacPro4,1 | Early 2009 | ^^ | - Everything is supported as long as GPU is Metal capable <br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| MacPro5,1 | Mid 2010, Mid 2012 | ^^ | ^^ |
|
||||
| MacPro6,1 | Late 2013 | ^^ | - DRM support is flaky |
|
||||
| Model Name | Identifier | Tagged Issues |
|
||||
| :--- | :--- | :--- |
|
||||
| Mac Pro (Early 2008) | `MacPro3,1` | - Recommend upgrade to Metal GPU<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)<br>- Remove stock Bluetooth to prevent panics |
|
||||
| Mac Pro (Early 2009) | `MacPro4,1` | - Recommend upgrade to Metal GPU<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
|
||||
| Mac Pro (Mid 2010)<br>Mac Pro (Mid 2012) | `MacPro5,1` | ^^ |
|
||||
| Mac Pro (Late 2013) | `MacPro6,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
|
||||
| Mac Pro (2019) | `MacPro7,1` | - Supported by Apple |
|
||||
|
||||
### Xserve
|
||||
|
||||
| SMBIOS | Year | Supported | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| Xserve1,1 | Mid 2006 | <span style="color:red"> NO </span> | 32-Bit Firmware limitation |
|
||||
| Xserve2,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - Everything is supported as long as GPU is Metal capable <br/> - UHCI/OHCI support in Public Beta, see current issues ([#1021](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021))|
|
||||
| Xserve3,1 | Early 2009 | ^^ | ^^ |
|
||||
| Model Name | Identifier | Tagged Issues |
|
||||
| :--- | :--- | :--- |
|
||||
| Xserve (Early 2008) | `Xserve2,1` | - Recommend upgrade to Metal GPU<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)
|
||||
| Xserve (Early 2009) | `Xserve3,1` | ^^ |
|
||||
|
||||
# Once you've verified your hardware is supported, head to [Download and build macOS Installers](./INSTALLER.md)
|
||||
|
||||
@@ -11,4 +11,8 @@ To remove OpenCore:
|
||||
|
||||
2. [Reset NVRAM](https://support.apple.com/HT204063)
|
||||
|
||||
Note that if you are on Big Sur when you remove the EFI folder, your Mac will no longer boot and show the "prohibited" symbol. Be ready to install an older version of macOS before you uninstall OpenCore.
|
||||
:::warning
|
||||
|
||||
Note that after you remove OpenCore, your Mac will no longer boot and show the "prohibited" symbol. Be ready to install an natively-supported version of macOS before you uninstall OpenCore.
|
||||
|
||||
* This does not apply to native to native Macs just using OpenCore to achieve features like AirPlay to Mac and Sidecar, but it is still recomended to reinstall macOS, after removing OpenCore, if using SMBIOS spoofing to enable Univeral Control.
|
||||
|
||||
@@ -429,42 +429,6 @@
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>Broadcom Wifi Patch</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>12.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AirportBrcmFixup.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AirportBrcmFixup</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>4331 Wifi Patch</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>20.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcmNIC_Injector.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string></string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
@@ -923,7 +887,7 @@
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<string>22.99.99</string>
|
||||
<key>MinKernel</key>
|
||||
<string>18.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
@@ -1585,21 +1549,113 @@
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AMFIPass.kext</string>
|
||||
<string>IOSkywalkFamily.kext</string>
|
||||
<key>Comment</key>
|
||||
<string>AMFIPass</string>
|
||||
<string>IOSkywalkFamily</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AMFIPass</string>
|
||||
<string>Contents/MacOS/IOSkywalkFamily</string>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>20.0.0</string>
|
||||
<string>23.0.0</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>BundlePath</key>
|
||||
<string>IO80211FamilyLegacy.kext</string>
|
||||
<key>Comment</key>
|
||||
<string>IO80211FamilyLegacy</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/IO80211FamilyLegacy</string>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>BundlePath</key>
|
||||
<string>IO80211FamilyLegacy.kext/Contents/PlugIns/AirPortBrcmNIC.kext</string>
|
||||
<key>Comment</key>
|
||||
<string>AirPortBrcmNIC</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AirPortBrcmNIC</string>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>Broadcom Wifi Patch</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>12.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AirportBrcmFixup.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AirportBrcmFixup</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>4331 Wifi Patch</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>20.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcmNIC_Injector.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string></string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>BundlePath</key>
|
||||
<string>IOS3XeFamily.kext</string>
|
||||
<key>Comment</key>
|
||||
<string>Restore S1X/S3X drive support for 14.0 Beta 2 and newer</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/IOS3XeFamily</string>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>Aquantia Ethernet Patch</string>
|
||||
<key>Enabled</key>
|
||||
@@ -1615,9 +1671,182 @@
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>PCIe Camera</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AppleCameraInterface.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AppleCameraInterface</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>AMFIPass</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>20.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AMFIPass.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AMFIPass</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>AppleSSE - T1</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AppleSSE.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AppleSSE</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>AppleKeyStore - T1</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AppleKeyStore.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AppleKeyStore</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>AppleCredentialManager - T1</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>AppleCredentialManager.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string>Contents/MacOS/AppleCredentialManager</string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Comment</key>
|
||||
<string>USB Ethernet - ECM</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>BundlePath</key>
|
||||
<string>ECM-Override.kext</string>
|
||||
<key>ExecutablePath</key>
|
||||
<string></string>
|
||||
<key>PlistPath</key>
|
||||
<string>Contents/Info.plist</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>Block</key>
|
||||
<array/>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>Any</string>
|
||||
<key>Comment</key>
|
||||
<string>Allow IOSkywalk Downgrade</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>Identifier</key>
|
||||
<string>com.apple.iokit.IOSkywalkFamily</string>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>Strategy</key>
|
||||
<string>Exclude</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>Any</string>
|
||||
<key>Comment</key>
|
||||
<string>Allow AppleSSE Downgrade</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>Identifier</key>
|
||||
<string>com.apple.driver.AppleSSE</string>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>Strategy</key>
|
||||
<string>Exclude</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>Any</string>
|
||||
<key>Comment</key>
|
||||
<string>Allow AppleCredentialManager Downgrade</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>Identifier</key>
|
||||
<string>com.apple.driver.AppleCredentialManager</string>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>Strategy</key>
|
||||
<string>Exclude</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>Any</string>
|
||||
<key>Comment</key>
|
||||
<string>Allow AppleKeyStore Downgrade</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>Identifier</key>
|
||||
<string>com.apple.driver.AppleKeyStore</string>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>Strategy</key>
|
||||
<string>Exclude</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>Emulate</key>
|
||||
<dict>
|
||||
<key>DummyPowerManagement</key>
|
||||
@@ -2001,7 +2230,7 @@
|
||||
<key>Base</key>
|
||||
<string>__ZN17IOPCIConfigurator18IOPCIIsHotplugPortEP16IOPCIConfigEntry</string>
|
||||
<key>Comment</key>
|
||||
<string>CaseySJ - Fix PCI bus enumeration</string>
|
||||
<string>CaseySJ - Fix PCI bus enumeration (Ventura)</string>
|
||||
<key>Count</key>
|
||||
<integer>1</integer>
|
||||
<key>Enabled</key>
|
||||
@@ -2015,7 +2244,7 @@
|
||||
<key>Mask</key>
|
||||
<data></data>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<string>22.99.99</string>
|
||||
<key>MinKernel</key>
|
||||
<string>22.0.0</string>
|
||||
<key>Replace</key>
|
||||
@@ -2025,6 +2254,36 @@
|
||||
<key>Skip</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Base</key>
|
||||
<string>__ZN17IOPCIConfigurator18IOPCIIsHotplugPortEP16IOPCIConfigEntry</string>
|
||||
<key>Comment</key>
|
||||
<string>Fix PCI bus enumeration (Sonoma)</string>
|
||||
<key>Count</key>
|
||||
<integer>1</integer>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>Find</key>
|
||||
<data>RYTkdUs=</data>
|
||||
<key>Identifier</key>
|
||||
<string>com.apple.iokit.IOPCIFamily</string>
|
||||
<key>Limit</key>
|
||||
<integer>0</integer>
|
||||
<key>Mask</key>
|
||||
<data></data>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>23.0.0</string>
|
||||
<key>Replace</key>
|
||||
<data>RYTk60s=</data>
|
||||
<key>ReplaceMask</key>
|
||||
<data></data>
|
||||
<key>Skip</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>Quirks</key>
|
||||
<dict>
|
||||
@@ -2101,6 +2360,8 @@
|
||||
<true/>
|
||||
<key>HideAuxiliary</key>
|
||||
<true/>
|
||||
<!-- <key>InstanceIdentifier</key>
|
||||
<string></string> -->
|
||||
<key>LauncherPath</key>
|
||||
<string>Default</string>
|
||||
<key>LauncherOption</key>
|
||||
@@ -2617,6 +2878,18 @@
|
||||
<key>LoadEarly</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Comment</key>
|
||||
<string></string>
|
||||
<key>Path</key>
|
||||
<string>OpenLegacyBoot.efi</string>
|
||||
<key>Enabled</key>
|
||||
<false/>
|
||||
<key>Arguments</key>
|
||||
<string></string>
|
||||
<key>LoadEarly</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Comment</key>
|
||||
<string></string>
|
||||
@@ -2689,6 +2962,8 @@
|
||||
<dict>
|
||||
<key>ClearScreenOnModeSwitch</key>
|
||||
<false/>
|
||||
<key>ConsoleFont</key>
|
||||
<string></string>
|
||||
<key>ConsoleMode</key>
|
||||
<string></string>
|
||||
<key>DirectGopRendering</key>
|
||||
@@ -2758,6 +3033,8 @@
|
||||
<false/>
|
||||
<key>OSInfo</key>
|
||||
<false/>
|
||||
<key>PciIo</key>
|
||||
<false/>
|
||||
<key>UnicodeCollation</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -2789,6 +3066,8 @@
|
||||
<integer>-1</integer>
|
||||
<key>ResizeUsePciRbIo</key>
|
||||
<false/>
|
||||
<!-- <key>ShimRetainProtocol</key>
|
||||
<false/> -->
|
||||
<key>TscSyncTimeout</key>
|
||||
<integer>0</integer>
|
||||
<key>UnblockFsConnect</key>
|
||||
|
||||
BIN
payloads/Icon/AppIcons/BigSur.icns
Normal file
BIN
payloads/Icon/AppIcons/BigSur.icns
Normal file
Binary file not shown.
BIN
payloads/Icon/AppIcons/Generic.icns
Normal file
BIN
payloads/Icon/AppIcons/Generic.icns
Normal file
Binary file not shown.
BIN
payloads/Icon/AppIcons/Monterey.icns
Normal file
BIN
payloads/Icon/AppIcons/Monterey.icns
Normal file
Binary file not shown.
BIN
payloads/Icon/AppIcons/Sonoma.icns
Normal file
BIN
payloads/Icon/AppIcons/Sonoma.icns
Normal file
Binary file not shown.
BIN
payloads/Icon/AppIcons/Ventura.icns
Normal file
BIN
payloads/Icon/AppIcons/Ventura.icns
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/AutoPkgInstaller-v1.0.3-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/AutoPkgInstaller-v1.0.3-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/AutoPkgInstaller-v1.0.3-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/AutoPkgInstaller-v1.0.3-RELEASE.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.8-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.8-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.8-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/BlueToolFixup-v2.6.8-RELEASE.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/CPUFriend-v1.2.7-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/CPUFriend-v1.2.7-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/CPUFriend-v1.2.7-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/CPUFriend-v1.2.7-RELEASE.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/CryptexFixup-v1.0.2-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/CryptexFixup-v1.0.2-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/CryptexFixup-v1.0.2-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/CryptexFixup-v1.0.2-RELEASE.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.8-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.8-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.8-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.8-RELEASE.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/FeatureUnlock-v1.1.5-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/FeatureUnlock-v1.1.5-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/FeatureUnlock-v1.1.5-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/FeatureUnlock-v1.1.5-RELEASE.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/Lilu-v1.6.7-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/Lilu-v1.6.7-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/Lilu-v1.6.7-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/Lilu-v1.6.7-RELEASE.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/NVMeFix-v1.1.1-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/NVMeFix-v1.1.1-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/NVMeFix-v1.1.1-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/NVMeFix-v1.1.1-RELEASE.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/RestrictEvents-v1.1.3-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/RestrictEvents-v1.1.3-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/RestrictEvents-v1.1.3-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/RestrictEvents-v1.1.3-RELEASE.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.6.6-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.6.6-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.6.6-Navi-DEBUG.zip
Normal file
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.6.6-Navi-DEBUG.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.6.6-Navi-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.6.6-Navi-RELEASE.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.6.6-RELEASE.zip
Normal file
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.6.6-RELEASE.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Misc/AppleCameraInterface-v1.0.0.zip
Normal file
BIN
payloads/Kexts/Misc/AppleCameraInterface-v1.0.0.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Misc/AppleCredentialManager-v1.0.0.zip
Normal file
BIN
payloads/Kexts/Misc/AppleCredentialManager-v1.0.0.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Misc/AppleKeyStore-v1.0.0.zip
Normal file
BIN
payloads/Kexts/Misc/AppleKeyStore-v1.0.0.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Misc/AppleSSE-v1.0.0.zip
Normal file
BIN
payloads/Kexts/Misc/AppleSSE-v1.0.0.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Misc/ECM-Override-v1.0.0.zip
Normal file
BIN
payloads/Kexts/Misc/ECM-Override-v1.0.0.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Misc/IOS3XeFamily-v1.0.0.zip
Normal file
BIN
payloads/Kexts/Misc/IOS3XeFamily-v1.0.0.zip
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
payloads/Kexts/Wifi/IO80211FamilyLegacy-v1.0.0.zip
Normal file
BIN
payloads/Kexts/Wifi/IO80211FamilyLegacy-v1.0.0.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Wifi/IOSkywalkFamily-v1.0.0.zip
Normal file
BIN
payloads/Kexts/Wifi/IOSkywalkFamily-v1.0.0.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -63,6 +63,7 @@ UNUSED_TOOLS = [
|
||||
"CsrUtil.efi",
|
||||
"TpmInfo.efi",
|
||||
"ListPartitions.efi",
|
||||
"FontTester.efi",
|
||||
]
|
||||
|
||||
IMPORTANT_UTILITIES = [
|
||||
|
||||
Binary file not shown.
@@ -119,7 +119,6 @@ If you plan to create the USB for another machine, please select the "Change Mod
|
||||
if self.args.debug_oc:
|
||||
logging.info("- Set OpenCore DEBUG configuration")
|
||||
self.constants.opencore_debug = True
|
||||
self.constants.opencore_build = "DEBUG"
|
||||
|
||||
if self.args.debug_kext:
|
||||
logging.info("- Set kext DEBUG configuration")
|
||||
|
||||
@@ -65,6 +65,8 @@ class BuildOpenCore:
|
||||
]:
|
||||
function(self.model, self.constants, self.config)
|
||||
|
||||
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -lilubetaall"
|
||||
|
||||
# Work-around ocvalidate
|
||||
if self.constants.validate is False:
|
||||
logging.info("- Adding bootmgfw.efi BlessOverride")
|
||||
@@ -90,7 +92,7 @@ class BuildOpenCore:
|
||||
shutil.rmtree(self.constants.opencore_release_folder, onerror=rmtree_handler, ignore_errors=True)
|
||||
|
||||
logging.info("")
|
||||
logging.info(f"- Adding OpenCore v{self.constants.opencore_version} {self.constants.opencore_build}")
|
||||
logging.info(f"- Adding OpenCore v{self.constants.opencore_version} {'DEBUG' if self.constants.opencore_debug is True else 'RELEASE'}")
|
||||
shutil.copy(self.constants.opencore_zip_source, self.constants.build_path)
|
||||
zipfile.ZipFile(self.constants.opencore_zip_copied).extractall(self.constants.build_path)
|
||||
|
||||
@@ -113,7 +115,7 @@ class BuildOpenCore:
|
||||
self.config["#Revision"]["Hardware-Probe"] = pickle.dumps(computer_copy)
|
||||
else:
|
||||
self.config["#Revision"]["Build-Type"] = "OpenCore Built for External Machine"
|
||||
self.config["#Revision"]["OpenCore-Version"] = f"{self.constants.opencore_version} - {self.constants.opencore_build}"
|
||||
self.config["#Revision"]["OpenCore-Version"] = f"{self.constants.opencore_version} - {'DEBUG' if self.constants.opencore_debug is True else 'RELEASE'}"
|
||||
self.config["#Revision"]["Original-Model"] = self.model
|
||||
self.config["NVRAM"]["Add"]["4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102"]["OCLP-Version"] = f"{self.constants.patcher_version}"
|
||||
self.config["NVRAM"]["Add"]["4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102"]["OCLP-Model"] = self.model
|
||||
|
||||
@@ -212,6 +212,15 @@ class BuildFirmware:
|
||||
shutil.copy(self.constants.link_rate_driver_path, self.constants.drivers_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_efi_binary_by_path("FixPCIeLinkRate.efi", "UEFI", "Drivers")["Enabled"] = True
|
||||
|
||||
# CSM check
|
||||
# For model support, check for GUID in firmware and as well as Bootcamp Assistant's Info.plist ('PreUEFIModels' key)
|
||||
# Ref: https://github.com/acidanthera/OpenCorePkg/blob/0.9.5/Platform/OpenLegacyBoot/OpenLegacyBoot.c#L19
|
||||
# if smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.CPUGen.ivy_bridge.value and self.model != "MacPro6,1":
|
||||
# logging.info("- Enabling CSM support")
|
||||
# support.BuildSupport(self.model, self.constants, self.config).get_efi_binary_by_path("OpenLegacyBoot.efi", "UEFI", "Drivers")["Enabled"] = True
|
||||
# else:
|
||||
# # Shipped alongside OpenCorePkg, so remove if unused
|
||||
# (self.constants.drivers_path / Path("OpenLegacyBoot.efi")).unlink()
|
||||
|
||||
def _firmware_compatibility_handling(self) -> None:
|
||||
"""
|
||||
@@ -236,7 +245,10 @@ class BuildFirmware:
|
||||
)
|
||||
):
|
||||
logging.info("- Adding PCI Bus Enumeration Patch")
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "CaseySJ - Fix PCI bus enumeration")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "CaseySJ - Fix PCI bus enumeration (Ventura)")["Enabled"] = True
|
||||
# Sonoma slightly adjusted this line specifically
|
||||
# - https://github.com/apple-oss-distributions/IOPCIFamily/blob/main/IOPCIConfigurator.cpp#L1009
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Fix PCI bus enumeration (Sonoma)")["Enabled"] = True
|
||||
|
||||
if self.constants.set_vmm_cpuid is True:
|
||||
logging.info("- Enabling VMM patch")
|
||||
|
||||
@@ -125,10 +125,11 @@ class BuildMiscellaneous:
|
||||
|
||||
re_patch_args = []
|
||||
|
||||
# Resolve content caching when kern.hv_vmm_present is set
|
||||
if support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (1)")["Enabled"] is True and self.constants.set_content_caching is True:
|
||||
logging.info("- Fixing Content Caching support")
|
||||
re_patch_args.append("asset")
|
||||
# Alternative approach to the kern.hv_vmm_present patch
|
||||
# Dynamically sets the property to 1 if software update/installer is detected
|
||||
# Always enabled in installers/recovery environments
|
||||
if self.constants.allow_oc_everywhere is False and (self.constants.serial_settings == "None" or self.constants.secure_status is False):
|
||||
re_patch_args.append("sbvmm")
|
||||
|
||||
# Resolve CoreGraphics.framework crashing on Ivy Bridge in macOS 13.3+
|
||||
# Ref: https://github.com/acidanthera/RestrictEvents/pull/12
|
||||
@@ -236,10 +237,18 @@ class BuildMiscellaneous:
|
||||
"""
|
||||
iSight Handler
|
||||
"""
|
||||
if self.model in smbios_data.smbios_dictionary:
|
||||
if "Legacy iSight" in smbios_data.smbios_dictionary[self.model]:
|
||||
if smbios_data.smbios_dictionary[self.model]["Legacy iSight"] is True:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyUSBVideoSupport.kext", self.constants.apple_isight_version, self.constants.apple_isight_path)
|
||||
|
||||
if "Legacy iSight" in smbios_data.smbios_dictionary[self.model]:
|
||||
if smbios_data.smbios_dictionary[self.model]["Legacy iSight"] is True:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyUSBVideoSupport.kext", self.constants.apple_isight_version, self.constants.apple_isight_path)
|
||||
if not self.constants.custom_model:
|
||||
if self.constants.computer.pcie_webcam is True:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleCameraInterface.kext", self.constants.apple_camera_version, self.constants.apple_camera_path)
|
||||
else:
|
||||
if self.model.startswith("MacBook") and self.model in smbios_data.smbios_dictionary:
|
||||
if cpu_data.CPUGen.haswell <= smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.CPUGen.kaby_lake:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleCameraInterface.kext", self.constants.apple_camera_version, self.constants.apple_camera_path)
|
||||
|
||||
|
||||
def _usb_handling(self) -> None:
|
||||
@@ -267,13 +276,13 @@ class BuildMiscellaneous:
|
||||
|
||||
# Add UHCI/OHCI drivers
|
||||
# All Penryn Macs lack an internal USB hub to route USB 1.1 devices to the EHCI controller
|
||||
# And MacPro4,1 and MacPro5,1 are the only post-Penryn Macs that lack an internal USB hub
|
||||
# And MacPro4,1, MacPro5,1 and Xserve3,1 are the only post-Penryn Macs that lack an internal USB hub
|
||||
# - Ref: https://techcommunity.microsoft.com/t5/microsoft-usb-blog/reasons-to-avoid-companion-controllers/ba-p/270710
|
||||
#
|
||||
# To be paired for sys_patch_dict.py's 'Legacy USB 1.1' patchset
|
||||
if (
|
||||
smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.CPUGen.penryn.value or \
|
||||
self.model in ["MacPro4,1", "MacPro5,1"]
|
||||
self.model in ["MacPro4,1", "MacPro5,1", "Xserve3,1"]
|
||||
):
|
||||
logging.info("- Adding UHCI/OHCI USB support")
|
||||
shutil.copy(self.constants.apple_usb_11_injector_path, self.constants.kexts_path)
|
||||
@@ -329,4 +338,22 @@ class BuildMiscellaneous:
|
||||
if self.constants.vault is True and utilities.check_command_line_tools() is True:
|
||||
logging.info("- Setting Vault configuration")
|
||||
self.config["Misc"]["Security"]["Vault"] = "Secure"
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_efi_binary_by_path("OpenShell.efi", "Misc", "Tools")["Enabled"] = False
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_efi_binary_by_path("OpenShell.efi", "Misc", "Tools")["Enabled"] = False
|
||||
|
||||
|
||||
def _t1_handling(self) -> None:
|
||||
"""
|
||||
T1 Security Chip Handler
|
||||
"""
|
||||
if self.model not in ["MacBookPro13,2", "MacBookPro13,3", "MacBookPro14,2", "MacBookPro14,3"]:
|
||||
return
|
||||
|
||||
logging.info("- Enabling T1 Security Chip support")
|
||||
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Block"], "Identifier", "com.apple.driver.AppleSSE")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Block"], "Identifier", "com.apple.driver.AppleCredentialManager")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Block"], "Identifier", "com.apple.driver.AppleKeyStore")["Enabled"] = True
|
||||
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleSSE.kext", self.constants.t1_sse_version, self.constants.t1_sse_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleCredentialManager.kext", self.constants.t1_credential_version, self.constants.t1_credential_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleKeyStore.kext", self.constants.t1_key_store_version, self.constants.t1_key_store_path)
|
||||
@@ -33,6 +33,20 @@ class BuildWiredNetworking:
|
||||
else:
|
||||
self._prebuilt_assumption()
|
||||
|
||||
# Always enable due to chance of hot-plugging
|
||||
self._usb_ecm_dongles()
|
||||
|
||||
|
||||
def _usb_ecm_dongles(self) -> None:
|
||||
"""
|
||||
USB ECM Dongle Handling
|
||||
"""
|
||||
# With Sonoma, our WiFi patches require downgrading IOSkywalk
|
||||
# Unfortunately Apple's DriverKit stack uses IOSkywalk for ECM dongles, so we'll need force load
|
||||
# the kernel driver to prevent a kernel panic
|
||||
# - DriverKit: com.apple.DriverKit.AppleUserECM.dext
|
||||
# - Kext: AppleUSBECM.kext
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("ECM-Override.kext", self.constants.ecm_override_version, self.constants.ecm_override_path)
|
||||
|
||||
def _on_model(self) -> None:
|
||||
"""
|
||||
@@ -63,7 +77,7 @@ class BuildWiredNetworking:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("nForceEthernet.kext", self.constants.nforce_version, self.constants.nforce_path)
|
||||
elif isinstance(controller, device_probe.Marvell) or isinstance(controller, device_probe.SysKonnect):
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("MarvelYukonEthernet.kext", self.constants.marvel_version, self.constants.marvel_path)
|
||||
|
||||
|
||||
# Pre-Ivy Bridge Aquantia Ethernet Patch
|
||||
if isinstance(controller, device_probe.Aquantia) and controller.chipset == device_probe.Aquantia.Chipsets.AppleEthernetAquantiaAqtion:
|
||||
if not self.model in smbios_data.smbios_dictionary:
|
||||
|
||||
@@ -45,6 +45,11 @@ class BuildWirelessNetworking:
|
||||
self.config["#Revision"]["Hardware-Wifi"] = f"{utilities.friendly_hex(self.computer.wifi.vendor_id)}:{utilities.friendly_hex(self.computer.wifi.device_id)}"
|
||||
|
||||
if isinstance(self.computer.wifi, device_probe.Broadcom):
|
||||
if self.computer.wifi.chipset in [device_probe.Broadcom.Chipsets.AirportBrcmNIC, device_probe.Broadcom.Chipsets.AirPortBrcm4360]:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("IOSkywalkFamily.kext", self.constants.ioskywalk_version, self.constants.ioskywalk_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("IO80211FamilyLegacy.kext", self.constants.io80211legacy_version, self.constants.io80211legacy_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("IO80211FamilyLegacy.kext/Contents/PlugIns/AirPortBrcmNIC.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Block"], "Identifier", "com.apple.iokit.IOSkywalkFamily")["Enabled"] = True
|
||||
# This works around OCLP spoofing the Wifi card and therefore unable to actually detect the correct device
|
||||
if self.computer.wifi.chipset == device_probe.Broadcom.Chipsets.AirportBrcmNIC and self.constants.validate is False and self.computer.wifi.country_code:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AirportBrcmFixup.kext", self.constants.airportbcrmfixup_version, self.constants.airportbcrmfixup_path)
|
||||
@@ -104,6 +109,12 @@ class BuildWirelessNetworking:
|
||||
elif smbios_data.smbios_dictionary[self.model]["Wireless Model"] == device_probe.Broadcom.Chipsets.AirportBrcmNIC:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AirportBrcmFixup.kext", self.constants.airportbcrmfixup_version, self.constants.airportbcrmfixup_path)
|
||||
|
||||
if smbios_data.smbios_dictionary[self.model]["Wireless Model"] in [device_probe.Broadcom.Chipsets.AirportBrcmNIC, device_probe.Broadcom.Chipsets.AirPortBrcm4360]:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("IOSkywalkFamily.kext", self.constants.ioskywalk_version, self.constants.ioskywalk_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("IO80211FamilyLegacy.kext", self.constants.io80211legacy_version, self.constants.io80211legacy_path)
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("IO80211FamilyLegacy.kext/Contents/PlugIns/AirPortBrcmNIC.kext")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Block"], "Identifier", "com.apple.iokit.IOSkywalkFamily")["Enabled"] = True
|
||||
|
||||
|
||||
def _wowl_handling(self) -> None:
|
||||
"""
|
||||
|
||||
@@ -77,11 +77,6 @@ class BuildSecurity:
|
||||
if self.constants.secure_status is False:
|
||||
logging.info("- Disabling SecureBootModel")
|
||||
self.config["Misc"]["Security"]["SecureBootModel"] = "Disabled"
|
||||
if self.constants.force_vmm is True:
|
||||
logging.info("- Forcing VMM patchset to support OTA updates")
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (1)")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (2) Legacy")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (2) Ventura")["Enabled"] = True
|
||||
|
||||
|
||||
logging.info("- Enabling AMFIPass")
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AMFIPass.kext", self.constants.amfipass_version, self.constants.amfipass_path)
|
||||
|
||||
@@ -41,10 +41,6 @@ class BuildSMBIOS:
|
||||
logging.info("- Enabling Board ID exemption patch")
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Booter"]["Patch"], "Comment", "Skip Board ID check")["Enabled"] = True
|
||||
|
||||
logging.info("- Enabling VMM exemption patch")
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (1)")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (2) Legacy")["Enabled"] = True
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (2) Ventura")["Enabled"] = True
|
||||
else:
|
||||
logging.info("- Enabling SMC exemption patch")
|
||||
support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Identifier", "com.apple.driver.AppleSMC")["Enabled"] = True
|
||||
|
||||
@@ -106,28 +106,44 @@ class BuildStorage:
|
||||
logging.info(f"- Failed to find Device path for PCIe Storage Controller {i}, falling back to Innie")
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("Innie.kext", self.constants.innie_version, self.constants.innie_path)
|
||||
|
||||
if not self.constants.custom_model and self.constants.allow_nvme_fixing is True:
|
||||
if not self.constants.custom_model:
|
||||
nvme_devices = [i for i in self.computer.storage if isinstance(i, device_probe.NVMeController)]
|
||||
for i, controller in enumerate(nvme_devices):
|
||||
logging.info(f"- Found 3rd Party NVMe SSD ({i + 1}): {utilities.friendly_hex(controller.vendor_id)}:{utilities.friendly_hex(controller.device_id)}")
|
||||
self.config["#Revision"][f"Hardware-NVMe-{i}"] = f"{utilities.friendly_hex(controller.vendor_id)}:{utilities.friendly_hex(controller.device_id)}"
|
||||
if self.constants.allow_nvme_fixing is True:
|
||||
for i, controller in enumerate(nvme_devices):
|
||||
if controller.vendor_id == 0x106b:
|
||||
continue
|
||||
logging.info(f"- Found 3rd Party NVMe SSD ({i + 1}): {utilities.friendly_hex(controller.vendor_id)}:{utilities.friendly_hex(controller.device_id)}")
|
||||
self.config["#Revision"][f"Hardware-NVMe-{i}"] = f"{utilities.friendly_hex(controller.vendor_id)}:{utilities.friendly_hex(controller.device_id)}"
|
||||
|
||||
# Disable Bit 0 (L0s), enable Bit 1 (L1)
|
||||
nvme_aspm = (controller.aspm & (~0b11)) | 0b10
|
||||
# Disable Bit 0 (L0s), enable Bit 1 (L1)
|
||||
nvme_aspm = (controller.aspm & (~0b11)) | 0b10
|
||||
|
||||
if controller.pci_path:
|
||||
logging.info(f"- Found NVMe ({i}) at {controller.pci_path}")
|
||||
self.config["DeviceProperties"]["Add"].setdefault(controller.pci_path, {})["pci-aspm-default"] = nvme_aspm
|
||||
self.config["DeviceProperties"]["Add"][controller.pci_path.rpartition("/")[0]] = {"pci-aspm-default": nvme_aspm}
|
||||
else:
|
||||
if "-nvmefaspm" not in self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"]:
|
||||
logging.info("- Falling back to -nvmefaspm")
|
||||
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -nvmefaspm"
|
||||
if controller.pci_path:
|
||||
logging.info(f"- Found NVMe ({i}) at {controller.pci_path}")
|
||||
self.config["DeviceProperties"]["Add"].setdefault(controller.pci_path, {})["pci-aspm-default"] = nvme_aspm
|
||||
self.config["DeviceProperties"]["Add"][controller.pci_path.rpartition("/")[0]] = {"pci-aspm-default": nvme_aspm}
|
||||
else:
|
||||
if "-nvmefaspm" not in self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"]:
|
||||
logging.info("- Falling back to -nvmefaspm")
|
||||
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -nvmefaspm"
|
||||
|
||||
if (controller.vendor_id != 0x144D and controller.device_id != 0xA804):
|
||||
# Avoid injecting NVMeFix when a native Apple NVMe drive is present
|
||||
# https://github.com/acidanthera/NVMeFix/blob/1.0.9/NVMeFix/NVMeFix.cpp#L220-L225
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("NVMeFix.kext", self.constants.nvmefix_version, self.constants.nvmefix_path)
|
||||
if (controller.vendor_id != 0x144D and controller.device_id != 0xA804):
|
||||
# Avoid injecting NVMeFix when a native Apple NVMe drive is present
|
||||
# https://github.com/acidanthera/NVMeFix/blob/1.0.9/NVMeFix/NVMeFix.cpp#L220-L225
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("NVMeFix.kext", self.constants.nvmefix_version, self.constants.nvmefix_path)
|
||||
|
||||
if any((controller.vendor_id == 0x106b and controller.device_id in [0x2001, 0x2003]) for controller in nvme_devices):
|
||||
# Restore S1X/S3X NVMe support removed in 14.0 Beta 2
|
||||
# - APPLE SSD AP0128H, AP0256H, etc
|
||||
# - APPLE SSD AP0128J, AP0256J, etc
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("IOS3XeFamily.kext", self.constants.s3x_nvme_version, self.constants.s3x_nvme_path)
|
||||
|
||||
# Restore S1X/S3X NVMe support removed in 14.0 Beta 2
|
||||
# Apple's usage of the S1X and S3X is quite sporadic and inconsistent, so we'll try a catch all for units with NVMe drives
|
||||
if self.constants.custom_model and self.model in smbios_data.smbios_dictionary:
|
||||
if "CPU Generation" in smbios_data.smbios_dictionary[self.model]:
|
||||
if cpu_data.CPUGen.broadwell <= smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.CPUGen.kaby_lake:
|
||||
support.BuildSupport(self.model, self.constants, self.config).enable_kext("IOS3XeFamily.kext", self.constants.s3x_nvme_version, self.constants.s3x_nvme_path)
|
||||
|
||||
# Apple RAID Card check
|
||||
if not self.constants.custom_model:
|
||||
|
||||
@@ -13,8 +13,8 @@ from data import os_data
|
||||
class Constants:
|
||||
def __init__(self) -> None:
|
||||
# Patcher Versioning
|
||||
self.patcher_version: str = "0.6.8" # OpenCore-Legacy-Patcher
|
||||
self.patcher_support_pkg_version: str = "1.2.2" # PatcherSupportPkg
|
||||
self.patcher_version: str = "1.0.0" # OpenCore-Legacy-Patcher
|
||||
self.patcher_support_pkg_version: str = "1.3.2" # PatcherSupportPkg
|
||||
self.copyright_date: str = "Copyright © 2020-2023 Dortania"
|
||||
self.patcher_name: str = "OpenCore Legacy Patcher"
|
||||
|
||||
@@ -28,25 +28,25 @@ class Constants:
|
||||
|
||||
# OpenCore Versioning
|
||||
# https://github.com/acidanthera/OpenCorePkg
|
||||
self.opencore_version: str = "0.9.2"
|
||||
self.opencore_version: str = "0.9.3"
|
||||
|
||||
# Kext Versioning
|
||||
## Acidanthera
|
||||
## https://github.com/acidanthera
|
||||
self.lilu_version: str = "1.6.6" # Lilu
|
||||
self.whatevergreen_version: str = "1.6.4" # WhateverGreen
|
||||
self.whatevergreen_navi_version: str = "1.6.4-Navi" # WhateverGreen (Navi Patch)
|
||||
self.lilu_version: str = "1.6.7" # Lilu
|
||||
self.whatevergreen_version: str = "1.6.6" # WhateverGreen
|
||||
self.whatevergreen_navi_version: str = "1.6.6-Navi" # WhateverGreen (Navi Patch)
|
||||
self.airportbcrmfixup_version: str = "2.1.7" # AirPortBrcmFixup
|
||||
self.nvmefix_version: str = "1.1.0" # NVMeFix
|
||||
self.nvmefix_version: str = "1.1.1" # NVMeFix
|
||||
self.applealc_version: str = "1.6.3" # AppleALC
|
||||
self.restrictevents_version: str = "1.1.1" # RestrictEvents
|
||||
self.featureunlock_version: str = "1.1.4" # FeatureUnlock
|
||||
self.debugenhancer_version: str = "1.0.7" # DebugEnhancer
|
||||
self.cpufriend_version: str = "1.2.6" # CPUFriend
|
||||
self.bluetool_version: str = "2.6.6" # BlueToolFixup (BrcmPatchRAM)
|
||||
self.restrictevents_version: str = "1.1.3" # RestrictEvents
|
||||
self.featureunlock_version: str = "1.1.5" # FeatureUnlock
|
||||
self.debugenhancer_version: str = "1.0.8" # DebugEnhancer
|
||||
self.cpufriend_version: str = "1.2.7" # CPUFriend
|
||||
self.bluetool_version: str = "2.6.8" # BlueToolFixup (BrcmPatchRAM)
|
||||
self.cslvfixup_version: str = "2.6.1" # CSLVFixup
|
||||
self.autopkg_version: str = "1.0.2" # AutoPkgInstaller
|
||||
self.cryptexfixup_version: str = "1.0.1" # CryptexFixup
|
||||
self.autopkg_version: str = "1.0.3" # AutoPkgInstaller
|
||||
self.cryptexfixup_version: str = "1.0.2" # CryptexFixup
|
||||
|
||||
## Apple
|
||||
## https://www.apple.com
|
||||
@@ -65,12 +65,19 @@ class Constants:
|
||||
self.intel_8254x_version: str = "1.0.0" # AppleIntel8254XEthernet
|
||||
self.apple_usb_11_injector: str = "1.0.0" # AppleUSBUHCI/OHCI
|
||||
self.aicpupm_version: str = "1.0.0" # AppleIntelCPUPowerManagement/Client
|
||||
self.s3x_nvme_version: str = "1.0.0" # IONVMeFamily (14.0 Beta 1, S1X and S3X classes)
|
||||
self.apple_camera_version: str = "1.0.0" # AppleCameraInterface (14.0 Beta 1)
|
||||
self.t1_credential_version: str = "1.0.0" # AppleCredentialManager (13.5 - T1 support)
|
||||
self.t1_sse_version: str = "1.0.0" # AppleSSE (13.5 - T1 support)
|
||||
self.t1_key_store_version: str = "1.0.0" # AppleKeyStore (13.5 - T1 support)
|
||||
|
||||
## Apple - Dortania Modified
|
||||
self.bcm570_version: str = "1.0.2" # CatalinaBCM5701Ethernet
|
||||
self.i210_version: str = "1.0.0" # CatalinaIntelI210Ethernet
|
||||
self.corecaptureelcap_version: str = "1.0.1" # corecaptureElCap
|
||||
self.io80211elcap_version: str = "2.0.0" # IO80211ElCap
|
||||
self.io80211legacy_version: str = "1.0.0" # IO80211FamilyLegacy (Ventura)
|
||||
self.ioskywalk_version: str = "1.0.0" # IOSkywalkFamily (Ventura)
|
||||
self.bigsursdxc_version: str = "1.0.0" # BigSurSDXC
|
||||
self.monterey_ahci_version: str = "1.0.0" # CatalinaAHCI
|
||||
|
||||
@@ -85,6 +92,7 @@ class Constants:
|
||||
self.mce_version: str = "1.0.0" # AppleMCEReporterDisabler
|
||||
self.btspoof_version: str = "1.0.0" # Bluetooth-Spoof
|
||||
self.aspp_override_version: str = "1.0.1" # ACPI_SMC_PlatformPlugin Override
|
||||
self.ecm_override_version: str = "1.0.0" # AppleUSBECM Override
|
||||
self.rsrhelper_version: str = "1.0.0" # RSRHelper
|
||||
self.amfipass_version: str = "1.3.1" # AMFIPass
|
||||
self.amfipass_compatibility_version: str = "1.2.1" # Minimum AMFIPass version required
|
||||
@@ -119,6 +127,7 @@ class Constants:
|
||||
self.original_path: Path = Path(__file__).parent.parent.resolve()
|
||||
self.payload_path: Path = self.current_path / Path("payloads")
|
||||
|
||||
|
||||
# Patcher Settings
|
||||
## Internal settings
|
||||
self.allow_oc_everywhere: bool = False # Set whether Patcher can be run on unsupported Macs
|
||||
@@ -154,7 +163,6 @@ class Constants:
|
||||
self.showpicker: bool = True # Show or Hide OpenCore's Boot Picker
|
||||
self.nvram_write: bool = True # Write to hardware NVRAM
|
||||
self.oc_timeout: int = 5 # Set OpenCore timeout
|
||||
self.opencore_build: str = "RELEASE"
|
||||
|
||||
## Kext Settings
|
||||
self.kext_debug: bool = False # Enables Lilu debug and DebugEnhancer
|
||||
@@ -219,7 +227,6 @@ class Constants:
|
||||
self.software_demux: bool = False # Enable Software Demux patch set
|
||||
self.force_vmm: bool = False # Force VMM patch
|
||||
self.disable_connectdrivers: bool = False # Disable ConnectDrivers (hibernation)
|
||||
self.set_content_caching: bool = False # Set Content Caching
|
||||
self.set_vmm_cpuid: bool = False # Set VMM bit inside CPUID
|
||||
self.disable_mediaanalysisd: bool = False # Set mediaanalysisd to spawn
|
||||
self.set_alc_usage: bool = True # Set AppleALC usage
|
||||
@@ -233,6 +240,7 @@ class Constants:
|
||||
os_data.os_data.big_sur,
|
||||
os_data.os_data.monterey,
|
||||
os_data.os_data.ventura,
|
||||
os_data.os_data.sonoma,
|
||||
]
|
||||
|
||||
@property
|
||||
@@ -258,11 +266,14 @@ class Constants:
|
||||
def payload_local_binaries_root_path_dmg(self):
|
||||
return self.original_path / Path("Universal-Binaries.dmg")
|
||||
|
||||
@property
|
||||
def overlay_psp_path_dmg(self):
|
||||
return self.original_path / Path("DortaniaInternalResources.dmg")
|
||||
|
||||
# OpenCore
|
||||
@property
|
||||
def opencore_zip_source(self):
|
||||
return self.payload_path / Path(f"OpenCore/OpenCore-{self.opencore_build}.zip")
|
||||
return self.payload_path / Path(f"OpenCore/OpenCore-{'DEBUG' if self.opencore_debug is True else 'RELEASE'}.zip")
|
||||
|
||||
@property
|
||||
def plist_template(self):
|
||||
@@ -424,6 +435,18 @@ class Constants:
|
||||
def top_case_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/AppleUSBTopCase-v{self.topcase_version}.zip")
|
||||
|
||||
@property
|
||||
def t1_key_store_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/AppleKeyStore-v{self.t1_key_store_version}.zip")
|
||||
|
||||
@property
|
||||
def t1_credential_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/AppleCredentialManager-v{self.t1_credential_version}.zip")
|
||||
|
||||
@property
|
||||
def t1_sse_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/AppleSSE-v{self.t1_sse_version}.zip")
|
||||
|
||||
@property
|
||||
def mousse_path(self):
|
||||
return self.payload_kexts_path / Path(f"SSE/AAAMouSSE-v{self.mousse_version}.zip")
|
||||
@@ -440,6 +463,14 @@ class Constants:
|
||||
def io80211elcap_path(self):
|
||||
return self.payload_kexts_path / Path(f"Wifi/IO80211ElCap-v{self.io80211elcap_version}.zip")
|
||||
|
||||
@property
|
||||
def io80211legacy_path(self):
|
||||
return self.payload_kexts_path / Path(f"Wifi/IO80211FamilyLegacy-v{self.io80211legacy_version}.zip")
|
||||
|
||||
@property
|
||||
def ioskywalk_path(self):
|
||||
return self.payload_kexts_path / Path(f"Wifi/IOSkywalkFamily-v{self.ioskywalk_version}.zip")
|
||||
|
||||
@property
|
||||
def applealc_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/AppleALC-v{self.applealc_version}-{self.kext_variant}.zip")
|
||||
@@ -472,6 +503,10 @@ class Constants:
|
||||
def aspp_override_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/ASPP-Override-v{self.aspp_override_version}.zip")
|
||||
|
||||
@property
|
||||
def ecm_override_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/ECM-Override-v{self.ecm_override_version}.zip")
|
||||
|
||||
@property
|
||||
def nvmefix_path(self):
|
||||
return self.payload_kexts_path / Path(f"Acidanthera/NVMeFix-v{self.nvmefix_version}-{self.kext_variant}.zip")
|
||||
@@ -541,6 +576,14 @@ class Constants:
|
||||
def kdkless_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/KDKlessWorkaround-v{self.kdkless_version}-{self.kext_variant}.zip")
|
||||
|
||||
@property
|
||||
def s3x_nvme_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/IOS3XeFamily-v{self.s3x_nvme_version}.zip")
|
||||
|
||||
@property
|
||||
def apple_camera_path(self):
|
||||
return self.payload_kexts_path / Path(f"Misc/AppleCameraInterface-v{self.apple_camera_version}.zip")
|
||||
|
||||
@property
|
||||
def plist_folder_path(self):
|
||||
return self.payload_kexts_path / Path("Plists")
|
||||
@@ -572,7 +615,7 @@ class Constants:
|
||||
|
||||
@property
|
||||
def opencore_zip_copied(self):
|
||||
return self.build_path / Path(f"OpenCore-{self.opencore_build}.zip")
|
||||
return self.build_path / Path(f"OpenCore-{'DEBUG' if self.opencore_debug is True else 'RELEASE'}.zip")
|
||||
|
||||
@property
|
||||
def oc_folder(self):
|
||||
@@ -680,6 +723,26 @@ class Constants:
|
||||
def icon_path_ssd(self):
|
||||
return self.payload_path / Path("Icon/SSD/.VolumeIcon.icns")
|
||||
|
||||
@property
|
||||
def icon_path_macos_generic(self):
|
||||
return self.payload_path / Path("Icon/AppIcons/Generic.icns")
|
||||
|
||||
@property
|
||||
def icon_path_macos_big_sur(self):
|
||||
return self.payload_path / Path("Icon/AppIcons/BigSur.icns")
|
||||
|
||||
@property
|
||||
def icon_path_macos_monterey(self):
|
||||
return self.payload_path / Path("Icon/AppIcons/Monterey.icns")
|
||||
|
||||
@property
|
||||
def icon_path_macos_ventura(self):
|
||||
return self.payload_path / Path("Icon/AppIcons/Ventura.icns")
|
||||
|
||||
@property
|
||||
def icon_path_macos_sonoma(self):
|
||||
return self.payload_path / Path("Icon/AppIcons/Sonoma.icns")
|
||||
|
||||
@property
|
||||
def gui_path(self):
|
||||
return self.payload_path / Path("Icon/Resources.zip")
|
||||
@@ -708,6 +771,16 @@ class Constants:
|
||||
return Path(self.launcher_binary).parent.parent / Path("Resources")
|
||||
|
||||
|
||||
@property
|
||||
def icons_path(self):
|
||||
return [
|
||||
str(self.icon_path_macos_generic),
|
||||
str(self.icon_path_macos_big_sur),
|
||||
str(self.icon_path_macos_monterey),
|
||||
str(self.icon_path_macos_ventura),
|
||||
str(self.icon_path_macos_sonoma)
|
||||
]
|
||||
|
||||
sbm_values = [
|
||||
"j137ap", # iMacPro1,1
|
||||
"j680ap", # MacBookPro15,1
|
||||
@@ -741,4 +814,4 @@ class Constants:
|
||||
"Mac-942B59F58194171B", # iMac12,2
|
||||
"Mac-94245AF5819B141B", # AppleInternal MacBookPro8,3
|
||||
"Mac-942B5B3A40C91381", # AppleInternal iMac12,2
|
||||
]
|
||||
]
|
||||
@@ -56,11 +56,6 @@ class GenerateDefaults:
|
||||
General probe for data
|
||||
"""
|
||||
|
||||
if "Book" in self.model:
|
||||
self.constants.set_content_caching = False
|
||||
else:
|
||||
self.constants.set_content_caching = True
|
||||
|
||||
if self.model in ["MacBookPro8,2", "MacBookPro8,3"]:
|
||||
# Users disabling TS2 most likely have a faulty dGPU
|
||||
# users can override this in settings
|
||||
@@ -152,8 +147,11 @@ class GenerateDefaults:
|
||||
Networking specific probe
|
||||
"""
|
||||
|
||||
is_legacy_wifi = False
|
||||
is_modern_wifi = False
|
||||
|
||||
if self.host_is_target:
|
||||
if not (
|
||||
if (
|
||||
(
|
||||
isinstance(self.constants.computer.wifi, device_probe.Broadcom) and
|
||||
self.constants.computer.wifi.chipset in [
|
||||
@@ -165,28 +163,54 @@ class GenerateDefaults:
|
||||
self.constants.computer.wifi.chipset == device_probe.Atheros.Chipsets.AirPortAtheros40
|
||||
)
|
||||
):
|
||||
return
|
||||
is_legacy_wifi = True
|
||||
elif (
|
||||
(
|
||||
isinstance(self.constants.computer.wifi, device_probe.Broadcom) and
|
||||
self.constants.computer.wifi.chipset in [
|
||||
device_probe.Broadcom.Chipsets.AirPortBrcm4360,
|
||||
device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
]
|
||||
)
|
||||
):
|
||||
is_modern_wifi = True
|
||||
|
||||
else:
|
||||
if not self.model in smbios_data.smbios_dictionary:
|
||||
print("Checking WiFi")
|
||||
if self.model not in smbios_data.smbios_dictionary:
|
||||
return
|
||||
if (
|
||||
smbios_data.smbios_dictionary[self.model]["Wireless Model"] not in [
|
||||
smbios_data.smbios_dictionary[self.model]["Wireless Model"] in [
|
||||
device_probe.Broadcom.Chipsets.AirPortBrcm4331,
|
||||
device_probe.Broadcom.Chipsets.AirPortBrcm43224,
|
||||
device_probe.Atheros.Chipsets.AirPortAtheros40
|
||||
device_probe.Atheros.Chipsets.AirPortAtheros40,
|
||||
]
|
||||
):
|
||||
return
|
||||
is_legacy_wifi = True
|
||||
elif (
|
||||
smbios_data.smbios_dictionary[self.model]["Wireless Model"] in [
|
||||
device_probe.Broadcom.Chipsets.AirPortBrcm4360,
|
||||
device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
]
|
||||
):
|
||||
print("Modern WiFi")
|
||||
is_modern_wifi = True
|
||||
|
||||
if is_legacy_wifi is False and is_modern_wifi is False:
|
||||
return
|
||||
|
||||
# 12.0: Legacy Wireless chipsets require root patching
|
||||
# 14.0: Modern Wireless chipsets require root patching
|
||||
self.constants.sip_status = False
|
||||
self.constants.secure_status = False
|
||||
self.constants.disable_cs_lv = True
|
||||
self.constants.disable_amfi = True
|
||||
|
||||
# 13.0: Enabling AirPlay to Mac patches breaks Control Center on legacy chipsets
|
||||
# AirPlay to Mac was unsupported regardless, so we can safely disable it
|
||||
self.constants.fu_status = True
|
||||
self.constants.fu_arguments = " -disable_sidecar_mac"
|
||||
if is_legacy_wifi is True:
|
||||
# 13.0: Enabling AirPlay to Mac patches breaks Control Center on legacy chipsets
|
||||
# AirPlay to Mac was unsupported regardless, so we can safely disable it
|
||||
self.constants.fu_status = True
|
||||
self.constants.fu_arguments = " -disable_sidecar_mac"
|
||||
|
||||
|
||||
def _misc_hardwares_probe(self) -> None:
|
||||
@@ -309,8 +333,6 @@ class GenerateDefaults:
|
||||
if is_key_enabled not in ["false", "0"]:
|
||||
subprocess.run(["defaults", "write", "-g", key, "-bool", "true"])
|
||||
|
||||
subprocess.run(["defaults", "write", "-g", "Amy.MenuBar2Beta", "-bool", "false"])
|
||||
|
||||
def _check_amfipass_supported(self) -> None:
|
||||
"""
|
||||
Check if root volume supports AMFIPass
|
||||
|
||||
@@ -15,6 +15,10 @@ from resources import utilities, ioreg
|
||||
from data import pci_data, usb_data
|
||||
|
||||
|
||||
def class_code_to_bytes(class_code: int) -> bytes:
|
||||
return class_code.to_bytes(4, byteorder="little")
|
||||
|
||||
|
||||
@dataclass
|
||||
class CPU:
|
||||
name: str
|
||||
@@ -113,6 +117,7 @@ class USBDevice:
|
||||
@dataclass
|
||||
class PCIDevice:
|
||||
VENDOR_ID: ClassVar[int] # Default vendor id, for subclasses.
|
||||
CLASS_CODES: ClassVar[list[int]] # Default class codes, for subclasses.
|
||||
|
||||
vendor_id: int # The vendor ID of this PCI device
|
||||
device_id: int # The device ID of this PCI device
|
||||
@@ -127,6 +132,13 @@ class PCIDevice:
|
||||
vendor_id_unspoofed: Optional[int] = -1 # Unspoofed vendor ID of this PCI device
|
||||
device_id_unspoofed: Optional[int] = -1 # Unspoofed device ID of this PCI device
|
||||
|
||||
@classmethod
|
||||
def class_code_matching_dict(cls) -> dict:
|
||||
return {
|
||||
"IOProviderClass": "IOPCIDevice",
|
||||
"IOPropertyMatch": [{"class-code": class_code_to_bytes(class_code)} for class_code in cls.CLASS_CODES]
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_ioregistry(cls, entry: ioreg.io_registry_entry_t, anti_spoof=False):
|
||||
properties: dict = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperties(entry, None, ioreg.kCFAllocatorDefault, ioreg.kNilOptions)[1]) # type: ignore
|
||||
@@ -157,7 +169,7 @@ class PCIDevice:
|
||||
device = cls(vendor_id, device_id, int.from_bytes(properties["class-code"][:6], byteorder="little"), name=ioreg.io_name_t_to_str(ioreg.IORegistryEntryGetName(entry, None)[1]))
|
||||
if "model" in properties:
|
||||
model = properties["model"]
|
||||
if type(model) is bytes:
|
||||
if isinstance(model, bytes):
|
||||
model = model.strip(b"\0").decode()
|
||||
device.model = model
|
||||
if "acpi-path" in properties:
|
||||
@@ -172,7 +184,7 @@ class PCIDevice:
|
||||
device.populate_pci_path(entry)
|
||||
return device
|
||||
|
||||
def vendor_detect(self, *, inherits: ClassVar[Any] = None, classes: list = None):
|
||||
def vendor_detect(self, *, inherits: Optional[Type["PCIDevice"]] = None, classes: Optional[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
|
||||
@@ -180,7 +192,7 @@ class PCIDevice:
|
||||
|
||||
@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
|
||||
return device.vendor_id == cls.VENDOR_ID and ((device.class_code in cls.CLASS_CODES) if getattr(cls, "CLASS_CODES", None) else True) and ((device.class_code == cls.CLASS_CODE) if getattr(cls, "CLASS_CODE", None) else True) # type: ignore # pylint: disable=no-member
|
||||
|
||||
def populate_pci_path(self, original_entry: ioreg.io_registry_entry_t):
|
||||
# Based off gfxutil logic, seems to work.
|
||||
@@ -213,6 +225,7 @@ class PCIDevice:
|
||||
|
||||
@dataclass
|
||||
class GPU(PCIDevice):
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x030000, 0x038000]
|
||||
arch: enum.Enum = field(init=False) # The architecture, see subclasses.
|
||||
|
||||
def __post_init__(self):
|
||||
@@ -224,7 +237,7 @@ class GPU(PCIDevice):
|
||||
|
||||
@dataclass
|
||||
class WirelessCard(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x028000 # 00800200 hexswapped
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x028000]
|
||||
country_code: str = field(init=False)
|
||||
chipset: enum.Enum = field(init=False)
|
||||
|
||||
@@ -254,47 +267,65 @@ class WirelessCard(PCIDevice):
|
||||
|
||||
@dataclass
|
||||
class NVMeController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x010802
|
||||
CLASS_CODES: ClassVar[list[int]] = [
|
||||
0x010802,
|
||||
# I don't know if this is a typo or what, but Apple controllers are 01:80:02, not 01:08:02
|
||||
0x018002
|
||||
]
|
||||
|
||||
aspm: Optional[int] = None
|
||||
# parent_aspm: Optional[int] = None
|
||||
|
||||
@classmethod
|
||||
def from_ioregistry(cls, entry: ioreg.io_registry_entry_t, anti_spoof=True):
|
||||
device = super().from_ioregistry(entry, anti_spoof=anti_spoof)
|
||||
|
||||
device.aspm: Union[int, bytes] = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperty(entry, "pci-aspm-default", ioreg.kCFAllocatorDefault, ioreg.kNilOptions)) or 0 # type: ignore
|
||||
if isinstance(device.aspm, bytes):
|
||||
device.aspm = int.from_bytes(device.aspm, byteorder="little")
|
||||
|
||||
return device
|
||||
|
||||
|
||||
@dataclass
|
||||
class EthernetController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x020000
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x020000]
|
||||
|
||||
chipset: enum.Enum = field(init=False)
|
||||
|
||||
def __post_init__(self):
|
||||
self.detect_chipset()
|
||||
|
||||
def detect_chipset(self):
|
||||
raise NotImplementedError
|
||||
|
||||
@dataclass
|
||||
class SATAController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x010601
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x010601]
|
||||
|
||||
@dataclass
|
||||
class SASController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x010400
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x010400]
|
||||
|
||||
@dataclass
|
||||
class XHCIController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x0c0330
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x0c0330]
|
||||
|
||||
@dataclass
|
||||
class EHCIController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x0c0320
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x0c0320]
|
||||
|
||||
@dataclass
|
||||
class OHCIController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x0c0310
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x0c0310]
|
||||
|
||||
@dataclass
|
||||
class UHCIController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x0c0300
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x0c0300]
|
||||
|
||||
@dataclass
|
||||
class SDXCController(PCIDevice):
|
||||
CLASS_CODE: ClassVar[int] = 0x080501
|
||||
CLASS_CODES: ClassVar[list[int]] = [0x080501]
|
||||
|
||||
@dataclass
|
||||
class NVIDIA(GPU):
|
||||
@@ -467,6 +498,7 @@ class Broadcom(WirelessCard):
|
||||
# pylint: disable=invalid-name
|
||||
AppleBCMWLANBusInterfacePCIe = "AppleBCMWLANBusInterfacePCIe supported"
|
||||
AirportBrcmNIC = "AirportBrcmNIC supported"
|
||||
AirPortBrcmNICThirdParty = "AirPortBrcmNICThirdParty supported"
|
||||
AirPortBrcm4360 = "AirPortBrcm4360 supported"
|
||||
AirPortBrcm4331 = "AirPortBrcm4331 supported"
|
||||
AirPortBrcm43224 = "AppleAirPortBrcm43224 supported"
|
||||
@@ -479,6 +511,8 @@ class Broadcom(WirelessCard):
|
||||
self.chipset = Broadcom.Chipsets.AppleBCMWLANBusInterfacePCIe
|
||||
elif self.device_id in pci_data.broadcom_ids.AirPortBrcmNIC:
|
||||
self.chipset = Broadcom.Chipsets.AirportBrcmNIC
|
||||
elif self.device_id in pci_data.broadcom_ids.AirPortBrcmNICThirdParty:
|
||||
self.chipset = Broadcom.Chipsets.AirPortBrcmNICThirdParty
|
||||
elif self.device_id in pci_data.broadcom_ids.AirPortBrcm4360:
|
||||
self.chipset = Broadcom.Chipsets.AirPortBrcm4360
|
||||
elif self.device_id in pci_data.broadcom_ids.AirPortBrcm4331:
|
||||
@@ -587,7 +621,7 @@ class Computer:
|
||||
storage: list[PCIDevice] = field(default_factory=list)
|
||||
usb_controllers: list[PCIDevice] = field(default_factory=list)
|
||||
sdxc_controller: list[PCIDevice] = field(default_factory=list)
|
||||
ethernet: Optional[EthernetController] = field(default_factory=list)
|
||||
ethernet: list[EthernetController] = field(default_factory=list)
|
||||
wifi: Optional[WirelessCard] = None
|
||||
cpu: Optional[CPU] = None
|
||||
usb_devices: list[USBDevice] = field(default_factory=list)
|
||||
@@ -599,6 +633,7 @@ class Computer:
|
||||
trackpad_type: Optional[str] = None
|
||||
ambient_light_sensor: Optional[bool] = False
|
||||
third_party_sata_ssd: Optional[bool] = False
|
||||
pcie_webcam: Optional[bool] = False
|
||||
secure_boot_model: Optional[str] = None
|
||||
secure_boot_policy: Optional[int] = None
|
||||
oclp_sys_version: Optional[str] = None
|
||||
@@ -625,6 +660,7 @@ class Computer:
|
||||
computer.bluetooth_probe()
|
||||
computer.topcase_probe()
|
||||
computer.ambient_light_sensor_probe()
|
||||
computer.pcie_webcam_probe()
|
||||
computer.sata_disk_probe()
|
||||
computer.oclp_sys_patch_probe()
|
||||
computer.check_rosetta()
|
||||
@@ -646,10 +682,10 @@ class Computer:
|
||||
|
||||
|
||||
def gpu_probe(self):
|
||||
# Chain together two iterators: one for class code 00000300, the other for class code 00800300
|
||||
# Chain together two iterators: one for class code 03:00:00, the other for class code 03:80:00
|
||||
devices = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault, {"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex("00000300")}, {"class-code": binascii.a2b_hex("00800300")}]}, None
|
||||
ioreg.kIOMasterPortDefault, GPU.class_code_matching_dict(), None
|
||||
)[1]
|
||||
)
|
||||
|
||||
@@ -685,7 +721,7 @@ class Computer:
|
||||
devices = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault,
|
||||
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": {"class-code": binascii.a2b_hex(utilities.hexswap(hex(WirelessCard.CLASS_CODE)[2:].zfill(8)))}},
|
||||
WirelessCard.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
@@ -703,11 +739,18 @@ class Computer:
|
||||
self.ambient_light_sensor = True
|
||||
ioreg.IOObjectRelease(device)
|
||||
|
||||
def pcie_webcam_probe(self):
|
||||
# CMRA/14E4:1570
|
||||
device = next(ioreg.ioiterator_to_list(ioreg.IOServiceGetMatchingServices(ioreg.kIOMasterPortDefault, ioreg.IOServiceNameMatching("CMRA".encode()), None)[1]), None)
|
||||
if device:
|
||||
self.pcie_webcam = True
|
||||
ioreg.IOObjectRelease(device)
|
||||
|
||||
def sdxc_controller_probe(self):
|
||||
sdxc_controllers = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault,
|
||||
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(utilities.hexswap(hex(SDXCController.CLASS_CODE)[2:].zfill(8)))}]},
|
||||
SDXCController.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
@@ -720,21 +763,21 @@ class Computer:
|
||||
xhci_controllers = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault,
|
||||
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(utilities.hexswap(hex(XHCIController.CLASS_CODE)[2:].zfill(8)))}]},
|
||||
XHCIController.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
ehci_controllers = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault,
|
||||
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(utilities.hexswap(hex(EHCIController.CLASS_CODE)[2:].zfill(8)))}]},
|
||||
EHCIController.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
ohci_controllers = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault,
|
||||
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(utilities.hexswap(hex(OHCIController.CLASS_CODE)[2:].zfill(8)))}]},
|
||||
OHCIController.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
@@ -742,7 +785,7 @@ class Computer:
|
||||
uhci_controllers = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault,
|
||||
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(utilities.hexswap(hex(UHCIController.CLASS_CODE)[2:].zfill(8)))}]},
|
||||
UHCIController.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
@@ -763,7 +806,7 @@ class Computer:
|
||||
ethernet_controllers = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault,
|
||||
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(utilities.hexswap(hex(EthernetController.CLASS_CODE)[2:].zfill(8)))}]},
|
||||
EthernetController.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
@@ -778,21 +821,23 @@ class Computer:
|
||||
sata_controllers = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault,
|
||||
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(utilities.hexswap(hex(SATAController.CLASS_CODE)[2:].zfill(8)))}]},
|
||||
SATAController.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
sas_controllers = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault,
|
||||
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(utilities.hexswap(hex(SASController.CLASS_CODE)[2:].zfill(8)))}]},
|
||||
SASController.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
|
||||
nvme_controllers = ioreg.ioiterator_to_list(
|
||||
ioreg.IOServiceGetMatchingServices(
|
||||
ioreg.kIOMasterPortDefault, {"IOProviderClass": "IONVMeController", "IOParentMatch": {"IOProviderClass": "IOPCIDevice"}, "IOPropertyMatch": {"IOClass": "IONVMeController"}}, None
|
||||
ioreg.kIOMasterPortDefault,
|
||||
NVMeController.class_code_matching_dict(),
|
||||
None,
|
||||
)[1]
|
||||
)
|
||||
for device in sata_controllers:
|
||||
@@ -804,22 +849,9 @@ class Computer:
|
||||
ioreg.IOObjectRelease(device)
|
||||
|
||||
for device in nvme_controllers:
|
||||
parent = ioreg.IORegistryEntryGetParentEntry(device, "IOService".encode(), None)[1]
|
||||
self.storage.append(NVMeController.from_ioregistry(device))
|
||||
ioreg.IOObjectRelease(device)
|
||||
|
||||
aspm: Union[int, bytes] = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperty(parent, "pci-aspm-default", ioreg.kCFAllocatorDefault, ioreg.kNilOptions)) or 0 # type: ignore
|
||||
if isinstance(aspm, bytes):
|
||||
aspm = int.from_bytes(aspm, byteorder="little")
|
||||
|
||||
controller = NVMeController.from_ioregistry(parent)
|
||||
controller.aspm = aspm
|
||||
|
||||
if controller.vendor_id != 0x106B:
|
||||
# Handle Apple Vendor ID
|
||||
self.storage.append(controller)
|
||||
|
||||
ioreg.IOObjectRelease(parent)
|
||||
|
||||
def smbios_probe(self):
|
||||
# Reported model
|
||||
entry = next(ioreg.ioiterator_to_list(ioreg.IOServiceGetMatchingServices(ioreg.kIOMasterPortDefault, ioreg.IOServiceMatching("IOPlatformExpertDevice".encode()), None)[1]))
|
||||
@@ -903,7 +935,7 @@ class Computer:
|
||||
self.trackpad_type = "Legacy"
|
||||
elif usb_device.device_id in usb_data.AppleIDs.AppleUSBMultiTouch:
|
||||
self.trackpad_type = "Modern"
|
||||
|
||||
|
||||
def sata_disk_probe(self):
|
||||
# Get all SATA Controllers/Disks from 'system_profiler SPSerialATADataType'
|
||||
# Determine whether SATA SSD is present and Apple-made
|
||||
@@ -944,7 +976,7 @@ class Computer:
|
||||
|
||||
def check_rosetta(self):
|
||||
result = subprocess.run("sysctl -in sysctl.proc_translated".split(), stdout=subprocess.PIPE).stdout.decode()
|
||||
if result:
|
||||
if "1" in result:
|
||||
self.rosetta_active = True
|
||||
else:
|
||||
self.rosetta_active = False
|
||||
@@ -234,7 +234,7 @@ class RemoteInstallerCatalog:
|
||||
Parses Apple's Software Update catalog and finds all macOS installers.
|
||||
"""
|
||||
|
||||
def __init__(self, seed_override: SeedType = SeedType.PublicRelease, os_override: int = os_data.os_data.ventura) -> None:
|
||||
def __init__(self, seed_override: SeedType = SeedType.PublicRelease, os_override: int = os_data.os_data.sonoma) -> None:
|
||||
|
||||
self.catalog_url: str = self._construct_catalog_url(seed_override, os_override)
|
||||
|
||||
@@ -373,6 +373,7 @@ class RemoteInstallerCatalog:
|
||||
download_link = None
|
||||
integrity = None
|
||||
size = None
|
||||
date = catalog["Products"][product]["PostDate"]
|
||||
|
||||
for ia_package in catalog["Products"][product]["Packages"]:
|
||||
if "InstallAssistant.pkg" not in ia_package["URL"]:
|
||||
@@ -386,6 +387,7 @@ class RemoteInstallerCatalog:
|
||||
integrity = ia_package["IntegrityDataURL"]
|
||||
size = ia_package["Size"] if ia_package["Size"] else 0
|
||||
|
||||
|
||||
if any([version, build, download_link, size, integrity]) is None:
|
||||
continue
|
||||
|
||||
@@ -400,10 +402,12 @@ class RemoteInstallerCatalog:
|
||||
"Variant": catalog_url,
|
||||
"OS": os_data.os_conversion.os_to_kernel(version),
|
||||
"Models": build_plist["MobileAssetProperties"]["SupportedDeviceModels"],
|
||||
"Date": date
|
||||
}
|
||||
})
|
||||
|
||||
available_apps = {k: v for k, v in sorted(available_apps.items(), key=lambda x: x[1]['Version'])}
|
||||
|
||||
return available_apps
|
||||
|
||||
|
||||
@@ -421,8 +425,7 @@ class RemoteInstallerCatalog:
|
||||
return {}
|
||||
|
||||
newest_apps: dict = self.available_apps.copy()
|
||||
supported_versions = ["10.13", "10.14", "10.15", "11", "12", "13"]
|
||||
|
||||
supported_versions = ["10.13", "10.14", "10.15", "11", "12", "13", "14"]
|
||||
|
||||
for version in supported_versions:
|
||||
remote_version_minor = 0
|
||||
@@ -489,11 +492,6 @@ class RemoteInstallerCatalog:
|
||||
newest_apps.pop(ia)
|
||||
break
|
||||
|
||||
# Remove unsupported versions (namely 14)
|
||||
for ia in list(newest_apps):
|
||||
if newest_apps[ia]["Version"].split(".")[0] not in supported_versions:
|
||||
newest_apps.pop(ia)
|
||||
|
||||
return newest_apps
|
||||
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ class RoutePayloadDiskImage:
|
||||
"""
|
||||
|
||||
if self.constants.wxpython_variant is True and not self.constants.launcher_script:
|
||||
logging.info("Running in Binary GUI mode, switching to tmp directory")
|
||||
logging.info("Running in compiled binary, switching to tmp directory")
|
||||
self.temp_dir = tempfile.TemporaryDirectory()
|
||||
logging.info(f"New payloads location: {self.temp_dir.name}")
|
||||
logging.info("Creating payloads directory")
|
||||
@@ -71,7 +71,7 @@ class RoutePayloadDiskImage:
|
||||
dmg_info = plistlib.loads(dmg_info.stdout)
|
||||
|
||||
|
||||
for variant in ["Universal-Binaries.dmg", "payloads.dmg"]:
|
||||
for variant in ["DortaniaInternalResources.dmg", "Universal-Binaries.dmg", "payloads.dmg"]:
|
||||
for image in dmg_info["images"]:
|
||||
if image["image-path"].endswith(variant):
|
||||
if unmount_all_active is False:
|
||||
|
||||
@@ -32,12 +32,13 @@
|
||||
# This is because Apple removed on-disk binaries (ref: https://github.com/dortania/OpenCore-Legacy-Patcher/issues/998)
|
||||
# 'sudo ditto /Library/Developer/KDKs/<KDK Version>/System /System/Volumes/Update/mnt1/System'
|
||||
|
||||
import logging
|
||||
import plistlib
|
||||
import shutil
|
||||
import subprocess
|
||||
import applescript
|
||||
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
import logging
|
||||
|
||||
from resources import constants, utilities, kdk_handler
|
||||
from resources.sys_patch import sys_patch_detect, sys_patch_auto, sys_patch_helpers, sys_patch_generate
|
||||
@@ -279,6 +280,8 @@ class PatchSysVolume:
|
||||
if self.needs_kmutil_exemptions is True:
|
||||
logging.info("Note: Apple will require you to open System Preferences -> Security to allow the new kernel extensions to be loaded")
|
||||
self.constants.root_patcher_succeeded = True
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def _rebuild_kernel_collection(self) -> bool:
|
||||
@@ -417,9 +420,11 @@ class PatchSysVolume:
|
||||
"""
|
||||
Unmount root volume
|
||||
"""
|
||||
|
||||
logging.info("- Unmounting Root Volume (Don't worry if this fails)")
|
||||
utilities.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
if self.root_mount_path:
|
||||
logging.info("- Unmounting Root Volume (Don't worry if this fails)")
|
||||
utilities.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
else:
|
||||
logging.info("- Skipping Root Volume unmount")
|
||||
|
||||
|
||||
def _rebuild_dyld_shared_cache(self) -> None:
|
||||
@@ -863,6 +868,75 @@ class PatchSysVolume:
|
||||
return False
|
||||
|
||||
logging.info("- Mounted Universal-Binaries.dmg")
|
||||
if self.constants.cli_mode is False and Path(self.constants.overlay_psp_path_dmg).exists() and Path("~/.dortania_developer").expanduser().exists():
|
||||
icon_path = str(self.constants.app_icon_path).replace("/", ":")[1:]
|
||||
msg = "Welcome to the DortaniaInternal Program, please provided the decryption key to access internal resources. Press cancel to skip."
|
||||
password = Path("~/.dortania_developer_key").expanduser().read_text().strip() if Path("~/.dortania_developer_key").expanduser().exists() else ""
|
||||
for i in range(3):
|
||||
try:
|
||||
if password == "":
|
||||
password = applescript.AppleScript(
|
||||
f"""
|
||||
set theResult to display dialog "{msg}" default answer "" with hidden answer with title "OpenCore Legacy Patcher" with icon file "{icon_path}"
|
||||
|
||||
return the text returned of theResult
|
||||
"""
|
||||
).run()
|
||||
|
||||
result = subprocess.run(
|
||||
[
|
||||
"hdiutil", "attach", "-noverify", f"{self.constants.overlay_psp_path_dmg}",
|
||||
"-mountpoint", Path(self.constants.payload_path / Path("DortaniaInternal")),
|
||||
"-nobrowse",
|
||||
"-passphrase", password
|
||||
],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
||||
)
|
||||
if result.returncode == 0:
|
||||
logging.info("- Mounted DortaniaInternal resources")
|
||||
result = subprocess.run(
|
||||
[
|
||||
"ditto", f"{self.constants.payload_path / Path('DortaniaInternal')}", f"{self.constants.payload_path / Path('Universal-Binaries')}"
|
||||
],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
||||
)
|
||||
if result.returncode == 0:
|
||||
return True
|
||||
|
||||
logging.info("- Failed to merge DortaniaInternal resources")
|
||||
logging.info(f"Output: {result.stdout.decode()}")
|
||||
logging.info(f"Return Code: {result.returncode}")
|
||||
return False
|
||||
|
||||
logging.info("- Failed to mount DortaniaInternal resources")
|
||||
logging.info(f"Output: {result.stdout.decode()}")
|
||||
logging.info(f"Return Code: {result.returncode}")
|
||||
|
||||
if "Authentication error" not in result.stdout.decode():
|
||||
try:
|
||||
# Display that the disk image might be corrupted
|
||||
applescript.AppleScript(
|
||||
f"""
|
||||
display dialog "Failed to mount DortaniaInternal resources, please file an internal radar:\n\n{result.stdout.decode()}" with title "OpenCore Legacy Patcher" with icon file "{icon_path}"
|
||||
"""
|
||||
).run()
|
||||
return False
|
||||
except Exception as e:
|
||||
pass
|
||||
break
|
||||
msg = f"Decryption failed, please try again. {2 - i} attempts remaining. "
|
||||
password = ""
|
||||
|
||||
if i == 2:
|
||||
applescript.AppleScript(
|
||||
f"""
|
||||
display dialog "Failed to mount DortaniaInternal resources, too many incorrect passwords. If this continues with the correct decryption key, please file an internal radar." with title "OpenCore Legacy Patcher" with icon file "{icon_path}"
|
||||
"""
|
||||
).run()
|
||||
return False
|
||||
except Exception as e:
|
||||
break
|
||||
|
||||
return True
|
||||
|
||||
logging.info("- PatcherSupportPkg resources missing, Patcher likely corrupted!!!")
|
||||
|
||||
@@ -83,7 +83,6 @@ class AutomaticSysPatch:
|
||||
if patches[patch] is True and not patch.startswith("Settings") and not patch.startswith("Validation"):
|
||||
patch_string += f"- {patch}\n"
|
||||
|
||||
logging.info("- No new binaries found on Github, proceeding with patching")
|
||||
logging.info("- No new binaries found on Github, proceeding with patching")
|
||||
if self.constants.launcher_script is None:
|
||||
args_string = f"'{self.constants.launcher_binary}' --gui_patch"
|
||||
|
||||
@@ -40,6 +40,7 @@ class DetectRootPatch:
|
||||
self.broadwell_gpu = False
|
||||
self.skylake_gpu = False
|
||||
self.legacy_gcn = False
|
||||
self.legacy_gcn_v2 = False
|
||||
self.legacy_polaris = False
|
||||
self.legacy_vega = False
|
||||
|
||||
@@ -47,9 +48,11 @@ class DetectRootPatch:
|
||||
self.brightness_legacy = False
|
||||
self.legacy_audio = False
|
||||
self.legacy_wifi = False
|
||||
self.modern_wifi = False
|
||||
self.legacy_gmux = False
|
||||
self.legacy_keyboard_backlight = False
|
||||
self.legacy_uhci_ohci = False
|
||||
self.legacy_pcie_webcam = False
|
||||
|
||||
# Patch Requirements
|
||||
self.amfi_must_disable = False
|
||||
@@ -156,12 +159,20 @@ class DetectRootPatch:
|
||||
# full compatibility (namely power states, etc)
|
||||
# Reference: https://github.com/dortania/bugtracker/issues/292
|
||||
# TODO: Probe framebuffer families further
|
||||
if self.model != "MacBookPro13,3":
|
||||
# Sonoma note: MacBookPro14,3 has the same issue...
|
||||
# iMac18,2/3 is partially affected, however currently it seems the generic framebuffer
|
||||
# is sufficient. Only MacBookPro14,3 needs this for dGPU handling
|
||||
if self.model not in ["MacBookPro13,3", "MacBookPro14,3"]:
|
||||
if "AVX2" in self.constants.computer.cpu.leafs:
|
||||
continue
|
||||
self.legacy_polaris = True
|
||||
else:
|
||||
self.legacy_gcn = True
|
||||
if self.model == "MacBookPro13,3":
|
||||
self.legacy_gcn = True
|
||||
elif self.model == "MacBookPro14,3":
|
||||
if self.constants.detected_os < os_data.os_data.sonoma:
|
||||
continue
|
||||
self.legacy_gcn_v2 = True
|
||||
else:
|
||||
self.legacy_gcn = True
|
||||
self.supports_metal = True
|
||||
@@ -217,6 +228,9 @@ class DetectRootPatch:
|
||||
self.skylake_gpu = True
|
||||
self.amfi_must_disable = True
|
||||
self.supports_metal = True
|
||||
|
||||
|
||||
|
||||
if self.supports_metal is True:
|
||||
# Avoid patching Metal and non-Metal GPUs if both present, prioritize Metal GPU
|
||||
# Main concerns are for iMac12,x with Sandy iGPU and Kepler dGPU
|
||||
@@ -228,7 +242,7 @@ class DetectRootPatch:
|
||||
self.sandy_gpu = False
|
||||
self.legacy_keyboard_backlight = False
|
||||
|
||||
if self.legacy_gcn is True:
|
||||
if self.legacy_gcn is True or self.legacy_gcn_v2 is True:
|
||||
# We can only support one or the other due to the nature of relying
|
||||
# on portions of the native AMD stack for Polaris and Vega
|
||||
# Thus we'll prioritize legacy GCN due to being the internal card
|
||||
@@ -243,7 +257,6 @@ class DetectRootPatch:
|
||||
if self.requires_root_kc is True:
|
||||
self.missing_kdk = not self._check_kdk()
|
||||
|
||||
self._check_networking_support()
|
||||
|
||||
|
||||
def _check_networking_support(self):
|
||||
@@ -257,9 +270,10 @@ class DetectRootPatch:
|
||||
On subsequent runs, we'll require networking to be enabled.
|
||||
"""
|
||||
|
||||
if self.constants.detected_os < os_data.os_data.ventura:
|
||||
# Increase OS check if modern wifi is detected
|
||||
if self.constants.detected_os < (os_data.os_data.ventura if self.legacy_wifi is True else os_data.os_data.sonoma):
|
||||
return
|
||||
if self.legacy_wifi is False:
|
||||
if self.legacy_wifi is False and self.modern_wifi is False:
|
||||
return
|
||||
if self.requires_root_kc is False:
|
||||
return
|
||||
@@ -273,7 +287,7 @@ class DetectRootPatch:
|
||||
oclp_patch_path = "/System/Library/CoreServices/OpenCore-Legacy-Patcher.plist"
|
||||
if Path(oclp_patch_path).exists():
|
||||
oclp_plist = plistlib.load(open(oclp_patch_path, "rb"))
|
||||
if "Legacy Wireless" in oclp_plist:
|
||||
if "Legacy Wireless" in oclp_plist or "Modern Wireless" in oclp_plist:
|
||||
return
|
||||
|
||||
# Due to the reliance of KDKs for most older patches, we'll allow KDK-less
|
||||
@@ -289,6 +303,7 @@ class DetectRootPatch:
|
||||
self.iron_gpu = False
|
||||
self.sandy_gpu = False
|
||||
self.legacy_gcn = False
|
||||
self.legacy_gcn_v2 = False
|
||||
self.legacy_polaris = False
|
||||
self.legacy_vega = False
|
||||
self.brightness_legacy = False
|
||||
@@ -296,6 +311,14 @@ class DetectRootPatch:
|
||||
self.legacy_gmux = False
|
||||
self.legacy_keyboard_backlight = False
|
||||
|
||||
# Currently all graphics patches require a KDK
|
||||
if self.constants.detected_os >= os_data.os_data.sonoma:
|
||||
self.kepler_gpu = False
|
||||
self.ivy_gpu = False
|
||||
self.haswell_gpu = False
|
||||
self.broadwell_gpu = False
|
||||
self.skylake_gpu = False
|
||||
|
||||
|
||||
def _check_dgpu_status(self):
|
||||
"""
|
||||
@@ -417,7 +440,7 @@ class DetectRootPatch:
|
||||
Base check to ensure patcher is compatible with host OS
|
||||
"""
|
||||
min_os = os_data.os_data.big_sur
|
||||
max_os = os_data.os_data.ventura
|
||||
max_os = os_data.os_data.sonoma
|
||||
if self.constants.detected_os < min_os or self.constants.detected_os > max_os:
|
||||
return False
|
||||
return True
|
||||
@@ -493,11 +516,11 @@ class DetectRootPatch:
|
||||
return False
|
||||
|
||||
# If we're on a Mac, check for Penryn or older
|
||||
# This is due to Apple implementing an internal USB hub on post-Penryn (excluding MacPro4,1 and MacPro5,1)
|
||||
# This is due to Apple implementing an internal USB hub on post-Penryn (excluding MacPro4,1, MacPro5,1 and Xserve3,1)
|
||||
# Ref: https://techcommunity.microsoft.com/t5/microsoft-usb-blog/reasons-to-avoid-companion-controllers/ba-p/270710
|
||||
if (
|
||||
smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.CPUGen.penryn.value or \
|
||||
self.model in ["MacPro4,1", "MacPro5,1"]
|
||||
self.model in ["MacPro4,1", "MacPro5,1", "Xserve3,1"]
|
||||
):
|
||||
return True
|
||||
|
||||
@@ -515,6 +538,8 @@ class DetectRootPatch:
|
||||
|
||||
self.has_network = network_handler.NetworkUtilities().verify_network_connection()
|
||||
|
||||
self.legacy_pcie_webcam = self.constants.computer.pcie_webcam
|
||||
|
||||
if self._check_uhci_ohci() is True:
|
||||
self.legacy_uhci_ohci = True
|
||||
self.requires_root_kc = True
|
||||
@@ -538,6 +563,20 @@ class DetectRootPatch:
|
||||
if self.constants.detected_os >= os_data.os_data.ventura:
|
||||
# Due to extracted frameworks for IO80211.framework and co, check library validation
|
||||
self.amfi_must_disable = True
|
||||
if self.constants.detected_os > os_data.os_data.ventura:
|
||||
self.amfi_shim_bins = True
|
||||
|
||||
if (
|
||||
isinstance(self.constants.computer.wifi, device_probe.Broadcom)
|
||||
and self.constants.computer.wifi.chipset in [
|
||||
device_probe.Broadcom.Chipsets.AirPortBrcm4360,
|
||||
device_probe.Broadcom.Chipsets.AirportBrcmNIC,
|
||||
# We don't officially support this chipset, however we'll throw a bone to hackintosh users
|
||||
device_probe.Broadcom.Chipsets.AirPortBrcmNICThirdParty,
|
||||
]):
|
||||
if self.constants.detected_os > os_data.os_data.ventura:
|
||||
self.modern_wifi = True
|
||||
self.amfi_shim_bins = True
|
||||
|
||||
# if self.model in ["MacBookPro5,1", "MacBookPro5,2", "MacBookPro5,3", "MacBookPro8,2", "MacBookPro8,3"]:
|
||||
if self.model in ["MacBookPro8,2", "MacBookPro8,3"]:
|
||||
@@ -554,6 +593,9 @@ class DetectRootPatch:
|
||||
self.legacy_gmux = True
|
||||
|
||||
self._detect_gpus()
|
||||
# This must be performed last, as it may override previous decisions
|
||||
# Namely, whether we allow patches requiring KDKs
|
||||
self._check_networking_support()
|
||||
|
||||
self.root_patch_dict = {
|
||||
"Graphics: Nvidia Tesla": self.nvidia_tesla,
|
||||
@@ -562,6 +604,7 @@ class DetectRootPatch:
|
||||
"Graphics: AMD TeraScale 1": self.amd_ts1,
|
||||
"Graphics: AMD TeraScale 2": self.amd_ts2,
|
||||
"Graphics: AMD Legacy GCN": self.legacy_gcn,
|
||||
"Graphics: AMD Legacy GCN (2017)": self.legacy_gcn_v2,
|
||||
"Graphics: AMD Legacy Polaris": self.legacy_polaris,
|
||||
"Graphics: AMD Legacy Vega": self.legacy_vega,
|
||||
"Graphics: Intel Ironlake": self.iron_gpu,
|
||||
@@ -573,9 +616,11 @@ class DetectRootPatch:
|
||||
"Brightness: Legacy Backlight Control": self.brightness_legacy,
|
||||
"Audio: Legacy Realtek": self.legacy_audio,
|
||||
"Networking: Legacy Wireless": self.legacy_wifi,
|
||||
"Networking: Modern Wireless": self.modern_wifi,
|
||||
"Miscellaneous: Legacy GMUX": self.legacy_gmux,
|
||||
"Miscellaneous: Legacy Keyboard Backlight": self.legacy_keyboard_backlight,
|
||||
"Miscellaneous: Legacy USB 1.1": self.legacy_uhci_ohci,
|
||||
"Miscellaneous: PCIe FaceTime Camera": self.legacy_pcie_webcam,
|
||||
"Settings: Requires AMFI exemption": self.amfi_must_disable,
|
||||
"Settings: Supports Auxiliary Cache": not self.requires_root_kc,
|
||||
"Settings: Kernel Debug Kit missing": self.missing_kdk if self.constants.detected_os >= os_data.os_data.ventura.value else False,
|
||||
|
||||
@@ -139,6 +139,8 @@ class GenerateRootPatchSets:
|
||||
required_patches.update({"Revert GVA Downgrade": all_hardware_patchset["Graphics"]["Revert GVA Downgrade"]})
|
||||
if "AVX2" not in self.constants.computer.cpu.leafs:
|
||||
required_patches.update({"AMD OpenCL": all_hardware_patchset["Graphics"]["AMD OpenCL"]})
|
||||
if self.hardware_details["Graphics: AMD Legacy GCN (2017)"] is True:
|
||||
required_patches.update({"AMD Legacy GCN v2": all_hardware_patchset["Graphics"]["AMD Legacy GCN v2"]})
|
||||
|
||||
if self.hardware_details["Graphics: AMD Legacy Vega"] is True:
|
||||
required_patches.update({"Monterey GVA": all_hardware_patchset["Graphics"]["Monterey GVA"]})
|
||||
@@ -163,6 +165,9 @@ class GenerateRootPatchSets:
|
||||
required_patches.update({"Legacy Wireless": all_hardware_patchset["Networking"]["Legacy Wireless"]})
|
||||
required_patches.update({"Legacy Wireless Extended": all_hardware_patchset["Networking"]["Legacy Wireless Extended"]})
|
||||
|
||||
if self.hardware_details["Networking: Modern Wireless"] is True:
|
||||
required_patches.update({"Legacy Wireless": all_hardware_patchset["Networking"]["Modern Wireless"]})
|
||||
|
||||
if self.hardware_details["Miscellaneous: Legacy GMUX"] is True:
|
||||
required_patches.update({"Legacy GMUX": all_hardware_patchset["Miscellaneous"]["Legacy GMUX"]})
|
||||
|
||||
@@ -172,6 +177,9 @@ class GenerateRootPatchSets:
|
||||
if self.hardware_details["Miscellaneous: Legacy USB 1.1"] is True:
|
||||
required_patches.update({"Legacy USB 1.1": all_hardware_patchset["Miscellaneous"]["Legacy USB 1.1"]})
|
||||
|
||||
if self.hardware_details["Miscellaneous: PCIe FaceTime Camera"] is True:
|
||||
required_patches.update({"PCIe FaceTime Camera": all_hardware_patchset["Miscellaneous"]["PCIe FaceTime Camera"]})
|
||||
|
||||
if required_patches:
|
||||
host_os_float = float(f"{self.constants.detected_os}.{self.constants.detected_os_minor}")
|
||||
|
||||
|
||||
@@ -234,15 +234,16 @@ class SysPatchHelpers:
|
||||
- opencl-c.h
|
||||
- lib (entire directory)
|
||||
|
||||
Note: With macOS Sonoma, 32023 compiler is used instead and so this patch is not needed
|
||||
|
||||
Parameters:
|
||||
mount_point: The mount point of the target volume
|
||||
"""
|
||||
|
||||
if self.constants.detected_os < os_data.os_data.ventura:
|
||||
if self.constants.detected_os != os_data.os_data.ventura:
|
||||
return
|
||||
if self.constants.detected_os_minor < 4:
|
||||
return
|
||||
if self.constants.detected_os == os_data.os_data.ventura:
|
||||
if self.constants.detected_os_minor < 4:
|
||||
return
|
||||
|
||||
LIBRARY_DIR = f"{mount_point}/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang"
|
||||
GPU_VERSION = "31001.669"
|
||||
|
||||
@@ -61,9 +61,9 @@ def seconds_to_readable_time(seconds) -> str:
|
||||
time = ""
|
||||
|
||||
if seconds == 0:
|
||||
return "Almost done"
|
||||
return "0m "
|
||||
if seconds < 0:
|
||||
return "Indeterminate"
|
||||
return "Indeterminate time "
|
||||
|
||||
years, seconds = divmod(seconds, 31536000)
|
||||
days, seconds = divmod(seconds, 86400)
|
||||
@@ -80,8 +80,8 @@ def seconds_to_readable_time(seconds) -> str:
|
||||
time += f"{hours}h "
|
||||
if minutes > 0:
|
||||
time += f"{minutes}m "
|
||||
if seconds > 0:
|
||||
time += f"{seconds}s"
|
||||
#if seconds > 0:
|
||||
# time += f"{seconds}s"
|
||||
return time
|
||||
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ class PatcherValidation:
|
||||
logging.info("Mounted Universal-Binaries.dmg")
|
||||
|
||||
|
||||
for supported_os in [os_data.os_data.big_sur, os_data.os_data.monterey, os_data.os_data.ventura]:
|
||||
for supported_os in [os_data.os_data.big_sur, os_data.os_data.monterey, os_data.os_data.ventura, os_data.os_data.sonoma]:
|
||||
for i in range(0, 10):
|
||||
self._validate_root_patch_files(supported_os, i)
|
||||
logging.info("Validating SNB Board ID patcher")
|
||||
@@ -205,7 +205,6 @@ class PatcherValidation:
|
||||
# Second run, flip all settings
|
||||
self.constants.verbose_debug = True
|
||||
self.constants.opencore_debug = True
|
||||
self.constants.opencore_build = "DEBUG"
|
||||
self.constants.kext_debug = True
|
||||
self.constants.kext_variant = "DEBUG"
|
||||
self.constants.kext_debug = True
|
||||
|
||||
@@ -30,12 +30,12 @@ class AboutFrame(wx.Frame):
|
||||
|
||||
# Set title
|
||||
title = wx.StaticText(frame, label="OpenCore Legacy Patcher", pos=(-1, 5))
|
||||
title.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
|
||||
title.SetFont(gui_support.font_factory(19, wx.FONTWEIGHT_BOLD))
|
||||
title.Centre(wx.HORIZONTAL)
|
||||
|
||||
# Set version
|
||||
version = wx.StaticText(frame, label=f"Version: {self.constants.patcher_version}", pos=(-1, title.GetPosition()[1] + title.GetSize()[1] + 5))
|
||||
version.SetFont(wx.Font(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
||||
version.SetFont(gui_support.font_factory(11, wx.FONTWEIGHT_NORMAL))
|
||||
version.Centre(wx.HORIZONTAL)
|
||||
|
||||
# Description
|
||||
@@ -47,7 +47,7 @@ class AboutFrame(wx.Frame):
|
||||
spacer = 5
|
||||
for line in description:
|
||||
desc = wx.StaticText(frame, label=line, pos=(-1, version.GetPosition()[1] + version.GetSize()[1] + 5 + spacer))
|
||||
desc.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
||||
desc.SetFont(gui_support.font_factory(13, wx.FONTWEIGHT_NORMAL))
|
||||
desc.Centre(wx.HORIZONTAL)
|
||||
|
||||
spacer += 20
|
||||
|
||||
@@ -58,11 +58,11 @@ class BuildFrame(wx.Frame):
|
||||
frame = self if not frame else frame
|
||||
|
||||
title_label = wx.StaticText(frame, label="Build and Install OpenCore", pos=(-1,5))
|
||||
title_label.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
|
||||
title_label.SetFont(gui_support.font_factory(19, wx.FONTWEIGHT_BOLD))
|
||||
title_label.Centre(wx.HORIZONTAL)
|
||||
|
||||
model_label = wx.StaticText(frame, label=f"Model: {self.constants.custom_model or self.constants.computer.real_model}", pos=(-1,30))
|
||||
model_label.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
||||
model_label.SetFont(gui_support.font_factory(13, wx.FONTWEIGHT_NORMAL))
|
||||
model_label.Centre(wx.HORIZONTAL)
|
||||
|
||||
# Button: Install OpenCore
|
||||
@@ -78,7 +78,7 @@ class BuildFrame(wx.Frame):
|
||||
self.text_box = text_box
|
||||
|
||||
# Button: Return to Main Menu
|
||||
return_button = wx.Button(frame, label="Return to Main Menu", pos=(-1, text_box.GetPosition()[1] + text_box.GetSize()[1] + 5), size=(200, 30))
|
||||
return_button = wx.Button(frame, label="Return to Main Menu", pos=(-1, text_box.GetPosition()[1] + text_box.GetSize()[1] + 5), size=(150, 30))
|
||||
return_button.Bind(wx.EVT_BUTTON, self.on_return_to_main_menu)
|
||||
return_button.Centre(wx.HORIZONTAL)
|
||||
return_button.Disable()
|
||||
|
||||
@@ -8,18 +8,25 @@ from resources import (
|
||||
utilities
|
||||
)
|
||||
|
||||
from resources.wx_gui import gui_support
|
||||
|
||||
|
||||
|
||||
class DownloadFrame(wx.Frame):
|
||||
"""
|
||||
Update provided frame with download stats
|
||||
"""
|
||||
def __init__(self, parent: wx.Frame, title: str, global_constants: constants.Constants, download_obj: network_handler.DownloadObject, item_name: str) -> None:
|
||||
def __init__(self, parent: wx.Frame, title: str, global_constants: constants.Constants, download_obj: network_handler.DownloadObject, item_name: str, download_icon = None) -> None:
|
||||
logging.info("Initializing Download Frame")
|
||||
self.constants: constants.Constants = global_constants
|
||||
self.title: str = title
|
||||
self.parent: wx.Frame = parent
|
||||
self.download_obj: network_handler.DownloadObject = download_obj
|
||||
self.item_name: str = item_name
|
||||
if download_icon:
|
||||
self.download_icon: str = download_icon
|
||||
else:
|
||||
self.download_icon: str = "/System/Library/CoreServices/Installer.app/Contents/Resources/package.icns"
|
||||
|
||||
self.user_cancelled: bool = False
|
||||
|
||||
@@ -34,27 +41,23 @@ class DownloadFrame(wx.Frame):
|
||||
"""
|
||||
|
||||
frame = self if not frame else frame
|
||||
icon = self.download_icon
|
||||
icon = wx.StaticBitmap(frame, bitmap=wx.Bitmap(icon, wx.BITMAP_TYPE_ICON), pos=(-1, 20))
|
||||
icon.SetSize((100, 100))
|
||||
icon.Centre(wx.HORIZONTAL)
|
||||
|
||||
title_label = wx.StaticText(frame, label=f"Downloading: {self.item_name}", pos=(-1,5))
|
||||
title_label.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
|
||||
title_label = wx.StaticText(frame, label=f"Downloading: {self.item_name}", pos=(-1,icon.GetPosition()[1] + icon.GetSize()[1] + 20))
|
||||
title_label.SetFont(gui_support.font_factory(19, wx.FONTWEIGHT_BOLD))
|
||||
title_label.Centre(wx.HORIZONTAL)
|
||||
|
||||
label_amount = wx.StaticText(frame, label="0.00 B downloaded of 0.00B (0.00%)", pos=(-1, title_label.GetPosition()[1] + title_label.GetSize()[1] + 5))
|
||||
label_amount.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
||||
label_amount.Centre(wx.HORIZONTAL)
|
||||
|
||||
label_speed = wx.StaticText(frame, label="Average download speed: Unknown", pos=(-1, label_amount.GetPosition()[1] + label_amount.GetSize()[1] + 5))
|
||||
label_speed.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
||||
label_speed.Centre(wx.HORIZONTAL)
|
||||
|
||||
label_est_time = wx.StaticText(frame, label="Estimated time remaining: Unknown", pos=(-1, label_speed.GetPosition()[1] + label_speed.GetSize()[1] + 5))
|
||||
label_est_time.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
||||
label_est_time.Centre(wx.HORIZONTAL)
|
||||
|
||||
progress_bar = wx.Gauge(frame, range=100, pos=(-1, label_est_time.GetPosition()[1] + label_est_time.GetSize()[1] + 5), size=(300, 20))
|
||||
progress_bar = wx.Gauge(frame, range=100, pos=(-1, title_label.GetPosition()[1] + title_label.GetSize()[1] + 5), size=(300, 20))
|
||||
progress_bar.Centre(wx.HORIZONTAL)
|
||||
|
||||
return_button = wx.Button(frame, label="Return", pos=(-1, progress_bar.GetPosition()[1] + progress_bar.GetSize()[1] + 5))
|
||||
label_amount = wx.StaticText(frame, label="Preparing download", pos=(-1, progress_bar.GetPosition()[1] + progress_bar.GetSize()[1]))
|
||||
label_amount.SetFont(gui_support.font_factory(13, wx.FONTWEIGHT_NORMAL))
|
||||
label_amount.Centre(wx.HORIZONTAL)
|
||||
|
||||
return_button = wx.Button(frame, label="Cancel", pos=(-1, label_amount.GetPosition()[1] + label_amount.GetSize()[1] + 10))
|
||||
return_button.Bind(wx.EVT_BUTTON, lambda event: self.terminate_download())
|
||||
return_button.Centre(wx.HORIZONTAL)
|
||||
|
||||
@@ -64,31 +67,25 @@ class DownloadFrame(wx.Frame):
|
||||
|
||||
self.download_obj.download()
|
||||
while self.download_obj.is_active():
|
||||
|
||||
percentage: int = self.download_obj.get_percent()
|
||||
|
||||
if percentage == -1:
|
||||
amount_str = f"{utilities.human_fmt(self.download_obj.downloaded_file_size)} downloaded"
|
||||
amount_str = f"{utilities.human_fmt(self.download_obj.downloaded_file_size)} downloaded ({utilities.human_fmt(self.download_obj.get_speed())}/s)"
|
||||
progress_bar.Pulse()
|
||||
else:
|
||||
amount_str = f"{utilities.human_fmt(self.download_obj.downloaded_file_size)} downloaded of {utilities.human_fmt(self.download_obj.total_file_size)} ({percentage:.2f}%)"
|
||||
amount_str = f"{utilities.seconds_to_readable_time(self.download_obj.get_time_remaining())}left - {utilities.human_fmt(self.download_obj.downloaded_file_size)} of {utilities.human_fmt(self.download_obj.total_file_size)} ({utilities.human_fmt(self.download_obj.get_speed())}/s)"
|
||||
progress_bar.SetValue(int(percentage))
|
||||
|
||||
label_amount.SetLabel(amount_str)
|
||||
label_amount.Centre(wx.HORIZONTAL)
|
||||
|
||||
label_speed.SetLabel(
|
||||
f"Average download speed: {utilities.human_fmt(self.download_obj.get_speed())}/s"
|
||||
)
|
||||
|
||||
label_est_time.SetLabel(
|
||||
f"Estimated time remaining: {utilities.seconds_to_readable_time(self.download_obj.get_time_remaining())}"
|
||||
)
|
||||
|
||||
wx.Yield()
|
||||
|
||||
if self.download_obj.download_complete is False and self.user_cancelled is False:
|
||||
wx.MessageBox(f"Download failed: \n{self.download_obj.error_msg}", "Error", wx.OK | wx.ICON_ERROR)
|
||||
|
||||
progress_bar.Destroy()
|
||||
frame.Destroy()
|
||||
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user