Compare commits

..

54 Commits
1.0.1 ... 1.1.0

Author SHA1 Message Date
Mykola Grymalyuk
60f403d4b4 Remove NVMeFix.kext MaxKernel
Sonoma support resolved with NVMeFix v1.1.1
2023-10-23 10:40:11 -06:00
Jazzzny
a8a6e609f4 Update WINDOWS.md (#1112)
* Update WINDOWS.md

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

* Other small thing

* Resolve incorrect Legacy Metal entries

---------

Co-authored-by: Michael McAuliff <michaeltechse@gmail.com>
Co-authored-by: Michael <68412795+TheMasterOfMike@users.noreply.github.com>
2023-10-06 00:23:08 -04:00
Jazzzny
4429b5cb4b Changes 2023-10-04 18:01:05 -04:00
Jazzzny
526594a90d Fix up 2023-10-04 17:12:51 -04:00
Jazzzny
04a2e55d24 Merge branch 'main' into readme-update 2023-10-04 16:28:35 -04:00
neon ball
7aff1794c6 Fix v2 2023-10-04 22:53:59 +03:00
neon ball
e8f8f1bd93 Fix wording 2023-10-04 22:49:24 +03:00
Mykola Grymalyuk
cba33c1e82 Sync Kexts 2023-10-03 15:49:12 -06:00
Mykola Grymalyuk
a26120a376 Increment build 2023-10-03 15:47:16 -06:00
neon ball
9982d43d5a Add "ls /Volumes" 2023-10-03 23:53:17 +03:00
Jazzzny
8a287e7cc2 Merge branch 'dortania:main' into readme-update 2023-10-02 17:19:15 -04:00
Jazzzny
3bf92c3587 Remove logging 2023-09-29 17:54:28 -04:00
Jazzzny
ce0928ba38 Changes 2023-09-29 17:51:51 -04:00
Jazzzny
25f5ea2457 Adjust requirements.txt 2023-09-28 22:03:03 -04:00
Jazzzny
0ba93a8a2b Merge branch 'dortania:main' into readme-update 2023-09-28 21:32:11 -04:00
Jazzzny
3e0c329e53 Add main menu portion 2023-09-28 21:31:55 -04:00
48 changed files with 550 additions and 336 deletions

View File

@@ -1,5 +1,25 @@
# OpenCore Legacy Patcher changelog
## 1.1.0
- Resolve rendering issues on Intel Broadwell iGPUs
- Update non-Metal Binaries for macOS Sonoma:
- Resolve unresponsive Weather app
- Resolve full screen menubar covering the app toolbar
- Resolve unfocused password windows
- Resolve USB 1.1 kernel panics on macOS 14.1
- Resolve PCIe FaceTime camera support on macOS 14.1
- Resolve T1 Security Chip support on macOS 14
- Applicable for MacBookPro13,2, MacBookPro13,3, MacBookPro14,2, MacBookPro14,3
- Add support for stand alone OpenCore Vaulting without Xcode Command Line Tools (Jazzzny)
- Re-allow NVMeFix for macOS 14
- Remove `-lilubetaall` argument for machines without AppleALC
- Increment Binaries:
- PatcherSupportPkg 1.4.2 - release
- AirportBrcmFixup 2.1.8 - release
- BlueToolFixup 2.6.8 - release
- RestrictEvents 1.1.3 - release
- AMFIPass 1.4.0 - release
## 1.0.1
- Resolve rendering issues on Intel Ivy Bridge iGPUs
- Update non-Metal Binaries for macOS Sonoma:
@@ -11,7 +31,7 @@
- Add error handling for corrupted patcher settings
- Remove CoreImage patch for 3802 GPUs on Ventura
- Avoid listing PCIe FaceTime camera patch on pre-Sonoma OSes
- Only cometic in Root Patching UI, however removed to avoid confusion
- Only cosmetic in Root Patching UI, however it has been removed to avoid confusion
## 1.0.0
- Resolve BCM2046 and BCM2070 support on macOS 13.3 and newer
@@ -52,6 +72,7 @@
- CPUFriend 1.2.7 - release
- BlueToolFixup 2.6.8 - rolling (2305aaa)
- CryptexFixup 1.0.2 - release
- NVMeFix 1.1.1 - release
- PatcherSupportPkg 1.3.2 - release
- Build Server Changes:
- Upgrade Python backend to 3.11.5

View File

@@ -100,6 +100,7 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m
* Pre-Ivy Bridge Aquantia Ethernet Patch
* Non-Metal Photo Booth Patch for Monterey+
* GUI and Backend Development
* Vaulting implementation
* Amazing users who've graciously donate hardware:
* [JohnD](https://forums.macrumors.com/members/johnd.53633/) - 2013 Mac Pro
* [SpiGAndromeda](https://github.com/SpiGAndromeda) - AMD Vega 64

View File

@@ -13,7 +13,7 @@ class SystemPatchDictionary():
Patchset Schema:
Supports 6 types of higher level keys:
Supports following types of higher level keys:
- OS Support: Supported OSes by patches
- Minimum OS Support: Minimum supported OS version
- OS Major: Major XNU Kernel version
@@ -30,6 +30,9 @@ class SystemPatchDictionary():
- Remove: Files to remove
- Location:
- File (array: [ "File" ])
- Remove Non-Root: Files to remove from data partition
- Location:
- File (array: [ "File" ])
- Processes: Additional processes to run
- Process (dict: { "Process": "Requires Root" })
- Display Name: User-friendly name (string, "" if user-friendly name is not required)
@@ -67,6 +70,7 @@ class SystemPatchDictionary():
self.macOS_12_4: float = 21.5
self.macOS_12_5: float = 21.6
self.macOS_13_3: float = 22.4
self.macOS_14_1: float = 23.1
self._generate_sys_patch_dict()
@@ -999,7 +1003,7 @@ class SystemPatchDictionary():
"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",
"AppleIntelBDWGraphicsMTLDriver.bundle": "12.5" if self.os_major < os_data.os_data.ventura else "12.5-22",
"AppleIntelBDWGraphicsVADriver.bundle": "12.5",
"AppleIntelBDWGraphicsVAME.bundle": "12.5",
"AppleIntelGraphicsShared.bundle": "12.5",
@@ -1264,6 +1268,29 @@ class SystemPatchDictionary():
},
},
},
# Injection of UHCI/OHCI causes a panic on 14.1+
"Legacy USB 1.1 Extended": {
"Display Name": "",
"OS Support": {
"Minimum OS Support": {
"OS Major": os_data.os_data.sonoma,
"OS Minor": 1 # macOS 14.1 (XNU 23.1)
},
"Maximum OS Support": {
"OS Major": os_data.os_data.max_os,
"OS Minor": 99
},
},
"Install": {
"/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns": {
"AppleUSBOHCI.kext": "12.6.2-USB",
"AppleUSBOHCIPCI.kext": "12.6.2-USB",
"AppleUSBUHCI.kext": "12.6.2-USB",
"AppleUSBUHCIPCI.kext": "12.6.2-USB",
},
},
},
# With macOS 14.1, daemon won't load if not on root volume
"PCIe FaceTime Camera": {
"Display Name": "Miscellaneous: PCIe FaceTime Camera",
"OS Support": {
@@ -1276,14 +1303,58 @@ class SystemPatchDictionary():
"OS Minor": 99
},
},
"Install Non-Root": {
"/Library/CoreMediaIO/Plug-Ins/DAL": {
"Install": {
"/System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources": {
"AppleCamera.plugin": "14.0 Beta 1"
},
"/Library/LaunchDaemons": {
"/System/Library/LaunchDaemons": {
"com.apple.cmio.AppleCameraAssistant.plist": "14.0 Beta 1"
},
},
"Remove Non-Root": {
"/Library/CoreMediaIO/Plug-Ins/DAL": [
"AppleCamera.plugin"
],
"/Library/LaunchDaemons": [
"com.apple.cmio.AppleCameraAssistant.plist"
],
}
},
"T1 Security Chip": {
"Display Name": "Miscellaneous: T1 Security Chip",
"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/Frameworks": {
"LocalAuthentication.framework": "13.6" # Required for Password Authentication (SharedUtils.framework)
},
"/System/Library/PrivateFrameworks": {
"EmbeddedOSInstall.framework": "13.6" # Required for biometrickitd
},
# Required for Apple Pay
"/usr/lib": {
"libNFC_Comet.dylib": "13.6",
"libNFC_HAL.dylib": "13.6",
"libnfshared.dylib": "13.6",
"libnfshared.dylibOld.dylib": "13.6",
"libnfstorage.dylib": "13.6",
"libPN548_API.dylib": "13.6"
},
"/usr/libexec": {
"biometrickitd": "13.6", # Required for Touch ID
"nfcd": "13.6", # Required for Apple Pay
},
},
},
},
}

