Impossibly complex instructions made much easier by OpenCore Legacy Patcher. Ignore this page and use that GUI instead. Trust me.
Back up your data first!
See also:
Warning ∞
WARNING: This is an extremely stupid and dangerous process to attempt without reading, understanding, and preparing the whole process up front. Make sure you have a bootable USB stick or some other thing prepared so that you can revert to an earlier macOS if necessary. See macOS reinstallation. Make sure to test that stuff; try reinstalling and make sure that it works!. In particular, make sure you write down your emergency boot hotkeys.
What I tested on ∞
Important note: I have only done testing with an Apple Macbook Pro A1278 – 13″ Laptop. These instructions might need to be adapted, sometimes significantly, for other hardware!
- This device is
MacBookPro9,2for board-idMac-6F01561E16C75D06 - board-id is learned with
ioreg -l | grep -i board-id - https://dortania.github.io/OpenCore-Legacy-Patcher/MODELS.html
-
https://dortania.github.io/OpenCore-Install-Guide/extras/smbios-support.html#macbook-pro
Get (using munki’s script) ∞
NOT RECOMMENDED – See #get_gui[not existing]
macadmin has a more feature-full version which I have neither examined nor tested.
https://dortania.github.io/OpenCore-Install-Guide/installer-guide/mac-install.html
script
cd ~ mkdir -p macOS-installer cd macOS-installer curl https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py > installinstallmacos.py sudo python installinstallmacos.py # Select the desired version (type the number associated with that line) # The download may abort, possibly multiple times, but re-run it and it will resume. # Once downloaded, it will take some time to adjust the download. mv *.dng ~/Desktop
-
In Finder, mount (
double-click) the.dngfile.- 15.0.1 was
Install_macOS_13.0.1-22A400.dmgfor me.
- 15.0.1 was
- Copy the
.appfile into your Applications. -
Use OpenCore.
TODO – Prepare (using the complicated nonsense) ∞
https://dortania.github.io/OpenCore-Post-Install/usb/system-preparation.html
-
- under both EFI/OC/Kexts and config.plist -> Kernel -> Add
- We need this kext to make sure any ports not defined in ACPI will still show up in macOS, note that this shouldn’t be required on Skylake and newer as the USB ports are defined within ACPI.
- Because OEMs don’t always include the ports even on newer systems, we recommend all Intel users use USBInjectAll until properly mapped.
-
config.plist -> Kernel -> Quirks -> XhciPortLimit -> True
- So we can temporally get around the 15 port limit to map our ports
- I don’t know what the fuck that means.
- The Apple Macbook Pro A1278 – 13″ Laptop is
MacBookPro9,2and as such does not need the ACPI renames. - TODO – XHC1 to SHCI
- TODO – EHC1 to EH01
- TODO – EHC2 to EH02
config.plistunder PlatformInfo -> Generic -> SystemProductName) and match figure out whether you even need a USB map- check the names of our USB controllers
- A rename is needed because
ioreg -l -p IOService -w0 | grep -i XHC1lists stuff. -
add the needed ACPI renames to your config.plist -> ACPI -> Patch, you can find a pre-made file here(note that you’ll need to enable the ones you need):
- I don’t know what the fuck that means.
- https://github.com/dortania/OpenCore-Post-Install/blob/master/extra-files/usb-rename.plist
— Simply copy over the required patches to your config.plist
— I don’t know what the fuck that means.
https://github.com/corpnewt/USBMap
As of 2022-11-18 this is an obsolete guide
-
The process will prompt you, but you can also manually install Python – https://www.python.org/downloads/macos/
# was github.com/corpnewt/USBMap/archive/refs/heads/master.zip curl -LJO https://codeload.github.com/corpnewt/USBMap/zip/refs/heads/master unzip USBMap-master.zip cd USBMap-master chmod +x *.command ./USBMap.command # d # q # k
-
Add the USBMap.kext dummy injector to your OC -> Kexts folder and config.plist -> Kernel -> Add
- I don’t know what the fuck that means.
- TODO – continue
- Reboot
- Go into USBMap’s D. Discover Ports and plug a USB 2 and USB 3 device into every port – letting the script refresh between each plug
- Use USBMapInjectorEdit.command to toggle off all non-essential seen ports (any of the first 15 that aren’t a keyboard/mouse/etc which are needed for basic functionality)
- Reboot
- Go into USBMap’s D. Discover Ports and plug a USB 2 and USB 3 device into every port – letting the script refresh between each plug
- Go into the P. Edit & Create USBMap.kext menu and change the types to match the physical port types and toggle which ports (up to 15) you want to preserve
-
Build the final USBMap.kext and replace the dummy injector in your OC -> Kexts folder
maybe..
- On a Mac
- Get OpenCore Legacy Patcher
-
Install it
TODO – Reinstall macOS using OpenCore on Windows ∞
https://dortania.github.io/OpenCore-Install-Guide/installer-guide/windows-install.html#downloading-macos [ 1 ]
TL;DR it’s impossible for a mere mortal; don’t try.
Don’t believe me? This is a necessary step: https://dortania.github.io/OpenCore-Install-Guide/ktext.html
script
#!/usr/bin/env sh # 2022-11-17 - Tinkered with, using: # OpenCore-0.8.6-RELEASE \sudo \apt-get update \sudo \apt-get install python3 \ln -s /usr/bin/python3 /usr/bin/python cd Utilities/macrecovery # Catalina (10.15) \python macrecovery.py -b Mac-00BE6ED71E35EB86 -m 00000000000000000 download

moved notes here
SUCCESS
The GUI is fucking magical.