mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-15 21:28:55 +10:00
Compare commits
112 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc5d522cb9 | ||
|
|
57713ab195 | ||
|
|
548dad7743 | ||
|
|
a5989e88a3 | ||
|
|
f91e7dc10d | ||
|
|
c889f97a6c | ||
|
|
ff8b2eff2c | ||
|
|
23acd5b6cd | ||
|
|
50256b92c8 | ||
|
|
4731c2c346 | ||
|
|
122aec5ec3 | ||
|
|
e62ca075e8 | ||
|
|
e4d5c62ada | ||
|
|
9db76b5cca | ||
|
|
df4f165122 | ||
|
|
8331c23045 | ||
|
|
bb1132301a | ||
|
|
f6dcc35b48 | ||
|
|
9f583eb590 | ||
|
|
5a700c729e | ||
|
|
4e40da79bb | ||
|
|
53582efd02 | ||
|
|
9b4c66f3d3 | ||
|
|
5c6dcc3485 | ||
|
|
898b10f932 | ||
|
|
5bcc6d58c3 | ||
|
|
eb907d17a0 | ||
|
|
5e3f476884 | ||
|
|
21cc355b03 | ||
|
|
a22531e1d9 | ||
|
|
324188c039 | ||
|
|
ef06f096d0 | ||
|
|
afeff753ef | ||
|
|
bf8892878d | ||
|
|
1f6dfbfd30 | ||
|
|
eeeb222896 | ||
|
|
41733124db | ||
|
|
c9d7267280 | ||
|
|
bb3a7eccc7 | ||
|
|
a73d5c70d4 | ||
|
|
c48711c4c3 | ||
|
|
eebb098aed | ||
|
|
06ae5350cb | ||
|
|
69a41b2951 | ||
|
|
19e43d2850 | ||
|
|
c32a3d89e9 | ||
|
|
b227480e6c | ||
|
|
fbae80ec26 | ||
|
|
299bb0be73 | ||
|
|
7e22a0fe46 | ||
|
|
f1d5adff7a | ||
|
|
9b4fbdfb9a | ||
|
|
e1a8cdc1d5 | ||
|
|
d13f96a454 | ||
|
|
b6599a1357 | ||
|
|
ce09ccf115 | ||
|
|
04a039caf3 | ||
|
|
f006ee4569 | ||
|
|
c1b7e62a02 | ||
|
|
cf11a9e7a9 | ||
|
|
ed14fbfff0 | ||
|
|
ebc39a58eb | ||
|
|
6475b3f055 | ||
|
|
bd86a8cc04 | ||
|
|
de2166915a | ||
|
|
bab6faac97 | ||
|
|
16b9cb44c2 | ||
|
|
3d9f3a1147 | ||
|
|
0b5c244a2e | ||
|
|
c94aebc369 | ||
|
|
8fc015a108 | ||
|
|
f5ba7816d9 | ||
|
|
37c0bf1e22 | ||
|
|
e699b6f2cb | ||
|
|
2904ca702c | ||
|
|
8f10f1938e | ||
|
|
b7f7489c5d | ||
|
|
691c462bba | ||
|
|
e51ec8eb8e | ||
|
|
ee7bf05780 | ||
|
|
3223854cdd | ||
|
|
a35384e0b1 | ||
|
|
faa0456ff7 | ||
|
|
5d0d1968f5 | ||
|
|
21277e5738 | ||
|
|
4f8748932d | ||
|
|
1b1ca79374 | ||
|
|
97ae6b587c | ||
|
|
d22588b3cd | ||
|
|
8041dca103 | ||
|
|
6c304402dd | ||
|
|
ec3ecdca38 | ||
|
|
0fe707637a | ||
|
|
77b19688ae | ||
|
|
0d6e159b72 | ||
|
|
1afb953f05 | ||
|
|
ee07dc9936 | ||
|
|
254267f1be | ||
|
|
b78247f9e8 | ||
|
|
5bfee53d99 | ||
|
|
5154492c97 | ||
|
|
5c97527038 | ||
|
|
3fd08803d6 | ||
|
|
de5cf6f93d | ||
|
|
60b9d9d811 | ||
|
|
8405a8162f | ||
|
|
95558ab31e | ||
|
|
256bd8dd71 | ||
|
|
c960153442 | ||
|
|
c712f33cf3 | ||
|
|
4e659ebdbb | ||
|
|
ed55cc3bbd |
14
.github/workflows/main.yml
vendored
14
.github/workflows/main.yml
vendored
@@ -2,7 +2,6 @@ name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
release:
|
||||
types: [published]
|
||||
@@ -10,20 +9,21 @@ on:
|
||||
jobs:
|
||||
build:
|
||||
name: Build App
|
||||
runs-on: macos-latest
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
python3 -m pip install -U pip
|
||||
pip3 install pyinstaller
|
||||
# - name: Install Python Dependencies
|
||||
# run: |
|
||||
# python3 -m pip install -U pip
|
||||
# pip3 install pyinstaller
|
||||
|
||||
- run: pyinstaller Opencore-Patcher.spec
|
||||
- run: ./after_pyinstaller.sh
|
||||
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --deep --timestamp --entitlements entitlements.plist -o runtime "dist/OpenCore-Patcher.app"'
|
||||
|
||||
- run: cd dist; zip ../OpenCore-Patcher.zip OpenCore-Patcher; zip -r ../OpenCore-Patcher.app.zip OpenCore-Patcher.app
|
||||
|
||||
- run: ./../sign-app.sh
|
||||
- name: Upload Binary to Artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,7 @@
|
||||
.DS_Store
|
||||
OCLP-GUI.command
|
||||
/payloads/Apple-Binaries-OCLP-main
|
||||
/payloads/__MACOSX
|
||||
/App
|
||||
/Build-Folder
|
||||
/build
|
||||
|
||||
38
CHANGELOG.md
38
CHANGELOG.md
@@ -1,5 +1,43 @@
|
||||
# OpenCore Legacy Patcher changelog
|
||||
|
||||
## 0.0.21
|
||||
- Fix botched images in OpenCanopy
|
||||
- Add support for 3rd party OpenCore usage detection during building
|
||||
- Mainly for users transtioning from Ausdauersportler's OpenCore configuration
|
||||
|
||||
## 0.0.20
|
||||
- Fix CPU Calculation on early MCP79 chipsets (ie. iMac9,1, MacBook5,x)
|
||||
- Increment binaries
|
||||
- OpenCore c528597 (0.6.8 release - 2021-04-05)
|
||||
- Lilu 3ef7ca1 (1.5.2 release - 2021-04-05)
|
||||
- WhateverGreen afcd687 (1.4.9 release - 2021-04-05)
|
||||
- Move Apple binaries to dedicated repo and allow custom repos
|
||||
- Reduces App size 1/5th compared to 0.0.19
|
||||
- Fix OpenCanopy support on iMac7,1 and 8,1
|
||||
- Set iGPU-less iMacs to iMacPro1,1
|
||||
- Additionally fixes Bluetooth on older iMacs with BRCM2046 modules
|
||||
- Add MacBook4,1 support
|
||||
- Create dedicated RestrictEvents build for MacBookPro9,1
|
||||
- Fix Mac Pro and Xserve output issues
|
||||
|
||||
## 0.0.19
|
||||
- Add SMC-Spoof.kext to avoid triggering `smcupdater`
|
||||
- Add Root Volume patching for older machines
|
||||
- AppleHDA Patch for 2011 and older (Excluding MacPro4,1+)
|
||||
- Fix CPU Speed reporting
|
||||
- Increment binaries
|
||||
- OpenCore 9cd61bb (0.6.8 rolling - 2021-03-27)
|
||||
- Add Mavericks and newer .app support
|
||||
- Refactor USB map building, fixes USB 3.0 displaying as USB 2.0
|
||||
- Fix blackscreen on MacBookPro9,1
|
||||
- Update RestrictEvents with custom build (1.0.1)
|
||||
- Blocks `/usr/libexec/displaypolicyd` on MacBookPro9,1 to ensure smooth GPU switching
|
||||
- Add custom SD Card icon
|
||||
- Add automatic codesiging and notarization
|
||||
- Fix crashing when CD is present
|
||||
- Add custom SSD icon
|
||||
- Fix Broadcom Ethernet on older 2009-2011 Macs
|
||||
|
||||
## 0.0.18
|
||||
- Disable Vault by default due to breaking installations
|
||||
- Move BOOTx64.efi to System/Library/CoreServices/ to support GPT BootCamp installs
|
||||
|
||||
161
OCLP-GUI.command
161
OCLP-GUI.command
@@ -1,161 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Current GUI issues:
|
||||
#
|
||||
# - Settings:
|
||||
# - Broken toggle(Does not update variable)
|
||||
# - Missing toggles(OpenCore, Kext, Metal, Wifi, SMBIOS)
|
||||
# - Install OpenCore:
|
||||
# - Outright non-functional
|
||||
# - Pottential implementations would be to copy TUI's UI
|
||||
|
||||
from tkinter import *
|
||||
import subprocess, sys, time
|
||||
import tkinter as tk
|
||||
from Resources import build, ModelArray, Constants, utilities
|
||||
|
||||
|
||||
# Build main menu
|
||||
class GUI_MENU():
|
||||
def __init__(self):
|
||||
self.constants = Constants.Constants()
|
||||
self.current_model: str = None
|
||||
self.constants.gui_mode = True
|
||||
opencore_model: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||
if not opencore_model.startswith("nvram: Error getting variable"):
|
||||
opencore_model = [line.strip().split(":oem-product ", 1)[1] for line in opencore_model.split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
|
||||
self.current_model = opencore_model
|
||||
else:
|
||||
self.current_model = subprocess.run("system_profiler SPHardwareDataType".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
self.current_model = [line.strip().split(": ", 1)[1] for line in self.current_model.stdout.decode().split("\n") if line.strip().startswith("Model Identifier")][0]
|
||||
|
||||
# Update SMBIOS
|
||||
def update_model_clicked(self):
|
||||
current_model = self.entry_smbios.get()
|
||||
self.current_model = current_model.strip()
|
||||
if self.current_model in ModelArray.SupportedSMBIOS11:
|
||||
self.support = True
|
||||
self.support_string = "Model is supported"
|
||||
else:
|
||||
self.support = False
|
||||
self.support_string = "Model is unsupported"
|
||||
# Update Labels
|
||||
self.label_smbios.configure(text=f" Configured model: {self.current_model} ", font=(".AppleSystemUIFont", 15))
|
||||
self.label_support.configure(text=self.support_string, font=(".AppleSystemUIFont", 15))
|
||||
|
||||
def build_clicked(self):
|
||||
build_window = tk.Tk()
|
||||
build_window.title("Build Menu")
|
||||
build_window.minsize(250, 30)
|
||||
build_window.eval('tk::PlaceWindow %s center' % build_window.winfo_pathname(build_window.winfo_id()))
|
||||
support_build_2 = """Model is unsupported
|
||||
Please enter a supported model in the main menu.
|
||||
"""
|
||||
|
||||
build_label = tk.Label(build_window, text=support_build_2)
|
||||
if self.current_model in ModelArray.SupportedSMBIOS11:
|
||||
support_build_2 = """
|
||||
Model is supported, building EFI..
|
||||
If you see this text for more than 15 seconds, try restarting the build
|
||||
|
||||
If repeated, please open an issue on Github
|
||||
"""
|
||||
|
||||
build_label.configure(text=support_build_2)
|
||||
build_label.pack()
|
||||
build.BuildOpenCore(self.current_model, self.constants).build_opencore()
|
||||
support_build_2 = f"""Finished building OpenCore for model {self.current_model}!
|
||||
Built at:
|
||||
{self.constants.opencore_release_folder}
|
||||
|
||||
Close this window and select Install OpenCore 🔧
|
||||
"""
|
||||
build_label.configure(text=support_build_2)
|
||||
build_label.pack()
|
||||
else:
|
||||
support_build_2 = "Model is unsupported"
|
||||
build_label.pack()
|
||||
build_window.eval('tk::PlaceWindow %s center' % build_window.winfo_pathname(build_window.winfo_id()))
|
||||
|
||||
def settings_menu(self):
|
||||
|
||||
#def v_func(self, v_var):
|
||||
|
||||
|
||||
|
||||
settings_window = tk.Tk()
|
||||
settings_window.title("Settings Menu")
|
||||
settings_window.minsize(250, 20)
|
||||
|
||||
label_settings = tk.Label(settings_window, text="Patcher Settings")
|
||||
label_settings.place(relx=0.1, rely=0.1, anchor=SW)
|
||||
|
||||
local_verbose_debug = tk.BooleanVar()
|
||||
verbose_box = tk.Checkbutton(settings_window, text='Enable Verbose Booting', variable=local_verbose_debug)
|
||||
verbose_box.pack()
|
||||
local_verbose_debug.set(True)
|
||||
print(local_verbose_debug.get())
|
||||
verbose_box.local_verbose_debug = local_verbose_debug
|
||||
|
||||
|
||||
#local_verbose_debug..set(self.constants.verbose_debug)
|
||||
|
||||
settings_window.eval('tk::PlaceWindow %s center' % settings_window.winfo_pathname(settings_window.winfo_id()))
|
||||
|
||||
|
||||
|
||||
def main_menu(self):
|
||||
#self.identify_model()
|
||||
main_window = tk.Tk()
|
||||
main_window.title("Main Menu")
|
||||
window_height = 350
|
||||
window_width = 400
|
||||
main_window.resizable(False, False)
|
||||
screen_width = main_window.winfo_screenwidth()
|
||||
screen_height = main_window.winfo_screenheight()
|
||||
x_cordinate = int((screen_width/2) - (window_width/2))
|
||||
y_cordinate = int((screen_height/2) - (window_height/2))
|
||||
main_window.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate))
|
||||
|
||||
|
||||
# Check if supported
|
||||
if self.current_model in ModelArray.SupportedSMBIOS11:
|
||||
self.support = True
|
||||
self.support_string = "Model is supported"
|
||||
else:
|
||||
self.support = False
|
||||
self.support_string = "Model is unsupported"
|
||||
|
||||
# Setup Labels
|
||||
self.label_header = tk.Label(text=f"OpenCore Legacy Patcher v{self.constants.patcher_version}", font=(".AppleSystemUIFont", 20))
|
||||
self.label_smbios = tk.Label(text=f"Detected model: {self.current_model}", font=(".AppleSystemUIFont", 15))
|
||||
self.label_support = tk.Label(text=self.support_string, font=(".AppleSystemUIFont", 15))
|
||||
self.label_build = tk.Label(text="🔨",font=(".AppleSystemUIFont", 50))
|
||||
self.label_install = tk.Label(text="🔧",font=(".AppleSystemUIFont", 50))
|
||||
|
||||
# Setup Text Entry
|
||||
self.entry_smbios = tk.Entry(width=12, justify='center')
|
||||
|
||||
# Setup Buttons
|
||||
self.button_update = tk.Button(text="Update SMBIOS", command=self.update_model_clicked)
|
||||
self.button_build = tk.Button(text="Build OpenCore", command=self.build_clicked)
|
||||
self.button_install = tk.Button(text="Install OpenCore")
|
||||
self.button_settings = tk.Button(text="⚙️", command=self.settings_menu)
|
||||
|
||||
# Place Labels
|
||||
self.label_header.place(relx=0.5, rely=0.0, anchor=N)
|
||||
self.label_smbios.place(relx=0.5, rely=0.1, anchor=N)
|
||||
self.label_support.place(relx=0.5, rely=0.2, anchor=N)
|
||||
self.entry_smbios.place(relx=0.5, rely=0.3, anchor=N)
|
||||
self.button_update.place(relx=0.5, rely=0.4, anchor=N)
|
||||
self.label_build.place(relx=0.25, rely=0.75, anchor=S)
|
||||
self.button_build.place(relx=0.25, rely=0.85, anchor=S)
|
||||
self.label_install.place(relx=0.75, rely=0.75, anchor=S)
|
||||
self.button_install.place(relx=0.75, rely=0.85, anchor=S)
|
||||
self.button_settings.place(relx=0.9, rely=0.175, anchor=S)
|
||||
|
||||
main_window.mainloop()
|
||||
|
||||
|
||||
|
||||
GUI_MENU().main_menu()
|
||||
@@ -1,10 +1,14 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import subprocess, sys, time, platform
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
import platform
|
||||
|
||||
from Resources import build, ModelArray, Constants, utilities
|
||||
from Resources import build, ModelArray, Constants, SysPatch, utilities, CliMenu
|
||||
|
||||
|
||||
class OpenCoreLegacyPatcher():
|
||||
@@ -18,11 +22,24 @@ class OpenCoreLegacyPatcher():
|
||||
else:
|
||||
self.current_model = subprocess.run("system_profiler SPHardwareDataType".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
self.current_model = [line.strip().split(": ", 1)[1] for line in self.current_model.stdout.decode().split("\n") if line.strip().startswith("Model Identifier")][0]
|
||||
self.constants.detected_os, _, _ = platform.mac_ver()
|
||||
self.constants.detected_os = float('.'.join(self.constants.detected_os.split('.')[:2]))
|
||||
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
|
||||
if self.current_model in ModelArray.NoAPFSsupport:
|
||||
self.constants.serial_settings = "Moderate"
|
||||
|
||||
# Logic for when user runs custom OpenCore build and do not expose it
|
||||
# Note: This logic currently only applies for iMacPro1,1 users, see below threads on the culprits:
|
||||
# - https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/post-17425857
|
||||
# - https://forums.macrumors.com/threads/opencore-on-the-mac-pro.2207814/
|
||||
# PLEASE FOR THE LOVE OF GOD JUST SET ExposeSensitiveData CORRECTLY!!!
|
||||
if self.current_model == "iMacPro1,1":
|
||||
serial: str = subprocess.run("system_profiler SPHardwareDataType | grep Serial".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||
serial = [line.strip().split("Number (system): ", 1)[1] for line in serial.split("\n") if line.strip().startswith("Serial")][0]
|
||||
true_model = subprocess.run([str(self.constants.macserial_path), "--info", str(serial)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
true_model = [i.partition(" - ")[2] for i in true_model.stdout.decode().split("\n") if "Model: " in i][0]
|
||||
print(f"True Model: {true_model}")
|
||||
if not true_model.startswith("Unknown"):
|
||||
self.current_model = true_model
|
||||
|
||||
def build_opencore(self):
|
||||
build.BuildOpenCore(self.constants.custom_model or self.current_model, self.constants).build_opencore()
|
||||
|
||||
@@ -49,207 +66,7 @@ system_profiler SPHardwareDataType | grep 'Model Identifier'
|
||||
if self.constants.custom_model in ModelArray.NoAPFSsupport:
|
||||
self.constants.serial_settings = "Moderate"
|
||||
|
||||
def change_os(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Select Patcher's Target OS"])
|
||||
print(f"""
|
||||
Minimum Target:\t{self.constants.min_os_support}
|
||||
Maximum Target:\t{self.constants.max_os_support}
|
||||
Current target:\t{self.constants.os_support}
|
||||
""")
|
||||
temp_os_support = float(input("Please enter OS target: "))
|
||||
if (self.constants.max_os_support < temp_os_support) or (temp_os_support < self.constants.min_os_support):
|
||||
print("Unsupported entry")
|
||||
else:
|
||||
self.constants.os_support = temp_os_support
|
||||
if temp_os_support == 11.0:
|
||||
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS11
|
||||
elif temp_os_support == 12.0:
|
||||
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS12
|
||||
|
||||
def change_verbose(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set Verbose mode"])
|
||||
verbose_menu = input("Enable Verbose mode(y/n): ")
|
||||
if verbose_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.verbose_debug = True
|
||||
elif verbose_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.verbose_debug = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_oc(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set OpenCore DEBUG mode"])
|
||||
change_oc_menu = input("Enable OpenCore DEBUG mode(y/n): ")
|
||||
if change_oc_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.opencore_debug = True
|
||||
self.constants.opencore_build = "DEBUG"
|
||||
elif change_oc_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.opencore_debug = False
|
||||
self.constants.opencore_build = "RELEASE"
|
||||
else:
|
||||
print("Invalid option")
|
||||
def change_kext(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set Kext DEBUG mode"])
|
||||
change_kext_menu = input("Enable Kext DEBUG mode(y/n): ")
|
||||
if change_kext_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.kext_debug = True
|
||||
elif change_kext_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.kext_debug = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_metal(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Assume Metal GPU Always in iMac"])
|
||||
print("""This is for iMacs that have upgraded Metal GPUs, otherwise
|
||||
Patcher assumes based on stock configuration (ie. iMac10,x-12,x)
|
||||
|
||||
Valid Options:
|
||||
|
||||
1. None(stock GPU)
|
||||
2. Nvidia GPU
|
||||
3. AMD GPU
|
||||
|
||||
Note: Patcher will detect whether hardware has been upgraded regardless, this
|
||||
option is for those patching on a different machine or OCLP cannot detect.
|
||||
""")
|
||||
change_kext_menu = input("Set GPU Patch type(ie. 1): ")
|
||||
if change_kext_menu == "1":
|
||||
self.constants.metal_build = False
|
||||
self.constants.imac_vendor = "None"
|
||||
elif change_kext_menu == "2":
|
||||
self.constants.metal_build = True
|
||||
self.constants.imac_vendor = "Nvidia"
|
||||
elif change_kext_menu == "3":
|
||||
self.constants.metal_build = True
|
||||
self.constants.imac_vendor = "AMD"
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_wifi(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Assume Upgraded Wifi Always"])
|
||||
print("""This is for Macs with upgraded wifi cards(ie. BCM94360/2)
|
||||
|
||||
Note: Patcher will detect whether hardware has been upgraded regardless, this
|
||||
option is for those patching on a different machine or cannot detect.
|
||||
""")
|
||||
change_kext_menu = input("Enable Upgraded Wifi build algorithm?(y/n): ")
|
||||
if change_kext_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.wifi_build = True
|
||||
elif change_kext_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.wifi_build = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_serial(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set SMBIOS Mode"])
|
||||
print("""This section is for setting how OpenCore generates the SMBIOS
|
||||
Recommended for adanced users who want control how serials are handled
|
||||
|
||||
Valid options:
|
||||
|
||||
1. Minimal:\tUse original serials and minimally update SMBIOS
|
||||
2. Moderate:\tReplace entire SMBIOS but keep original serials
|
||||
3. Advanced:\tReplace entire SMBIOS and generate new serials
|
||||
|
||||
Note: For new users we recommend leaving as default(1. Minimal)
|
||||
""")
|
||||
change_serial_menu = input("Set SMBIOS Mode(ie. 1): ")
|
||||
if change_serial_menu == "1":
|
||||
self.constants.serial_settings = "Minimal"
|
||||
elif change_serial_menu == "2":
|
||||
self.constants.serial_settings = "Moderate"
|
||||
elif change_serial_menu == "3":
|
||||
self.constants.serial_settings = "Advanced"
|
||||
else:
|
||||
print("Invalid option")
|
||||
def change_showpicker(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set OpenCore Picker mode"])
|
||||
print("""By default, OpenCore will show its boot picker each time on boot up,
|
||||
however this can be disabled by default and be shown on command by repeatedly
|
||||
pressing the "Esc" key
|
||||
""")
|
||||
change_kext_menu = input("Show OpenCore Picker by default(y/n): ")
|
||||
if change_kext_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.showpicker = True
|
||||
elif change_kext_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.showpicker = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_vault(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set OpenCore Vaulting"])
|
||||
print("""By default, this patcher will sign all your files and ensure none of the
|
||||
contents can be tampered with. However for more advanced users, you may
|
||||
want to be able to freely edit the config.plist and files.
|
||||
|
||||
Note: For secuirty reasons, OpenShell will be disabled when Vault is set.
|
||||
|
||||
""")
|
||||
change_kext_menu = input("Enable Vault(y/n): ")
|
||||
if change_kext_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.vault = True
|
||||
elif change_kext_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.vault = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_sip(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set SIP and SecureBootModel"])
|
||||
print("""SIP and SecureBootModel are used to ensure proper OTA functionality,
|
||||
however to patch the root volume both of these must be disabled.
|
||||
Only disable is absolutely necessary. SIP value = 0xFEF
|
||||
|
||||
Note: for minor changes, SIP can be adjusted in recovery like normal.
|
||||
Additionally, when disabling SIP via the patcher amfi_get_out_of_my_way=1
|
||||
will be added to boot-args.
|
||||
|
||||
Valid options:
|
||||
|
||||
1. Enable Both
|
||||
2. Disable SIP only
|
||||
3. Disable SecureBootModel Only
|
||||
4. Disable Both
|
||||
|
||||
""")
|
||||
change_kext_menu = input("Set SIP and SecureBootModel(ie. 1): ")
|
||||
if change_kext_menu == "1":
|
||||
self.constants.sip_status = True
|
||||
self.constants.secure_status = True
|
||||
elif change_kext_menu == "2":
|
||||
self.constants.sip_status = False
|
||||
self.constants.secure_status = True
|
||||
elif change_kext_menu == "3":
|
||||
self.constants.sip_status = True
|
||||
self.constants.secure_status = False
|
||||
elif change_kext_menu == "4":
|
||||
self.constants.sip_status = False
|
||||
self.constants.secure_status = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_imac_nvidia(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Force iMac Nvidia Patches"])
|
||||
print("""Specifically for iMac10,x-12,x with Metal Nvidia GPU upgrades
|
||||
By default the patcher will try to detect what hardware is
|
||||
running, however this will enforce iMac Nvidia Build Patches.
|
||||
""")
|
||||
change_kext_menu = input("Assume iMac Nvidia patches(y/n): ")
|
||||
if change_kext_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.imac_nvidia_build = True
|
||||
elif change_kext_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.imac_nvidia_build = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def patcher_settings(self):
|
||||
response = None
|
||||
@@ -261,15 +78,16 @@ running, however this will enforce iMac Nvidia Build Patches.
|
||||
options = [
|
||||
# TODO: Enable setting OS target when more OSes become supported by the patcher
|
||||
#[f"Change OS version:\t\t\tCurrently macOS {self.constants.os_support}", self.change_os],
|
||||
[f"Enable Verbose Mode:\t\tCurrently {self.constants.verbose_debug}", self.change_verbose],
|
||||
[f"Enable OpenCore DEBUG:\t\tCurrently {self.constants.opencore_debug}", self.change_oc],
|
||||
[f"Enable Kext DEBUG:\t\t\tCurrently {self.constants.kext_debug}", self.change_kext],
|
||||
[f"Force iMac Metal Patch:\t\tCurrently {self.constants.imac_vendor}", self.change_metal],
|
||||
[f"Assume Upgraded Wifi Always:\tCurrently {self.constants.wifi_build}", self.change_wifi],
|
||||
[f"Set ShowPicker Mode:\t\tCurrently {self.constants.showpicker}", self.change_showpicker],
|
||||
[f"Set Vault Mode:\t\t\tCurrently {self.constants.vault}", self.change_vault],
|
||||
[f"Set SIP and SecureBootModel:\tSIP: {self.constants.sip_status} SBM: {self.constants.secure_status}", self.change_sip],
|
||||
[f"Set SMBIOS Mode:\t\t\tCurrently {self.constants.serial_settings}", self.change_serial],
|
||||
[f"Enable Verbose Mode:\t\tCurrently {self.constants.verbose_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_verbose],
|
||||
[f"Enable OpenCore DEBUG:\t\tCurrently {self.constants.opencore_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_oc],
|
||||
[f"Enable Kext DEBUG:\t\t\tCurrently {self.constants.kext_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_kext],
|
||||
[f"Force iMac Metal Patch:\t\tCurrently {self.constants.imac_vendor}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_metal],
|
||||
[f"Assume Upgraded Wifi Always:\tCurrently {self.constants.wifi_build}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_wifi],
|
||||
[f"Set ShowPicker Mode:\t\tCurrently {self.constants.showpicker}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_showpicker],
|
||||
[f"Set Vault Mode:\t\t\tCurrently {self.constants.vault}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_vault],
|
||||
[f"Set SIP and SecureBootModel:\tSIP: {self.constants.sip_status} SBM: {self.constants.secure_status}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_sip],
|
||||
[f"Set SMBIOS Mode:\t\t\tCurrently {self.constants.serial_settings}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_serial],
|
||||
[f"Set Custom Patch Repo", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).custom_repo],
|
||||
]
|
||||
|
||||
for option in options:
|
||||
@@ -285,9 +103,35 @@ running, however this will enforce iMac Nvidia Build Patches.
|
||||
- Khronokernel:\tWriting and maintaining this patcher
|
||||
- DhinakG:\t\tWriting and maintaining this patcher
|
||||
- Syncretic:\t\tAAAMouSSE and telemetrap
|
||||
- Slice:\t\tVoodooHDA
|
||||
- cdf:\t\tNightShiftEnabler"""]).start()
|
||||
|
||||
def PatchVolume(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Patching System Volume"])
|
||||
print("""Patches Root volume to fix misc issues such as:
|
||||
|
||||
- Audio (AppleHDA) Patch for 2011 and older (Excluding MacPro4,1+)
|
||||
|
||||
WARNING: Root Volume Patching is still in active development, please
|
||||
have all important user data backed up. Note when the system volume
|
||||
is patched, you can no longer have Delta updates or have FileVault
|
||||
enabled.
|
||||
|
||||
Supported Options:
|
||||
|
||||
1. Patch System Volume
|
||||
2. Unpatch System Volume (Experimental)
|
||||
B. Exit
|
||||
""")
|
||||
change_menu = input("Patch System Volume?: ")
|
||||
if change_menu == "1":
|
||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_patch()
|
||||
elif change_menu == "2":
|
||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_unpatch()
|
||||
else:
|
||||
print("Returning to main menu")
|
||||
|
||||
|
||||
def main_menu(self):
|
||||
response = None
|
||||
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS11
|
||||
@@ -304,14 +148,14 @@ running, however this will enforce iMac Nvidia Build Patches.
|
||||
'',
|
||||
'If you plan to create the USB for another machine, please select the "Change Model" option in the menu.'
|
||||
]
|
||||
elif not self.constants.custom_model and self.current_model in ("MacPro3,1", "iMac7,1") and \
|
||||
elif not self.constants.custom_model and self.current_model == "iMac7,1" and \
|
||||
"SSE4.1" not in subprocess.run("sysctl machdep.cpu.features".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode():
|
||||
in_between = [
|
||||
'Your model requires a CPU upgrade to a CPU supporting SSE4.1+ to be supported by this patcher!',
|
||||
'',
|
||||
f'If you plan to create the USB for another {self.current_model} with SSE4.1+, please select the "Change Model" option in the menu.'
|
||||
]
|
||||
elif self.constants.custom_model in ("MacPro3,1", "iMac7,1"):
|
||||
elif self.constants.custom_model == "iMac7,1":
|
||||
in_between = ["This model is supported",
|
||||
"However please ensure the CPU has been upgraded to support SSE4.1+"
|
||||
]
|
||||
@@ -323,6 +167,7 @@ running, however this will enforce iMac Nvidia Build Patches.
|
||||
options = (
|
||||
[["Build OpenCore", self.build_opencore]] if ((self.constants.custom_model or self.current_model) in ModelArray.SupportedSMBIOS) else []) + [
|
||||
["Install OpenCore to USB/internal drive", self.install_opencore],
|
||||
["Post-Install Volume Patch", self.PatchVolume],
|
||||
["Change Model", self.change_model],
|
||||
["Patcher Settings", self.patcher_settings],
|
||||
["Credits", self.credits]
|
||||
|
||||
37
README.md
37
README.md
@@ -2,23 +2,31 @@
|
||||
|
||||
<img src="images/OC-Patcher.png" width="256">
|
||||
|
||||
A python program for building and booting OpenCore on legacy Macs, see [Supported SMBIOS](https://dortania.github.io/OpenCore-Legacy-Patcher/MODELS.html) on whether your model is supported.
|
||||
A python program for building and booting [OpenCore](https://github.com/acidanthera/OpenCorePkg) on legacy Macs, see [Supported SMBIOS](https://dortania.github.io/OpenCore-Legacy-Patcher/MODELS.html) on whether your model is supported. Designed around Big Sur support, however can be used on older OSes.
|
||||
|
||||
| Support Entry | Supported OSes | Description | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| HostOS | macOS 10.7-11 | Refers to OSes where running OpenCore-Patcher.app are supported | Supports 10.7+ if [python 3.6 or higher](https://www.python.org/downloads/) is manually installed, simply run the `OpenCore-Patcher.command` located in the repo |
|
||||
| TargetOS | macOS 11 | Refers to OSes that can be patched to run with OpenCore | Unofficially supports 10.4 and newer, no support provided via this patcher |
|
||||
|
||||
Supported features:
|
||||
|
||||
* System Integrity Protection, FileVault 2, .im4m Secure Boot and Vaulting
|
||||
* Native OTA OS DELTA updates on all Macs
|
||||
* Recovery OS, Safe Mode and Single-user Mode booting
|
||||
* Zero firmware patching required(ie. APFS ROM patching)
|
||||
* GPU Switching on MacBook Pro models(2012 and newer)
|
||||
* Zero firmware patching required (ie. APFS ROM patching)
|
||||
* GPU Switching on MacBook Pro models (2012 and newer)
|
||||
|
||||
Note: Only clean-installs and upgrades are supported, installs already patched with [Patched-Sur](https://github.com/BenSova/Patched-Sur) or [bigmac](https://github.com/StarPlayrX/bigmac) cannot be used due to broken file integrity with APFS snapshots and SIP.
|
||||
|
||||
* You can however reinstall macOS with this patcher and retain your original data
|
||||
|
||||
Note 2: Currently OpenCore Legacy Patcher only supports macOS 11, Big Sur installs. For older OSes, please use [Dosdude1's patchers](http://dosdude1.com)
|
||||
Note 2: Currently OpenCore Legacy Patcher officially supports patching to run macOS 11, Big Sur installs. For older OSes, OpenCore may function however support is currently not provided from Dortania.
|
||||
|
||||
For Mojave and Catalina support, we recommend the use of [dosdude1's patchers](http://dosdude1.com)
|
||||
|
||||
## How to use
|
||||
|
||||
See the online guide on how:
|
||||
|
||||
* [OpenCore Legacy Patcher Guide](https://dortania.github.io/OpenCore-Legacy-Patcher/)
|
||||
@@ -30,6 +38,23 @@ Since this patcher tricks macOS into thinking you're running a newer Mac, certai
|
||||
* Boot Camp Assistant.app
|
||||
* We recommend running the assistant on a natively supported OS, running via the patcher may result in unforeseen issues
|
||||
* Legacy Windows Booting
|
||||
* Currently OpenCore cannot boot MBR-based installs, so Ivy Bridge and older Machines may not be able to see Windows in OpenCore's Boot Picker
|
||||
* Currently OpenCore cannot boot MBR-based installs, so Ivy Bridge and older Machines may [not be able to see Windows in OpenCore's Boot Picker](https://github.com/acidanthera/bugtracker/issues/912)
|
||||
* [Solution is to convert install to UEFI](https://docs.microsoft.com/en-us/mem/configmgr/osd/deploy-use/task-sequence-steps-to-manage-bios-to-uefi-conversion)
|
||||
* Boot Buddy support
|
||||
* Due to how OpenCore overwrites NVRAM , the usage of Boot Buddy and such tools are **highly** in-advised
|
||||
* Due to how OpenCore overwrites NVRAM, the usage of Boot Buddy and such tools are **highly** in-advised
|
||||
|
||||
## Support
|
||||
|
||||
To get aid with the patcher, we recommend joining the [Unsupported Mac Discord Server](https://discord.gg/XbbWAsE) and heading over to our `#opencore-patcher` channel. We're actively there and is the quickest way to receive help. For bigger issues such as patcher crashing on build and such, we recommend opening an issue right here on GitHub:
|
||||
|
||||
* [OpenCore Legacy Patcher's Issue's tab](https://github.com/dortania/OpenCore-Legacy-Patcher/issues)
|
||||
|
||||
Regarding how to debug OpenCore Patcher, we recommend seeing the below:
|
||||
|
||||
* [How to debug with OpenCore](https://dortania.github.io/OpenCore-Legacy-Patcher/DEBUG.html)
|
||||
|
||||
## Supporting us!
|
||||
|
||||
To help support this patcher, we recommend chancking this page:
|
||||
|
||||
* [Supporting the patcher](https://dortania.github.io/OpenCore-Legacy-Patcher/DONATE.html)
|
||||
|
||||
239
Resources/CliMenu.py
Normal file
239
Resources/CliMenu.py
Normal file
@@ -0,0 +1,239 @@
|
||||
# Handle misc CLI menu options
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
from __future__ import print_function
|
||||
|
||||
import subprocess, sys, time, platform
|
||||
|
||||
from Resources import build, ModelArray, Constants, SysPatch, utilities
|
||||
|
||||
class MenuOptions:
|
||||
def __init__(self, model, versions):
|
||||
self.model = model
|
||||
self.constants: Constants.Constants = versions
|
||||
|
||||
def change_os(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Select Patcher's Target OS"])
|
||||
print(f"""
|
||||
Minimum Target:\t{self.constants.min_os_support}
|
||||
Maximum Target:\t{self.constants.max_os_support}
|
||||
Current target:\t{self.constants.os_support}
|
||||
""")
|
||||
temp_os_support = float(input("Please enter OS target: "))
|
||||
if (self.constants.max_os_support < temp_os_support) or (temp_os_support < self.constants.min_os_support):
|
||||
print("Unsupported entry")
|
||||
else:
|
||||
self.constants.os_support = temp_os_support
|
||||
if temp_os_support == 11.0:
|
||||
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS11
|
||||
elif temp_os_support == 12.0:
|
||||
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS12
|
||||
|
||||
def change_verbose(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set Verbose mode"])
|
||||
change_menu = input("Enable Verbose mode(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.verbose_debug = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.verbose_debug = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_oc(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set OpenCore DEBUG mode"])
|
||||
change_menu = input("Enable OpenCore DEBUG mode(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.opencore_debug = True
|
||||
self.constants.opencore_build = "DEBUG"
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.opencore_debug = False
|
||||
self.constants.opencore_build = "RELEASE"
|
||||
else:
|
||||
print("Invalid option")
|
||||
def change_kext(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set Kext DEBUG mode"])
|
||||
change_menu = input("Enable Kext DEBUG mode(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.kext_debug = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.kext_debug = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_metal(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Assume Metal GPU Always in iMac"])
|
||||
print("""This is for iMacs that have upgraded Metal GPUs, otherwise
|
||||
Patcher assumes based on stock configuration (ie. iMac10,x-12,x)
|
||||
|
||||
Valid Options:
|
||||
|
||||
1. None(stock GPU)
|
||||
2. Nvidia GPU
|
||||
3. AMD GPU
|
||||
|
||||
Note: Patcher will detect whether hardware has been upgraded regardless, this
|
||||
option is for those patching on a different machine or OCLP cannot detect.
|
||||
""")
|
||||
change_menu = input("Set GPU Patch type(ie. 1): ")
|
||||
if change_menu == "1":
|
||||
self.constants.metal_build = False
|
||||
self.constants.imac_vendor = "None"
|
||||
elif change_menu == "2":
|
||||
self.constants.metal_build = True
|
||||
self.constants.imac_vendor = "Nvidia"
|
||||
elif change_menu == "3":
|
||||
self.constants.metal_build = True
|
||||
self.constants.imac_vendor = "AMD"
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_wifi(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Assume Upgraded Wifi Always"])
|
||||
print("""This is for Macs with upgraded wifi cards(ie. BCM94360/2)
|
||||
|
||||
Note: Patcher will detect whether hardware has been upgraded regardless, this
|
||||
option is for those patching on a different machine or cannot detect.
|
||||
""")
|
||||
change_menu = input("Enable Upgraded Wifi build algorithm?(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.wifi_build = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.wifi_build = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_serial(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set SMBIOS Mode"])
|
||||
print("""This section is for setting how OpenCore generates the SMBIOS
|
||||
Recommended for adanced users who want control how serials are handled
|
||||
|
||||
Valid options:
|
||||
|
||||
1. Minimal:\tUse original serials and minimally update SMBIOS
|
||||
2. Moderate:\tReplace entire SMBIOS but keep original serials
|
||||
3. Advanced:\tReplace entire SMBIOS and generate new serials
|
||||
|
||||
Note: For new users we recommend leaving as default(1. Minimal)
|
||||
""")
|
||||
change_menu = input("Set SMBIOS Mode(ie. 1): ")
|
||||
if change_menu == "1":
|
||||
self.constants.serial_settings = "Minimal"
|
||||
elif change_menu == "2":
|
||||
self.constants.serial_settings = "Moderate"
|
||||
elif change_menu == "3":
|
||||
self.constants.serial_settings = "Advanced"
|
||||
else:
|
||||
print("Invalid option")
|
||||
def change_showpicker(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set OpenCore Picker mode"])
|
||||
print("""By default, OpenCore will show its boot picker each time on boot up,
|
||||
however this can be disabled by default and be shown on command by repeatedly
|
||||
pressing the "Esc" key
|
||||
""")
|
||||
change_menu = input("Show OpenCore Picker by default(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.showpicker = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.showpicker = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_vault(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set OpenCore Vaulting"])
|
||||
print("""By default, this patcher will sign all your files and ensure none of the
|
||||
contents can be tampered with. However for more advanced users, you may
|
||||
want to be able to freely edit the config.plist and files.
|
||||
|
||||
Note: For secuirty reasons, OpenShell will be disabled when Vault is set.
|
||||
|
||||
""")
|
||||
change_menu = input("Enable Vault(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.vault = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.vault = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_sip(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Set SIP and SecureBootModel"])
|
||||
print("""SIP and SecureBootModel are used to ensure proper OTA functionality,
|
||||
however to patch the root volume both of these must be disabled.
|
||||
Only disable is absolutely necessary. SIP value = 0xFEF
|
||||
|
||||
Note: for minor changes, SIP can be adjusted in recovery like normal.
|
||||
Additionally, when disabling SIP via the patcher amfi_get_out_of_my_way=1
|
||||
will be added to boot-args.
|
||||
|
||||
Valid options:
|
||||
|
||||
1. Enable Both
|
||||
2. Disable SIP only
|
||||
3. Disable SecureBootModel Only
|
||||
4. Disable Both
|
||||
|
||||
""")
|
||||
change_menu = input("Set SIP and SecureBootModel(ie. 1): ")
|
||||
if change_menu == "1":
|
||||
self.constants.sip_status = True
|
||||
self.constants.secure_status = True
|
||||
elif change_menu == "2":
|
||||
self.constants.sip_status = False
|
||||
self.constants.secure_status = True
|
||||
elif change_menu == "3":
|
||||
self.constants.sip_status = True
|
||||
self.constants.secure_status = False
|
||||
elif change_menu == "4":
|
||||
self.constants.sip_status = False
|
||||
self.constants.secure_status = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def change_imac_nvidia(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Force iMac Nvidia Patches"])
|
||||
print("""Specifically for iMac10,x-12,x with Metal Nvidia GPU upgrades
|
||||
By default the patcher will try to detect what hardware is
|
||||
running, however this will enforce iMac Nvidia Build Patches.
|
||||
""")
|
||||
change_menu = input("Assume iMac Nvidia patches(y/n): ")
|
||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||
self.constants.imac_nvidia_build = True
|
||||
elif change_menu in {"n", "N", "no", "No"}:
|
||||
self.constants.imac_nvidia_build = False
|
||||
else:
|
||||
print("Invalid option")
|
||||
|
||||
def custom_repo(self):
|
||||
utilities.cls()
|
||||
utilities.header(["Swet custom patch repo"])
|
||||
print(f"""For users participating in OpenCore Patcher betas, this is
|
||||
where you can add custom repos such as Google Drive links.
|
||||
|
||||
Valid options:
|
||||
|
||||
1. Set custom location
|
||||
2. Reset repo location
|
||||
3. Exit
|
||||
|
||||
Current repo:
|
||||
{self.constants.url_apple_binaries}
|
||||
""")
|
||||
change_menu = input("Set custom location?: ")
|
||||
if change_menu == "1":
|
||||
self.constants.url_backup = self.constants.url_apple_binaries
|
||||
self.constants.url_apple_binaries = input("Enter new URL: ")
|
||||
elif change_menu == "2":
|
||||
if self.constants.url_backup != "":
|
||||
self.constants.url_apple_binaries = self.constants.url_backup
|
||||
else:
|
||||
print("Invalid option")
|
||||
@@ -1,5 +1,6 @@
|
||||
# pylint: disable=multiple-statements
|
||||
# Define Files
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
@@ -8,13 +9,13 @@ from pathlib import Path
|
||||
|
||||
class Constants:
|
||||
def __init__(self):
|
||||
self.patcher_version = "0.0.18"
|
||||
self.opencore_commit = "7bb41aa - 2021-03-06"
|
||||
self.patcher_version = "0.0.21"
|
||||
self.opencore_commit = "c528597 - 2021-04-05"
|
||||
self.opencore_version = "0.6.8"
|
||||
self.lilu_version = "1.5.1"
|
||||
self.whatevergreen_version = "1.4.8"
|
||||
self.lilu_version = "1.5.2"
|
||||
self.whatevergreen_version = "1.4.9"
|
||||
self.airportbcrmfixup_version = "2.1.2"
|
||||
self.bcm570_version = "1.0.0"
|
||||
self.bcm570_version = "1.0.1"
|
||||
self.marvel_version = "1.0.0"
|
||||
self.nforce_version = "1.0.0"
|
||||
self.mce_version = "1.0.0"
|
||||
@@ -24,10 +25,14 @@ class Constants:
|
||||
self.io80211mojave_version = "1.0.0"
|
||||
self.voodoohda_version = "296"
|
||||
self.restrictevents_version = "1.0.0"
|
||||
self.restrictevents_mbp_version = "1.0.1"
|
||||
self.piixata_version = "1.0.0"
|
||||
self.backlight_version = "1.0.0"
|
||||
self.cpufriend_version = "1.2.3"
|
||||
self.nightshift_version = "1.1.0"
|
||||
self.smcspoof_version = "1.0.0"
|
||||
self.cputscsync = "1.0.3"
|
||||
self.hibernationfixup = "1.3.9"
|
||||
|
||||
# Get resource path
|
||||
self.current_path = Path(__file__).parent.parent.resolve()
|
||||
@@ -55,7 +60,26 @@ class Constants:
|
||||
self.vault = False
|
||||
self.sip_status = True
|
||||
self.secure_status = True
|
||||
self.detected_os = 0.0
|
||||
self.detected_os = 0
|
||||
|
||||
# OS Versions
|
||||
self.tiger = 8
|
||||
self.leopard = 9
|
||||
self.snow_leopard = 10
|
||||
self.lion = 11
|
||||
self.mountain_lion = 12
|
||||
self.mavericks = 13
|
||||
self.yosemite = 14
|
||||
self.el_capitan = 15
|
||||
self.sierra = 16
|
||||
self.high_sierra = 17
|
||||
self.mojave = 18
|
||||
self.catalina = 19
|
||||
self.big_sur = 20
|
||||
|
||||
# External Files
|
||||
self.url_backup = ""
|
||||
self.url_apple_binaries = "https://github.com/dortania/Apple-Binaries-OCLP/archive/refs/heads/main.zip"
|
||||
|
||||
# Payload Location
|
||||
# OpenCore
|
||||
@@ -84,6 +108,8 @@ class Constants:
|
||||
@property
|
||||
def restrictevents_path(self): return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-v{self.restrictevents_version}.zip")
|
||||
@property
|
||||
def restrictevents_mbp_path(self): return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-MBP91-v{self.restrictevents_mbp_version}.zip")
|
||||
@property
|
||||
def bcm570_path(self): return self.payload_kexts_path / Path(f"Ethernet/CatalinaBCM5701Ethernet-v{self.bcm570_version}.zip")
|
||||
@property
|
||||
def marvel_path(self): return self.payload_kexts_path / Path(f"Ethernet/MarvelYukonEthernet-v{self.marvel_version}.zip")
|
||||
@@ -109,6 +135,12 @@ class Constants:
|
||||
def cpufriend_path(self): return self.payload_kexts_path / Path(f"Acidanthera/CPUFriend-v{self.cpufriend_version}.zip")
|
||||
@property
|
||||
def nightshift_path(self): return self.payload_kexts_path / Path(f"Misc/NightShiftEnabler-v{self.nightshift_version}.zip")
|
||||
@property
|
||||
def smcspoof_path(self): return self.payload_kexts_path / Path(f"Misc/SMC-Spoof-v{self.smcspoof_version}.zip")
|
||||
@property
|
||||
def cputscsync_path(self): return self.payload_kexts_path / Path(f"Acidanthera/CpuTscSync-v{self.cputscsync}.zip")
|
||||
@property
|
||||
def hibernationfixup_path(self): return self.payload_kexts_path / Path(f"Acidanthera/HibernationFixup-v{self.hibernationfixup}.zip")
|
||||
|
||||
# Build Location
|
||||
@property
|
||||
@@ -138,6 +170,18 @@ class Constants:
|
||||
def pp_kext_folder(self): return self.kexts_path / Path("CPUFriendDataProvider.kext")
|
||||
@property
|
||||
def pp_contents_folder(self): return self.pp_kext_folder / Path("Contents")
|
||||
@property
|
||||
def agdp_kext_folder(self): return self.kexts_path / Path("AGDP-Override.kext")
|
||||
@property
|
||||
def agdp_contents_folder(self): return self.agdp_kext_folder / Path("Contents")
|
||||
@property
|
||||
def agpm_kext_folder(self): return self.kexts_path / Path("AGPM-Override.kext")
|
||||
@property
|
||||
def agpm_contents_folder(self): return self.agpm_kext_folder / Path("Contents")
|
||||
@property
|
||||
def amc_kext_folder(self): return self.kexts_path / Path("AMC-Override.kext")
|
||||
@property
|
||||
def amc_contents_folder(self): return self.amc_kext_folder / Path("Contents")
|
||||
|
||||
# Tools
|
||||
@property
|
||||
@@ -153,4 +197,104 @@ class Constants:
|
||||
@property
|
||||
def icon_path_internal(self): return self.payload_path / Path("Icon/Internal/.VolumeIcon.icns")
|
||||
@property
|
||||
def icon_path_sd(self): return self.payload_path / Path("Icon/SD-Card/.VolumeIcon.icns")
|
||||
@property
|
||||
def icon_path_ssd(self): return self.payload_path / Path("Icon/SSD/.VolumeIcon.icns")
|
||||
@property
|
||||
def gui_path(self): return self.payload_path / Path("Icon/Resources.zip")
|
||||
|
||||
# Apple Paylods Paths
|
||||
@property
|
||||
def payload_apple_root_path_unzip(self): return self.payload_path / Path("Apple-Binaries-OCLP-main")
|
||||
@property
|
||||
def payload_apple_root_path_zip(self): return self.payload_path / Path("Apple.zip")
|
||||
@property
|
||||
def payload_apple_root_path(self): return self.payload_path / Path("Apple")
|
||||
@property
|
||||
def payload_apple_kexts_path(self): return self.payload_apple_root_path / Path("Extensions")
|
||||
@property
|
||||
def payload_apple_frameworks_path(self): return self.payload_apple_root_path / Path("Frameworks")
|
||||
@property
|
||||
def payload_apple_frameworks_path_accel(self): return self.payload_apple_frameworks_path / Path("Graphics-Acceleration")
|
||||
@property
|
||||
def payload_apple_lauchd_path(self): return self.payload_apple_root_path / Path("LaunchDaemons")
|
||||
@property
|
||||
def payload_apple_lauchd_path_accel(self): return self.payload_apple_lauchd_path / Path("Graphics-Acceleration")
|
||||
@property
|
||||
def payload_apple_private_frameworks_path(self): return self.payload_apple_root_path / Path("PrivateFrameworks")
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_accel(self): return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration")
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_brightness(self): return self.payload_apple_private_frameworks_path / Path("Brightness-Control")
|
||||
|
||||
# Apple Extensions
|
||||
@property
|
||||
def applehda_path(self): return self.payload_apple_kexts_path / Path("Audio/AppleHDA.kext")
|
||||
|
||||
|
||||
# GPU Kexts and Bundles
|
||||
@property
|
||||
def legacy_graphics(self): return self.payload_apple_kexts_path / Path("Graphics-Acceleration")
|
||||
@property
|
||||
def legacy_nvidia_path(self): return self.legacy_graphics / Path("Nvidia-Tesla-Fermi")
|
||||
@property
|
||||
def legacy_amd_path(self): return self.legacy_graphics / Path("AMD-ATI")
|
||||
@property
|
||||
def legacy_intel_gen1_path(self): return self.legacy_graphics / Path("Intel-Gen5-Ironlake")
|
||||
@property
|
||||
def legacy_intel_gen2_path(self): return self.legacy_graphics / Path("Intel-Gen6-SandyBridge")
|
||||
|
||||
@property
|
||||
def legacy_brightness(self): return self.payload_apple_kexts_path / Path("Brightness-Control")
|
||||
|
||||
# Apple Frameworks
|
||||
@property
|
||||
def coredisplay_path(self): return self.payload_apple_frameworks_path_accel / Path("CoreDisplay.framework")
|
||||
@property
|
||||
def iosurface_f_path(self): return self.payload_apple_frameworks_path_accel / Path("IOSurface.framework")
|
||||
@property
|
||||
def opengl_path(self): return self.payload_apple_frameworks_path_accel / Path("OpenGL.framework")
|
||||
|
||||
# Apple LaunchDaemons
|
||||
@property
|
||||
def hiddhack_path(self): return self.payload_apple_lauchd_path_accel / Path("HiddHack.plist")
|
||||
|
||||
# Apple PrivateFrameworks
|
||||
@property
|
||||
def gpusupport_path(self): return self.payload_apple_private_frameworks_path_accel / Path("GPUSupport.framework")
|
||||
@property
|
||||
def skylight_path(self): return self.payload_apple_private_frameworks_path_accel / Path("SkyLight.framework")
|
||||
|
||||
csr_values = {
|
||||
"CSR_ALLOW_UNTRUSTED_KEXTS ": False, # 0x1 - Introduced in El Capitan
|
||||
"CSR_ALLOW_UNRESTRICTED_FS ": False, # 0x2 - Introduced in El Capitan
|
||||
"CSR_ALLOW_TASK_FOR_PID ": False, # 0x4 - Introduced in El Capitan
|
||||
"CSR_ALLOW_KERNEL_DEBUGGER ": False, # 0x8 - Introduced in El Capitan
|
||||
"CSR_ALLOW_APPLE_INTERNAL ": False, # 0x10 - Introduced in El Capitan
|
||||
"CSR_ALLOW_UNRESTRICTED_DTRACE ": False, # 0x20 - Introduced in El Capitan
|
||||
"CSR_ALLOW_UNRESTRICTED_NVRAM ": False, # 0x40 - Introduced in El Capitan
|
||||
"CSR_ALLOW_DEVICE_CONFIGURATION ": False, # 0x80 - Introduced in El Capitan
|
||||
"CSR_ALLOW_ANY_RECOVERY_OS ": False, # 0x100 - Introduced in Sierra
|
||||
"CSR_ALLOW_UNAPPROVED_KEXTS ": False, # 0x200 - Introduced in High Sierra
|
||||
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE": False, # 0x400 - Introduced in Mojave
|
||||
"CSR_ALLOW_UNAUTHENTICATED_ROOT ": False, # 0x800 - Introduced in Big Sur
|
||||
}
|
||||
|
||||
sbm_values = [
|
||||
"j137",
|
||||
"j680",
|
||||
"j132",
|
||||
"j174",
|
||||
"j140k",
|
||||
"j780",
|
||||
"j213",
|
||||
"j140a",
|
||||
"j152f",
|
||||
"j160",
|
||||
"j230k",
|
||||
"j214k",
|
||||
"j223",
|
||||
"j215",
|
||||
"j185",
|
||||
"j185f",
|
||||
]
|
||||
@@ -1,7 +1,12 @@
|
||||
# Lists all models and required patches
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
SupportedSMBIOS = [
|
||||
# To be overwritten on program start
|
||||
]
|
||||
|
||||
SupportedSMBIOS11 = [
|
||||
# MacBook
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
@@ -51,6 +56,7 @@ SupportedSMBIOS11 = [
|
||||
"iMac12,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
@@ -70,6 +76,7 @@ SupportedSMBIOS12 = [
|
||||
## CPU patches
|
||||
|
||||
MissingSSE42 = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
@@ -128,7 +135,6 @@ EthernetNvidia = [
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro7,1",
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
"iMac9,1",
|
||||
@@ -136,6 +142,7 @@ EthernetNvidia = [
|
||||
"Dortania1,1"
|
||||
]
|
||||
EthernetMarvell = [
|
||||
"MacBook4,1",
|
||||
"MacBookPro4,1",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
@@ -144,6 +151,7 @@ EthernetMarvell = [
|
||||
EthernetBroadcom = [
|
||||
"MacBookPro6,1",
|
||||
"MacBookPro6,2",
|
||||
"MacBookPro7,1",
|
||||
"MacBookPro8,1",
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
@@ -173,6 +181,7 @@ WifiAtheros = [
|
||||
]
|
||||
|
||||
WifiBCM94328 = [
|
||||
"MacBook4,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookPro4,1",
|
||||
"iMac7,1",
|
||||
@@ -193,6 +202,7 @@ WifiBCM94322 = [
|
||||
"MacBookPro7,1",
|
||||
"Macmini3,1",
|
||||
"iMac9,1",
|
||||
"MacPro5,1",
|
||||
"Dortania1,1"
|
||||
]
|
||||
|
||||
@@ -220,13 +230,14 @@ WifiBCM94331 = [
|
||||
"Macmini6,2", # PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
|
||||
"iMac13,1", # PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)
|
||||
"iMac13,2", # PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)
|
||||
"MacPro5,1", # PciRoot(0x0)/Pci(0x1C,0x5)/Pci(0x0,0x0)
|
||||
"iMac13,3", # PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)
|
||||
"Dortania1,1"
|
||||
]
|
||||
|
||||
## Audio
|
||||
|
||||
LegacyAudio = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
@@ -269,45 +280,106 @@ LegacyAudio = [
|
||||
## GPU
|
||||
|
||||
LegacyGPU = [
|
||||
"MacBook5,1",
|
||||
"MacBook4,1", # GMA X3100
|
||||
"MacBook5,1", # Nvidia 9000
|
||||
"MacBook5,2", # Nvidia 9000
|
||||
"MacBook6,1", # Nvidia 9000
|
||||
"MacBook7,1", # Nvidia 300
|
||||
"MacBookAir2,1", # Nvidia 9000
|
||||
"MacBookAir3,1", # Nvidia 300
|
||||
"MacBookAir3,2", # Nvidia 300
|
||||
"MacBookAir4,1", # Intel 3000
|
||||
"MacBookAir4,2", # Intel 3000
|
||||
"MacBookPro4,1", # Nvidia 8000
|
||||
"MacBookPro5,1", # Nvidia 9000
|
||||
"MacBookPro5,2", # Nvidia 9000
|
||||
"MacBookPro5,3", # Nvidia 9000
|
||||
"MacBookPro5,4", # Nvidia 9000
|
||||
"MacBookPro5,5", # Nvidia 9000
|
||||
"MacBookPro6,1", # Intel 100 + Nvidia 300
|
||||
"MacBookPro6,2", # Intel 100 + Nvidia 300
|
||||
"MacBookPro7,1", # Nvidia 300
|
||||
"MacBookPro8,1", # Intel 3000
|
||||
"MacBookPro8,2", # Intel 3000 + AMD 6000
|
||||
"MacBookPro8,3", # Intel 3000 + AMD 6000
|
||||
"Macmini3,1", # Nvidia 9000
|
||||
"Macmini4,1", # Nvidia 300
|
||||
"Macmini5,1", # Intel 3000
|
||||
"Macmini5,2", # AMD 6000
|
||||
"Macmini5,3", # Intel 3000
|
||||
"iMac7,1", # AMD 2000
|
||||
"iMac8,1", # AMD 2000
|
||||
"iMac9,1", # Nvidia 9000
|
||||
#"iMac10,1", # Nvidia 9000 and AMD 4000
|
||||
"iMac11,1", # AMD 4000
|
||||
"iMac11,2", # AMD 4000 and 5000
|
||||
"iMac11,3", # AMD 5000
|
||||
"iMac12,1", # AMD 6000
|
||||
"iMac12,2", # AMD 6000
|
||||
"Dortania1,1" # RTX 3080
|
||||
]
|
||||
|
||||
LegacyGPUNvidia = [
|
||||
"MacBook5,1", # Nvidia 9000
|
||||
"MacBook5,2", # Nvidia 9000
|
||||
"MacBook6,1", # Nvidia 9000
|
||||
"MacBook7,1", # Nvidia 300
|
||||
"MacBookAir2,1", # Nvidia 9000
|
||||
"MacBookAir3,1", # Nvidia 300
|
||||
"MacBookAir3,2", # Nvidia 300
|
||||
"MacBookPro4,1", # Nvidia 8000
|
||||
"MacBookPro5,1", # Nvidia 9000
|
||||
"MacBookPro5,2", # Nvidia 9000
|
||||
"MacBookPro5,3", # Nvidia 9000
|
||||
"MacBookPro5,4", # Nvidia 9000
|
||||
"MacBookPro5,5", # Nvidia 9000
|
||||
"MacBookPro6,1", # Intel 100 + Nvidia 300
|
||||
"MacBookPro6,2", # Intel 100 + Nvidia 300
|
||||
"MacBookPro7,1", # Nvidia 300
|
||||
"Macmini3,1", # Nvidia 9000
|
||||
"Macmini4,1", # Nvidia 300
|
||||
"iMac9,1", # Nvidia 9000
|
||||
#"iMac10,1", # Nvidia 9000 and AMD 4000
|
||||
]
|
||||
|
||||
LegacyGPUAMD = [
|
||||
"MacBookPro8,2", # Intel 3000 + AMD 6000
|
||||
"MacBookPro8,3", # Intel 3000 + AMD 6000
|
||||
"Macmini5,2", # AMD 6000
|
||||
"iMac7,1", # AMD 2000
|
||||
"iMac8,1", # AMD 2000
|
||||
#"iMac10,1", # Nvidia 9000 and AMD 4000
|
||||
"iMac11,1", # AMD 4000
|
||||
"iMac11,2", # AMD 4000 and 5000
|
||||
"iMac11,3", # AMD 5000
|
||||
"iMac12,1", # AMD 6000
|
||||
"iMac12,2", # AMD 6000
|
||||
]
|
||||
|
||||
LegacyGPUIntelGen1 = [
|
||||
"MacBookPro6,1", # Intel 100 + Nvidia 300
|
||||
"MacBookPro6,2", # Intel 100 + Nvidia 300
|
||||
]
|
||||
|
||||
LegacyGPUIntelGen2 = [
|
||||
"MacBookAir4,1", # Intel 3000
|
||||
"MacBookAir4,2", # Intel 3000
|
||||
"MacBookPro8,1", # Intel 3000
|
||||
"MacBookPro8,2", # Intel 3000 + AMD 6000
|
||||
"MacBookPro8,3", # Intel 3000 + AMD 6000
|
||||
"Macmini5,1", # Intel 3000
|
||||
"Macmini5,3", # Intel 3000
|
||||
]
|
||||
|
||||
LegacyBrightness = [
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir3,2",
|
||||
"MacBookAir4,1",
|
||||
"MacBookAir4,2",
|
||||
"MacBookPro4,1",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro6,1",
|
||||
"MacBookPro6,2",
|
||||
"MacBookPro7,1",
|
||||
"MacBookPro8,1",
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
"Macmini5,1",
|
||||
"Macmini5,2",
|
||||
"Macmini5,3",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
"iMac10,1",
|
||||
"iMac11,1",
|
||||
"iMac11,2",
|
||||
"iMac11,3",
|
||||
"iMac12,1",
|
||||
"iMac12,2",
|
||||
"Dortania1,1"
|
||||
]
|
||||
|
||||
LegacyHID = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
@@ -349,6 +421,7 @@ SidecarPatch = [
|
||||
"Macmini6,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
@@ -365,7 +438,6 @@ DualGPUPatch = [
|
||||
"MacBookPro6,2",
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
"MacBookPro9,1",
|
||||
"Macmini5,2",
|
||||
"iMac12,1",
|
||||
"iMac12,2",
|
||||
@@ -399,6 +471,7 @@ MacBookAir61 = [
|
||||
|
||||
# MacBook and 13" Air
|
||||
MacBookAir62 = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
@@ -446,9 +519,8 @@ Macmini71 = [
|
||||
"Macmini6,1",
|
||||
"Macmini6,2"
|
||||
]
|
||||
|
||||
# iMac = AMD and Nvidia GPU
|
||||
iMac151 = [
|
||||
# iMacPro = dGPU only iMacs
|
||||
iMacPro11 = [
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
@@ -456,6 +528,10 @@ iMac151 = [
|
||||
"iMac11,1",
|
||||
"iMac11,2",
|
||||
"iMac11,3",
|
||||
]
|
||||
|
||||
# iMac = AMD and Nvidia GPU with iGPU
|
||||
iMac151 = [
|
||||
"iMac12,1",
|
||||
"iMac12,2",
|
||||
"iMac13,2",
|
||||
@@ -477,8 +553,6 @@ MacPro71 = [
|
||||
"Dortania1,1"
|
||||
]
|
||||
|
||||
# Maps
|
||||
|
||||
XXerve = [
|
||||
"Xserve3,1",
|
||||
]
|
||||
@@ -495,12 +569,14 @@ iXac = [
|
||||
"iMac12,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
]
|
||||
|
||||
XacBookNormal = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
@@ -552,150 +628,18 @@ Xacmini = [
|
||||
"Macmini6,2",
|
||||
]
|
||||
|
||||
EHCI = [
|
||||
"MacPro3,1"
|
||||
]
|
||||
|
||||
EHC1 = [
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir3,2",
|
||||
"MacBookAir4,1",
|
||||
"MacBookAir4,2",
|
||||
"MacBookAir5,1",
|
||||
"MacBookAir5,2",
|
||||
"MacBookPro4,1",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro6,1",
|
||||
"MacBookPro6,2",
|
||||
"MacBookPro7,1",
|
||||
"MacBookPro8,1",
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
"MacBookPro9,1",
|
||||
"MacBookPro9,2",
|
||||
"MacBookPro10,1",
|
||||
"MacBookPro10,2",
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
"Macmini5,1",
|
||||
"Macmini5,2",
|
||||
"Macmini5,3",
|
||||
"Macmini6,1",
|
||||
"Macmini6,2",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
"iMac10,1",
|
||||
"iMac11,1",
|
||||
"iMac11,2",
|
||||
"iMac11,3",
|
||||
"iMac12,1",
|
||||
"iMac12,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
"MacPro4,1",
|
||||
"MacPro5,1",
|
||||
]
|
||||
|
||||
EHC2 = [
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir3,2",
|
||||
"MacBookAir4,1",
|
||||
"MacBookAir4,2",
|
||||
"MacBookAir5,1",
|
||||
"MacBookAir5,2",
|
||||
"MacBookPro4,1",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro6,1",
|
||||
"MacBookPro6,2",
|
||||
"MacBookPro7,1",
|
||||
"MacBookPro8,1",
|
||||
"MacBookPro8,2",
|
||||
"MacBookPro8,3",
|
||||
"MacBookPro9,1",
|
||||
"MacBookPro9,2",
|
||||
"MacBookPro10,1",
|
||||
"MacBookPro10,2",
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
"Macmini5,1",
|
||||
"Macmini5,2",
|
||||
"Macmini5,3",
|
||||
"Macmini6,1",
|
||||
"Macmini6,2",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
"iMac10,1",
|
||||
"iMac11,1",
|
||||
"iMac11,2",
|
||||
"iMac11,3",
|
||||
"iMac12,1",
|
||||
"iMac12,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
"MacPro4,1",
|
||||
"MacPro5,1",
|
||||
]
|
||||
|
||||
OHC1 = [
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBook6,1",
|
||||
"MacBook7,1",
|
||||
"MacBookAir2,1",
|
||||
"MacBookAir3,1",
|
||||
"MacBookAir3,2",
|
||||
"MacBookPro5,1",
|
||||
"MacBookPro5,2",
|
||||
"MacBookPro5,3",
|
||||
"MacBookPro5,4",
|
||||
"MacBookPro5,5",
|
||||
"MacBookPro7,1",
|
||||
"Macmini3,1",
|
||||
"Macmini4,1",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"iMac9,1",
|
||||
"iMac10,1",
|
||||
]
|
||||
|
||||
IHEHC1 = [
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3"
|
||||
]
|
||||
|
||||
IHEHC2 = [
|
||||
"MacBookPro9,1"
|
||||
]
|
||||
|
||||
IH = [
|
||||
"MacPro6,1"
|
||||
ControllerTypes = [
|
||||
"",
|
||||
"-EHCI",
|
||||
"-EHC1",
|
||||
"-EHC2",
|
||||
"-XHC1",
|
||||
"-OHC1",
|
||||
"-OHC2",
|
||||
"-InternalHub-EHC1",
|
||||
"-InternalHub-EHC1-InternalHub",
|
||||
"-InternalHub-EHC2",
|
||||
"-InternalHub",
|
||||
]
|
||||
|
||||
upgradableMXMGPUs = [
|
||||
@@ -756,6 +700,7 @@ X86PP = [
|
||||
"Macmini6,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
@@ -772,13 +717,17 @@ NightShiftExclude = [
|
||||
"Macmini6,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
]
|
||||
|
||||
UGAtoGOP = [
|
||||
"MacBook4,1",
|
||||
"MacBookPro4,1",
|
||||
"iMac7,1",
|
||||
"iMac8,1",
|
||||
"MacPro3,1"
|
||||
]
|
||||
|
||||
@@ -789,12 +738,14 @@ NoSATAPatch = [
|
||||
"MacBookPro10,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
]
|
||||
|
||||
NoAPFSsupport = [
|
||||
"MacBook4,1",
|
||||
"MacBook5,1",
|
||||
"MacBook5,2",
|
||||
"MacBookAir2,1",
|
||||
@@ -812,4 +763,147 @@ NoAPFSsupport = [
|
||||
"MacPro4,1",
|
||||
"Xserve3,1",
|
||||
"Dortania1,1"
|
||||
]
|
||||
|
||||
NoRootPatch11 = [
|
||||
"MacBookAir5,1",
|
||||
"MacBookAir5,2",
|
||||
"MacBookPro9,1",
|
||||
"MacBookPro9,2",
|
||||
"MacBookPro10,1",
|
||||
"MacBookPro10,2",
|
||||
"Macmini6,1",
|
||||
"Macmini6,2",
|
||||
"iMac13,1",
|
||||
"iMac13,2",
|
||||
"iMac13,3",
|
||||
"iMac14,1",
|
||||
"iMac14,2",
|
||||
"iMac14,3",
|
||||
"MacPro4,1",
|
||||
"MacPro5,1",
|
||||
"Xserve3,1",
|
||||
]
|
||||
|
||||
DeleteNvidiaAccel11 = [
|
||||
"AMDRadeonX4000.kext",
|
||||
"AMDRadeonX4000HWServices.kext",
|
||||
"AMDRadeonX5000.kext",
|
||||
"AMDRadeonX5000HWServices.kext",
|
||||
"AMDRadeonX6000.kext",
|
||||
"AMDRadeonX6000Framebuffer.kext",
|
||||
"AMDRadeonX6000HWServices.kext",
|
||||
"AppleIntelBDWGraphics.kext",
|
||||
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||
"AppleIntelHD4000Graphics.kext",
|
||||
"AppleIntelHD5000Graphics.kext",
|
||||
"AppleIntelICLGraphics.kext",
|
||||
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||
"AppleIntelKBLGraphics.kext",
|
||||
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||
"AppleIntelSKLGraphics.kext",
|
||||
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||
"AppleIntelFramebufferAzul.kext",
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleParavirtGPU.kext",
|
||||
"GeForce.kext",
|
||||
"IOAcceleratorFamily2.kext",
|
||||
"IOGPUFamily.kext",
|
||||
]
|
||||
|
||||
DeleteAMDAccel11 = [
|
||||
"AMDRadeonX4000.kext",
|
||||
"AMDRadeonX4000HWServices.kext",
|
||||
"AMDRadeonX5000.kext",
|
||||
"AMDRadeonX5000HWServices.kext",
|
||||
"AMDRadeonX6000.kext",
|
||||
"AMDRadeonX6000Framebuffer.kext",
|
||||
"AMDRadeonX6000HWServices.kext",
|
||||
"AMD7000Controller.kext", # AMDSupport Dependancy
|
||||
"AMD8000Controller.kext", # AMDSupport Dependancy
|
||||
"AMD9000Controller.kext", # AMDSupport Dependancy
|
||||
"AMD9500Controller.kext", # AMDSupport Dependancy
|
||||
"AMD10000Controller.kext", # AMDSupport Dependancy
|
||||
"AppleIntelBDWGraphics.kext",
|
||||
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||
"AppleIntelHD4000Graphics.kext",
|
||||
"AppleIntelHD5000Graphics.kext",
|
||||
"AppleIntelICLGraphics.kext",
|
||||
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||
"AppleIntelKBLGraphics.kext",
|
||||
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||
"AppleIntelSKLGraphics.kext",
|
||||
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||
"AppleIntelFramebufferAzul.kext",
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleParavirtGPU.kext",
|
||||
"GeForce.kext",
|
||||
"IOAcceleratorFamily2.kext",
|
||||
"IOGPUFamily.kext",
|
||||
]
|
||||
|
||||
AddNvidiaAccel11 = [
|
||||
"GeForceGA.bundle",
|
||||
"GeForceTesla.kext",
|
||||
"GeForceTeslaGLDriver.bundle",
|
||||
"GeForceTeslaVADriver.bundle",
|
||||
"NVDANV50HalTesla.kext",
|
||||
"NVDAResmanTesla.kext",
|
||||
"IOSurface.kext",
|
||||
]
|
||||
|
||||
AddAMDAccel11 = [
|
||||
"AMD2400Controller.kext",
|
||||
"AMD2600Controller.kext",
|
||||
"AMD3800Controller.kext",
|
||||
"AMD4600Controller.kext",
|
||||
"AMD4800Controller.kext",
|
||||
"AMD5000Controller.kext",
|
||||
"AMD6000Controller.kext",
|
||||
"AMDFramebuffer.kext",
|
||||
"AMDLegacyFramebuffer.kext",
|
||||
"AMDLegacySupport.kext",
|
||||
"AMDRadeonVADriver.bundle",
|
||||
"AMDRadeonVADriver2.bundle",
|
||||
#"AMDRadeonX3000.kext", # __ZN22IOAccelDisplayMachine210gMetaClassE link issues
|
||||
#"AMDRadeonX3000GLDriver.bundle",
|
||||
"AMDShared.bundle",
|
||||
"AMDSupport.kext",
|
||||
"ATIRadeonX2000.kext",
|
||||
"ATIRadeonX2000GA.plugin",
|
||||
"ATIRadeonX2000GLDriver.bundle",
|
||||
"ATIRadeonX2000VADriver.bundle",
|
||||
"IOSurface.kext",
|
||||
]
|
||||
|
||||
AddIntelGen1Accel = [
|
||||
"AppleIntelFramebufferAzul.kext",
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleIntelHDGraphics.kext",
|
||||
"AppleIntelHDGraphicsFB.kext",
|
||||
"AppleIntelHDGraphicsGA.plugin",
|
||||
"AppleIntelHDGraphicsGLDriver.bundle",
|
||||
"AppleIntelHDGraphicsVADriver.bundle",
|
||||
"IOSurface.kext",
|
||||
]
|
||||
|
||||
AddIntelGen2Accel = [
|
||||
"AppleIntelHD3000Graphics.kext",
|
||||
"AppleIntelHD3000GraphicsGA.plugin",
|
||||
"AppleIntelHD3000GraphicsGLDriver.bundle",
|
||||
"AppleIntelHD3000GraphicsVADriver.bundle",
|
||||
"AppleIntelSNBGraphicsFB.kext",
|
||||
"AppleIntelSNBVA.bundle",
|
||||
"IOSurface.kext",
|
||||
]
|
||||
|
||||
DeleteBrightness = [
|
||||
"AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext"
|
||||
]
|
||||
|
||||
AddBrightness = [
|
||||
"AppleBacklight.kext",
|
||||
"AppleBacklightExpert.kext",
|
||||
]
|
||||
344
Resources/SysPatch.py
Normal file
344
Resources/SysPatch.py
Normal file
@@ -0,0 +1,344 @@
|
||||
# Framework for mounting and patching macOS root volume
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
# Missing Features:
|
||||
# - Full System/Library Snapshotting (need to research how Apple achieves this)
|
||||
# - Temorary Work-around: sudo bless --mount /System/Volumes/Update/mnt1 --bootefi --last-sealed-snapshot
|
||||
# - Work-around battery throttling on laptops with no battery (IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/)
|
||||
# - Add kmutil error checking
|
||||
from __future__ import print_function
|
||||
|
||||
import binascii
|
||||
import plistlib
|
||||
import shutil
|
||||
import signal
|
||||
import subprocess
|
||||
import sys
|
||||
import uuid
|
||||
import zipfile
|
||||
import os
|
||||
from pathlib import Path
|
||||
from datetime import date
|
||||
|
||||
from Resources import Constants, ModelArray, utilities
|
||||
|
||||
|
||||
class PatchSysVolume:
|
||||
def __init__(self, model, versions):
|
||||
self.model = model
|
||||
self.constants: Constants.Constants = versions
|
||||
|
||||
def csr_decode(self, sip_raw, print_status):
|
||||
sip_int = int.from_bytes(sip_raw, byteorder='little')
|
||||
i = 0
|
||||
for current_sip_bit in self.constants.csr_values:
|
||||
if sip_int & (1 << i):
|
||||
temp = True
|
||||
self.constants.csr_values[current_sip_bit] = True
|
||||
else:
|
||||
temp = False
|
||||
if print_status is True:
|
||||
print(f"- {current_sip_bit}\t {temp}")
|
||||
i = i + 1
|
||||
# TODO: Fix this garbage when I have more sanity
|
||||
if ((self.constants.csr_values["CSR_ALLOW_UNTRUSTED_KEXTS "] is True) and (self.constants.csr_values["CSR_ALLOW_UNRESTRICTED_FS "] is True) and (self.constants.csr_values["CSR_ALLOW_UNRESTRICTED_DTRACE "] is True) and (self.constants.csr_values["CSR_ALLOW_UNRESTRICTED_NVRAM "] is True) and (self.constants.csr_values["CSR_ALLOW_DEVICE_CONFIGURATION "] is True) and (self.constants.csr_values["CSR_ALLOW_UNAPPROVED_KEXTS "] is True) and (self.constants.csr_values["CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE"] is True) and (self.constants.csr_values["CSR_ALLOW_UNAUTHENTICATED_ROOT "] is True)):
|
||||
self.sip_patch_status = False
|
||||
else:
|
||||
self.sip_patch_status = True
|
||||
|
||||
def find_mount_root_vol(self, patch):
|
||||
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
self.root_mount_path = root_partition_info["DeviceIdentifier"]
|
||||
self.mount_location = "/System/Volumes/Update/mnt1"
|
||||
self.mount_extensions = f"{self.mount_location}/System/Library/Extensions"
|
||||
self.mount_frameworks = f"{self.mount_location}/System/Library/Frameworks"
|
||||
self.mount_lauchd = f"{self.mount_location}/System/Library/LaunchDaemons"
|
||||
self.mount_private_frameworks = f"{self.mount_location}/System/Library/PrivateFrameworks"
|
||||
|
||||
if self.root_mount_path.startswith("disk"):
|
||||
self.root_mount_path = self.root_mount_path[:-2] if self.root_mount_path.endswith('s1') else self.root_mount_path
|
||||
print(f"- Found Root Volume at: {self.root_mount_path}")
|
||||
if Path(self.mount_extensions).exists():
|
||||
print("- Root Volume is already mounted")
|
||||
if patch is True:
|
||||
self.patch_root_vol()
|
||||
else:
|
||||
self.unpatch_root_vol()
|
||||
else:
|
||||
print("- Mounting drive as writable")
|
||||
subprocess.run(f"sudo mount -o nobrowse -t apfs /dev/{self.root_mount_path} {self.mount_location}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
if Path(self.mount_extensions).exists():
|
||||
print("- Sucessfully mounted the Root Volume")
|
||||
if patch is True:
|
||||
self.patch_root_vol()
|
||||
else:
|
||||
self.unpatch_root_vol()
|
||||
else:
|
||||
print("- Failed to mount the Root Volume")
|
||||
else:
|
||||
print("- Could not find root volume")
|
||||
|
||||
def delete_old_binaries(self, vendor_patch):
|
||||
for delete_current_kext in vendor_patch:
|
||||
delete_path = Path(self.mount_extensions) / Path(delete_current_kext)
|
||||
if Path(delete_path).exists():
|
||||
print(f"- Deleting {delete_current_kext}")
|
||||
subprocess.run(f"sudo rm -R {delete_path}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
else:
|
||||
print(f"- Couldn't find {delete_current_kext}, skipping")
|
||||
|
||||
def add_new_binaries(self, vendor_patch, vendor_location):
|
||||
for add_current_kext in vendor_patch:
|
||||
existing_path = Path(self.mount_extensions) / Path(add_current_kext)
|
||||
if Path(existing_path).exists():
|
||||
print(f"- Found conflicting kext, Deleting Root Volume's {add_current_kext}")
|
||||
subprocess.run(f"sudo rm -R {existing_path}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
print(f"- Adding {add_current_kext}")
|
||||
subprocess.run(f"sudo cp -R {vendor_location}/{add_current_kext} {self.mount_extensions}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chmod -Rf 755 {self.mount_extensions}/{add_current_kext}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chown -Rf root:wheel {self.mount_extensions}/{add_current_kext}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
else:
|
||||
print(f"- Adding {add_current_kext}")
|
||||
subprocess.run(f"sudo cp -R {vendor_location}/{add_current_kext} {self.mount_extensions}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chmod -Rf 755 {self.mount_extensions}/{add_current_kext}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chown -Rf root:wheel {self.mount_extensions}/{add_current_kext}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def gpu_accel_patches_11(self):
|
||||
# TODO: Add proper hardware checks
|
||||
# Due to MUX-based laptops and headless iGPUs, it's difficult to determine what GPU is present
|
||||
# Fix would be to parse IOReg for both IGPU and GFX0
|
||||
if self.model in ModelArray.LegacyGPUNvidia:
|
||||
print("- Merging legacy Nvidia Kexts and Bundles")
|
||||
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
|
||||
self.add_new_binaries(ModelArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
|
||||
elif self.model in ModelArray.LegacyGPUAMD:
|
||||
print("- Merging legacy AMD Kexts and Bundles")
|
||||
self.delete_old_binaries(ModelArray.DeleteAMDAccel11)
|
||||
self.add_new_binaries(ModelArray.AddAMDAccel11, self.constants.legacy_amd_path)
|
||||
if self.model in ModelArray.LegacyGPUIntelGen1:
|
||||
print("- Merging legacy Intel 1st Gen Kexts and Bundles")
|
||||
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
|
||||
self.add_new_binaries(ModelArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
||||
elif self.model in ModelArray.LegacyGPUIntelGen2:
|
||||
print("- Merging legacy Intel 2nd Gen Kexts and Bundles")
|
||||
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
|
||||
self.add_new_binaries(ModelArray.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
||||
# iMac10,1 came in both AMD and Nvidia GPU models, so we must do hardware detection
|
||||
if self.model == "iMac10,1":
|
||||
if self.constants.current_gpuv == "AMD (0x1002)":
|
||||
print("- Merging legacy AMD Kexts and Bundles")
|
||||
self.delete_old_binaries(ModelArray.DeleteAMDAccel11)
|
||||
self.add_new_binaries(ModelArray.AddAMDAccel11, self.constants.legacy_amd_path)
|
||||
else:
|
||||
print("- Merging legacy Nvidia Kexts and Bundles")
|
||||
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
|
||||
self.add_new_binaries(ModelArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
|
||||
|
||||
# Frameworks
|
||||
print("- Merging legacy Frameworks")
|
||||
subprocess.run(f"sudo ditto {self.constants.payload_apple_frameworks_path_accel} {self.mount_frameworks}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
if self.model in ModelArray.LegacyBrightness:
|
||||
print("- Merging legacy Brightness Control Patches")
|
||||
self.delete_old_binaries(ModelArray.DeleteBrightness)
|
||||
self.add_new_binaries(ModelArray.AddBrightness, self.constants.legacy_brightness)
|
||||
subprocess.run(f"sudo ditto {self.constants.payload_apple_private_frameworks_path_brightness} {self.mount_private_frameworks}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chmod -R 755 {self.mount_private_frameworks}/DisplayServices.framework".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chown -R root:wheel {self.mount_private_frameworks}/DisplayServices.framework".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
# LaunchDaemons
|
||||
print("- Adding HiddHack.plist")
|
||||
subprocess.run(f"sudo ditto {self.constants.payload_apple_lauchd_path_accel} {self.mount_lauchd}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chmod 755 {self.mount_lauchd}/HiddHack.plist".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chown root:wheel {self.mount_lauchd}/HiddHack.plist".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
# PrivateFrameworks
|
||||
print("- Merging legacy PrivateFrameworks")
|
||||
subprocess.run(f"sudo ditto {self.constants.payload_apple_private_frameworks_path_accel} {self.mount_private_frameworks}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
# Sets AppKit to Catalina Window Drawing codepath
|
||||
print("- Disabling NSDefenestratorModeEnabled")
|
||||
subprocess.run("defaults write -g NSDefenestratorModeEnabled -bool false".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
|
||||
def patch_root_vol(self):
|
||||
print(f"- Detecting patches for {self.model}")
|
||||
# TODO: Create Backup of S*/L*/Extensions, Frameworks and PrivateFramework to easily revert changes
|
||||
# APFS snapshotting seems to ignore System Volume changes inconcistently, would like a backup to avoid total brick
|
||||
# Perhaps a basic py2 script to run in recovery to restore
|
||||
print("- Creating backup snapshot of user data (This may take some time)")
|
||||
subprocess.run("tmutil snapshot".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
# Ensures no .DS_Stores got in
|
||||
print("- Preparing Files")
|
||||
subprocess.run(f"sudo find {self.constants.payload_apple_root_path} -name '.DS_Store' -delete".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
current_gpu: str = subprocess.run("system_profiler SPDisplaysDataType".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||
self.constants.current_gpuv = [line.strip().split(": ", 1)[1] for line in current_gpu.split("\n") if line.strip().startswith(("Vendor"))][0]
|
||||
self.constants.current_gpud = [line.strip().split(": ", 1)[1] for line in current_gpu.split("\n") if line.strip().startswith(("Device ID"))][0]
|
||||
|
||||
# Start Patch engine
|
||||
if self.model in ModelArray.LegacyAudio:
|
||||
print("- Attempting AppleHDA Patch")
|
||||
subprocess.run(f"sudo rm -R {self.mount_extensions}/AppleHDA.kext".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo cp -R {self.constants.applehda_path} {self.mount_extensions}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chmod -Rf 755 {self.mount_extensions}/AppleHDA.kext".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
subprocess.run(f"sudo chown -Rf root:wheel {self.mount_extensions}/AppleHDA.kext".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
rebuild_required = True
|
||||
|
||||
if (self.model in ModelArray.LegacyGPU) and (Path(self.constants.hiddhack_path).exists()):
|
||||
print(f"- Detected GPU: {self.constants.current_gpuv} {self.constants.current_gpud}")
|
||||
if (self.constants.current_gpuv == "AMD (0x1002)") & (self.constants.current_gpud in ModelArray.AMDMXMGPUs):
|
||||
print("- Detected Metal-based AMD GPU, skipping legacy patches")
|
||||
elif (self.constants.current_gpuv == "NVIDIA (0x10de)") & (self.constants.current_gpud in ModelArray.NVIDIAMXMGPUs):
|
||||
print("- Detected Metal-based Nvidia GPU, skipping legacy patches")
|
||||
else:
|
||||
print("- Detected legacy GPU, attempting legacy acceleration patches")
|
||||
self.gpu_accel_patches_11()
|
||||
rebuild_required = True
|
||||
|
||||
if rebuild_required is True:
|
||||
self.rebuild_snapshot()
|
||||
|
||||
def unpatch_root_vol(self):
|
||||
print("- Creating backup snapshot of user data (This may take some time)")
|
||||
subprocess.run("tmutil snapshot".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
print("- Reverting to last signed APFS snapshot")
|
||||
subprocess.run(f"sudo bless --mount {self.mount_location} --bootefi --last-sealed-snapshot".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def rebuild_snapshot(self):
|
||||
input("Press [ENTER] to continue with cache rebuild")
|
||||
print("- Rebuilding Kernel Cache (This may take some time)")
|
||||
subprocess.run(f"sudo kmutil install --volume-root {self.mount_location} --update-all".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
input("Press [ENTER] to continue with snapshotting")
|
||||
print("- Creating new APFS snapshot")
|
||||
subprocess.run(f"sudo bless --folder {self.mount_location}/System/Library/CoreServices --bootefi --create-snapshot".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def unmount_drive(self):
|
||||
print("- Unmounting Root Volume (Don't worry if this fails)")
|
||||
subprocess.run(f"sudo diskutil unmount {self.root_mount_path}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def check_status(self):
|
||||
nvram_dump = plistlib.loads(subprocess.run("nvram -x -p".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
try:
|
||||
self.sip_status = nvram_dump["csr-active-config"]
|
||||
except KeyError:
|
||||
self.sip_status = b'\x00\x00\x00\x00'
|
||||
|
||||
self.smb_model: str = subprocess.run("nvram 94B73556-2197-4702-82A8-3E1337DAFBFB:HardwareModel ".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||
if not self.smb_model.startswith("nvram: Error getting variable"):
|
||||
self.smb_model = [line.strip().split(":HardwareModel ", 1)[1] for line in self.smb_model.split("\n") if line.strip().startswith("94B73556-2197-4702-82A8-3E1337DAFBFB:")][0]
|
||||
if self.smb_model.startswith("j137"):
|
||||
self.smb_status = True
|
||||
else:
|
||||
self.smb_status = False
|
||||
else:
|
||||
self.smb_status = False
|
||||
self.fv_status = True
|
||||
self.fv_status: str = subprocess.run("fdesetup status".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||
if self.fv_status.startswith("FileVault is Off"):
|
||||
self.fv_status = False
|
||||
else:
|
||||
self.fv_status = True
|
||||
self.sip_patch_status = True
|
||||
self.csr_decode(self.sip_status, False)
|
||||
|
||||
def check_files(self):
|
||||
if Path(self.constants.payload_apple_root_path).exists():
|
||||
print("- Found Apple Binaries")
|
||||
patch_input = input("Would you like to redownload?(y/n): ")
|
||||
if patch_input in {"y", "Y", "yes", "Yes"}:
|
||||
shutil.rmtree(Path(self.constants.payload_apple_root_path))
|
||||
self.download_files()
|
||||
else:
|
||||
print("- Apple binaries missing")
|
||||
self.download_files()
|
||||
|
||||
def download_files(self):
|
||||
utilities.cls()
|
||||
print("- Downloading Apple binaries")
|
||||
popen_oclp = subprocess.Popen(f"curl -S -L {self.constants.url_apple_binaries} --output {self.constants.payload_apple_root_path_zip}".split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
|
||||
for stdout_line in iter(popen_oclp.stdout.readline, ""):
|
||||
print(stdout_line, end="")
|
||||
popen_oclp.stdout.close()
|
||||
if self.constants.payload_apple_root_path_zip.exists():
|
||||
print("- Download completed")
|
||||
print("- Unzipping download...")
|
||||
try:
|
||||
subprocess.run(f"unzip {self.constants.payload_apple_root_path_zip}".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path).stdout.decode()
|
||||
print("- Renaming folder")
|
||||
os.rename(self.constants.payload_apple_root_path_unzip, self.constants.payload_apple_root_path)
|
||||
print("- Binaries downloaded to:")
|
||||
print(self.constants.payload_path)
|
||||
input("Press [ENTER] to continue")
|
||||
except zipfile.BadZipFile:
|
||||
print("- Couldn't unzip")
|
||||
os.remove(self.constants.payload_apple_root_path_zip)
|
||||
else:
|
||||
print("- Download failed, please verify the below link works:")
|
||||
print(self.constants.url_apple_binaries)
|
||||
|
||||
def start_patch(self):
|
||||
# Check SIP
|
||||
if self.constants.custom_model is not None:
|
||||
print("Root Patching must be done on target machine!")
|
||||
elif self.model in ModelArray.NoRootPatch11:
|
||||
print("Root Patching not required for this machine!")
|
||||
elif self.model not in ModelArray.SupportedSMBIOS:
|
||||
print("Cannot run on this machine, model is unsupported!")
|
||||
elif self.constants.detected_os < self.constants.big_sur:
|
||||
print(f"Cannot run on this OS, requires macOS 11!")
|
||||
else:
|
||||
self.check_status()
|
||||
utilities.cls()
|
||||
if (self.sip_patch_status is False) and (self.smb_status is False):
|
||||
print("- Detected SIP and SecureBootModel are disabled, continuing")
|
||||
input("\nPress [ENTER] to continue")
|
||||
self.check_files()
|
||||
if self.constants.payload_apple_root_path.exists():
|
||||
self.find_mount_root_vol(True)
|
||||
self.unmount_drive()
|
||||
print("- Patching complete")
|
||||
print("\nPlease reboot the machine for patches to take effect")
|
||||
if self.sip_patch_status is True:
|
||||
print("SIP set incorrectly, cannot patch on this machine!")
|
||||
print("Please disable SIP and SecureBootModel in Patcher Settings")
|
||||
self.csr_decode(self.sip_status, True)
|
||||
print("")
|
||||
if self.smb_status is True:
|
||||
print("SecureBootModel set incorrectly, unable to patch!")
|
||||
print("Please disable SecureBootModel in Patcher Settings")
|
||||
print("")
|
||||
if self.fv_status is True:
|
||||
print("FileVault enabled, unable to patch!")
|
||||
print("Please disable FileVault in System Preferences")
|
||||
print("")
|
||||
input("Press [Enter] to go exit.")
|
||||
def start_unpatch(self):
|
||||
if self.constants.custom_model is not None:
|
||||
print("Unpatching must be done on target machine!")
|
||||
elif self.constants.detected_os < self.constants.big_sur:
|
||||
print(f"Cannot run on this OS, requires macOS 11!")
|
||||
else:
|
||||
self.check_status()
|
||||
utilities.cls()
|
||||
if (self.sip_patch_status is False) and (self.smb_status is False):
|
||||
print("- Detected SIP and SecureBootModel are disabled, continuing")
|
||||
input("\nPress [ENTER] to continue")
|
||||
self.find_mount_root_vol(False)
|
||||
self.unmount_drive()
|
||||
print("- Unpatching complete")
|
||||
print("\nPlease reboot the machine for patches to take effect")
|
||||
if self.sip_patch_status is True:
|
||||
print("SIP set incorrectly, cannot unpatch on this machine!")
|
||||
print("Please disable SIP and SecureBootModel in Patcher Settings")
|
||||
self.csr_decode(self.sip_status, True)
|
||||
print("")
|
||||
if self.smb_status is True:
|
||||
print("SecureBootModel set incorrectly, unable to unpatch!")
|
||||
print("Please disable SecureBootModel in Patcher Settings")
|
||||
print("")
|
||||
if self.fv_status is True:
|
||||
print("FileVault enabled, unable to unpatch!")
|
||||
print("Please disable FileVault in System Preferences")
|
||||
print("")
|
||||
input("Press [Enter] to go exit.")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Commands for building the EFI and SMBIOS
|
||||
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
from __future__ import print_function
|
||||
|
||||
import binascii
|
||||
@@ -76,7 +76,9 @@ class BuildOpenCore:
|
||||
("Lilu.kext", self.constants.lilu_version, self.constants.lilu_path, lambda: True),
|
||||
("WhateverGreen.kext", self.constants.whatevergreen_version, self.constants.whatevergreen_path, lambda: True),
|
||||
("RestrictEvents.kext", self.constants.restrictevents_version, self.constants.restrictevents_path, lambda: self.model in ModelArray.MacPro71),
|
||||
("RestrictEvents.kext", self.constants.restrictevents_mbp_version, self.constants.restrictevents_mbp_path, lambda: self.model == "MacBookPro9,1"),
|
||||
("NightShiftEnabler.kext", self.constants.nightshift_version, self.constants.nightshift_path, lambda: self.model not in ModelArray.NightShiftExclude),
|
||||
("SMC-Spoof.kext", self.constants.smcspoof_version, self.constants.smcspoof_path, lambda: True),
|
||||
# CPU patches
|
||||
("AppleMCEReporterDisabler.kext", self.constants.mce_version, self.constants.mce_path, lambda: self.model in ModelArray.DualSocket),
|
||||
("AAAMouSSE.kext", self.constants.mousse_version, self.constants.mousse_path, lambda: self.model in ModelArray.SSEEmulator),
|
||||
@@ -87,16 +89,23 @@ class BuildOpenCore:
|
||||
("MarvelYukonEthernet.kext", self.constants.marvel_version, self.constants.marvel_path, lambda: self.model in ModelArray.EthernetMarvell),
|
||||
("CatalinaBCM5701Ethernet.kext", self.constants.bcm570_version, self.constants.bcm570_path, lambda: self.model in ModelArray.EthernetBroadcom),
|
||||
# Legacy audio
|
||||
("VoodooHDA.kext", self.constants.voodoohda_version, self.constants.voodoohda_path, lambda: self.model in ModelArray.LegacyAudio),
|
||||
#("VoodooHDA.kext", self.constants.voodoohda_version, self.constants.voodoohda_path, lambda: self.model in ModelArray.LegacyAudio),
|
||||
# IDE patch
|
||||
("AppleIntelPIIXATA.kext", self.constants.piixata_version, self.constants.piixata_path, lambda: self.model in ModelArray.IDEPatch),
|
||||
# Hibernation Tests
|
||||
#("CpuTscSync.kext", self.constants.cputscsync, self.constants.cputscsync_path, lambda: True),
|
||||
#("HibernationFixup.kext", self.constants.hibernationfixup, self.constants.hibernationfixup_path, lambda: True),
|
||||
]:
|
||||
self.enable_kext(name, version, path, check)
|
||||
|
||||
# WiFi patches
|
||||
# TODO: -a is not supported in Lion and older, need to add proper fix
|
||||
wifi_devices = plistlib.loads(subprocess.run("ioreg -c IOPCIDevice -r -d2 -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
wifi_devices = [i for i in wifi_devices if i["vendor-id"] == binascii.unhexlify("E4140000") and i["class-code"] == binascii.unhexlify("00800200")]
|
||||
if self.constants.detected_os > self.constants.lion:
|
||||
wifi_devices = plistlib.loads(subprocess.run("ioreg -c IOPCIDevice -r -d2 -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
wifi_devices = [i for i in wifi_devices if i["vendor-id"] == binascii.unhexlify("E4140000") and i["class-code"] == binascii.unhexlify("00800200")]
|
||||
else:
|
||||
wifi_devices = ""
|
||||
print("- Can't run Wifi hardware detection on Snow Leopard and older")
|
||||
if self.constants.wifi_build is True:
|
||||
print("- Skipping Wifi patches on request")
|
||||
elif not self.constants.custom_model and wifi_devices and self.hexswap(binascii.hexlify(wifi_devices[0]["device-id"]).decode()[:4]) in ModelArray.nativeWifi:
|
||||
@@ -131,7 +140,7 @@ class BuildOpenCore:
|
||||
self.get_kext_by_bundle_path("IO80211Mojave.kext/Contents/PlugIns/AirPortBrcm4331.kext")["Enabled"] = True
|
||||
|
||||
# CPUFriend
|
||||
pp_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/PlatformPlugin/{self.model}/Info.plist")
|
||||
pp_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/Plists/PlatformPlugin/{self.model}/Info.plist")
|
||||
if self.model in ModelArray.X86PP:
|
||||
Path(self.constants.pp_kext_folder).mkdir()
|
||||
Path(self.constants.pp_contents_folder).mkdir()
|
||||
@@ -147,9 +156,10 @@ class BuildOpenCore:
|
||||
if self.model in ModelArray.pciSSDT:
|
||||
print("- Adding SSDT-CPBG.aml")
|
||||
self.get_item_by_kv(self.config["ACPI"]["Add"], "Path", "SSDT-CPBG.aml")["Enabled"] = True
|
||||
shutil.copy(self.constants.pci_ssdt_path, self.constants.acpi_path)
|
||||
|
||||
# USB Map
|
||||
usb_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/Maps/Universal/Info.plist")
|
||||
usb_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/Plists/AppleUSBMaps/Info.plist")
|
||||
if usb_map_path.exists():
|
||||
print(f"- Adding USB-Map.kext")
|
||||
Path(self.constants.map_kext_folder).mkdir()
|
||||
@@ -157,6 +167,27 @@ class BuildOpenCore:
|
||||
shutil.copy(usb_map_path, self.constants.map_contents_folder)
|
||||
self.get_kext_by_bundle_path("USB-Map.kext")["Enabled"] = True
|
||||
|
||||
agdp_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/Plists/AppleGraphicsDevicePolicy/Info.plist")
|
||||
agpm_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/Plists/AppleGraphicsPowerManagement/Info.plist")
|
||||
amc_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/Plists/AppleMuxControl/Info.plist")
|
||||
|
||||
if self.model == "MacBookPro9,1":
|
||||
print(f"- Adding Display Map Overrides")
|
||||
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " agdpmod=vit9696"
|
||||
Path(self.constants.agdp_kext_folder).mkdir()
|
||||
Path(self.constants.agdp_contents_folder).mkdir()
|
||||
Path(self.constants.agpm_kext_folder).mkdir()
|
||||
Path(self.constants.agpm_contents_folder).mkdir()
|
||||
Path(self.constants.amc_kext_folder).mkdir()
|
||||
Path(self.constants.amc_contents_folder).mkdir()
|
||||
|
||||
shutil.copy(agdp_map_path, self.constants.agdp_contents_folder)
|
||||
shutil.copy(agpm_map_path, self.constants.agpm_contents_folder)
|
||||
shutil.copy(amc_map_path, self.constants.amc_contents_folder)
|
||||
self.get_kext_by_bundle_path("AGDP-Override.kext")["Enabled"] = True
|
||||
self.get_kext_by_bundle_path("AGPM-Override.kext")["Enabled"] = True
|
||||
self.get_kext_by_bundle_path("AMC-Override.kext")["Enabled"] = True
|
||||
|
||||
# AGPM Patch
|
||||
if self.model in ModelArray.DualGPUPatch:
|
||||
print("- Adding dual GPU patch")
|
||||
@@ -181,6 +212,8 @@ class BuildOpenCore:
|
||||
self.config["DeviceProperties"]["Add"][backlight_path] = {"@0,backlight-control": binascii.unhexlify("01000000"), "@0,built-in": binascii.unhexlify("01000000")}
|
||||
print("- Disabling unsupported iGPU")
|
||||
self.config["DeviceProperties"]["Add"]["PciRoot(0x0)/Pci(0x2,0x0)"] = {"name": binascii.unhexlify("23646973706C6179"), "IOName": "#display", "class-code": binascii.unhexlify("FFFFFFFF")}
|
||||
shutil.copy(self.constants.backlight_path, self.constants.kexts_path)
|
||||
self.get_kext_by_bundle_path("AppleBacklightFixup.kext")["Enabled"] = True
|
||||
else:
|
||||
print("- Failed to determine model")
|
||||
|
||||
@@ -225,7 +258,7 @@ class BuildOpenCore:
|
||||
# Add UGA to GOP layer
|
||||
if self.model in ModelArray.UGAtoGOP:
|
||||
print("- Adding UGA to GOP Patch")
|
||||
self.config["UEFI"]["ProtocolOverrides"]["GopPassThrough"] = True
|
||||
self.config["UEFI"]["Output"]["GopPassThrough"] = True
|
||||
|
||||
# ThridPartDrives Check
|
||||
if self.model not in ModelArray.NoSATAPatch:
|
||||
@@ -236,7 +269,7 @@ class BuildOpenCore:
|
||||
if self.constants.verbose_debug is True:
|
||||
print("- Enabling Verbose boot")
|
||||
self.config["Kernel"]["Quirks"]["PanicNoKextDump"] = True
|
||||
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -v"
|
||||
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -v debug=0x100"
|
||||
if self.constants.kext_debug is True:
|
||||
print("- Enabling DEBUG Kexts")
|
||||
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -liludbgall"
|
||||
@@ -244,13 +277,13 @@ class BuildOpenCore:
|
||||
if self.constants.opencore_debug is True:
|
||||
print("- Enabling DEBUG OpenCore")
|
||||
self.config["Misc"]["Debug"]["Target"] = 67
|
||||
self.config["Misc"]["Debug"]["DisplayLevel"] = 672151678018
|
||||
if self.constants.showpicker is True:
|
||||
print("- Enabling ShowPicker")
|
||||
self.config["Misc"]["Boot"]["ShowPicker"] = True
|
||||
else:
|
||||
print("- Hiding picker and enabling PollAppleHotKeys")
|
||||
self.config["Misc"]["Boot"]["ShowPicker"] = False
|
||||
self.config["Misc"]["Boot"]["PollAppleHotKeys"] = True
|
||||
if self.constants.vault is True:
|
||||
print("- Setting Vault configuration")
|
||||
self.config["Misc"]["Security"]["Vault"] = "Secure"
|
||||
@@ -287,6 +320,10 @@ class BuildOpenCore:
|
||||
print("- Spoofing to Macmini7,1")
|
||||
spoofed_model = "Macmini7,1"
|
||||
spoofed_board = "Mac-35C5E08120C7EEAF"
|
||||
elif self.model in ModelArray.iMacPro11:
|
||||
print("- Spoofing to iMacPro1,1")
|
||||
spoofed_model = "iMacPro1,1"
|
||||
spoofed_board = "Mac-7BA5B2D9E42DDD94"
|
||||
elif self.model in ModelArray.iMac151:
|
||||
# Check for upgraded GPUs on iMacs
|
||||
if self.constants.metal_build is True:
|
||||
@@ -335,7 +372,7 @@ class BuildOpenCore:
|
||||
self.config["PlatformInfo"]["UpdateDataHub"] = True
|
||||
self.config["PlatformInfo"]["UpdateNVRAM"] = True
|
||||
self.config["UEFI"]["ProtocolOverrides"]["DataHub"] = True
|
||||
self.config["PlatformInfo"]["Generic"]["ROM"] = binascii.unhexlify("112233445566")
|
||||
self.config["PlatformInfo"]["Generic"]["ROM"] = binascii.unhexlify("0016CB445566")
|
||||
self.config["PlatformInfo"]["Generic"]["SystemProductName"] = self.spoofed_model
|
||||
self.config["PlatformInfo"]["Generic"]["SystemSerialNumber"] = macserial_output[0]
|
||||
self.config["PlatformInfo"]["Generic"]["MLB"] = macserial_output[1]
|
||||
@@ -353,36 +390,35 @@ class BuildOpenCore:
|
||||
minimal_serial_patch(self)
|
||||
|
||||
# USB Map Patching
|
||||
self.new_map_ls = Path(self.constants.map_contents_folder) / Path("Info.plist")
|
||||
self.map_config = plistlib.load(Path(self.new_map_ls).open("rb"))
|
||||
new_map_ls = Path(self.constants.map_contents_folder) / Path("Info.plist")
|
||||
map_config = plistlib.load(Path(new_map_ls).open("rb"))
|
||||
|
||||
self.map_config["IOKitPersonalities_x86_64"][self.model]["model"] = self.spoofed_model
|
||||
if self.model in ModelArray.EHCI:
|
||||
model_ehci = f"{self.model}-EHCI"
|
||||
self.map_config["IOKitPersonalities_x86_64"][model_ehci]["model"] = self.spoofed_model
|
||||
if self.model in ModelArray.EHC1:
|
||||
model_ehc1 = f"{self.model}-EHC1"
|
||||
self.map_config["IOKitPersonalities_x86_64"][model_ehc1]["model"] = self.spoofed_model
|
||||
if self.model in ModelArray.EHC2:
|
||||
model_ehc2 = f"{self.model}-EHC2"
|
||||
self.map_config["IOKitPersonalities_x86_64"][model_ehc2]["model"] = self.spoofed_model
|
||||
if self.model in ModelArray.OHC1:
|
||||
model_ohc1 = f"{self.model}-OHC1"
|
||||
model_ohc2 = f"{self.model}-OHC2"
|
||||
self.map_config["IOKitPersonalities_x86_64"][model_ohc1]["model"] = self.spoofed_model
|
||||
self.map_config["IOKitPersonalities_x86_64"][model_ohc2]["model"] = self.spoofed_model
|
||||
if self.model in ModelArray.IHEHC1:
|
||||
model_ihehc1 = f"{self.model}-InternalHub-EHC1"
|
||||
model_ihehc1ih = f"{self.model}-InternalHub-EHC1-InternalHub"
|
||||
self.map_config["IOKitPersonalities_x86_64"][model_ihehc1]["model"] = self.spoofed_model
|
||||
self.map_config["IOKitPersonalities_x86_64"][model_ihehc1ih]["model"] = self.spoofed_model
|
||||
if self.model in ModelArray.IHEHC2:
|
||||
model_ihehc2 = f"{self.model}-InternalHub-EHC2"
|
||||
self.map_config["IOKitPersonalities_x86_64"][model_ihehc2]["model"] = self.spoofed_model
|
||||
if self.model in ModelArray.IH:
|
||||
model_ih = f"{self.model}-InternalHub"
|
||||
self.map_config["IOKitPersonalities_x86_64"][model_ih]["model"] = self.spoofed_model
|
||||
plistlib.dump(self.map_config, Path(self.new_map_ls).open("wb"), sort_keys=True)
|
||||
for model_controller in ModelArray.ControllerTypes:
|
||||
model_patch = f"{self.model}{model_controller}"
|
||||
try:
|
||||
# Avoid erroring out when specific identity not found
|
||||
map_config["IOKitPersonalities_x86_64"][model_patch]["model"] = self.spoofed_model
|
||||
except KeyError:
|
||||
continue
|
||||
|
||||
plistlib.dump(map_config, Path(new_map_ls).open("wb"), sort_keys=True)
|
||||
|
||||
if self.model == "MacBookPro9,1":
|
||||
new_agdp_ls = Path(self.constants.agdp_contents_folder) / Path("Info.plist")
|
||||
new_agpm_ls = Path(self.constants.agpm_contents_folder) / Path("Info.plist")
|
||||
new_amc_ls = Path(self.constants.amc_contents_folder) / Path("Info.plist")
|
||||
|
||||
agdp_config = plistlib.load(Path(new_agdp_ls).open("rb"))
|
||||
agpm_config = plistlib.load(Path(new_agpm_ls).open("rb"))
|
||||
amc_config = plistlib.load(Path(new_amc_ls).open("rb"))
|
||||
|
||||
agdp_config["IOKitPersonalities"]["AppleGraphicsDevicePolicy"]["ConfigMap"][self.spoofed_board] = agdp_config["IOKitPersonalities"]["AppleGraphicsDevicePolicy"]["ConfigMap"].pop(self.model)
|
||||
agpm_config["IOKitPersonalities"]["AGPM"]["Machines"][self.spoofed_board] = agpm_config["IOKitPersonalities"]["AGPM"]["Machines"].pop(self.model)
|
||||
amc_config["IOKitPersonalities"]["AppleMuxControl"]["ConfigMap"][self.spoofed_board] = amc_config["IOKitPersonalities"]["AppleMuxControl"]["ConfigMap"].pop(self.model)
|
||||
|
||||
plistlib.dump(agdp_config, Path(new_agdp_ls).open("wb"), sort_keys=True)
|
||||
plistlib.dump(agpm_config, Path(new_agpm_ls).open("wb"), sort_keys=True)
|
||||
plistlib.dump(amc_config, Path(new_amc_ls).open("wb"), sort_keys=True)
|
||||
|
||||
@staticmethod
|
||||
def get_item_by_kv(iterable, key, value):
|
||||
@@ -471,22 +507,28 @@ Please build OpenCore first!"""
|
||||
print("\nDisk picker is loading...")
|
||||
|
||||
all_disks = {}
|
||||
# TODO: physical is not supported in Sierra and older
|
||||
# AllDisksAndPartitions is not supported in Yosemite(?) and older
|
||||
disks = plistlib.loads(subprocess.run("diskutil list -plist physical".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
# TODO: AllDisksAndPartitions is not supported in Snow Leopard and older
|
||||
try:
|
||||
# High Sierra and newer
|
||||
disks = plistlib.loads(subprocess.run("diskutil list -plist physical".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
except ValueError:
|
||||
# Sierra and older
|
||||
disks = plistlib.loads(subprocess.run("diskutil list -plist".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
for disk in disks["AllDisksAndPartitions"]:
|
||||
disk_info = plistlib.loads(subprocess.run(f"diskutil info -plist {disk['DeviceIdentifier']}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
|
||||
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["Size"], "partitions": {}}
|
||||
|
||||
for partition in disk["Partitions"]:
|
||||
partition_info = plistlib.loads(subprocess.run(f"diskutil info -plist {partition['DeviceIdentifier']}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
all_disks[disk["DeviceIdentifier"]]["partitions"][partition["DeviceIdentifier"]] = {
|
||||
"fs": partition_info.get("FilesystemType", partition_info["Content"]),
|
||||
"type": partition_info["Content"],
|
||||
"name": partition_info.get("VolumeName", ""),
|
||||
"size": partition_info["Size"],
|
||||
}
|
||||
try:
|
||||
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "partitions": {}}
|
||||
for partition in disk["Partitions"]:
|
||||
partition_info = plistlib.loads(subprocess.run(f"diskutil info -plist {partition['DeviceIdentifier']}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
all_disks[disk["DeviceIdentifier"]]["partitions"][partition["DeviceIdentifier"]] = {
|
||||
"fs": partition_info.get("FilesystemType", partition_info["Content"]),
|
||||
"type": partition_info["Content"],
|
||||
"name": partition_info.get("VolumeName", ""),
|
||||
"size": partition_info["TotalSize"],
|
||||
}
|
||||
except KeyError:
|
||||
# Avoid crashing with CDs installed
|
||||
continue
|
||||
# TODO: Advanced mode
|
||||
menu = utilities.TUIMenu(
|
||||
["Select Disk"],
|
||||
@@ -496,7 +538,7 @@ Please build OpenCore first!"""
|
||||
loop=True,
|
||||
)
|
||||
for disk in all_disks:
|
||||
if not any(all_disks[disk]["partitions"][partition]["fs"] == "msdos" for partition in all_disks[disk]["partitions"]):
|
||||
if not any(all_disks[disk]["partitions"][partition]["fs"] in ("msdos", "EFI") for partition in all_disks[disk]["partitions"]):
|
||||
continue
|
||||
menu.add_menu_option(f"{disk}: {all_disks[disk]['name']} ({human_fmt(all_disks[disk]['size'])})", key=disk[4:])
|
||||
|
||||
@@ -516,7 +558,7 @@ Please build OpenCore first!"""
|
||||
in_between=["Missing partitions? Ensure they are formatted as an EFI or FAT32.", "", "* denotes likely candidate."],
|
||||
)
|
||||
for partition in selected_disk["partitions"]:
|
||||
if selected_disk["partitions"][partition]["fs"] != "msdos":
|
||||
if selected_disk["partitions"][partition]["fs"] not in ("msdos", "EFI"):
|
||||
continue
|
||||
text = f"{partition}: {selected_disk['partitions'][partition]['name']} ({human_fmt(selected_disk['partitions'][partition]['size'])})"
|
||||
if selected_disk["partitions"][partition]["type"] == "EFI" or (
|
||||
@@ -530,6 +572,7 @@ Please build OpenCore first!"""
|
||||
if response == -1:
|
||||
return
|
||||
|
||||
# TODO: Apple Script fails in Yosemite(?) and older
|
||||
args = [
|
||||
"osascript",
|
||||
"-e",
|
||||
@@ -539,10 +582,13 @@ Please build OpenCore first!"""
|
||||
" without altering line endings",
|
||||
]
|
||||
|
||||
result = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
if self.constants.detected_os > self.constants.yosemite:
|
||||
result = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
else:
|
||||
result = subprocess.run(f"diskutil mount {disk_identifier}s{response}".split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
|
||||
if result.returncode != 0:
|
||||
if "execution error" in result.stderr.decode() and result.stderr.decode()[-5:-1] == "-128":
|
||||
if "execution error" in result.stderr.decode() and result.stderr.decode().strip()[-5:-1] == "-128":
|
||||
# cancelled prompt
|
||||
return
|
||||
else:
|
||||
@@ -552,7 +598,13 @@ Please build OpenCore first!"""
|
||||
return
|
||||
|
||||
# TODO: Remount if readonly
|
||||
drive_host_info = plistlib.loads(subprocess.run(f"diskutil info -plist {disk_identifier}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
partition_info = plistlib.loads(subprocess.run(f"diskutil info -plist {disk_identifier}s{response}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||
sd_type = drive_host_info["MediaName"]
|
||||
try:
|
||||
ssd_type = drive_host_info["SolidState"]
|
||||
except KeyError:
|
||||
ssd_type = False
|
||||
mount_path = Path(partition_info["MountPoint"])
|
||||
disk_type = partition_info["BusProtocol"]
|
||||
utilities.cls()
|
||||
@@ -568,12 +620,22 @@ Please build OpenCore first!"""
|
||||
print("- Coping OpenCore onto EFI partition")
|
||||
shutil.copytree(self.constants.opencore_release_folder / Path("EFI/OC"), mount_path / Path("EFI/OC"))
|
||||
shutil.copytree(self.constants.opencore_release_folder / Path("System"), mount_path / Path("System"))
|
||||
if disk_type == "USB":
|
||||
# Array filled with common SD Card names
|
||||
# Note most USB-based SD Card readers generally report as "Storage Device", and no reliable way to detect further
|
||||
if sd_type in ["SD Card Reader", "SD/MMC"]:
|
||||
print("- Adding SD Card icon")
|
||||
shutil.copy(self.constants.icon_path_sd, mount_path)
|
||||
elif ssd_type is True:
|
||||
print("- Adding SSD icon")
|
||||
shutil.copy(self.constants.icon_path_ssd, mount_path)
|
||||
elif disk_type == "USB":
|
||||
print("- Adding External USB Drive icon")
|
||||
shutil.copy(self.constants.icon_path_external, mount_path)
|
||||
else:
|
||||
print("- Adding Internal Drive icon")
|
||||
shutil.copy(self.constants.icon_path_internal, mount_path)
|
||||
print("- Cleaning install location")
|
||||
subprocess.run(f"dot_clean '{mount_path}'".split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
print("- OpenCore transfer complete")
|
||||
print("\nPress [Enter] to continue.\n")
|
||||
input()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# Copyright (C) 2020-2021, Dhinak G
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
|
||||
@@ -55,7 +55,9 @@ module.exports = {
|
||||
|
||||
themeConfig: {
|
||||
lastUpdated: true,
|
||||
repo: 'https://github.com/dortania/OpenCore-Legacy-Patcher',
|
||||
repo: 'https://github.com/dortania/OpenCore-Legacy-Patcher/',
|
||||
docsDir: 'docs',
|
||||
docsBranch: 'main',
|
||||
editLinks: true,
|
||||
editLinkText: 'Help us improve this page!',
|
||||
logo: 'homepage.png',
|
||||
@@ -67,6 +69,7 @@ module.exports = {
|
||||
children: [
|
||||
'START',
|
||||
'MODELS',
|
||||
['BENIFITS', 'Benefits and drawbacks'],
|
||||
]
|
||||
|
||||
},
|
||||
@@ -96,9 +99,30 @@ module.exports = {
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'TROUBLESHOOTING',
|
||||
'DEBUG',
|
||||
'UNINSTALL',
|
||||
'ICNS',
|
||||
]
|
||||
},
|
||||
{
|
||||
title: 'Credit',
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'DONATE',
|
||||
'LICENSE',
|
||||
]
|
||||
|
||||
},
|
||||
{
|
||||
title: 'Documentation',
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'TERMS',
|
||||
'HOW',
|
||||
'PATCHEXPLAIN',
|
||||
]
|
||||
|
||||
},
|
||||
],
|
||||
|
||||
21
docs/BENIFITS.md
Normal file
21
docs/BENIFITS.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Benefits and Drawbacks between OpenCore Legacy Patcher and other patchers
|
||||
|
||||
With OpenCore Legacy Patcher we recommend users go through the below table to understand what the benefits and drawbacks are compared to other patchers. There are positive and negatives to each and we feel transparency is most important when patching another users machine. There should be no grey areas where users may be mislead.
|
||||
|
||||
| Features | [OpenCore Legacy Patcher](https://github.com/dortania/OpenCore-Legacy-Patcher/) | [Patched Sur](https://github.com/BenSova/Patched-Sur) |
|
||||
| :--- | :--- | :--- |
|
||||
| Over The Air Updates | <span style="color:#30BCD5">Native System Preferences, additionally supports Deltas (~2GB) for Metal GPUs</span> | <span style="color:red">Inside Patcher Sur app (~12GB), only available when InstallAssistants release</span> |
|
||||
| FileVault | <span style="color:#30BCD5">Supported on Metal GPUs</span> | <span style="color:red">Not supported</span> |
|
||||
| System Integrity Protection | <span style="color:#30BCD5">Fully enabled on Metal GPUs</span> | <span style="color:red">Disabled for early 2013 and older</span> |
|
||||
| APFS Snapshots | <span style="color:#30BCD5">Fully enabled</span> | <span style="color:red">Disabled</span> |
|
||||
| User facing | <span style="color:red">TUI interface</span> | <span style="color:#30BCD5">SwiftUI interface, more user friendly</span> |
|
||||
| Supported OSes | <span style="color:#30BCD5">10.7-11</span> | <span style="color:red">10.15-11</span> |
|
||||
| Firmware Patching | <span style="color:#30BCD5">None required</span> | <span style="color:red">Required for models without native APFS support</span> |
|
||||
| BootCamp Switching | <span style="color:red">Requires EFI Conversion for Start Disk support, otherwise still supported</span> | <span style="color:#30BCD5">Native</span> |
|
||||
| Brightness Control on Legacy GPUs | <span style="color:red">Not supported</span> | <span style="color:#30BCD5">Supported</span> |
|
||||
| WPA Wifi Support | <span style="color:#30BCD5">Native, stable</span> | <span style="color:red">Unstable</span> |
|
||||
| Legacy GPU Acceleration | <span style="color:red">Coming soon</span> | <span style="color:red">Coming soon</span> |
|
||||
| Brightness Control on Legacy GPUs | <span style="color:red">Coming soon</span> | <span style="color:#30BCD5">Supported</span> |
|
||||
| HEVC/H.265 Support for Mac Pros and iMacs with Polaris+ GPUs | <span style="color:#30BCD5">Supported</span> | <span style="color:red">Not supported</span> |
|
||||
| Big Sur-styled Boot Picker | <span style="color:#30BCD5">Available</span> | <span style="color:red">Not available</span> |
|
||||
| Hibernation Support | <span style="color:red">Not available</span> (Partially broken for some) | <span style="color:#30BCD5">Supported</span> |
|
||||
49
docs/DEBUG.md
Normal file
49
docs/DEBUG.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# How to debug with OpenCore
|
||||
|
||||
For those who've hit an odd bug and unsure if it's user error or patcher, the below will tell you how to get more verbose debug information as well as logs to help [file issues with us](https://github.com/dortania/OpenCore-Legacy-Patcher/issues)
|
||||
|
||||
* For users who are less experienced, we recommend asking on the [Unsupported Mac Discord Server](https://discord.gg/XbbWAsE) for help.
|
||||
|
||||
## Debugging yourself
|
||||
|
||||
The easiest way to debug yourself is via Patcher Settings. Here there are many different settings however the 3 main options that will help are:
|
||||
|
||||
* "Enable Verbose Mode"
|
||||
* "Enable OpenCore DEBUG"
|
||||
* "Enable Kext DEBUG"
|
||||
|
||||
|
||||
When you've enabled these 3 options, rebuild OpenCore and install to your drive. This will provide much greater debug information as well as write logs to the EFI Partition.
|
||||
|
||||
## Obtaining OpenCore logs from disk
|
||||
|
||||
With "Enable OpenCore DEBUG" set, every boot there will be a .txt file generated in your disk. To grab these logs, [download and run MountEFI](https://github.com/corpnewt/MountEFI):
|
||||
|
||||

|
||||
|
||||
Once you've mounted the EFI Partition of the drive you have macOS on, you should see some nice logs:
|
||||
|
||||

|
||||
|
||||
## Obtaining Kernel logs from macOS
|
||||
|
||||
With "Enable Kext DEBUG" set, every boot will now have much more detailed logs stored in the OS. To get these logs, simply run the below command:
|
||||
|
||||
```sh
|
||||
sudo dmesg > ~/Desktop/DMESG.txt
|
||||
```
|
||||
|
||||
From there, you'll have a log on your desktop.
|
||||
|
||||
## Filing an issue with us
|
||||
|
||||
Now that you have proper logs, you can now [file issues with us](https://github.com/dortania/OpenCore-Legacy-Patcher/issues). Reminder we want the following info:
|
||||
|
||||
* Model patching for (ie. MacBookPro10,1)
|
||||
* Target OS (ie. macOS 11.2.3)
|
||||
* Host OS (ie. macOS 10.15.7)
|
||||
* Upload of your OpenCore Build Folder
|
||||
* Upload of your OpenCore log (if applicable)
|
||||
* Upload of your Kernel log (if applicable)
|
||||
|
||||
Additionally, please search whether the issue has been reported before. This avoids having duplicate issues.
|
||||
30
docs/DONATE.md
Normal file
30
docs/DONATE.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Supporting the patcher
|
||||
|
||||
OpenCore Legacy Patcher is a hobby project for us developers, and while we love helping out the community it's very difficult for us to troubleshoot issues remotely. The best way for us to get to work on the patcher, fix issues and add enhancements is having the hardware in-hand. As a hobby project, neither of the main developers can afford to buy every legacy Mac to test on.
|
||||
|
||||
The best way to support us in all honesty is to donate any old hardware you no longer need, as this allows us to have machines to test locally and push fixes much faster. While we appreciate cash donations, this makes it much more difficult for us to handle as an organization.
|
||||
|
||||
Main hardware we'd appreciate:
|
||||
|
||||
* Any Mac you own
|
||||
* Does require SSE4,1 CPU to test on Sierra and newer however
|
||||
* Any legacy GPU supporting macOS
|
||||
* Does not require to be Mac flashed
|
||||
* Following generations would would be beneficial:
|
||||
* Nvidia 8000 series through 500
|
||||
* AMD/ATI 2000 series through 6000
|
||||
|
||||
If you have any legacy hardware you're willing to donate, please contact us at the following email:
|
||||
|
||||
* khronokernel@icloud.com
|
||||
|
||||
Current hardware we own:
|
||||
|
||||
| Model | CPU | GPU | Owner | Notes |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| MacBook7,1 | Penryn | GT320M | Mykola | N/A |
|
||||
| iMac11,2 | Clarksdale | HD4670 | Mykola | N/A |
|
||||
|
||||
|
||||
<!-- | MacBookPro5,3 | Penryn | 9400M + 9600M | Dhinak | Display's partially broken | -->
|
||||
<!-- | Macmini4,1 | Penryn | GT320M | Dhinak | N/A | -->
|
||||
9
docs/HOW.md
Normal file
9
docs/HOW.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Boot Process with OpenCore Legacy Patcher
|
||||
|
||||
OpenCore Legacy Patcher itself is actually quite a "dumb" program, and essentially edits a config.plist file and moves files around, it actually has little logic regarding the boot process. The real magic of OCLP is [OpenCorePkg](https://github.com/acidanthera/OpenCorePkg), our back-end and what makes this patcher so powerful.
|
||||
|
||||
## Boot Process with OpenCore
|
||||
|
||||
To understand a bit more of how OpenCore is able revive older Macs in such a native-like way, we need to go over *how* OpenCore works with your Mac:
|
||||
|
||||

|
||||
@@ -34,7 +34,7 @@ Once finished, you'll find in your `~/macOS-Installer/` folder a DMG containing
|
||||
|
||||
## Building
|
||||
|
||||
Now we'll be formatting the USB to prep for both the macOS installer and OpenCore. We'll want to use macOS Extended (HFS+) with a GUID partition map(Using GUID is important for the patcher). This will create two partitions: the main `MyVolume` and a second called `EFI` which is used as a boot partition where your Mac's firmware will check for boot files.
|
||||
Now we'll be formatting the USB to prep for both the macOS installer and OpenCore. We'll want to use macOS Extended (HFS+) with a GUID partition map(Using GUID is important for the patcher). This will create two partitions: the main `MyVolume` and a second called `EFI` which is used as a boot partition where your Mac's firmware will check for boot files. `EFI` partitions will be hidden by default, so don't worry if you don't immediately see them.
|
||||
|
||||
* Note: By default, Disk Utility only shows partitions – press Cmd/Win+2 to show all devices (alternatively you can press the View button)
|
||||
|
||||
|
||||
18
docs/LICENSE.md
Normal file
18
docs/LICENSE.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# OpenCore Legacy Patcher Licence
|
||||
|
||||
This patcher is made of multiple external applications from different people and organizations. See each program for their licensing:
|
||||
|
||||
* BSD 3-Clause "New" or "Revised" License
|
||||
* [OpenCorePkg](https://github.com/acidanthera/OpenCorePkg/blob/master/LICENSE.txt)
|
||||
* [Lilu](https://github.com/acidanthera/Lilu/blob/master/LICENSE.txt)
|
||||
* [WhateverGreen](https://github.com/acidanthera/WhateverGreen/blob/master/LICENSE.txt)
|
||||
* [AirportBrcmFixup](https://github.com/acidanthera/AirportBrcmFixup/blob/master/LICENSE.txt)
|
||||
* [CPUFriend](https://github.com/acidanthera/CPUFriend/blob/master/LICENSE)
|
||||
* [RestrictEvents](https://github.com/acidanthera/RestrictEvents/blob/master/LICENSE.txt)
|
||||
* [NightShiftEnabler](https://github.com/cdf/NightShiftEnabler/blob/master/LICENSE.txt)
|
||||
* All rights reserved to respective authors
|
||||
* [AAAMouSSE](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/) - Syncretic
|
||||
* [telemetrap](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/post-28447707) - Syncretic
|
||||
* Apple Binaries - Apple Inc.
|
||||
|
||||
Remaining files within OpenCore Legacy Patcher are copyrighted to their respective author.
|
||||
@@ -18,6 +18,15 @@ The below table will list all supported and unsupported functions of the patcher
|
||||
|
||||
Note: In this patcher, Brightness Control is tied to GPU acceleration
|
||||
|
||||
Note 2: For setups that require AppleHDA patching, we highly advise users instead opt of a USB Audio adapter to avoid root patching. This ensures that [DELTA](./TERMS.md) updates, FileVault, SIP and other security features can stay in-tact.
|
||||
|
||||
Regarding OS support, see below:
|
||||
|
||||
| Support Entry | Supported OSes | Description | Comment |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| HostOS | macOS 10.7-11 | Refers to OSes where running OpenCore-Patcher.app are supported | Supports 10.7+ if [python 3.6 or higher](https://www.python.org/downloads/) is manually installed, simply run the `OpenCore-Patcher.command` located in the repo |
|
||||
| TargetOS | macOS 11 | Refers to OSes that can be patched to run with OpenCore | Unofficially supports 10.4 and newer, no support provided via this patcher |
|
||||
|
||||
### MacBook
|
||||
|
||||
| SMBIOS | Year | Supported | Comment |
|
||||
@@ -25,10 +34,10 @@ Note: In this patcher, Brightness Control is tied to GPU acceleration
|
||||
| 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 | ^^ | ^^ |
|
||||
| MacBook5,1 | Late 2008 | <span style="color:#30BCD5"> YES </span> | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/>- No Wifi Patches implemented |
|
||||
| MacBook4,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - No GPU Acceleration in Mavericks and newer<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76))<br/>- No Keyboard and Trackpad<br/>- No USB<br/>- No Ethernet<br/>- No Wifi Patches implemented([#102](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/102)) |
|
||||
| MacBook5,1 | Late 2008 | ^^ | - No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76))<br/>- Trackpad Issues |
|
||||
| MacBook5,2 | Early 2009 | ^^ | ^^ |
|
||||
| MacBook6,1 | Late 2009 | ^^ | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/> |
|
||||
| MacBook6,1 | Late 2009 | ^^ | - No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76))<br/> |
|
||||
| MacBook7,1 | Mid-2010 | ^^ | ^^ |
|
||||
|
||||
### MacBook Air
|
||||
@@ -36,8 +45,8 @@ Note: In this patcher, Brightness Control is tied to GPU acceleration
|
||||
| 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> | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/>- No Wifi Patches implemented |
|
||||
| MacBookAir3,1 | Late 2010 | ^^ | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented |
|
||||
| MacBookAir2,1 | Late 2008 |<span style="color:#30BCD5"> YES </span> | - No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76))<br/>- No Wifi Patches implemented([#102](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/102)) |
|
||||
| MacBookAir3,1 | Late 2010 | ^^ | - No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76)) |
|
||||
| MacBookAir3,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookAir4,1 | Mid-2011 | ^^ | ^^ |
|
||||
| MacBookAir4,2 | ^^ | ^^ | ^^ |
|
||||
@@ -53,22 +62,22 @@ Note: In this patcher, Brightness Control is tied to GPU acceleration
|
||||
| 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> | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/>- No Wifi Patches implemented |
|
||||
| MacBookPro5,1 | Late 2008 | ^^ | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented |
|
||||
| MacBookPro4,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76))<br/>- No Wifi Patches implemented([#102](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/102)) |
|
||||
| MacBookPro5,1 | Late 2008 | ^^ | - No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76)) |
|
||||
| MacBookPro5,2 | Early 2009 | ^^ | ^^ |
|
||||
| MacBookPro5,3 | Mid-2009 | ^^ | ^^ |
|
||||
| MacBookPro5,4 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro5,5 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro6,1 | Mid-2010 | ^^ | ^^ |
|
||||
| MacBookPro6,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro7,1 | ^^ | ^^ | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/>- Ethernet issues |
|
||||
| MacBookPro8,1 | Early 2011 | ^^ | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/>- Ethernet Connection Issues |
|
||||
| MacBookPro7,1 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro8,1 | Early 2011 | ^^ | ^^ |
|
||||
| MacBookPro8,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro8,3 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro9,1 | Mid-2012 | ^^ | <span style="color:green"> Everything is supported</span> |
|
||||
| MacBookPro9,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro10,1 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro10,2 | Late 2012 | ^^ | ^^ |
|
||||
| MacBookPro9,2 | ^^ | ^^ | ^^ |
|
||||
| MacBookPro10,1 | Mid-2012, Early 2013 | ^^ | ^^ |
|
||||
| MacBookPro10,2 | Late 2012, Early 2013 | ^^ | ^^ |
|
||||
|
||||
### Mac mini
|
||||
|
||||
@@ -76,9 +85,9 @@ Note: In this patcher, Brightness Control is tied to GPU acceleration
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 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> | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented |
|
||||
| Macmini3,1 | Early 2009 | <span style="color:#30BCD5"> YES </span> | - No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76)) |
|
||||
| Macmini4,1 | Mid-2010 | ^^ | ^^ |
|
||||
| Macmini5,1 | Mid-2011 | ^^ | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/>- Ethernet Connection Issues |
|
||||
| Macmini5,1 | Mid-2011 | ^^ | ^^ |
|
||||
| Macmini5,2 | ^^ | ^^ | ^^ |
|
||||
| Macmini5,3 | ^^ | ^^ | ^^ |
|
||||
| Macmini6,1 | Late 2012 | ^^ | <span style="color:green"> Everything is supported</span> |
|
||||
@@ -93,30 +102,36 @@ Note: In this patcher, Brightness Control is tied to GPU acceleration
|
||||
| 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<br/>- No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/>- No Wifi Patches implemented |
|
||||
| iMac8,1 | Early 2008 | ^^ | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/>- No Wifi Patches implemented |
|
||||
| iMac9,1 | Early 2009 | ^^ | ^^ |
|
||||
| iMac10,1 | Late 2009 | ^^ | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented |
|
||||
| iMac11,1 | ^^ | ^^ | - No GPU Acceleration in Big Sur<br/>- No AppleHDA(Audio) Patching implemented<br/>- Ethernet Connection Issues |
|
||||
| iMac7,1 | Mid-2007 | <span style="color:#30BCD5"> YES </span> | - Requires an SSE4.1 CPU Upgrade<br/>- No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76))<br/> |
|
||||
| iMac8,1 | Early 2008 | ^^ | - No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76))<br/>- No Wifi Patches implemented([#102](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/102)) |
|
||||
| iMac9,1 | Early 2009 | ^^ | - No GPU Acceleration in Big Sur([#108](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108))<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76))<br/> |
|
||||
| iMac10,1 | Late 2009 | ^^ | ^^ |
|
||||
| iMac11,1 | ^^ | ^^ | ^^ |
|
||||
| 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,2 | ^^ | ^^ | ^^ |
|
||||
| iMac14,1 | Late 2013 | ^^ | ^^ |
|
||||
| iMac14,2 | ^^ | ^^ | ^^ |
|
||||
| iMac14,3 | ^^ | ^^ | ^^ |
|
||||
|
||||
* 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-2012 Graphics Card Upgrade Guide](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/?post=17425857#post-17425857)
|
||||
|
||||
### 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> | - Requires an SSE4.1 CPU Upgrade<br/>- No AppleHDA(Audio) Patching implemented |
|
||||
| MacPro3,1 | Early 2008 | <span style="color:#30BCD5"> YES </span> | - Pottential instability with built-in USB 1.1 ports (recommend using a USB 2.0 hub)<br/>- No [DELTA](./TERMS.md) updates or FileVault when AppleHDA is patched([#76](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/76)) |
|
||||
| MacPro4,1 | Early 2009 | ^^ | <span style="color:green"> Everything is supported as long as GPU is Metal capable </span> |
|
||||
| MacPro5,1 | Mid-2010 | ^^ | ^^ |
|
||||
| MacPro5,1 | Mid-2010, Mid-2012 | ^^ | ^^ |
|
||||
|
||||
* For MacPro3,1, we **highly** advise users instead opt for a USB Audio Adapter instead of running any Root Volume Patches. This will ensure your machine is as stable and security rich as possible
|
||||
|
||||
|
||||
### Xserve
|
||||
|
||||
|
||||
293
docs/PATCHEXPLAIN.md
Normal file
293
docs/PATCHEXPLAIN.md
Normal file
@@ -0,0 +1,293 @@
|
||||
# Explaining the patches in OpenCore Legacy Patcher
|
||||
|
||||
In our patcher, there are numerous patches used to ensure a stable system. Here we're going to go over what patches are used and why we recommend or even require them.
|
||||
|
||||
* [OpenCore Settings](#opencore-settings)
|
||||
* [Injected Kexts](#injected-kexts)
|
||||
* [On-Disk Patches](#on-disk-patches)
|
||||
|
||||
## OpenCore Settings
|
||||
|
||||
Below is a run down of the main logic OpenCore Legacy Patcher uses to gain native support in macOS. Note OpenCore's configuration is documented within [OpenCorePkg](https://github.com/acidanthera/OpenCorePkg) as well as an online version provided by us:
|
||||
|
||||
* [OpenCorePkg Online Docs](https://dortania.github.io/docs/latest/Configuration.html)
|
||||
|
||||
::: details Configuration Explanation
|
||||
|
||||
### ACPI -> Patch
|
||||
|
||||
* EHCx and XHC1 Patches
|
||||
* Reason: Required for proper USB operation
|
||||
* Logic: Avoids USB maps of newer models attaching and breaking USB port functionality
|
||||
* Models: All models require
|
||||
|
||||
### Booter -> Quirks
|
||||
|
||||
* ForceBooterSignature
|
||||
* Reason: Required to ensure Hibernation support
|
||||
* Logic: Tricks boot.efi into thinking OpenCore is Apple's firmware
|
||||
* Models: All models require
|
||||
|
||||
### DeviceProperties -> Add
|
||||
|
||||
* `PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1C,0x5)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)`
|
||||
* Reason: Required to ensure Wifi works with full, native support
|
||||
* Logic: Tricks AirPortBrcmNIC.kext into thinking our device is a BCM94360 (`14e4,43ba`)
|
||||
* Models: Machines with BCM943224 and BCM94331 chipsets
|
||||
* `PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)`
|
||||
* `PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)`
|
||||
* Reason: Required to ensure Brightness Control works on upgraded iMacs
|
||||
* Logic: Sets AppleBackLight properties
|
||||
* Models: iMac11,x and iMac12,x with upgraded Nvidia Metal GPUs
|
||||
* `PciRoot(0x0)/Pci(0x2,0x0)`
|
||||
* Reason: Disables internal GPU to fix sleep issues on upgrades iMacs
|
||||
* Logic: Tricks macOS into thinking iGPU is a generic PCI device
|
||||
* Models: iMac12,x with upgraded Metal GPUs
|
||||
|
||||
### Kernel -> Patch
|
||||
|
||||
* SMC Patch
|
||||
* Reason: Required to avoid SMC Firmware updates
|
||||
* Logic: Patches out `smc-version` in AppleSMC.kext, requires SMC-Spoof.kext for full functionality
|
||||
* Models: All models require
|
||||
* IOHIDFamily Patch
|
||||
* Reason: Required for HID peripheral support in macOS on older hardware
|
||||
* Logic: Tricks IOHIDFamily into thinking it's always booting recovery
|
||||
* Models: [2010 and older](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/79ab028b0a039e97a528e0b99c876d95d9c2d41d/Resources/ModelArray.py#L310-L332)
|
||||
|
||||
### Kernel -> Quirks
|
||||
|
||||
* ThridPartyDrives
|
||||
* Reason: Required to avoid Hibernation wake issues on 3rd party drives
|
||||
* Logic: Patches AppleAHCIPort.kext into support
|
||||
* Models: All models with standard SATA ports
|
||||
* PanicNoKextDump
|
||||
* Reason: Avoids kext dump on kernel panics, easier kernel debugging
|
||||
* Logic: Patches Kernel to not dump dump unnecessary info
|
||||
* Models: Only set when Verbose Boot is enabled by the user
|
||||
|
||||
### Misc -> Security
|
||||
|
||||
* SecureBootModel
|
||||
* Reason: Required to ensure seamless OS updates with Big Sur
|
||||
* Logic: Sets iMacPro1,1's Secure Enclave Identifier (j137)
|
||||
* Models: All models require
|
||||
|
||||
### NVRAM -> Add
|
||||
|
||||
* `-v debug=0x100`
|
||||
* Reason: Used to see debug info of macOS's kernel and kexts, and avoids reboots on panic
|
||||
* Logic: Adds args to NVRAM
|
||||
* Models: Only set when Verbose Boot is enabled by the user
|
||||
* `-liludbgall`
|
||||
* Reason: Enables Lilu and plugin debug logging
|
||||
* Logic: Adds args to NVRAM
|
||||
* Models: Only set when Kext DEBUG is enabled by the user
|
||||
* `msgbuf=1048576`
|
||||
* Reason: Sets message buffer size to 1MB, ensures boot logs are retained
|
||||
* Logic: Adds args to NVRAM
|
||||
* Models: Only set when Kext DEBUG is enabled by the user
|
||||
* `agdpmod=pikera`
|
||||
* Reason: Fixes GPU switching on MacBookPro9,x
|
||||
* Logic: Adds args to NVRAM
|
||||
* Models: MacBookPro9,x
|
||||
* `shikigva=80 unfairgva=1`
|
||||
* `shikigva=128 unfairgva=1 -wegtree`
|
||||
* Reason: Fixes DRM support on models with upgraded AMD Metal GPUs
|
||||
* Logic: Adds args to NVRAM
|
||||
* Models: Models with upgraded AMD Metal GPUs
|
||||
### UEFI -> ProtocolOverrides
|
||||
|
||||
* GopPassThrough
|
||||
* Reason: Used for proper output on machines with UGA firmware but GOP GPU
|
||||
* Logic: Provide GOP protocol instances on top of UGA protocol instances
|
||||
* Models: MacPro3,1, MacBook4,1 iMac7,1-8,1
|
||||
|
||||
:::
|
||||
|
||||
## Injected Kext
|
||||
|
||||
Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into memory on boot-up.
|
||||
|
||||
::: details Injected Kext Explanation
|
||||
|
||||
### Acidanthera
|
||||
|
||||
* Lilu
|
||||
* Reason: Patching engine for other kexts
|
||||
* Models: All models require
|
||||
* WhateverGreen
|
||||
* Reason: Patches GPU Frameworks and kext to ensure proper support
|
||||
* Models: All models require
|
||||
* CPUFriend
|
||||
* Reason: Patches IOx86PlatformPlugin to restore previous CPU profiles
|
||||
* Models: 2012 and newer models
|
||||
* AirportBrcmFixup
|
||||
* Reason: Patches IO80211 and co to fix networking support for unsupported cards
|
||||
* Models: BCM943224 and BCM94331
|
||||
* RestrictEvents
|
||||
* Reason: Disables memory errors on MacPro7,1
|
||||
* Models: Mac Pros and Xserves
|
||||
|
||||
### Ethernet
|
||||
|
||||
* nForceEthernet
|
||||
* Reason: Inject old Nvidia Ethernet kext to resolve networking in Catalina and newer
|
||||
* Models: 2010 and older Nvidia Ethernet require
|
||||
* MarvelYukonEthernet
|
||||
* Reason: Inject old Marvel Ethernet kext to resolve networking in Catalina and newer
|
||||
* Models: 2008 and older Marvel Ethernet require
|
||||
* CatalinaBCM5701Ethernet
|
||||
* Reason: Inject old Broadcom Ethernet kext to resolve networking in Big Sur
|
||||
* Logic: Patch out conflicting symbols to not colide existing BCM5701Ethernet
|
||||
* Models: 2011 and older Broadcom Ethernet require
|
||||
|
||||
### Maps
|
||||
|
||||
* USBMap
|
||||
* Reason: Inject old USB map profiles to fix USB
|
||||
* Models: All models require
|
||||
|
||||
### SSE
|
||||
|
||||
* AAMouSSE
|
||||
* Reason: Translates SSE4.2 instructions to compatible code for SSE4,1 CPUs, required for AMD Metal drives
|
||||
* Models: MacPro3,1
|
||||
* telemetrap
|
||||
* Reason: Ensures temelemtry.plugin doesn't run, required for SSE4,1 CPUs
|
||||
* Models: Penryn CPUs
|
||||
|
||||
### Wifi
|
||||
|
||||
* IO80211HighSierra
|
||||
* Reason: Re-inject Atheros wifi drivers from High Sierra
|
||||
* Logic: Patch out conflicting symbols to not colide existing IO80211Family
|
||||
* Models: Atheros cards
|
||||
* IO80211Mojave
|
||||
* Reason: Re-inject Broadcom wifi drivers from Mojave
|
||||
* Logic: Patch out conflicting symbols to not colide existing IO80211Family
|
||||
* Models: BCM94322
|
||||
|
||||
### Misc
|
||||
|
||||
* AppleBackLightFixup
|
||||
* Reason: Patch AppleBacklight for iMacs with Nvidia Metal GPU upgrades
|
||||
* Models: iMac11,x, iMac12,x with upgraded Nvidia Metal GPUs
|
||||
* AppleIntelPIIXATA
|
||||
* Reason: Fix IDE support on MacPro3,1
|
||||
* Models: MacPro3,1
|
||||
* AppleIntelMCEDisabler
|
||||
* Reason: Fix dual socket support in Catalina and newer
|
||||
* Models: Mac Pros and Xserves
|
||||
* NightShiftEnabler
|
||||
* Reason: Enables NightShift support on unsupported models
|
||||
* Models: 2011 and older, MacBookPro9,x included
|
||||
* SMC-Spoof
|
||||
* Reason: Spoofs SMC version to 9.9999
|
||||
* Models: All models require
|
||||
:::
|
||||
|
||||
|
||||
## On-Disk Patches
|
||||
|
||||
Unfortunately certain on-disk patches are required to achieve full functionality. Below is a breakdown of patches supported
|
||||
|
||||
Note, GPU Acceleration Patches are not public yet, the below section is simply documentation for easier research with new aids.
|
||||
|
||||
::: details Audio Patches
|
||||
|
||||
### Extensions
|
||||
|
||||
* AppleHDA
|
||||
* Reason: Re-add High Sierra's AppleHDA to achieve audio support
|
||||
* Models: 2011 and older Macs (excluding MacPro4,1+)
|
||||
|
||||
:::
|
||||
|
||||
::: details Acceleration Patches
|
||||
|
||||
### Extensions
|
||||
|
||||
#### General Patches
|
||||
|
||||
* IOSurface.kext
|
||||
* Reason: Fixes immediate logout on login
|
||||
* Logic: Downgrade to Catalina IOSurface
|
||||
* Note: For AMD and Intel, additional `addMemoryRegion/removeMemoryRegion` patch added changing the first conditional jump to non conditional jump
|
||||
* At Offset `0xdb52` and `0xdbc6`, replace following bytes with `0xeb`
|
||||
|
||||
#### Dropped Acceleration Binaries
|
||||
|
||||
* Nvidia Binaries
|
||||
* GeForceGA.bundle
|
||||
* GeForceTesla.kext
|
||||
* GeForceTeslaGLDriver.bundle
|
||||
* GeForceTeslaVADriver.bundle
|
||||
* NVDANV50HalTesla.kext
|
||||
* NVDAResmanTesla.kext
|
||||
|
||||
* AMD/ATI Binaries
|
||||
* AMD2400Controller.kext
|
||||
* AMD2600Controller.kext
|
||||
* AMD3800Controller.kext
|
||||
* AMD4600Controller.kext
|
||||
* AMD4800Controller.kext
|
||||
* AMD5000Controller.kext
|
||||
* AMD6000Controller.kext
|
||||
* AMDFramebuffer.kext
|
||||
* AMDLegacyFramebuffer.kext
|
||||
* AMDLegacySupport.kext
|
||||
* AMDRadeonVADriver.bundle
|
||||
* AMDRadeonVADriver2.bundle
|
||||
* AMDRadeonX3000.kext
|
||||
* AMDRadeonX3000GLDriver.bundle
|
||||
* AMDShared.bundle
|
||||
* AMDSupport.kext
|
||||
* ATIRadeonX2000.kext
|
||||
* ATIRadeonX2000GA.plugin
|
||||
* ATIRadeonX2000GLDriver.bundle
|
||||
* ATIRadeonX2000VADriver.bundle
|
||||
|
||||
* Intel 5th Gen Binaries
|
||||
* AppleIntelFramebufferAzul.kext
|
||||
* AppleIntelFramebufferCapri.kext
|
||||
* AppleIntelHDGraphics.kext
|
||||
* AppleIntelHDGraphicsFB.kext
|
||||
* AppleIntelHDGraphicsGA.plugin
|
||||
* AppleIntelHDGraphicsGLDriver.bundle
|
||||
* AppleIntelHDGraphicsVADriver.bundle
|
||||
|
||||
* Intel 6th Gen Binaries
|
||||
* AppleIntelHD3000Graphics.kext
|
||||
* AppleIntelHD3000GraphicsGA.plugin
|
||||
* AppleIntelHD3000GraphicsGLDriver.bundle
|
||||
* AppleIntelHD3000GraphicsVADriver.bundle
|
||||
* AppleIntelSNBGraphicsFB.kext
|
||||
* AppleIntelSNBVA.bundle
|
||||
|
||||
### Frameworks
|
||||
|
||||
* CoreDisplay.framework
|
||||
* Logic: Copied from Mojave, heavy modifications/shims
|
||||
* IOSurface.framework
|
||||
* OpenGL.framework
|
||||
* Logic: Copied from Mojave
|
||||
|
||||
### PrivateFrameworks
|
||||
|
||||
* GPUSupport.framework
|
||||
* Logic: Copied from Mojave
|
||||
* SkyLight.framework
|
||||
* Logic: Copied from Mojave, heavy modifications/shims
|
||||
|
||||
### LaunchDaemons
|
||||
|
||||
* HiddHack.plist
|
||||
* Reason: Fixes unresponsive input when patching Skylight
|
||||
* Logic: Forces `hidd` to register events, as Skylight handles them by default in Big Sur
|
||||
|
||||
:::
|
||||
@@ -21,9 +21,15 @@ To do this, run the OpenCore Patcher and head to Patcher Settings:
|
||||
|
||||

|
||||
|
||||
Here you can change different patcher settings, however the main 2 of interest are:
|
||||
Here you can change different patcher settings, however the main interest is:
|
||||
|
||||
* Enable Verbose Mode
|
||||
* Set ShowPicker Mode
|
||||
|
||||
Once you've toggled them both off, build your OpenCore EFI once again and install to your desired drive. Now to show OpenCore picker, you can simply press "Esc" key repeatedly.
|
||||
Once you've toggled them both off, build your OpenCore EFI once again and install to your desired drive. Now to show the OpenCore selector, you can simply hold down the "ESC" key while clicking on EFI boot, then you can release the "ESC" key when you see the cursor arrow at the top left.
|
||||
|
||||
**Note**: For users who need Post-Install Volume patches for Audio support, you **must** disable the following settings in "Patcher Settings" when building and installing your new OpenCore:
|
||||
|
||||
* SIP: Disabled
|
||||
* SecureBootModel: Disabled
|
||||
|
||||
Once set, rebuild OpenCore, install to drive and reboot. Then, Post-Install Volume patches will run just fine
|
||||
@@ -8,6 +8,10 @@ This is a sophisticated boot loader used to inject and patch data in memory, ins
|
||||
|
||||
While many PC users from the Hackintosh community are familiar with OpenCore, OpenCore was designed as Mac and PC agnostic ensuring both platforms can use it easily. And with OpenCore Legacy Patcher, we help automate the process making running with OpenCore that much easier.
|
||||
|
||||
For advanced troubleshooting, we highly recommend users check out the [Unsupported Mac Discord Server](https://discord.gg/XbbWAsE) as this is generally the quickest way to get a hold of us developers and get help from the community.
|
||||
|
||||
For those who wish to support this patcher, please see the [Supporting the Patcher page](./DONATE.md)
|
||||
|
||||
## How do I get started?
|
||||
|
||||
1. The first step of ensuring whether your model is support is checking here:
|
||||
|
||||
39
docs/TERMS.md
Normal file
39
docs/TERMS.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# OpenCore Patcher Terminology
|
||||
|
||||
With OpenCore Legacy Patcher, we use a lot of different terms to refer to hardware including `SSE4.1`, `32-Bit Firmware`, etc. This page is to help users understand what all these confusing words mean.
|
||||
|
||||
# Terminology
|
||||
|
||||
Term | Description
|
||||
--- | ---
|
||||
**macOS** | Apple's own UNIX based OS used for Mac machines and "What makes a Mac a Mac".
|
||||
**Windows** | Microsoft's proprietary OS that is used and supported on a wide range of devices (stay with this OS if you don't want headaches)
|
||||
**Linux** | Family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution. Note that while macOS and Linux may be UNIX-based, they're vastly different.
|
||||
**Bootloader** | Piece of software that loads an OS, usually made by the OS creators. OpenCore is technically not a bootloader per se (see boot manager explanation down below). Apple's Boot.efi would be the actual boot loader in a Mac.
|
||||
**Boot Manager** | Piece of software that manages bootloaders – we have many of these: Clover, systemd-boot, OpenCore, rEFInd, rEFIt... These are generally seen as prepping the system for the actual boot loader.
|
||||
---
|
||||
Term | Description
|
||||
--- | ---
|
||||
**OpenCore** | The new hotness on the scene, made with security in mind by the [Acidanthera team](https://github.com/acidanthera), has faster booting and lighter weight than previous boot managers. Supports many native Mac features such as SIP, FileVault, Secure Boot, etc
|
||||
**ACPI** | Tables defined in your firmware defining your hardware and different methods, tied directly to how IOKit/IOService handles device setup
|
||||
**NVRAM** | Non-volitile storage, where many variables are stored including default boot options, Hibernation keys, Secure Boot information, etc
|
||||
---
|
||||
Term | Description
|
||||
--- | ---
|
||||
**XNU** | Also known as **X** is **N**ot **U**nix, XNU is referred to as macOS's "kernel" and the heart of what makes macOS tick
|
||||
**Kexts** | Also known as **K**ernel **Ext**ensions, are macOS's drivers. They're used to perform different tasks like device drivers or for a different purpose (in this patcher) like patching the OS, injecting information or running tasks.
|
||||
**KernelCollection** | Also known as the ImmutableKernel and PrelinkedKernel, this is a bundle of the kernel(XNU) and kernel extensions(Kexts) that we use to boot macOS. This is also what OpenCore patches in memory to allow us to have a seamless experience <br/>- PrelinkedKernel: Default caching system since 10.7 <br/>- ImmutableKernel: Secure Boot based caching system since 10.13 <br/>- KernelCollection: Merge of both Prelinked and ImmutableKernel's since macOS 11, Big Sur
|
||||
**IOKit** | Backbone of how Kernel Extentions (Kexts) probe and attach onto hardware, starts quickly after kernel initates
|
||||
**WindowServer** | Backbone of the GUI interface in macOS, one of the first userfacing userspace programs to kick-in
|
||||
**OTA** | Short for **O**ver **T**he **A**ir, refers to native OS updates via System Preferences like a supported Mac
|
||||
**DELTA** | Often used with OTA, refers to OS updates that much smaller than full installers (generally ~3GB), note Deltas require the root volume to be unmotified otherwise ~12GB updates will occur.
|
||||
---
|
||||
Term | Description
|
||||
--- | ---
|
||||
**EFI** | It can denote two things: <br/>- Mac's firmware, which is the same as UEFI, but pretty modified for Macs only, so not so "Universal" <br/>- The partition on your hard drive that stores software read by the UEFI to load OSes (like the Windows bootloader) or UEFI Applications (like OpenCore), it's FAT32 formatted and has an ID type of EF00 (in hex). It can be named ESP or SYSTEM, and it's usually from 100MB to 400MB in size but the size doesn't reflect upon anything.
|
||||
**HFS+** | Also known as MacOS Journaled, this was the default macOS drive format up until macOS 10.13, format was designed around spinning disks
|
||||
**APFS** | This was the default macOS drive from macOS 10.13 and onwards for SSDs, and standard for all drives in Mojave. Format was designed around SSDs primarily.
|
||||
**32 and 64-Bit CPU** | The bit number of a CPU determines how much data a CPU can address. <br/>- 32-Bit CPUs were only supported up-to Mac OS X 10.6, Snow Leopard.
|
||||
**32-Bit Firmware** | The bit number of a Firmware determines how much data the firmware can address. In some older Macs, it's common to have a 64-Bit CPU can have a 32-Bit firmware<br/>- 32-Bit Firmwares were only supported up-to Mac OS X 10.7, Lion.
|
||||
**SSE Instructions** | Also known as **S**IMD **S**ingle-Precision Floating-Point **I**nstructions, these are defined as instruction sets supported by your CPU. In macOS, there are a certain number of instruction sets required for normal operation: <br/>- SSE3: Required for all Intel CPUs since Mac OS X 10.4, Tiger <br/>- SSSE3: Required for all Intel 64-Bit CPUs since Mac OS X 10.6, Snow Leopard <br/>- SSE4.1: Required for all Intel CPUs since macOS 10.12, Sierra
|
||||
---
|
||||
@@ -8,6 +8,7 @@ Here are some common errors users may experience while using this patcher:
|
||||
* [Reboot when entering Hibernation (`Sleep Wake Failure`)](#reboot-when-entering-hibernation-sleep-wake-failure)
|
||||
* [Booting with a non-flashed GPU](#booting-with-a-non-flashed-gpu)
|
||||
* [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)
|
||||
|
||||
## Stuck on `This version of Mac OS X is not supported on this platform`
|
||||
|
||||
@@ -50,4 +51,11 @@ Once you boot OpenCore for the first time, LauncherOption will install itself as
|
||||
|
||||
## How to Boot Big Sur Recovery
|
||||
|
||||
By default, the patcher will try to hide extra boot options such as recovery from the user. To make them appear, simply press the "Spacebar" inside OpenCore's Picker to list all boot options.
|
||||
By default, the patcher will try to hide extra boot options such as recovery from the user. To make them appear, simply press the "Spacebar" inside OpenCore's Picker to list all boot options.
|
||||
|
||||
## Stuck on "Your Mac needs a firmware update"
|
||||
|
||||
Full error: "Your Mac needs a firmware update in order to install to this Volume. Please select a Mac OS Extended (Journaled) volume instead."
|
||||
|
||||
|
||||
This error occurs when macOS determines the firmware to not have full APFS support. To resolve is quite simple, when building OpenCore head to "Patcher Settings" and enable "Moderate SMBIOS Patching" or higher. This will ensure that the firmware reported will show as supporting full APFS capabilities.
|
||||
2
docs/package-lock.json
generated
2
docs/package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "OpenCore-Legacy-Patcher",
|
||||
"version": "0.6.6",
|
||||
"version": "0.0.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
8
entitlements.plist
Normal file
8
entitlements.plist
Normal file
@@ -0,0 +1,8 @@
|
||||
<?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>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
images/OC-Picker-SD.png
Normal file
BIN
images/OC-Picker-SD.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
BIN
images/OC-Picker-SSD.png
Normal file
BIN
images/OC-Picker-SSD.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 68 KiB |
BIN
images/logs-efi.png
Normal file
BIN
images/logs-efi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 453 KiB |
BIN
images/oc-explained.png
Normal file
BIN
images/oc-explained.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 544 KiB |
@@ -0,0 +1,156 @@
|
||||
<?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>BuildMachineOSBuild</key>
|
||||
<string>16B2657</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>AppleHDA 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.AppleHDA</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Apple HDA Driver</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>KEXT</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17G55</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13internal</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0930</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>IOKitPersonalities</key>
|
||||
<dict>
|
||||
<key>HDA Driver</key>
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.AppleHDA</string>
|
||||
<key>IOClass</key>
|
||||
<string>AppleHDADriver</string>
|
||||
<key>IOProbeScore</key>
|
||||
<integer>0</integer>
|
||||
<key>IOProviderClass</key>
|
||||
<string>AppleHDACodec</string>
|
||||
<key>InputSampleLatency</key>
|
||||
<integer>0</integer>
|
||||
<key>MultiDisplayPorts</key>
|
||||
<array>
|
||||
<integer>32</integer>
|
||||
<integer>35</integer>
|
||||
<integer>66</integer>
|
||||
</array>
|
||||
<key>OutputSampleLatency</key>
|
||||
<integer>0</integer>
|
||||
<key>SampleOffsetPad</key>
|
||||
<integer>0</integer>
|
||||
<key>SystemSpecificSampleOffsetPad</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>8</integer>
|
||||
<key>SampleOffsetPad</key>
|
||||
<integer>260</integer>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<key>HDA Generic Codec Driver</key>
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.AppleHDA</string>
|
||||
<key>IOClass</key>
|
||||
<string>AppleHDACodecGeneric</string>
|
||||
<key>IOHDACodecFunctionGroupType</key>
|
||||
<integer>1</integer>
|
||||
<key>IOProviderClass</key>
|
||||
<string>IOHDACodecFunction</string>
|
||||
</dict>
|
||||
<key>HDMI DP HDA Driver</key>
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.AppleHDA</string>
|
||||
<key>IOClass</key>
|
||||
<string>AppleHDAHDMI_DPDriver</string>
|
||||
<key>IOProbeScore</key>
|
||||
<integer>1</integer>
|
||||
<key>IOPropertyMatch</key>
|
||||
<dict>
|
||||
<key>HDMIDPAudioCapabilities</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>IOProviderClass</key>
|
||||
<string>AppleHDACodec</string>
|
||||
<key>InputSampleLatency</key>
|
||||
<integer>0</integer>
|
||||
<key>MultiDisplayPorts</key>
|
||||
<array>
|
||||
<integer>32</integer>
|
||||
<integer>35</integer>
|
||||
<integer>66</integer>
|
||||
</array>
|
||||
<key>OutputSampleLatency</key>
|
||||
<integer>0</integer>
|
||||
<key>SampleOffsetPad</key>
|
||||
<integer>0</integer>
|
||||
<key>SystemSpecificSampleOffsetPad</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>8</integer>
|
||||
<key>SampleOffsetPad</key>
|
||||
<integer>260</integer>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>AppleHDA 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>OSBundleLibraries</key>
|
||||
<dict>
|
||||
<key>com.apple.driver.AppleHDAController</key>
|
||||
<string>1.7.2a1</string>
|
||||
<key>com.apple.driver.DspFuncLib</key>
|
||||
<string>1.5.2a1</string>
|
||||
<key>com.apple.iokit.IOAudioFamily</key>
|
||||
<string>200.5</string>
|
||||
<key>com.apple.iokit.IOGraphicsFamily</key>
|
||||
<string>2.0</string>
|
||||
<key>com.apple.iokit.IOHDAFamily</key>
|
||||
<string>265.88</string>
|
||||
<key>com.apple.iokit.IONDRVSupport</key>
|
||||
<string>2.0</string>
|
||||
<key>com.apple.kpi.bsd</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.iokit</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.libkern</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.mach</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.private</key>
|
||||
<string>8.0.0</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -0,0 +1,285 @@
|
||||
<?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>BuildMachineOSBuild</key>
|
||||
<string>16B2657</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>AppleHDAController</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>AppleHDAController 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.AppleHDAController</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>HDA Controller Driver</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>KEXT</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17G55</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13internal</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0930</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>IOKitPersonalities</key>
|
||||
<dict>
|
||||
<key>BuiltInHDA</key>
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.AppleHDAController</string>
|
||||
<key>CodecAddressFilterArray</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CodecAddressMask</key>
|
||||
<data>
|
||||
AQAAAA==
|
||||
</data>
|
||||
<key>LayoutID</key>
|
||||
<integer>16392</integer>
|
||||
<key>PCIVendorDeviceID</key>
|
||||
<integer>282987200</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CodecAddressMask</key>
|
||||
<data>
|
||||
AQAAAA==
|
||||
</data>
|
||||
<key>LayoutID</key>
|
||||
<integer>0</integer>
|
||||
<key>PCIVendorDeviceID</key>
|
||||
<integer>282987200</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CodecAddressMask</key>
|
||||
<data>
|
||||
CQAAAA==
|
||||
</data>
|
||||
<key>LayoutID</key>
|
||||
<integer>65</integer>
|
||||
<key>PCIVendorDeviceID</key>
|
||||
<integer>282987200</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CodecAddressMask</key>
|
||||
<data>
|
||||
AQAAAA==
|
||||
</data>
|
||||
<key>LayoutID</key>
|
||||
<integer>73</integer>
|
||||
<key>PCIVendorDeviceID</key>
|
||||
<integer>282987200</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>DPAlwaysDisplayRouting</key>
|
||||
<array>
|
||||
<integer>3</integer>
|
||||
<integer>33</integer>
|
||||
<integer>35</integer>
|
||||
<integer>88</integer>
|
||||
</array>
|
||||
<key>DPAudioDeviceExclusion</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>ManufacturerID</key>
|
||||
<integer>1552</integer>
|
||||
<key>ProductID</key>
|
||||
<integer>10130</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>HighFIFOLimitSupport</key>
|
||||
<array/>
|
||||
<key>HwFactoryPrefixTranslation</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>78</integer>
|
||||
<key>SourceDID</key>
|
||||
<integer>43584</integer>
|
||||
<key>StandInDID</key>
|
||||
<integer>43568</integer>
|
||||
<key>VID</key>
|
||||
<integer>4098</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>78</integer>
|
||||
<key>SourceDID</key>
|
||||
<integer>43576</integer>
|
||||
<key>StandInDID</key>
|
||||
<integer>43568</integer>
|
||||
<key>VID</key>
|
||||
<integer>4098</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>79</integer>
|
||||
<key>SourceDID</key>
|
||||
<integer>43584</integer>
|
||||
<key>StandInDID</key>
|
||||
<integer>43568</integer>
|
||||
<key>VID</key>
|
||||
<integer>4098</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>79</integer>
|
||||
<key>SourceDID</key>
|
||||
<integer>43576</integer>
|
||||
<key>StandInDID</key>
|
||||
<integer>43568</integer>
|
||||
<key>VID</key>
|
||||
<integer>4098</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>IOClass</key>
|
||||
<string>AppleHDAController</string>
|
||||
<key>IOPCIClassMatch</key>
|
||||
<string>0x04010000&0xFFFD0000</string>
|
||||
<key>IOProviderClass</key>
|
||||
<string>IOPCIDevice</string>
|
||||
<key>RequireMaxBusStall</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Layouts</key>
|
||||
<array/>
|
||||
<key>MaxBusStall</key>
|
||||
<integer>15000</integer>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<key>BuiltInHDA9D70</key>
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.AppleHDAController</string>
|
||||
<key>DPAlwaysDisplayRouting</key>
|
||||
<array>
|
||||
<integer>3</integer>
|
||||
<integer>33</integer>
|
||||
<integer>35</integer>
|
||||
<integer>88</integer>
|
||||
</array>
|
||||
<key>DPAudioDeviceExclusion</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>ManufacturerID</key>
|
||||
<integer>1552</integer>
|
||||
<key>ProductID</key>
|
||||
<integer>10130</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>HighFIFOLimitSupport</key>
|
||||
<array/>
|
||||
<key>HwFactoryPrefixTranslation</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>78</integer>
|
||||
<key>SourceDID</key>
|
||||
<integer>43584</integer>
|
||||
<key>StandInDID</key>
|
||||
<integer>43568</integer>
|
||||
<key>VID</key>
|
||||
<integer>4098</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>78</integer>
|
||||
<key>SourceDID</key>
|
||||
<integer>43576</integer>
|
||||
<key>StandInDID</key>
|
||||
<integer>43568</integer>
|
||||
<key>VID</key>
|
||||
<integer>4098</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>79</integer>
|
||||
<key>SourceDID</key>
|
||||
<integer>43584</integer>
|
||||
<key>StandInDID</key>
|
||||
<integer>43568</integer>
|
||||
<key>VID</key>
|
||||
<integer>4098</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>LayoutID</key>
|
||||
<integer>79</integer>
|
||||
<key>SourceDID</key>
|
||||
<integer>43576</integer>
|
||||
<key>StandInDID</key>
|
||||
<integer>43568</integer>
|
||||
<key>VID</key>
|
||||
<integer>4098</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>IOClass</key>
|
||||
<string>AppleHDA8086_9D70Controller</string>
|
||||
<key>IONameMatch</key>
|
||||
<array>
|
||||
<string>pci8086,9d70</string>
|
||||
</array>
|
||||
<key>IOProbeScore</key>
|
||||
<integer>2</integer>
|
||||
<key>IOProviderClass</key>
|
||||
<string>IOPCIDevice</string>
|
||||
<key>RequireMaxBusStall</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Layouts</key>
|
||||
<array/>
|
||||
<key>MaxBusStall</key>
|
||||
<integer>15000</integer>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>AppleHDAController 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>OSBundleCompatibleVersion</key>
|
||||
<string>1.0.0d1</string>
|
||||
<key>OSBundleLibraries</key>
|
||||
<dict>
|
||||
<key>com.apple.iokit.IOAudioFamily</key>
|
||||
<string>200.5</string>
|
||||
<key>com.apple.iokit.IOGraphicsFamily</key>
|
||||
<string>2.0</string>
|
||||
<key>com.apple.iokit.IOHDAFamily</key>
|
||||
<string>265.88</string>
|
||||
<key>com.apple.iokit.IOPCIFamily</key>
|
||||
<string>1.1</string>
|
||||
<key>com.apple.kpi.bsd</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.iokit</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.libkern</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.mach</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.private</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.unsupported</key>
|
||||
<string>12.0</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -0,0 +1,128 @@
|
||||
<?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>
|
||||
<key>version.plist</key>
|
||||
<data>
|
||||
MkagQ8RqPBVBLjUnVDMdBf0bdbA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>version.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
8wv4uOE1w0u8JZr9RrUO5KJOO06smBjE2sAJ1esrGNQ=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?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>BuildAliasOf</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>BuildVersion</key>
|
||||
<string>603</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>ProjectName</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>SourceVersion</key>
|
||||
<string>281052000000000</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,48 @@
|
||||
<?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>BuildMachineOSBuild</key>
|
||||
<string>16B2657</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>AppleHDAHALPlugIn</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>AppleHDAHALPlugIn 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.audio.AppleHDAHALPlugIn</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Apple HDA HAL Plug-in</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>aaud</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17G1z</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13internal</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0930</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>AppleHDAHALPlugIn 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -0,0 +1,128 @@
|
||||
<?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>
|
||||
<key>version.plist</key>
|
||||
<data>
|
||||
a5qT6AxomQnjhCdw2wlr7bw85F0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>version.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
rz/HdLGPMBsupqNzQAn+OYfnsy1yG4sxFrDcxsshYUY=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?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>BuildAliasOf</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>BuildVersion</key>
|
||||
<string>186</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>ProjectName</key>
|
||||
<string>AppleHDA_frameworks</string>
|
||||
<key>SourceVersion</key>
|
||||
<string>281052000000000</string>
|
||||
</dict>
|
||||
</plist>
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,128 @@
|
||||
<?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>
|
||||
<key>version.plist</key>
|
||||
<data>
|
||||
MkagQ8RqPBVBLjUnVDMdBf0bdbA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>version.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
8wv4uOE1w0u8JZr9RrUO5KJOO06smBjE2sAJ1esrGNQ=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?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>BuildAliasOf</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>BuildVersion</key>
|
||||
<string>603</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>ProjectName</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>SourceVersion</key>
|
||||
<string>281052000000000</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,81 @@
|
||||
<?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>BuildMachineOSBuild</key>
|
||||
<string>16B2657</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>AppleMikeyDriver</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>AppleMikeyDriver 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.AppleMikeyDriver</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Apple Mikey Driver</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>KEXT</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17G55</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13internal</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0930</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>IOKitPersonalities</key>
|
||||
<dict>
|
||||
<key>AppleMikeyDriver</key>
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.AppleMikeyDriver</string>
|
||||
<key>IOClass</key>
|
||||
<string>AppleMikeyDriver</string>
|
||||
<key>IONameMatch</key>
|
||||
<array>
|
||||
<string>mikey</string>
|
||||
<string>MKY0</string>
|
||||
<string>MKY1</string>
|
||||
</array>
|
||||
<key>IOProviderClass</key>
|
||||
<string>AppleSMBusDevice</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>AppleMikeyDriver 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>OSBundleLibraries</key>
|
||||
<dict>
|
||||
<key>com.apple.driver.AppleSMBusController</key>
|
||||
<string>1.0.1d0</string>
|
||||
<key>com.apple.iokit.IOACPIFamily</key>
|
||||
<string>1.2.0a1</string>
|
||||
<key>com.apple.kpi.bsd</key>
|
||||
<string>8.0.0b3</string>
|
||||
<key>com.apple.kpi.iokit</key>
|
||||
<string>8.0.0b3</string>
|
||||
<key>com.apple.kpi.libkern</key>
|
||||
<string>8.0.0b3</string>
|
||||
<key>com.apple.kpi.mach</key>
|
||||
<string>8.0.0b3</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -0,0 +1,128 @@
|
||||
<?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>
|
||||
<key>version.plist</key>
|
||||
<data>
|
||||
MkagQ8RqPBVBLjUnVDMdBf0bdbA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>version.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
8wv4uOE1w0u8JZr9RrUO5KJOO06smBjE2sAJ1esrGNQ=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?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>BuildAliasOf</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>BuildVersion</key>
|
||||
<string>603</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>ProjectName</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>SourceVersion</key>
|
||||
<string>281052000000000</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?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>BuildMachineOSBuild</key>
|
||||
<string>16B2657</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>DspFuncLib</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>DspFuncLib 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.driver.DspFuncLib</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Apple Dsp Function Library</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>KEXT</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17G55</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13internal</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0930</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>IOKitPersonalities</key>
|
||||
<dict/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>DspFuncLib 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>OSBundleCompatibleVersion</key>
|
||||
<string>1.0.0a1</string>
|
||||
<key>OSBundleLibraries</key>
|
||||
<dict>
|
||||
<key>com.apple.driver.AppleEFINVRAM</key>
|
||||
<string>2.0.0</string>
|
||||
<key>com.apple.iokit.IOAudioFamily</key>
|
||||
<string>1.7.0fc16</string>
|
||||
<key>com.apple.kext.OSvKernDSPLib</key>
|
||||
<string>1.9</string>
|
||||
<key>com.apple.kpi.bsd</key>
|
||||
<string>8.0.0b3</string>
|
||||
<key>com.apple.kpi.iokit</key>
|
||||
<string>8.0.0b3</string>
|
||||
<key>com.apple.kpi.libkern</key>
|
||||
<string>8.0.0b3</string>
|
||||
<key>com.apple.kpi.mach</key>
|
||||
<string>8.0.0b3</string>
|
||||
<key>com.apple.kpi.private</key>
|
||||
<string>8.0.0b3</string>
|
||||
<key>com.apple.vecLib.kext</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -0,0 +1,128 @@
|
||||
<?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>
|
||||
<key>version.plist</key>
|
||||
<data>
|
||||
MkagQ8RqPBVBLjUnVDMdBf0bdbA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>version.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
8wv4uOE1w0u8JZr9RrUO5KJOO06smBjE2sAJ1esrGNQ=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?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>BuildAliasOf</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>BuildVersion</key>
|
||||
<string>603</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>ProjectName</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>SourceVersion</key>
|
||||
<string>281052000000000</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?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>BuildMachineOSBuild</key>
|
||||
<string>16B2657</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>IOHDAFamily</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>IOHDAFamily 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.iokit.IOHDAFamily</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>I/O Kit High Definition Audio Family</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>KEXT</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17G55</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13internal</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0930</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9P107g</string>
|
||||
<key>IOKitPersonalities</key>
|
||||
<dict>
|
||||
<key>HD Audio Codec</key>
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.iokit.IOHDAFamily</string>
|
||||
<key>IOClass</key>
|
||||
<string>IOHDACodecDriver</string>
|
||||
<key>IOProviderClass</key>
|
||||
<string>IOHDACodecDevice</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>IOHDAFamily 281.52, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
|
||||
<key>OSBundleCompatibleVersion</key>
|
||||
<string>1.0.0d1</string>
|
||||
<key>OSBundleLibraries</key>
|
||||
<dict>
|
||||
<key>com.apple.kpi.bsd</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.iokit</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.libkern</key>
|
||||
<string>8.0.0</string>
|
||||
<key>com.apple.kpi.mach</key>
|
||||
<string>8.0.0</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -0,0 +1,128 @@
|
||||
<?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>
|
||||
<key>version.plist</key>
|
||||
<data>
|
||||
MkagQ8RqPBVBLjUnVDMdBf0bdbA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>version.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
8wv4uOE1w0u8JZr9RrUO5KJOO06smBjE2sAJ1esrGNQ=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?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>BuildAliasOf</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>BuildVersion</key>
|
||||
<string>603</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>281.52</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>281.52</string>
|
||||
<key>ProjectName</key>
|
||||
<string>AppleHDA</string>
|
||||
<key>SourceVersion</key>
|
||||
<string>281052000000000</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user