View File

@@ -149,7 +149,6 @@ module.exports = {
sidebarDepth: 1,
children: [
'ISSUES-HOLD',
'TESTED',
'TERMS',
'HOW',
'PATCHEXPLAIN',

View File

@@ -15,9 +15,9 @@ The below tables can be used to reference issues with a particular model, and se
::: 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.
* **OS X El Capitan 10.11** or later is required to make installers for macOS Ventura and later.
The patcher is designed to target **macOS Big Sur 11.x to macOS Ventura 13.x**.
The patcher is designed to target **macOS Big Sur 11.x to macOS Sonoma 14.x**.
* Other versions may work, albeit in a broken state. No support is provided for any version outside of the above.
:::
@@ -32,7 +32,7 @@ The patcher is designed to target **macOS Big Sur 11.x to macOS Ventura 13.x**.
| 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 (Retina, 12-inch, 2017) | `MacBook10,1` | - Supported by OpenCore Legacy Patcher |
### MacBook Air
@@ -77,12 +77,12 @@ The patcher is designed to target **macOS Big Sur 11.x to macOS Ventura 13.x**.
| 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 (13-inch, 2016, 4 Thunderbolt 3 ports) | `MacBookPro13,2` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008)<br>- [T1 Support (macOS 14+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1103) |
| 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 (13-inch, 2017, 2 Thunderbolt 3 ports) | `MacBookPro14,1` | - Supported by OpenCore Legacy Patcher |
| MacBook Pro (13-inch, 2017, 4 Thunderbolt 3 ports) | `MacBookPro14,2` | - [T1 Support (macOS 14+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1103) |
| MacBook Pro (15-inch, 2017) | `MacBookPro14,3` | - [Legacy Metal (macOS 14+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008)<br>- [T1 Support (macOS 14+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1103) |
| MacBook Pro (13-inch, 2018, 4 Thunderbolt 3 ports)<br>MacBook Pro (13-inch, 2019, 4 Thunderbolt 3 ports) | `MacBookPro15,2` | - Supported by Apple |
| MacBook Pro (15-inch, 2018)<br>MacBook Pro (15-inch, 2019) | `MacBookPro15,1` | ^^ |
| MacBook Pro (13-inch, 2019, 2 Thunderbolt 3 ports) | `MacBookPro15,4` | ^^ |
| MacBook Pro (16-inch, 2019) | `MacBookPro16,1`<br>`MacBookPro16,4` | ^^ |
@@ -122,10 +122,10 @@ The patcher is designed to target **macOS Big Sur 11.x to macOS Ventura 13.x**.
| 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 (21.5-inch, 2017) | `iMac18,1` | - Supported by OpenCore Legacy Patcher |
| 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 5K, 27-inch, 2019) | `iMac19,1` | - Supported by Apple |
| iMac (Retina 4K, 21.5-inch, 2019) | `iMac19,2` | ^^ |
| iMac (Retina 5K, 27-inch, 2020) | `iMac20,1`<br>`iMac20,2` | ^^ |
| iMac Pro (2017) | `iMacPro1,1` | ^^ |
@@ -134,8 +134,8 @@ The patcher is designed to target **macOS Big Sur 11.x to macOS Ventura 13.x**.
| 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 (Early 2008) | `MacPro3,1` | - [Recommend upgrade to Metal GPU](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008)<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021)<br>- Remove stock Bluetooth to prevent panics |
| Mac Pro (Early 2009) | `MacPro4,1` | - [Recommend upgrade to Metal GPU](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008)<br>- [non-Metal GPU (macOS 11+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108)<br>- [USB 1.1 (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1021) |
| Mac Pro (Mid 2010)<br>Mac Pro (Mid 2012) | `MacPro5,1` | ^^ |
| Mac Pro (Late 2013) | `MacPro6,1` | - [Legacy Metal (macOS 13+)](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/1008) |
| Mac Pro (2019) | `MacPro7,1` | - Supported by Apple |

View File

@@ -44,6 +44,14 @@ If you're unsure whether you should enable SIP, leave it as-is. Systems where yo
## Applying Post Install Volume Patches
:::warning
If you need to use Migration Assistant to bring over data to your new macOS install, it is **highly recommended** to avoid restoring from inside Setup Assistant and waiting to install root patches until after the transfer is complete. If root patches were automatically installed, you can use the options available in the OCLP app to remove them.
Using Migration Assistant while patches are installed can lead to an unbootable system, requiring a reinstall of macOS.
:::
Post Install Volume Patches, sometimes also called root patches, are patches that have to be installed to disk for some older Macs to gain back functionality.
OCLP will automatically root patch your system during a first time install **if the USB install media was created within OCLP.** Users will also be prompted to install these patches after macOS updates or whenever patches are not detected on the system. We recommend rebuilding OpenCore with the latest version of OCLP to take advantage of these new features.
@@ -60,11 +68,12 @@ Users can also see whether applicable patches have been installed, date and vers
If you're using OCLP v0.4.3 or earlier, or need to run the patcher manually, you can do so with the app. There is no harm in trying to run the Patcher, as without compatible hardware, nothing will be done. You can see below on whether your hardware needs root volume patching or not.
There is also an option to remove root patches, which may be required in some situations, such as switching GPUs in Mac Pros or using Migration Assistant.
| Listing Patches | Patching Finished |
| :--- | :--- |
| ![](../images/OCLP-GUI-Root-Patch.png) | ![](../images/OCLP-GUI-Root-Patch-Finished.png) |
:::warning
With macOS Ventura and Macs with AMD Legacy GCN GPUs (ie. Metal), Root Patching requires a network connection to grab Apple's Kernel Debug Kit to start root patching. If your system is unable to connect to the internet, you can manually download a KDK from Apple's site:

View File

@@ -29,11 +29,18 @@ OpenCore Legacy Patcher v1.0.0 will support Sonoma for all models normally suppo
## Issues
* [T1 Security chip](t1-security-chip)
* [Bluetooth](#bluetooth)
* [T1 Security chip](#t1-security-chip)
* [USB 1.1 (OHCI/UHCI) Support](#usb-11-ohciuhci-support)
* [Graphics support and issues](#graphics-support-and-issues)
### Bluetooth
Sometimes Bluetooth may not work after boot on pre-2012 models. Running NVRAM reset can alleviate it.
Dual boots may also bring the issue back even after the reset.
### T1 Security chip
Sonoma has removed support for T1 chips found in most 2016 and 2017 Macs. Therefore on these systems, the following will not function:

View File

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

View File

@@ -56,7 +56,7 @@ With OpenCore Legacy Patcher, we rely on Apple Secure Boot to ensure OS updates
Boot into recovery by pressing space when your disk is selected on the OCLP bootpicker (if you have it hidden, hold ESC while starting up)
* **Note:** If your disk name is something else than "Macintosh HD", make sure to change the path accordingly.
* **Note:** If your disk name is something else than "Macintosh HD", make sure to change the path accordingly. You can figure out your disk name by typing `ls /Volumes`.
Go into terminal and first mount the disk by typing
```sh

View File

@@ -15,4 +15,4 @@ To remove OpenCore:
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.
* This does not apply 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.

View File

@@ -204,9 +204,41 @@ Before we continue, please keep in mind that SMBIOS Spoofing is an advanced feat
Ventura has dropped more models which includes all of the blacklisted Macs in question, making the procedure slightly different. It is important to follow the guide for the version you're on, failing to do so is likely to cause boot issues.
::: details macOS Sonoma
Firstly run OpenCore Legacy Patcher.
Then go to **Settings** and **SMBIOS** tab, set SMBIOS Spoof Level to **Moderate**. Set SMBIOS Spoof Model **one listed next to your native model in the table for spoofed models below.**
Notice that "Allow native models" and "Allow Native Spoofs" **are NOT** enabled unlike on Monterey, this is on purpose. They are no longer relevant on Sonoma and enabling them will cause boot issues.
| Main Settings view | SMBIOS settings |
| :--- | :--- |
| ![](../images/ventura_uc1.png) | ![](../images/ventura_uc2.png) |
::: details Table for spoofed models (click to expand)
Spoofing to any model with native Sonoma support should work, but these are the earliest Macs natively supported by Sonoma and thus chosen for the sake of simplicity.
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Ventura as long as the other requirements are met, since they aren't blacklisted.
| Mac by name | Native SMBIOS | Spoof SMBIOS |
|-------------|---------------|--------------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro15,2 |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro15,2 |
| iMac Late 2015 21" | iMac16,x | iMac19,2 |
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 |
:::
::: details macOS Ventura
Firstly run the GUI version of OpenCore Legacy Patcher.
Firstly run OpenCore Legacy Patcher.
Then go to **Settings** and **SMBIOS** tab, set SMBIOS Spoof Level to **Moderate**. Set SMBIOS Spoof Model **one listed next to your native model in the table for spoofed models below.**
@@ -225,20 +257,20 @@ Spoofing to any model with native Ventura support should work, but these are the
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Ventura as long as the other requirements are met, since they aren't blacklisted.
| Mac by name | Native SMBIOS | Spoof SMBIOS | Tested | Tested by |
|-------------|---------------|--------------|--------|-----------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 | <span style="color:red"> NO </span> | N/A |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro14,1 | ^^ | ^^ |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro14,3 | ^^ | ^^
| iMac Late 2015 21" | iMac16,x | iMac18,2 | ^^ | ^^
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 | <span style="color:red"> NO </span> | N/A |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 | <span style="color:red"> NO </span> | N/A |
| Mac by name | Native SMBIOS | Spoof SMBIOS |
|-------------|---------------|--------------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro14,1 |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro14,3 |
| iMac Late 2015 21" | iMac16,x | iMac18,2 |
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 |
:::
::: details macOS Monterey
Firstly, run the GUI version of OpenCore Legacy Patcher. Secondly, go to **Settings** then the **App** tab and tick **Allow native models**.
Firstly, run OpenCore Legacy Patcher. Secondly, go to **Settings** then the **App** tab and tick **Allow native models**.
[](../images/OCLP-App-Allow-Native-Models.png)
@@ -257,14 +289,14 @@ Any model after the list of officially blacklisted Macs should be supported, but
**Reminder:** Macs that are not listed on this table work without spoofing, including systems that do not natively support Monterey, as long as the other requirements are met, since they aren't blacklisted.
| Mac by name | Native SMBIOS | Spoof SMBIOS | Tested | Tested by |
|-------------|---------------|--------------|--------|-----------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 | <span style="color:#30BCD5"> YES </span> | Hzlph |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro13,1 | ^^ | ^^ |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro13,3 | ^^ | ^^
| iMac Late 2015 21" | iMac16,x | iMac18,2 | ^^ | ^^
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 | <span style="color:red"> NO </span> | N/A |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 | <span style="color:#30BCD5"> YES </span> | Crystall1nedev |
| Mac by name | Native SMBIOS | Spoof SMBIOS |
|-------------|---------------|--------------|
| MacBook Air Early 2015 11" / 13" | MacBookAir7,x | MacBookAir8,1 |
| MacBook Pro Early 2015 13" | MacBookPro12,x | MacBookPro13,1 |
| MacBook Pro Mid 2015 15" | MacBookPro11,4 / 11,5 | MacBookPro13,3 |
| iMac Late 2015 21" | iMac16,x | iMac18,2 |
| Mac mini Late 2014 | Macmini7,x | MacMini8,1 |
| Mac Pro Late 2013 | MacPro6,x | MacPro7,1 |
:::

View File

@@ -5,21 +5,20 @@ Many older Macs do not "officially" support UEFI Windows installations, leading
## Minimum Requirements
This guide will focus on the installation of Windows 10 without using Boot Camp Assistant. Windows 11 should also work, but its quirks will not be covered.
This guide will focus on the installation of modern Windows (10/11) without using Boot Camp Assistant.
* Due to hardware and firmware limitations, UEFI Windows installations are only recommended on the following machines:
* 2015 MacBook or newer (MacBook8,x+)
* 2011 MacBook Air or newer (MacBookAir4,x+)
* 2011 MacBook Pro or newer (MacBookPro8,x+)
* 2011 Mac mini or newer (Macmini5,x+)
* 2009[^1] Mac Pro or newer (MacPro4,1+), upgraded GPU is preferred
* 2010 iMac or newer (iMac11,x+), upgraded GPU is preferred
* 2009[^2] Xserve (Xserve3,1), upgraded GPU is preferred
* 2015 MacBook or newer (`MacBook8,x`+)
* 2011 MacBook Air or newer (`MacBookAir4,x`+)
* 2011 MacBook Pro or newer (`MacBookPro8,x`+)
* 2011 Mac mini or newer (`Macmini5,x`+)
* 2009* Mac Pro or newer (`MacPro4,1`+), upgraded GPU is preferred
* 2010 iMac or newer (`iMac11,x`+), upgraded GPU is preferred
* 2009* Xserve (`Xserve3,1`), upgraded GPU is preferred
[^1]: MacPro4,1 and MacPro5,1 systems experience issues with the Windows installer, follow the DISM installation section for instructions.
[^2]: Theoretically supported, not tested. Follow DISM installation section
*`MacPro4,1`, `MacPro5,1`, and `Xserve3,1` systems experience issues with the Windows installer, follow the DISM installation section for instructions.
If your machine is not listed, UEFI Windows will likely still install, but you may face stability/driver issues.
@@ -87,18 +86,26 @@ The `rsync` command will take some time, so get some coffee and sit back. Once f
## Installation Process
Once you reboot your machine, you should see a new boot option in the OCLP Bootpicker labelled as "EFI Boot". It may or may not have the Boot Camp icon.
Once you reboot your machine, you should see a new boot option in the OCLP Bootpicker labelled as "EFI Boot" or "Windows". It may or may not have the Boot Camp icon.
:::warning
If you aren't booted into OCLP, you may see two boot options labelled "Windows" and "EFI Boot". Do not choose either of the options and boot into OCLP to continue.
If you aren't booted into OCLP, you may see **two** boot options labelled "Windows" and "EFI Boot". Do not choose either of the options and boot into OCLP to continue.
:::
### Installation: Microsoft Method
Once booted into the Windows installer, proceed as you normally would on any Windows computer. If you see an error message containing “Windows could not prepare the computer to boot into the next phase of installation”, please follow the next portion of this guide (DISM Installation).
::: details Installing Windows 11
If you are installing Windows 11, you will need to [modify the Windows Setup](https://www.bleepingcomputer.com/news/microsoft/how-to-bypass-the-windows-11-tpm-20-requirement/) to allow installation on unsupported machines.
:::
### Installation: DISM Deployment Method
Once booted into the Windows installer, proceed as you normally would until you reach the "Where do you want to install Windows" disk formatting section.
@@ -132,7 +139,7 @@ Once `dism` finishes its thing, run `bcdboot E:\Windows`, substituting "E" for t
![](../images/DISM-7.png)
Windows is now installed. It should be recognized as "EFI Boot" with a Boot Camp icon in the OCLP Bootpicker.
Windows is now installed. It should be recognized as "EFI Boot" or "Windows" with a Boot Camp icon in the OCLP Bootpicker.
:::warning
@@ -221,4 +228,8 @@ You can also open `Properties` on the file to change the compatibility to `Previ
### iMac12,x Bluescreen after driver installation
Currently Intel's iGPU drivers for the HD 3000 series do not support UEFI booting in Windows. The recommended solution is to simply disable the iGPU: [iMac 12,1 Windows 10 Boot Loop Fix Intel Graphics issue](https://zzq.org/?p=39)
Intel's iGPU drivers for the HD 3000 series do not support UEFI booting in Windows. The recommended solution is to simply disable the iGPU: [iMac 12,1 Windows 10 Boot Loop Fix Intel Graphics issue](https://zzq.org/?p=39)
### NVIDIA Tesla Black Screen after driver installation
The NVIDIA Tesla GPUs found in 2008-2010 Macs do not support UEFI booting in Windows. You cannot use UEFI Windows without low-level patching on these machines.

View File

@@ -887,7 +887,7 @@
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string>22.99.99</string>
<string></string>
<key>MinKernel</key>
<string>18.0.0</string>
<key>BundlePath</key>
@@ -1377,7 +1377,7 @@
<key>ExecutablePath</key>
<string>Contents/MacOS/AppleUSBOHCI</string>
<key>MaxKernel</key>
<string></string>
<string>23.0.0</string>
<key>MinKernel</key>
<string>22.0.0</string>
<key>PlistPath</key>
@@ -1395,7 +1395,7 @@
<key>ExecutablePath</key>
<string>Contents/MacOS/AppleUSBOHCIPCI</string>
<key>MaxKernel</key>
<string></string>
<string>23.0.0</string>
<key>MinKernel</key>
<string>22.0.0</string>
<key>PlistPath</key>
@@ -1413,7 +1413,7 @@
<key>ExecutablePath</key>
<string>Contents/MacOS/AppleUSBUHCI</string>
<key>MaxKernel</key>
<string></string>
<string>23.0.0</string>
<key>MinKernel</key>
<string>22.0.0</string>
<key>PlistPath</key>
@@ -1431,7 +1431,7 @@
<key>ExecutablePath</key>
<string>Contents/MacOS/AppleUSBUHCIPCI</string>
<key>MaxKernel</key>
<string></string>
<string>23.0.0</string>
<key>MinKernel</key>
<string>22.0.0</string>
<key>PlistPath</key>
@@ -1707,6 +1707,24 @@
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>Comment</key>
<string>corecrypto - T1</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>23.0.0</string>
<key>BundlePath</key>
<string>corecrypto_T1.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/corecrypto_T1</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Arch</key>
<string>x86_64</string>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -4,8 +4,10 @@
#
#
# Created by Rodion Shingarev on 13.04.19.
# Modified by Jazzzny for OpenCore Legacy Patcher on 06.10.23.
#
OCPath="$1"
UtilsPath="$PWD"
if [ "${OCPath}" = "" ]; then
echo "Usage ./create_vault.sh path/to/EFI/OC"
@@ -17,54 +19,75 @@ if [ ! -d "${OCPath}" ]; then
exit 1
fi
if [ ! -x /usr/bin/find ] || [ ! -x /bin/rm ] || [ ! -x /usr/bin/sed ] || [ ! -x /usr/bin/xxd ]; then
if [ ! -x /usr/bin/env ] || [ ! -x /usr/bin/find ] || [ ! -x /bin/rm ] || [ ! -x /usr/bin/sed ] || [ ! -x /usr/bin/awk ] || [ ! -x /usr/bin/sort ] || [ ! -x /usr/bin/xxd ]; then
echo "Unix environment is broken!"
exit 1
fi
if [ ! -x /usr/libexec/PlistBuddy ]; then
echo "PlistBuddy is missing!"
exit 1
fi
if [ ! -x /usr/bin/shasum ]; then
echo "shasum is missing!"
exit 1
fi
abort() {
/bin/rm -rf vault.plist vault.sig /tmp/vault_hash
echo "Fatal error: ${1}!"
exit 1
}
echo "Chose ${OCPath} for hashing..."
# plist output functions so we don't need PlistBuddy
write_header() {
cat <<EOF > "$1"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Files</key>
<dict>
EOF
}
write_file_name_and_hash() {
{
echo -e "\t\t<key>${2}</key>"
echo -e "\t\t<data>"
echo -e -n "\t\t"
cat "$3"
echo -e "\t\t</data>"
} >> "$1"
}
write_footer() {
cat <<EOF >> "$1"
</dict>
<key>Version</key>
<integer>1</integer>
</dict>
</plist>
EOF
}
cd "${OCPath}" || abort "Failed to reach ${OCPath}"
/bin/rm -rf vault.plist vault.sig || abort "Failed to cleanup"
/usr/libexec/PlistBuddy -c "Add Version integer 1" vault.plist || abort "Failed to set vault.plist version"
echo "Hashing files in ${OCPath}..."
echo "Hashing OpenCore configuration..."
write_header vault.plist
/usr/bin/find . -not -path '*/\.*' -type f \
\( ! -iname ".*" \) \
\( ! -iname "vault.*" \) \
\( ! -iname "OpenCore.efi" \) | while read -r fname; do
\( ! -iname "MemTest86.log" \) \
\( ! -iname "MemTest86-Report-*.html" \) \
\( ! -iname "OpenCore.efi" \) | env LC_COLLATE=POSIX /usr/bin/sort | while read -r fname; do
fname="${fname#"./"}"
wname="${fname//\//\\\\}"
shasum=$(/usr/bin/shasum -a 256 "${fname}") || abort "Failed to hash ${fname}"
sha=$(echo "$shasum" | /usr/bin/sed 's/^\([a-f0-9]\{64\}\).*/\1/') || abort "Illegit hashsum"
sha=$("${UtilsPath}"/openssl sha256 "${fname}" | /usr/bin/awk '{print $2}') || abort "Failed to hash ${fname}"
if [ "${#sha}" != 64 ] || [ "$(echo "$sha"| /usr/bin/sed 's/^[a-f0-9]*$//')" ]; then
abort "Got invalid hash: ${sha}!"
fi
echo "${wname}: ${sha}"
echo "${sha}" | /usr/bin/xxd -r -p > /tmp/vault_hash || abort "Hashing failure"
/usr/libexec/PlistBuddy -c "Import Files:'${wname}' /tmp/vault_hash" vault.plist || abort "Failed to append vault.plist!"
echo "${sha}" | /usr/bin/xxd -r -p | "${UtilsPath}"/openssl base64 > /tmp/vault_hash || abort "Hashing failure"
write_file_name_and_hash vault.plist "${wname}" /tmp/vault_hash
done
/bin/rm -rf /tmp/vault_hash
echo "All done!"
write_footer vault.plist
exit 0

Binary file not shown.

View File

@@ -1,16 +1,18 @@
#!/bin/sh
# Modified by Jazzzny for OpenCore Legacy Patcher on 06.10.23.
abort() {
echo "Fatal error: ${1}!"
exit 1
}
# shellcheck disable=SC2317
cleanup() {
echo "Cleaning up keys"
rm -rf "${KeyPath}"
}
if [ ! -x /usr/bin/dirname ] || [ ! -x /bin/chmod ] || [ ! -x /bin/mkdir ] || [ ! -x /usr/bin/openssl ] || [ ! -x /bin/rm ] || [ ! -x /usr/bin/strings ] || [ ! -x /usr/bin/grep ] || [ ! -x /usr/bin/cut ] || [ ! -x /bin/dd ] || [ ! -x /usr/bin/uuidgen ] ; then
if [ ! -x /usr/bin/dirname ] || [ ! -x /bin/chmod ] || [ ! -x /bin/mkdir ] || [ ! -x /bin/rm ] || [ ! -x /usr/bin/grep ] || [ ! -x /usr/bin/awk ] || [ ! -x /bin/dd ] || [ ! -x /usr/bin/uuidgen ] ; then
abort "Unix environment is broken!"
fi
@@ -22,10 +24,8 @@ if [ "$OCPath" = "" ]; then
OCPath=../../EFI/OC
fi
KeyPath="/tmp/Keys-$(/usr/bin/uuidgen)"
KeyPath="/tmp/$(/usr/bin/uuidgen)"
OCBin="${OCPath}/OpenCore.efi"
RootCA="${KeyPath}/ca.pem"
PrivKey="${KeyPath}/privatekey.cer"
PubKey="${KeyPath}/vault.pub"
if [ ! -d "${OCPath}" ]; then
@@ -58,31 +58,14 @@ fi
./create_vault.sh "${OCPath}" || abort "create_vault.sh returns errors!"
if [ ! -f "${RootCA}" ]; then
/usr/bin/openssl genrsa -out "${RootCA}" 2048 || abort "Failed to generate CA"
if [ -f "${PrivKey}" ]; then
echo "WARNING: Private key exists without CA"
fi
fi
/bin/rm -fP "${PrivKey}" || abort "Failed to remove ${PrivKey}"
echo "Issuing a new private key..."
/usr/bin/openssl req -new -x509 -key "${RootCA}" -out "${PrivKey}" -days 1825 -subj "/C=WO/L=127.0.0.1/O=Acidanthera/OU=Acidanthera OpenCore/CN=Greetings from Acidanthera and WWHC" || abort "Failed to issue private key!"
/bin/rm -fP "${PubKey}" || abort "Failed to remove ${PubKey}"
echo "Getting public key based off private key..."
./RsaTool -cert "${PrivKey}" > "${PubKey}" || abort "Failed to get public key"
echo "Signing ${OCBin}..."
echo "Signing OpenCore..."
./RsaTool -sign "${OCPath}/vault.plist" "${OCPath}/vault.sig" "${PubKey}" || abort "Failed to patch ${PubKey}"
echo "Bin-patching ${OCBin}..."
off=$(($(/usr/bin/strings -a -t d "${OCBin}" | /usr/bin/grep "=BEGIN OC VAULT=" | /usr/bin/cut -f1 -d' ') + 16))
off=$(($(./strings -a -t d "${OCBin}" | /usr/bin/grep "=BEGIN OC VAULT=" | /usr/bin/awk '{print $1}') + 16))
if [ "${off}" -le 16 ]; then
abort "${OCBin} is borked"
fi
/bin/dd of="${OCBin}" if="${PubKey}" bs=1 seek="${off}" count=528 conv=notrunc || abort "Failed to bin-patch ${OCBin}"
echo "All done!"
echo "Signing complete"
exit 0

Binary file not shown.

View File

@@ -4,4 +4,5 @@ wxpython
pyinstaller
packaging
py_sip_xnu
py-applescript
py-applescript
markdown2

View File

@@ -65,8 +65,6 @@ 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")

View File

@@ -215,12 +215,13 @@ class BuildFirmware:
# 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()
if Path(self.constants.drivers_path / Path("OpenLegacyBoot.efi")).exists():
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:
"""
@@ -232,7 +233,7 @@ class BuildFirmware:
# Patches IOPCIConfigurator.cpp's IOPCIIsHotplugPort to skip configRead16/32 calls
# Credit to CaseySJ for original discovery:
# - Patch: https://github.com/AMD-OSX/AMD_Vanilla/pull/196
# - Source: https://github.com/apple-oss-distributions/IOPCIFamily/blob/main/IOPCIConfigurator.cpp#L968-L1022
# - Source: https://github.com/apple-oss-distributions/IOPCIFamily/blob/IOPCIFamily-583.40.1/IOPCIConfigurator.cpp#L968-L1022
#
# Currently all pre-Sandy Bridge Macs lacking an iGPU benefit from this patch as well as MacPro6,1
# Otherwise some graphics hardware will fail to wake, macOS will misreport hardware as ExpressCard-based,
@@ -247,7 +248,7 @@ 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 (Ventura)")["Enabled"] = True
# Sonoma slightly adjusted this line specifically
# - https://github.com/apple-oss-distributions/IOPCIFamily/blob/main/IOPCIConfigurator.cpp#L1009
# - https://github.com/apple-oss-distributions/IOPCIFamily/blob/IOPCIFamily-583.40.1/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:

View File

@@ -43,6 +43,7 @@ class BuildMiscellaneous:
self._debug_handling()
self._cpu_friend_handling()
self._general_oc_handling()
self._t1_handling()
def _feature_unlock_handling(self) -> None:
@@ -280,6 +281,12 @@ class BuildMiscellaneous:
# - 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
#
# Note: With macOS 14.1, injection of these kexts causes a panic.
# To avoid this, a MaxKernel is configured with XNU 23.0.0 (macOS 14.0).
# Additionally sys_patch.py stack will now patches the bins onto disk for 14.1+.
# Reason for keeping the dual logic is due to potential conflicts of in-cache vs injection if we start
# patching pre-14.1 hosts.
if (
smbios_data.smbios_dictionary[self.model]["CPU Generation"] <= cpu_data.CPUGen.penryn.value or \
self.model in ["MacPro4,1", "MacPro5,1", "Xserve3,1"]
@@ -335,11 +342,9 @@ class BuildMiscellaneous:
logging.info(f"- Setting custom OpenCore picker timeout to {self.constants.oc_timeout} seconds")
self.config["Misc"]["Boot"]["Timeout"] = self.constants.oc_timeout
if self.constants.vault is True and utilities.check_command_line_tools() is True:
if self.constants.vault 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
def _t1_handling(self) -> None:
"""
@@ -351,9 +356,8 @@ class BuildMiscellaneous:
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("corecrypto_T1.kext", self.constants.t1_corecrypto_version, self.constants.t1_corecrypto_path)
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)

View File

@@ -77,6 +77,6 @@ class BuildSecurity:
if self.constants.secure_status is False:
logging.info("- Disabling SecureBootModel")
self.config["Misc"]["Security"]["SecureBootModel"] = "Disabled"
logging.info("- Enabling AMFIPass")
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AMFIPass.kext", self.constants.amfipass_version, self.constants.amfipass_path)

View File

@@ -108,17 +108,11 @@ class BuildSupport:
if self.constants.vault is False:
return
if utilities.check_command_line_tools() is False:
# sign.command checks for the existence of '/usr/bin/strings' however does not verify whether it's executable
# sign.command will continue to run and create an unbootable OpenCore.efi due to the missing strings binary
# macOS has dummy binaries that just reroute to the actual binaries after you install Xcode's Command Line Tools
logging.info("- Missing Command Line tools, skipping Vault for saftey reasons")
logging.info("- Install via 'xcode-select --install' and rerun OCLP if you wish to vault this config")
return
logging.info("- Vaulting EFI")
subprocess.run([str(self.constants.vault_path), f"{self.constants.oc_folder}/"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
logging.info("- Vaulting EFI\n=========================================")
popen = subprocess.Popen([str(self.constants.vault_path), f"{self.constants.oc_folder}/"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
for stdout_line in iter(popen.stdout.readline, ""):
logging.info(stdout_line.strip())
logging.info("=========================================")
def validate_pathing(self) -> None:
"""

View File

@@ -13,8 +13,8 @@ from data import os_data
class Constants:
def __init__(self) -> None:
# Patcher Versioning
self.patcher_version: str = "1.0.1" # OpenCore-Legacy-Patcher
self.patcher_support_pkg_version: str = "1.3.3" # PatcherSupportPkg
self.patcher_version: str = "1.1.0" # OpenCore-Legacy-Patcher
self.patcher_support_pkg_version: str = "1.4.2" # PatcherSupportPkg
self.copyright_date: str = "Copyright © 2020-2023 Dortania"
self.patcher_name: str = "OpenCore Legacy Patcher"
@@ -36,7 +36,7 @@ class Constants:
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.airportbcrmfixup_version: str = "2.1.8" # AirPortBrcmFixup
self.nvmefix_version: str = "1.1.1" # NVMeFix
self.applealc_version: str = "1.6.3" # AppleALC
self.restrictevents_version: str = "1.1.3" # RestrictEvents
@@ -67,9 +67,9 @@ class Constants:
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)
self.t1_sse_version: str = "1.1.0" # AppleSSE (13.6 - T1 support)
self.t1_key_store_version: str = "1.1.0" # AppleKeyStore (13.6 - T1 support)
self.t1_corecrypto_version: str = "1.0.0" # corecrypto (13.6 - T1 support)
## Apple - Dortania Modified
self.bcm570_version: str = "1.0.2" # CatalinaBCM5701Ethernet
@@ -94,7 +94,7 @@ class Constants:
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_version: str = "1.4.0" # AMFIPass
self.amfipass_compatibility_version: str = "1.2.1" # Minimum AMFIPass version required
## Syncretic
@@ -439,14 +439,14 @@ class Constants:
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 t1_corecrypto_path(self):
return self.payload_kexts_path / Path(f"Misc/corecrypto_T1-v{self.t1_corecrypto_version}.zip")
@property
def mousse_path(self):
return self.payload_kexts_path / Path(f"SSE/AAAMouSSE-v{self.mousse_version}.zip")

View File

@@ -634,6 +634,7 @@ class Computer:
ambient_light_sensor: Optional[bool] = False
third_party_sata_ssd: Optional[bool] = False
pcie_webcam: Optional[bool] = False
t1_chip: Optional[bool] = False
secure_boot_model: Optional[str] = None
secure_boot_policy: Optional[int] = None
oclp_sys_version: Optional[str] = None
@@ -659,6 +660,7 @@ class Computer:
computer.cpu_probe()
computer.bluetooth_probe()
computer.topcase_probe()
computer.t1_probe()
computer.ambient_light_sensor_probe()
computer.pcie_webcam_probe()
computer.sata_disk_probe()
@@ -936,6 +938,18 @@ class Computer:
elif usb_device.device_id in usb_data.AppleIDs.AppleUSBMultiTouch:
self.trackpad_type = "Modern"
def t1_probe(self):
if not self.usb_devices:
return
for usb_device in self.usb_devices:
if usb_device.vendor_id != 0x5ac:
continue
if usb_device.device_id != 0x8600:
continue
self.t1_chip = True
break
def sata_disk_probe(self):
# Get all SATA Controllers/Disks from 'system_profiler SPSerialATADataType'
# Determine whether SATA SSD is present and Apple-made

View File

@@ -665,12 +665,16 @@ class PatchSysVolume:
self._preflight_checks(required_patches, source_files_path)
for patch in required_patches:
logging.info("- Installing Patchset: " + patch)
if "Remove" in required_patches[patch]:
for remove_patch_directory in required_patches[patch]["Remove"]:
logging.info("- Remove Files at: " + remove_patch_directory)
for remove_patch_file in required_patches[patch]["Remove"][remove_patch_directory]:
destination_folder_path = str(self.mount_location) + remove_patch_directory
self._remove_file(destination_folder_path, remove_patch_file)
for method_remove in ["Remove", "Remove Non-Root"]:
if method_remove in required_patches[patch]:
for remove_patch_directory in required_patches[patch][method_remove]:
logging.info("- Remove Files at: " + remove_patch_directory)
for remove_patch_file in required_patches[patch][method_remove][remove_patch_directory]:
if method_remove == "Remove":
destination_folder_path = str(self.mount_location) + remove_patch_directory
else:
destination_folder_path = str(self.mount_location_data) + remove_patch_directory
self._remove_file(destination_folder_path, remove_patch_file)
for method_install in ["Install", "Install Non-Root"]:

View File

@@ -1,6 +1,10 @@
# Copyright (C) 2022, Mykola Grymalyuk
# Copyright (c) 2023 Jazzzny
import wx
import wx.html2
import requests
import markdown2
import logging
import plistlib
import subprocess
@@ -51,19 +55,85 @@ class AutomaticSysPatch:
logging.info(f"- Found new version: {version}")
app = wx.App()
frame = wx.Frame(None, -1, "OpenCore Legacy Patcher")
dialog = wx.MessageDialog(
parent=frame,
message=f"Current Version: {self.constants.patcher_version}{' (Nightly)' if not self.constants.commit_info[0].startswith('refs/tags') else ''}\nNew version: {version}\nWould you like to update?",
caption="Update Available for OpenCore Legacy Patcher!",
style=wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION
)
dialog.SetYesNoCancelLabels("Download and install", "View on Github", "Ignore")
response = dialog.ShowModal()
if response == wx.ID_YES:
gui_entry.EntryPoint(self.constants).start(entry=gui_entry.SupportedEntryPoints.UPDATE_APP)
elif response == wx.ID_NO:
mainframe = wx.Frame(None, -1, "OpenCore Legacy Patcher")
ID_GITHUB = wx.NewId()
ID_UPDATE = wx.NewId()
url = "https://api.github.com/repos/dortania/OpenCore-Legacy-Patcher/releases/latest"
response = requests.get(url).json()
changelog = response["body"].split("## Asset Information")[0]
html_markdown = markdown2.markdown(changelog)
html_css = """
<style>
body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
line-height: 1.5;
font-size: 13px;
margin-top: 20px;
background-color: rgb(238,238,238);
}
h2 {
line-height: 0.5;
padding-left: 10px;
}
a {
color: -apple-system-control-accent;
}
@media (prefers-color-scheme: dark) {
body {
color: #fff;
background-color: rgb(47,47,47);
}
}
</style>
"""
frame = wx.Dialog(None, -1, title="", size=(600, 500))
frame.SetMinSize((600, 500))
frame.SetWindowStyle(wx.STAY_ON_TOP)
panel = wx.Panel(frame)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.AddSpacer(10)
self.title_text = wx.StaticText(panel, label="A new version of OpenCore Legacy Patcher is available!")
self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {version} is now available - You have {self.constants.patcher_version}. Would you like to update?")
self.title_text.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
self.description.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
self.web_view = wx.html2.WebView.New(panel, style=wx.BORDER_SUNKEN)
html_code = html_css+html_markdown.replace("<a href=", "<a target='_blank' href=")
self.web_view.SetPage(html_code, "")
self.web_view.Bind(wx.html2.EVT_WEBVIEW_NEWWINDOW, self._onWebviewNav)
self.web_view.EnableContextMenu(False)
self.close_button = wx.Button(panel, label="Ignore")
self.close_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(wx.ID_CANCEL))
self.view_button = wx.Button(panel, ID_GITHUB, label="View on GitHub")
self.view_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(ID_GITHUB))
self.install_button = wx.Button(panel, label="Download and Install")
self.install_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(ID_UPDATE))
self.install_button.SetDefault()
buttonsizer = wx.BoxSizer(wx.HORIZONTAL)
buttonsizer.Add(self.close_button, 0, wx.ALIGN_CENTRE | wx.RIGHT, 5)
buttonsizer.Add(self.view_button, 0, wx.ALIGN_CENTRE | wx.LEFT|wx.RIGHT, 5)
buttonsizer.Add(self.install_button, 0, wx.ALIGN_CENTRE | wx.LEFT, 5)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.title_text, 0, wx.ALIGN_CENTRE | wx.TOP, 20)
sizer.Add(self.description, 0, wx.ALIGN_CENTRE | wx.BOTTOM, 20)
sizer.Add(self.web_view, 1, wx.EXPAND | wx.LEFT|wx.RIGHT, 10)
sizer.Add(buttonsizer, 0, wx.ALIGN_RIGHT | wx.ALL, 20)
panel.SetSizer(sizer)
frame.Centre()
result = frame.ShowModal()
if result == ID_GITHUB:
webbrowser.open(dict["Github Link"])
elif result == ID_UPDATE:
gui_entry.EntryPoint(self.constants).start(entry=gui_entry.SupportedEntryPoints.UPDATE_APP)
return
if utilities.check_seal() is True:
@@ -127,6 +197,9 @@ class AutomaticSysPatch:
if self._determine_if_versions_match():
self._determine_if_boot_matches()
def _onWebviewNav(self, event):
url = event.GetURL()
webbrowser.open(url)
def _determine_if_versions_match(self):
"""

View File

@@ -53,6 +53,7 @@ class DetectRootPatch:
self.legacy_keyboard_backlight = False
self.legacy_uhci_ohci = False
self.legacy_pcie_webcam = False
self.legacy_t1_chip = False
# Patch Requirements
self.amfi_must_disable = False
@@ -540,6 +541,10 @@ class DetectRootPatch:
if self.constants.detected_os >= os_data.os_data.sonoma:
self.legacy_pcie_webcam = self.constants.computer.pcie_webcam
self.legacy_t1_chip = self.constants.computer.t1_chip
if self.legacy_t1_chip is True:
self.amfi_must_disable = True
if self._check_uhci_ohci() is True:
self.legacy_uhci_ohci = True
@@ -622,6 +627,7 @@ class DetectRootPatch:
"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,
"Miscellaneous: T1 Security Chip": self.legacy_t1_chip,
"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,

View File

@@ -176,10 +176,14 @@ 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"]})
required_patches.update({"Legacy USB 1.1 Extended": all_hardware_patchset["Miscellaneous"]["Legacy USB 1.1 Extended"]})
if self.hardware_details["Miscellaneous: PCIe FaceTime Camera"] is True:
required_patches.update({"PCIe FaceTime Camera": all_hardware_patchset["Miscellaneous"]["PCIe FaceTime Camera"]})
if self.hardware_details["Miscellaneous: T1 Security Chip"] is True:
required_patches.update({"T1 Security Chip": all_hardware_patchset["Miscellaneous"]["T1 Security Chip"]})
if required_patches:
host_os_float = float(f"{self.constants.detected_os}.{self.constants.detected_os_minor}")

View File

@@ -60,8 +60,8 @@ def seconds_to_readable_time(seconds) -> str:
seconds = int(seconds)
time = ""
if seconds == 0:
return "0m "
if 0 <= seconds < 60:
return "Less than a minute "
if seconds < 0:
return "Indeterminate time "

View File

@@ -50,7 +50,7 @@ class DownloadFrame(wx.Frame):
title_label.SetFont(gui_support.font_factory(19, wx.FONTWEIGHT_BOLD))
title_label.Centre(wx.HORIZONTAL)
progress_bar = wx.Gauge(frame, range=100, pos=(-1, title_label.GetPosition()[1] + title_label.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), style=wx.GA_SMOOTH|wx.GA_PROGRESS)
progress_bar.Centre(wx.HORIZONTAL)
label_amount = wx.StaticText(frame, label="Preparing download", pos=(-1, progress_bar.GetPosition()[1] + progress_bar.GetSize()[1]))
@@ -68,7 +68,9 @@ class DownloadFrame(wx.Frame):
self.download_obj.download()
while self.download_obj.is_active():
percentage: int = self.download_obj.get_percent()
percentage: int = round(self.download_obj.get_percent())
if percentage == 0:
percentage = 1
if percentage == -1:
amount_str = f"{utilities.human_fmt(self.download_obj.downloaded_file_size)} downloaded ({utilities.human_fmt(self.download_obj.get_speed())}/s)"

View File

@@ -1,5 +1,10 @@
# Generate GUI for main menu
# Portions of this file Copyright (c) 2023 Jazzzny
import wx
import wx.html2
import markdown2
import requests
import sys
import logging
import threading
@@ -271,7 +276,7 @@ class MainFrame(wx.Frame):
def _check_for_updates(self):
if self.constants.has_checked_updates is True:
return
ignore_updates = global_settings.GlobalEnviromentSettings().read_property("IgnoreAppUpdates")
if ignore_updates is True:
self.constants.ignore_updates = True
@@ -285,20 +290,8 @@ class MainFrame(wx.Frame):
version = dict["Version"]
logging.info(f"New version: {version}")
dialog = wx.MessageDialog(
parent=self,
message=f"Current Version: {self.constants.patcher_version}{' (Nightly)' if not self.constants.commit_info[0].startswith('refs/tags') else ''}\nNew version: {version}\nWould you like to update?",
caption="Update Available for OpenCore Legacy Patcher!",
style=wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION
)
dialog.SetYesNoCancelLabels("Download and install", "Ignore", "View on Github")
response = dialog.ShowModal()
if response == wx.ID_YES:
wx.CallAfter(self.on_update, dict["Link"], version)
elif response == wx.ID_CANCEL:
webbrowser.open(dict["Github Link"])
wx.CallAfter(self.on_update, dict["Link"], version, dict["Github Link"])
def on_build_and_install(self, event: wx.Event = None):
self.Hide()
@@ -345,12 +338,90 @@ class MainFrame(wx.Frame):
screen_location=self.GetPosition()
)
def on_update(self, oclp_url: str, oclp_version: str):
gui_update.UpdateFrame(
def on_update(self, oclp_url: str, oclp_version: str, oclp_github_url: str):
ID_GITHUB = wx.NewId()
ID_UPDATE = wx.NewId()
url = "https://api.github.com/repos/dortania/OpenCore-Legacy-Patcher/releases/latest"
response = requests.get(url).json()
changelog = response["body"].split("## Asset Information")[0]
html_markdown = markdown2.markdown(changelog)
html_css = """
<style>
body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
line-height: 1.5;
font-size: 13px;
margin-top: 20px;
background-color: rgb(238,238,238);
}
h2 {
line-height: 0.5;
}
a {
color: -apple-system-control-accent;
}
@media (prefers-color-scheme: dark) {
body {
color: #fff;
background-color: rgb(47,47,47);
}
}
</style>
"""
frame = wx.Dialog(None, -1, title="", size=(600, 500))
frame.SetMinSize((600, 500))
frame.SetWindowStyle(wx.STAY_ON_TOP)
panel = wx.Panel(frame)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.AddSpacer(10)
self.title_text = wx.StaticText(panel, label="A new version of OpenCore Legacy Patcher is available!")
self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {oclp_version} is now available - You have {self.constants.patcher_version}. Would you like to update?")
self.title_text.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
self.description.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
self.web_view = wx.html2.WebView.New(panel, style=wx.BORDER_SUNKEN)
html_code = html_css+html_markdown.replace("<a href=", "<a target='_blank' href=")
self.web_view.SetPage(html_code, "")
self.web_view.Bind(wx.html2.EVT_WEBVIEW_NEWWINDOW, self._onWebviewNav)
self.web_view.EnableContextMenu(False)
self.close_button = wx.Button(panel, label="Dismiss")
self.close_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(wx.ID_CANCEL))
self.view_button = wx.Button(panel, ID_GITHUB, label="View on GitHub")
self.view_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(ID_GITHUB))
self.install_button = wx.Button(panel, label="Download and Install")
self.install_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(ID_UPDATE))
self.install_button.SetDefault()
buttonsizer = wx.BoxSizer(wx.HORIZONTAL)
buttonsizer.Add(self.close_button, 0, wx.ALIGN_CENTRE | wx.RIGHT, 5)
buttonsizer.Add(self.view_button, 0, wx.ALIGN_CENTRE | wx.LEFT|wx.RIGHT, 5)
buttonsizer.Add(self.install_button, 0, wx.ALIGN_CENTRE | wx.LEFT, 5)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.title_text, 0, wx.ALIGN_CENTRE | wx.TOP, 20)
sizer.Add(self.description, 0, wx.ALIGN_CENTRE | wx.BOTTOM, 20)
sizer.Add(self.web_view, 1, wx.EXPAND | wx.LEFT|wx.RIGHT, 10)
sizer.Add(buttonsizer, 0, wx.ALIGN_RIGHT | wx.ALL, 20)
panel.SetSizer(sizer)
frame.Centre()
result = frame.ShowModal()
if result == ID_GITHUB:
webbrowser.open(oclp_github_url)
elif result == ID_UPDATE:
gui_update.UpdateFrame(
parent=self,
title=self.title,
global_constants=self.constants,
screen_location=self.GetPosition(),
url=oclp_url,
version_label=oclp_version
)
)
def _onWebviewNav(self, event):
url = event.GetURL()
webbrowser.open(url)

View File

@@ -277,16 +277,16 @@ class SettingsFrame(wx.Frame):
"wrap_around 2": {
"type": "wrap_around",
},
"APFS Trim": {
"OpenCore Vaulting": {
"type": "checkbox",
"value": self.constants.apfs_trim_timeout,
"variable": "apfs_trim_timeout",
"value": self.constants.vault,
"variable": "vault",
"description": [
"Recommended for all users, however faulty",
"SSDs may benefit from disabling this.",
"Digitally sign OpenCore to prevent",
"tampering or corruption."
],
},
"Show OpenCore Boot Picker": {
"type": "checkbox",
"value": self.constants.showpicker,
@@ -443,6 +443,16 @@ class SettingsFrame(wx.Frame):
],
"condition": not bool(self.constants.computer.third_party_sata_ssd is False and not self.constants.custom_model)
},
"APFS Trim": {
"type": "checkbox",
"value": self.constants.apfs_trim_timeout,
"variable": "apfs_trim_timeout",
"description": [
"Recommended for all users, however faulty",
"SSDs may benefit from disabling this.",
],
},
},
"Advanced": {
"Miscellaneous": {
@@ -836,6 +846,7 @@ class SettingsFrame(wx.Frame):
"Export constants.py values to a txt file.",
],
},
"Developer Root Volume Patching": {
"type": "title",
},