diff --git a/CHANGELOG.md b/CHANGELOG.md index c0ae5cd41..5e6aae0dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # OpenCore Legacy Patcher changelog ## 0.3.1 +- Allow for setting custom SIP values via TUI - Increment Binaries: - OpenCorePkg 0.7.4 release - RestrictEvents 1.0.5 release diff --git a/docs/ACCEL.md b/docs/ACCEL.md index 9bafe433c..fd99d5a5b 100644 --- a/docs/ACCEL.md +++ b/docs/ACCEL.md @@ -9,8 +9,9 @@ * [Wake from sleep heavily distorted on AMD/ATI in macOS 11.3 and newer](#wake-from-sleep-heavily-distorted-on-amd-ati-in-macos-11-3-and-newer) * [Unable to switch GPUs on 2011 15" and 17" MacBook Pros](#unable-to-switch-gpus-on-2011-15-and-17-macbook-pros) * [Erratic Colours on ATI TeraScale 2 GPUs (HD5000/HD6000)](#erratic-colours-on-ati-terascale-2-gpus-hd5000-hd6000) +* [Unable to allow Safari Extensions](#unable-to-allow-Safari-Extensions) -The below page is for users experiencing issues with their overall usage of macOS Big Sur and the Legacy Graphics Acceleration patches. Note that the following GPUs currently do not have acceleration support in Big Sur: +The below page is for users experiencing issues with their overall usage of macOS Big Sur / macOS Monterey and the Legacy Graphics Acceleration patches. Note that the following GPUs currently do not have acceleration support in Big Sur / Monterey: * Intel 3rd and 4th Gen - GMA series @@ -33,22 +34,6 @@ For those unfamiliar with what is considered a non-Metal GPU, see below chart: ::: -Additionally we currently do not have macOS Monterey acceleration patches for non-Metal Macs. We recommend users either upgrade their Macs with a Metal GPU or remain on Big Sur until further development - -::: details Why there's no non-Metal patches for Monterey - -With macOS Monterey, please understand our current legacy acceleration patch sets are no longer functional. As of right now, only basic framebuffer and brightness control may be achieved, however proper animations and hardware acceleration is not available. - -This is due to numerous changes with Skylight and other macOS frameworks relying more and more on Metal functions and thus making it even more difficult to re-add legacy OpenGL support. - -> When can we expect acceleration support - -For the time being, please understand we cannot predict when there will be patch sets ready. Note that it took over 300 days from Big Sur's unveiling to achieve public acceleration for non-Metal GPUs. And with TeraScale 2 acceleration, this took almost 3 years to achieve public acceleration. - -So please be patient as developers are hard at work, however please expect no acceleration support in Monterey until next year at the minimum if not even later. - -::: - ## Downloading older non-Metal Apps Many Apple apps now have direct reliance on Metal for proper functioning, however legacy builds of these apps still do work in Big Sur. See below for archive of many apps such as Pages, iMovie, GarageBand. @@ -106,6 +91,8 @@ Due to the Metal Backend, the enhanced color output of these apps seems to heavi To work around this, simply press Tab to hover over and press spacebar to simulate a click. +Note: This work-around doesn't seem to work in macOS 11.3 and newer + ## Wake from sleep heavily distorted on AMD/ATI in macOS 11.3 and newer Unfortunately a very well known issue the community is investigating, current known solution is to simply downgrade to 11.2.3 or older until a proper fix can be found. Additionally logging out and logging in can resolve the issue without requiring a reboot @@ -135,4 +122,12 @@ Due to an odd bug with ATI's TeraScale 2 GPUs, many users will experience errati Applications that can set color depth are: * [SwitchResX](https://www.madrau.com) -* [ResXtreme](https://macdownload.informer.com/resxtreme/) \ No newline at end of file +* [ResXtreme](https://macdownload.informer.com/resxtreme/) + +## Unable to allow Safari Extensions + +Due to an bug on the legacy acceleration patches, users won't be able to enable Safari Extensions + +This tool can be used to work-around this issue: + +* [Non-Metal Safari Extensions](https://github.com/moosethegoose2213/Non-Metal-Safari-Extensions/) diff --git a/docs/BENIFITS.md b/docs/BENIFITS.md index 06120d8b5..a06a8d6fb 100644 --- a/docs/BENIFITS.md +++ b/docs/BENIFITS.md @@ -11,7 +11,7 @@ With OpenCore Legacy Patcher we recommend users go through the below table to un | System Integrity Protection | Fully enabled on Metal GPUs | Disabled for early 2013 and older during the patching process and first boot afterwards, otherwise enabled | | APFS Snapshots | Fully enabled | Disabled | | User facing | TUI interface | SwiftUI interface, more user friendly | -| Supported OSes | 10.7-11 | 10.15-11 | +| Supported OSes | 10.7-12 | 10.15-11 | | Firmware Patching | None required | Required for models without native APFS support | | BootCamp Switching | Requires EFI Conversion for Start Disk support, otherwise still supported | Native | | Non-Metal GPU Acceleration | In active development, see Acceleration Progress Tracker: [Link](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) | Currently not researching | diff --git a/docs/MODELS.md b/docs/MODELS.md index 8b1a8abd5..7a2c3da39 100644 --- a/docs/MODELS.md +++ b/docs/MODELS.md @@ -20,10 +20,10 @@ Regarding OS support, see below: | Support Entry | Supported OSes | Description | Comment | | :--- | :--- | :--- | :--- | -| HostOS | macOS 10.9 - macOS 11 | Refers to OSes where running OpenCore-Patcher.app are supported | Supports 10.7+ if [Python 3.9 or higher](https://www.python.org/downloads/) is manually installed, simply run the `OpenCore-Patcher.command` located in the repo | -| TargetOS | macOS 11 | Refers to OSes that can be patched to run with OpenCore | May support 10.4 and newer (in a potentially broken state). No support provided. | +| HostOS | macOS 10.9 - macOS 12 | Refers to OSes where running OpenCore-Patcher.app are supported | Supports 10.7+ if [Python 3.9 or higher](https://www.python.org/downloads/) is manually installed, simply run the `OpenCore-Patcher.command` located in the repo | +| TargetOS | macOS 11 - macOS 12 | Refers to OSes that can be patched to run with OpenCore | May support 10.4 and newer (in a potentially broken state). No support provided. | -* macOS Monterey support is currently in beta and is not recommended for everyday users. The below page is meant to represent macOS Big Sur support and may not correctly reflect Monterey's support on each model +* macOS Monterey support is currently in beta and is not recommended for everyday users. * Recommend looking at the [macOS Monterey Support page](./MONTEREY-DROP.md) for a better idea of Monterey's current status ### MacBook diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index fdc3a1866..93093c0ea 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -10,6 +10,7 @@ Here are some common errors users may experience while using this patcher: * [How to Boot Big Sur Recovery](#how-to-boot-big-sur-recovery) * [Stuck on "Your Mac needs a firmware update"](#stuck-on-your-mac-needs-a-firmware-update) * [No Brightness Control](#no-brightness-control) +* [Cannot connect Wi-Fi on Monterey with legacy cards](#cannot-connect-Wi-Fi-on-Monterey-with-legacy-cards) ## Stuck on `This version of Mac OS X is not supported on this platform` @@ -68,3 +69,9 @@ With OCLP v0.0.22, we've added support for brightness control on many models. Ho To work-around, we recommend user try out the below app: * [Brightness Slider](https://actproductions.net/free-apps/brightness-slider/) + +## Cannot connect Wi-Fi on Monterey with legacy cards + +With OCLP v0.2.5, we've added support for legacy Wi-Fi on Monterey. However some users may have noticed that they can't connect to wireless networks. + +To work-around, we recommend users to manually connect using the "other" option on the Wi-Fi menu bar or manually adding the network on the "Network" preference pane. diff --git a/resources/build.py b/resources/build.py index 7da6110b8..9258894ab 100644 --- a/resources/build.py +++ b/resources/build.py @@ -723,7 +723,10 @@ class BuildOpenCore: print("- Setting Vault configuration") self.config["Misc"]["Security"]["Vault"] = "Secure" self.get_efi_binary_by_path("OpenShell.efi", "Misc", "Tools")["Enabled"] = False - if self.constants.sip_status is False: + if self.constants.custom_sip_value: + print(f"- Setting SIP value to: {self.constants.custom_sip_value}") + self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["csr-active-config"] = utilities.string_to_hex(self.constants.custom_sip_value.lstrip("0x")) + elif self.constants.sip_status is False: print("- Disabling SIP") self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["csr-active-config"] = binascii.unhexlify("030E0000") # if self.constants.amfi_status is False: @@ -1042,8 +1045,15 @@ class BuildOpenCore: def sign_files(self): if self.constants.vault is True: - print("- Vaulting EFI") - subprocess.run([str(self.constants.vault_path), f"{self.constants.oc_folder}/"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + if utilities.check_command_line_tools() is True: + # sign.command checks for the existance 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 + print("- Vaulting EFI") + subprocess.run([str(self.constants.vault_path), f"{self.constants.oc_folder}/"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + else: + print("- Missing Command Line tools, skipping Vault for saftey reasons") + print("- Install via 'xcode-select --install' and rerun OCLP if you wish to vault this config") def build_opencore(self): self.build_efi() diff --git a/resources/cli_menu.py b/resources/cli_menu.py index eec13bae3..398cf8265 100644 --- a/resources/cli_menu.py +++ b/resources/cli_menu.py @@ -163,7 +163,7 @@ Note: For security reasons, OpenShell will be disabled when Vault is set. utilities.cls() utilities.header(["Set System Integrity protection"]) print( - """SIP is used to ensure proper secuirty measures are set, + f"""SIP is used to ensure proper secuirty measures are set, however to patch the root volume this must be disabled. Only disable is absolutely necessary. SIP value = 0xE03 @@ -171,6 +171,7 @@ Valid options: 1. Enable SIP 2. Disable SIP +3. Set Custom SIP value {self.constants.custom_sip_value} Q. Return to previous menu """ @@ -180,6 +181,8 @@ Q. Return to previous menu self.constants.sip_status = True elif change_menu == "2": self.constants.sip_status = False + elif change_menu == "3": + self.set_custom_sip_value() elif change_menu in {"q", "Q", "Quit", "quit"}: print("Returning to previous menu") else: @@ -766,6 +769,29 @@ the event there's issues. print("Returning to previous menu") else: self.set_surplus() + + def set_custom_sip_value(self): + utilities.cls() + utilities.header(["Set Custom SIP Value"]) + print( + """ +By default OCLP will use the SIP value of 0x00 as the enabled and +0xE03 for machines that require root patching. For users who wish +to flip additional bits in SIP may use this option. + +To disable SIP outright, set it to 0xFEF + """ + ) + change_menu = input("Set Custom SIP Value (0xFEF): ") + try: + # Verify whether input is a valid hex value + int(change_menu, 16) + # Convert to binary hex + self.constants.custom_sip_value = change_menu + except ValueError: + print("Invalid input, returning to previous menu") + self.set_custom_sip_value() + def credits(self): utilities.TUIOnlyPrint( @@ -914,7 +940,7 @@ system_profiler SPHardwareDataType | grep 'Model Identifier' # MenuOptions(self.constants.custom_model or self.constants.computer.real_model, self.constants).set_amfi, # ], [ - f"Set System Integrity Protection (SIP):\tCurrently {self.constants.sip_status}", + f"Set System Integrity Protection (SIP):\tCurrently {self.constants.custom_sip_value or self.constants.sip_status}", MenuOptions(self.constants.custom_model or self.constants.computer.real_model, self.constants).change_sip, ], [ diff --git a/resources/constants.py b/resources/constants.py index 20753ad85..c38bbe3d8 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -158,6 +158,7 @@ class Constants: self.disable_msr_power_ctl = False # Disable MSR Power Control (missing battery throttling) self.software_demux = False # Enable Software Demux patch set self.force_vmm = False # Force VMM patch + self.custom_sip_value = None # Set custom SIP value # OS Versions ## Based off Major Kernel Version diff --git a/resources/utilities.py b/resources/utilities.py index 2f8e8d7d9..fb0aaf80f 100644 --- a/resources/utilities.py +++ b/resources/utilities.py @@ -196,10 +196,10 @@ def patching_status(os_sip, os): # Catalina and older supports individually disabling Library Validation amfi_enabled = False - if ( - get_nvram("HardwareModel", "94B73556-2197-4702-82A8-3E1337DAFBFB", decode=False) - and get_nvram("HardwareModel", "94B73556-2197-4702-82A8-3E1337DAFBFB", decode=False) not in constants.Constants().sbm_values - ): + if get_nvram("HardwareModel", "94B73556-2197-4702-82A8-3E1337DAFBFB", decode=False): + if get_nvram("HardwareModel", "94B73556-2197-4702-82A8-3E1337DAFBFB", decode=False) not in constants.Constants().sbm_values: + sbm_enabled = False + else: sbm_enabled = False if get_nvram("csr-active-config", decode=False) and csr_decode(get_nvram("csr-active-config", decode=False), os_sip) is False: @@ -238,6 +238,14 @@ def cls(): else: print("\u001Bc") +def check_command_line_tools(): + # Determine whether Command Line Tools exist + # xcode-select -p + xcode_select = subprocess.run("xcode-select -p".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + if xcode_select.returncode == 0: + return True + else: + return False def get_nvram(variable: str, uuid: str = None, *, decode: bool = False): # TODO: Properly fix for El Capitan, which does not print the XML representation even though we say to