Contribute
Register

A guide to update OpenCore 0.x.y to 0.x.y+1

Status
Not open for further replies.
Joined
Jul 11, 2012
Messages
637
Motherboard
Gigabyte GA Z68XP-UD3
CPU
i7 3770
Graphics
GT 210
Mac
  1. iMac
  2. Mac mini
Mobile Phone
  1. Android
@miliuco does a great job at pointing out the differences between one version and the next (search for his "Opencore 0.x.y > 0.x.y+1 differences" threads), but I often see the same questions coming back regularly on his threads and other ones, so here's an overview of the best way to update smoothly (IMHO :mrgreen:).

1) Follow the guide! ;) https://dortania.github.io/OpenCore-Post-Install/universal/update.html#updating-opencore-and-macos
=> replace the essential files:
- EFI/BOOT/BOOTx64.efi
- EFI/OC/OpenCore.efi
- EFI/OC/Drivers/OpenRuntime
(plus the drivers and tools that you use such as EFI/OC/Tools/OpenShell.efi)
=> copy Docs/Sample.plist in your EFI and open it with ProperTree then perform an "OC Clean Snapshot" and save.

2) Run OCConfigCompare to see what needs to be deleted/added in your config.plist.
- double-click OCConfigCompare.command, it opens Terminal
- hit 3 "Select Local Sample.plist" then drag and drop the Sample.plist from /Docs/Sample.plist from the new OpenCore download
- hit 4 "Select Local User Config.plist" then drag and drop your old config.plist
- hit 7 "Compare": this will display the differences.
=> now it's up to you to use whatever editor to add new keys, etc. Note that you certainly have additional keys specific to your build in your config.plist, so of course don't delete them... :mrgreen: But it's a good time to check if they're really needed or have become obsolete.
I find PlistEdit Pro to be very convenient for moving new keys from Sample.plist to your Config.plist.
Once saved, run OCConfigCompare again to check you're done (you can safely ignore all the "Skipped" items, if any).

3) Run /Utilities/ocvalidate/ocvalidate, it might reveal syntax issues that may or may not be fundamental, but as the last step of upgrading, it's indeed a very healthy procedure.
- open a new Terminal window
- drag ocvalidate onto it then drag your config.plist and hit Enter.
- correct any displayed issue.

If your config.plist passes both tests, you're good to go. ;)

• Note that OCConfigCompare.command is also a good way to check what you've changed between an old config.plist of yours and a new one, just select your old one instead of the Sample.plist file.
• I find that BBEdit does a great job at comparing two config.plist with its "Compare Two Front Windows" command, allowing you to restore a changed key, etc. but be aware that if you've used PlistEdit Pro, for example, it changes line breaks compared to ProperTree, and BBEdit will find many differences that are not "real" differences. So my little trick here is to first open both files in PlistEdit Pro, toggle any Boolean value then toggle it again to its original value, save the file: in that way both files will have the same structure. :headbang: (of course, if you only use ProperTree, you don't need this)

Thanks to @miliuco :thumbup:

EDIT 04/2022: useful utilities such as OCConfigCompare and ProperTree are getting updates from time to time, even if they don't have a build number.
For example,
- the former versions of OCConfigCompare displayed syntax errors that weren't shown in the first version I had, now it's been fixed and it only displays real issues.
- ProperTree's "OC Clean Snapshot" now warns you if it detects inconsistencies in your kexts (duplicate CFBundleIdentifiers, in my case — because I have different versions of AppleALC.kext and RealtekRTL8111.kext in subfolders).
 
Last edited:
Good work! Congratulations. Now I’m not at home, later I’ll put the link.
 
Could someone expand on what the most consistent methods of updating your config.plist would be.

I have in the past used Xcode and opened both the new sample.plist and config.plist and dragged and dropped new entries from “sample” to “config”. Then gone and deleted entries in config.plist If required based on OC Compare.

This method seems to have worked so far but 0.6.8 to 0.6.9 seems to be full of Base and Baseskip errors?
 
An additional great resource is to read the "Differences.pdf" which comes with every OC release. It highlights changes in how OC functions and it's config.plist from the previous release. I find it's generally not enough to just compare two config.plists.


Could someone expand on what the most consistent methods of updating your config.plist would be.

I have in the past used Xcode and opened both the new sample.plist and config.plist and dragged and dropped new entries from “sample” to “config”. Then gone and deleted entries in config.plist If required based on OC Compare.

This method seems to have worked so far but 0.6.8 to 0.6.9 seems to be full of Base and Baseskip errors?
Base/Baseskip were added to ACPI->Patches to allow greater control over ACPI patches - refer to the configuration.pdf for more info.
 
Could someone expand on what the most consistent methods of updating your config.plist would be.

I have in the past used Xcode and opened both the new sample.plist and config.plist and dragged and dropped new entries from “sample” to “config”. Then gone and deleted entries in config.plist If required based on OC Compare.

This method seems to have worked so far but 0.6.8 to 0.6.9 seems to be full of Base and Baseskip errors?
I've used the same method as you for Base/Baseskip, then no more errors.
 
Could someone expand on what the most consistent methods of updating your config.plist would be.

I have in the past used Xcode and opened both the new sample.plist and config.plist and dragged and dropped new entries from “sample” to “config”. Then gone and deleted entries in config.plist If required based on OC Compare.

This method seems to have worked so far but 0.6.8 to 0.6.9 seems to be full of Base and Baseskip errors?
I don't use Xcode for this task, I prefer a plist editor as corpnewt's ProperTree or PlisEdit Pro from Fatcatsoftware. If you check both config.plist (old and new) side by side, line by line, you will see the differences between the 2 files. Regarding Base and BaseSkip errors, review ACPI> Patch, existing patches here must have these 2 new keys, Base as string and BaseSkip as Number.

base.png
 
An additional great resource is to read the "Differences.pdf" which comes with every OC release. It highlights changes in how OC functions and it's config.plist from the previous release. I find it's generally not enough to just compare two config.plists...
Yes, Differences.pdf is very useful, here you can know the changes that are in the new version. OCConfigCompare.command to see diffs between sample and config and ocvalidate as final task to check config.plist.
 
I don't use Xcode for this task, I prefer a plist editor as corpnewt's ProperTree or PlisEdit Pro from Fatcatsoftware. If you check both config.plist (old and new) side by side, line by line, you will see the differences between the 2 files. Regarding Base and BaseSkip errors, review ACPI> Patch, existing patches here must have these 2 new keys, Base as string and BaseSkip as Number.

View attachment 518647
@miliuco thank you for your reply.

I do use Propertree for the majority of the editing. I just use Xcode to drag “new to old”.

I obviously need to have another attempt to get it right.
 
@miliuco thank you for your reply.

I do use Propertree for the majority of the editing. I just use Xcode to drag “new to old”.

I obviously need to have another attempt to get it right.
Do it as in the image I attached, add Base and BaseSkip into every Patch you have in ACPI> Patch.
 
Status
Not open for further replies.
Back
Top