Fix External Display Support on MacBookPro10,1
@@ -7,6 +7,8 @@
|
|||||||
- Moderate: Update entire SMBIOS, keep original serials
|
- Moderate: Update entire SMBIOS, keep original serials
|
||||||
- Advanced: Update entire SMBIOS, generate new serials
|
- Advanced: Update entire SMBIOS, generate new serials
|
||||||
- Fix crash on MacBookPro4,1
|
- Fix crash on MacBookPro4,1
|
||||||
|
- Fix External Display Support on MacBookPro10,1
|
||||||
|
- Inject Patcher version into NVRAM for easier debugging
|
||||||
|
|
||||||
## 0.0.15
|
## 0.0.15
|
||||||
- Add user-configurable OpenCore DEBUG builds
|
- Add user-configurable OpenCore DEBUG builds
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Note 2: Currently OpenCore Legacy Patcher only supports macOS 11, Big Sur instal
|
|||||||
To use, simply:
|
To use, simply:
|
||||||
|
|
||||||
1. Ensure your hardware is compatible(See [Supported SMBIOS](/docs/MODELS.md))
|
1. Ensure your hardware is compatible(See [Supported SMBIOS](/docs/MODELS.md))
|
||||||
2. Download and build macOS Installer
|
2. [Download and build macOS Installer](./docs/INSTALLER.md)
|
||||||
3. Download the latest release: [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
|
3. Download the latest release: [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
|
||||||
4. Run the `OpenCore-Patcher.app`
|
4. Run the `OpenCore-Patcher.app`
|
||||||
5. Run `Build OpenCore`(if building for another machine, please select `Change Model`)
|
5. Run `Build OpenCore`(if building for another machine, please select `Change Model`)
|
||||||
|
|||||||
@@ -390,7 +390,6 @@ DualGPUPatch = [
|
|||||||
"MacBookPro8,2",
|
"MacBookPro8,2",
|
||||||
"MacBookPro8,3",
|
"MacBookPro8,3",
|
||||||
"MacBookPro9,1",
|
"MacBookPro9,1",
|
||||||
"MacBookPro10,1",
|
|
||||||
"Macmini5,2",
|
"Macmini5,2",
|
||||||
"iMac12,1",
|
"iMac12,1",
|
||||||
"iMac12,2",
|
"iMac12,2",
|
||||||
@@ -400,6 +399,10 @@ DualGPUPatch = [
|
|||||||
"Dortania1,1"
|
"Dortania1,1"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
DualGPUPatchRetina = [
|
||||||
|
"MacBookPro10,1",
|
||||||
|
]
|
||||||
|
|
||||||
HiDPIpicker = [
|
HiDPIpicker = [
|
||||||
"MacBookPro10,1",
|
"MacBookPro10,1",
|
||||||
"MacBookPro10,2",
|
"MacBookPro10,2",
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ class BuildOpenCore:
|
|||||||
self.config["#Revision"]["Build-Version"] = f"{self.constants.patcher_version} - {date.today()}"
|
self.config["#Revision"]["Build-Version"] = f"{self.constants.patcher_version} - {date.today()}"
|
||||||
self.config["#Revision"]["OpenCore-Version"] = f"{self.constants.opencore_version} - {self.constants.opencore_build} - {self.constants.opencore_commit}"
|
self.config["#Revision"]["OpenCore-Version"] = f"{self.constants.opencore_version} - {self.constants.opencore_build} - {self.constants.opencore_commit}"
|
||||||
self.config["#Revision"]["Original-Model"] = self.model
|
self.config["#Revision"]["Original-Model"] = self.model
|
||||||
|
self.config["NVRAM"]["Add"]["4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102"]["OCLP-Version"] = f"{self.constants.patcher_version}"
|
||||||
|
|
||||||
for name, version, path, check in [
|
for name, version, path, check in [
|
||||||
# Essential kexts
|
# Essential kexts
|
||||||
@@ -272,9 +273,7 @@ class BuildOpenCore:
|
|||||||
self.spoofed_model = spoofed_model
|
self.spoofed_model = spoofed_model
|
||||||
self.spoofed_board = spoofed_board
|
self.spoofed_board = spoofed_board
|
||||||
self.config["#Revision"]["Spoofed-Model"] = self.spoofed_model
|
self.config["#Revision"]["Spoofed-Model"] = self.spoofed_model
|
||||||
macserial_output = subprocess.run([self.constants.macserial_path] + f"-g -m {self.spoofed_model} -n 1".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
self.macserial_output = macserial_output.stdout.decode().strip().split(" | ")
|
|
||||||
|
|
||||||
# Setup menu
|
# Setup menu
|
||||||
def minimal_serial_patch(self):
|
def minimal_serial_patch(self):
|
||||||
self.config["PlatformInfo"]["PlatformNVRAM"]["BID"] = self.spoofed_board
|
self.config["PlatformInfo"]["PlatformNVRAM"]["BID"] = self.spoofed_board
|
||||||
@@ -287,14 +286,16 @@ class BuildOpenCore:
|
|||||||
self.config["UEFI"]["ProtocolOverrides"]["DataHub"] = True
|
self.config["UEFI"]["ProtocolOverrides"]["DataHub"] = True
|
||||||
self.config["PlatformInfo"]["Generic"]["SystemProductName"] = self.spoofed_model
|
self.config["PlatformInfo"]["Generic"]["SystemProductName"] = self.spoofed_model
|
||||||
def adanced_serial_patch(self):
|
def adanced_serial_patch(self):
|
||||||
|
macserial_output = subprocess.run([self.constants.macserial_path] + f"-g -m {self.spoofed_model} -n 1".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
macserial_output = macserial_output.stdout.decode().strip().split(" | ")
|
||||||
self.config["PlatformInfo"]["Automatic"] = True
|
self.config["PlatformInfo"]["Automatic"] = True
|
||||||
self.config["PlatformInfo"]["UpdateDataHub"] = True
|
self.config["PlatformInfo"]["UpdateDataHub"] = True
|
||||||
self.config["PlatformInfo"]["UpdateNVRAM"] = True
|
self.config["PlatformInfo"]["UpdateNVRAM"] = True
|
||||||
self.config["UEFI"]["ProtocolOverrides"]["DataHub"] = True
|
self.config["UEFI"]["ProtocolOverrides"]["DataHub"] = True
|
||||||
self.config["PlatformInfo"]["Generic"]["ROM"] = binascii.unhexlify("112233445566")
|
self.config["PlatformInfo"]["Generic"]["ROM"] = binascii.unhexlify("112233445566")
|
||||||
self.config["PlatformInfo"]["Generic"]["SystemProductName"] = self.spoofed_model
|
self.config["PlatformInfo"]["Generic"]["SystemProductName"] = self.spoofed_model
|
||||||
self.config["PlatformInfo"]["Generic"]["SystemSerialNumber"] = self.macserial_output[0]
|
self.config["PlatformInfo"]["Generic"]["SystemSerialNumber"] = macserial_output[0]
|
||||||
self.config["PlatformInfo"]["Generic"]["MLB"] = self.macserial_output[1]
|
self.config["PlatformInfo"]["Generic"]["MLB"] = macserial_output[1]
|
||||||
self.config["PlatformInfo"]["Generic"]["SystemUUID"] = str(uuid.uuid4()).upper()
|
self.config["PlatformInfo"]["Generic"]["SystemUUID"] = str(uuid.uuid4()).upper()
|
||||||
|
|
||||||
if self.constants.serial_settings == "Moderate":
|
if self.constants.serial_settings == "Moderate":
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
# How to download and build macOS Installers
|
||||||
|
|
||||||
|
* [Downloading](#downloading)
|
||||||
|
* [Building](#building)
|
||||||
|
|
||||||
|
This doc is centered around downloading and writting the macOS installer to a USB. If you're already familair with how to do this, you can skip.
|
||||||
|
|
||||||
|
* Note: 16GB+ USB will be required for the installer
|
||||||
|
|
||||||
|
## Downloading
|
||||||
|
|
||||||
|
The simplest way to download macOS installs would be to use installinstallmacos:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir ~/macOS-installer && cd ~/macOS-installer && curl -O https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py && sudo python installinstallmacos.py
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
As you can see, we get a nice list of macOS installers. If you need a particular versions of macOS, you can select it by typing the number next to it. For this example we'll choose 10:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This is going to take a while as we're downloading the entire 12GB+ macOS installer.
|
||||||
|
|
||||||
|
Once finished, you'll find in your `~/macOS-Installer/` folder a DMG containing the macOS Installer, called `Install_macOS_11.1-20C69.dmg` for example. Mount it and you'll find the installer application.
|
||||||
|
|
||||||
|
* Note: We recommend to move the Install macOS.app into the `/Applications` folder, as we'll be executing commands from there.
|
||||||
|
* Note 2: Running Cmd+Shift+G in Finder will allow you to easily jump to `~/macOS-installer`
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
* Note: By default, Disk Utility only shows partitions – press Cmd/Win+2 to show all devices (alternatively you can press the View button)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Next run the `createinstallmedia` command provided by [Apple](https://support.apple.com/en-us/HT201372). Note that the command is made for USB's formatted with the name `MyVolume`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
|
||||||
|
```
|
||||||
|
|
||||||
|
* Note: You can also replace the `createinstallmedia` path with that of where your installer's located (same idea with the drive name).
|
||||||
|
|
||||||
|
* 
|
||||||
|
|
||||||
|
# Once finished, [return to the README to finish up](../README.md)
|
||||||
@@ -16,7 +16,7 @@ Once you've booted OpenCore at least once, your hardware should now auto boot it
|
|||||||
|
|
||||||
## Cannot boot macOS without the USB
|
## Cannot boot macOS without the USB
|
||||||
|
|
||||||
At this time, the OpenCore Patcher won't install OpenCore onto the internal drive itself during installs. Instead, you'll need to either [manually transfer](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html) OpenCore to the internal drive's EFI or run this patcher's Option 2 again but select your internal drive.
|
By default, the OpenCore Patcher won't install OpenCore onto the internal drive itself during installs. Instead, you'll need to either [manually transfer](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html) OpenCore to the internal drive's EFI or run this patcher's Option 2 again but select your internal drive.
|
||||||
|
|
||||||
Reminder that once this is done, you'll need to select OpenCore in the boot picker again for your hardware to remember this entry and auto boot from then on.
|
Reminder that once this is done, you'll need to select OpenCore in the boot picker again for your hardware to remember this entry and auto boot from then on.
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 558 KiB After Width: | Height: | Size: 370 KiB |
|
After Width: | Height: | Size: 292 KiB |
|
Before Width: | Height: | Size: 9.5 MiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 427 KiB After Width: | Height: | Size: 304 KiB |
|
After Width: | Height: | Size: 706 KiB |
|
After Width: | Height: | Size: 349 KiB |
|
After Width: | Height: | Size: 392 KiB |
|
After Width: | Height: | Size: 791 KiB |
|
After Width: | Height: | Size: 291 KiB |
|
Before Width: | Height: | Size: 9.0 MiB After Width: | Height: | Size: 77 KiB |
@@ -818,6 +818,8 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>rtc-blacklist</key>
|
<key>rtc-blacklist</key>
|
||||||
<data></data>
|
<data></data>
|
||||||
|
<key>OCLP-Version</key>
|
||||||
|
<string></string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
|
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
|
||||||
<dict>
|
<dict>
|
||||||
@@ -841,6 +843,7 @@
|
|||||||
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
|
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
|
||||||
<array>
|
<array>
|
||||||
<string>rtc-blacklist</string>
|
<string>rtc-blacklist</string>
|
||||||
|
<string>OCLP-Version</string>
|
||||||
</array>
|
</array>
|
||||||
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
|
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
|
||||||
<array>
|
<array>
|
||||||
|
|||||||