Contribute
Register

[HOW TO] OpenCore 0.6.9 > 0.7.0 differences

Status
Not open for further replies.
Joined
Dec 10, 2010
Messages
1,365
Motherboard
Gigabyte Z390 Aorus Elite
CPU
i9-9900K
Graphics
RX 6600 XT
Mobile Phone
  1. iOS
I encourage all less advanced users to read these instructions in detail so that their hackintosh gets better and better with the improvements of OpenCore. Some users are only interested in config.plist changes to get the new version up and running in no time. This is the wrong approach because this makes errors more difficult to understand or fix.

This time the writing of the differences between versions has been very complicated. OpenCore developers have made a lot of changes and improvements. Suffice it to say that over 60 compilations have been released throughout May. Some of the changes are real news and require study and learning to be fully understood. With all this, Opencore is improving and currently has reached a maturity that has nothing to do with its consideration as a beta program.

OpenCanopy continues with its great evolution and brings many changes and improvements. Some of these enhancements require training and will only be used by a limited number of users and mostly by artists designers of themes and icons. Improvements of the OpenCore graphical interface have been huge in just a few releases.

The text is divided into sections:
  • config.plist: display rotation, flavours, SIP and other modifications.
  • csrutil and SIP: added 2 new tools to have an easy handling of SIP from the picker.
  • OpenCanopy: new structure of the Resources/Image folder, themes organized by author, new Flavour system (custom icons in Entries and Tools), etc.
message from vit9696

Do not miss the vit9696 message as every time a new version of OpenCore is published, it is the best way to know the main changes and improvements applied.

config.plist

Display rotation
  • ProtocolOverrides > added AppleEg2Info (Boolean): replaces the Apple EFI Graphics 2 protocol with a builtin version. This protocol allows newer EfiBoot versions (at least 10.15) to expose screen rotation to macOS. It can be False.
  • NVRAM > Add > 7C436110-AB2A-4BBB-A880-FE41995C9F82 > added ForceDisplayRotationInEFI (Number): defines display rotation. It can be 0 for no rotation or any of 90, 180, 270 for matching rotation in degrees. Only enabled if AppleEg2Info=True.
Flavour
  • Misc > Boot > PickerAttributes > added a new bitmask 0x0080 — OC_ATTR_USE_FLAVOUR_ICON to enable flavours.
  • Misc > Entries > added Flavour (String) to configure custom icons for Entries. It can be Auto.
  • Misc > Tools > added Flavour (String) to configure custom icons for Tools. It can be Auto.
PlatformInfo > Generic
  • AdviseWindows replaced by AdviseFeatures (Boolean) to update FirmwareFeatures (PlatformInfo > PlatformNVRAM and PlatformInfo > SMBIOS) with supported bits. It can be False.
  • A new bit has been added to FirmwareFeatures: FW_FEATURE_SUPPORTS_APFS (0x00080000) Without this bit, it is not possible to install macOS on an APFS disk. On most newer UEFI firmwares these bits are already set.
Note: most of us use only Generic section of PlatformInfo and don't need to install FirmwareFeatures or FirmwareFeaturesMask. But we all need to replace AdviseWindows with AdviseFeatures.

Misc > Security
  • Added AllowToggleSip (Boolean): if True, it enables the ToggleSIP tool to enable or disable System Integrity Protection in OpenCore picker. This will toggle Apple NVRAM variable csr-active-config between 0 for SIP Enabled and a default for SIP Disabled (currently 0x26F).
Note: It is strongly recommended not to make a habit of running macOS with SIP disabled.
Note: OpenCore uses 0x26F even though csrutil disable on Big Sur sets 0x7F.
For any other value which you may need to use, it is possible to configure CsrUtil.efi as a TextMode tool entry to configure a different value, e.g. use toggle 0x67 in Arguments to toggle the default SIP Disabled value for macOS Catalina.
It's mandatory to download the new Labels folder included into OcBinaryData from Acidanthera. This folder now contains 2 new labels SIPEnabled and SIPDisabled, without them OpenCanopy falls back to text mode.

UEFI > Output
  • GopPassThrough changed type from Boolean to String. This option provides the GOP protocol for firmware that do not implement the protocol. Supported values are: Enabled (provide GOP for all UGA protocols), Apple (provide GOP for AppleFramebufferInfo-enabled protocols) and Disabled (do not provide GOP). Failsafe Value is Disabled. This option requires ProvideConsoleGop to be enabled.
Memory testing utility
  • Added Flavour key for MemTest (memtest86) and updated recommended memtest86 config in sample.plist files.
To use MemTest you have to download memtest86 from its website. Mount the file memtest86-usb.img. Now, you should see a folder named EFI containing a folder named BOOT, open it. We are interested in only 2 files: BOOX64.efi (it's the app for 64 bits) and unifont.bin. Save these 2 files in a folder called memtest86 and put this folder inside the OpenCore Tools folder. The Path key of this tool in config.plist must point to memtest86/BOOTX64.efi. This way, running MemTest from its icon in the picker executes the memory check.

CPU info for Hyper-V
  • Kernel > Quirks > added ProvideCustomCpuInfo ProvideCurrentCpuInfo (Boolean): Provides current CPU info to the kernel. This quirk currently provides correct TSC and FSB values to the kernel. It's for Hyper-V virtual machines. It can be False.
csrutil and SIP
  • Added optional ToggleSIP system boot menu option: ToggleSIP (Enabled) / ToggleSIP (Disabled). It doesn't exist in the Tools folder, i's included into OpenCore. Operation is very simple. The tool is on/off style. By clicking on the icon, the status changes (Enabled > Disabled and vice versa). If csr-active-config has a value assigned (not empty) in config.plist, this is the setting that will be active on every new boot. Otherwise, action performed on Toggle SIP is kept between boots.
  • Added CsrUtil.efi tool, similar to Apple csrutil. Visible in the Tools folder. It is an argument tool: you can pass argument in config.plist (active at every boot) setting it as TextMode tool or run it interactively from OpenShell. Available arguments in text mode: clear, enable value, toggle value, status.
    sip-tool.png
It is not required to have both tools active in the picker. Toggle SIP works fine even if CsrUtil.efi is disabled and not showing in the picker. And vice versa. SIP values which affect macOS updates are documented in configuration docs.

OpenCanopy
  • Added support for display rotation (0, 90, 180, 270).
  • Changed OpenCanopy image directory to support subdirectories.
  • Changed OpenCanopy preferred image set to Acidanthera\GoldenGate (former Modern theme).
  • Implementation of boot entries Flavour system.
OpenCanopy image directory structure

There is a new structure of the Resources/Image folder, now subdirectories with themes are supported. It's set in Misc > Boot > PickerVariant.

An icon set is a directory path relative to \EFI\OC\Resources\Image where the icons are located, in the Creator\Set format. OcBinaryData now have the following icon sets:
Acidanthera\GoldenGate - macOS 11 styled.
Acidanthera\Syrah - macOS 10.10 styled.
Acidanthera\Chardonnay - macOS 10.4 styled.

We have 2 ways to assign a value to PickerVariant:
  • Predefined aliases:
    Default: Automatically select Acidanthera\GoldenGate.
    Auto: Automatically select one set of icons based on the Default Background colour: Acidanthera\GoldenGate for Black and Acidanthera\Chardonnay for Light Gray.
  • Icons sets included into its own folder (as mentioned above), writing the value Creator\Set in PickerVariant. For example, you have 3 icon sets made by different vendors:
    EFI\OC\Resources\Image\Acidanthera\GoldenGate\Apple.icns, AppleRecv.icns, ApleTM.icns, BtnFocus.icns...
    EFI\OC\Resources\Image\Blackosx\BsxM1\Apple.icns, AppleRecv.icns, ApleTM.icns, BtnFocus.icns...
    EFI\OC\Resources\Image\Chris1111\Apple-BnW\Apple.icns, AppleRecv.icns, ApleTM.icns, BtnFocus.icns....
    Depending on the value of PickerVariant:
    PickerVariant=Default > GoldenGate is the chosen theme
    PickerVariant=Blackosx\BsxM1 > BsxM1 is the chosen theme
    PickerVariant=Chris1111\Apple-BnW > Apple-BnW is the chosen theme.
PickerVariant intentionally supports \ or / as separator, e.g. Blackosx\BsxM1 or Blackosx/BsxM1.
Note: you must remove prefixes from icon names.

Flavour: custom icons in Entries and Tools

There is a new flavours system for custom icons in Entries and Tools. It's set in Misc > Boot > PickerAttributes.

A new bitmask 0x0080 — OC_ATTR_USE_FLAVOUR_ICON has been added in PickerAttributes. When it's true enables flavours, boot entries content descriptions to have custom icons for Entries and Tools. These flavours can be enabled when PickerAttributes=144 (0x90 hex) which is the sum of:
0x0010 - OC_ATTR_USE_POINTER_CONTROL + 0x0080 - OC_ATTR_USE_FLAVOUR_ICON ->10 + 80 = 90 hex = 144 decimal.
When using flavours, it is recommended to disable: 0x0001 - OC_ATTR_USE_VOLUME_ICON.

Flavour is a new string key added in Misc > Entries and Misc > Tools. Its value is a succession of text elements separated by : up to a maximum of 5 elements. The first item has the highest priority and the last item has the lowest priority. Flavour value by default is Auto. When Flavour has a custom value in an Entry or Tool, OpenCanopy looks for the icon named with that value in the folder of the active theme. If the icon corresponding to the first element of Flavour does not exist, the second is selected and so on. If none of Flavour icons are found, default icon is assigned according to the type of Entry.
flavour1a.png
flavour1b.png

An example of Flavour could be Windows10:Windows in an Entry for a Windows 10 system. If there is a Windows10.icns file, this is the one associated with the Entry but, if it does not exist, Windows.icns is searched and, if it does not exist, default icon for this type of Entry is loaded (HardDrive.icns). With this method it is easier to configure custom icons for Entries, you just have to include the icons in the Icon Set and configure the Flavour key.

Example: How to set Flavours for Big Sur, Catalina, Monterey and Windows
  • Set 144 (0x90 hex) value in PickerAttributes.
  • Put the appropriate icons in the theme's folder. In this example, we are going to use Apple11.icns + ExtApple11.icns (Big Sur), Apple12.icns + ExtApple12.icns (Monterey), Apple1015.icns + ExtApple1015.icns (Catalina) and Windows10.icns + ExtWindows10.icns. Without Ext icons it doesn't work (at least in the tests I have done .
  • macOS Entries only need the icons, nothing more; macOS will have its flavour set automatically by OC and it will pick the correct icon from the theme set in PickerVariant; this way it is possible to have different icons for different versions of operating systems.
  • Windows Entry needs Flavour=Windows10:Windows.
    Flavours.png
Thanks to Blackosx for this beautiful hardrive icons with images.
Note: There is an intention to have a list of tools which are common enough that some icon pack artists may wish to provide an icon for them, for example ToggleSIP.icns or MemTest.icns. Certain well-known bootloaders have also been assigned a flavour (OpenCore of course, Grub2). This way, Flavour will allow to display a custom icon (if it exists) for these elements.

Do I have to use Flavour in all cases? Short answer: no
  • Flavour property in config.plist isn't required for macOS because macOS (versions included) is detected by OpenCore and the correct icon is picked up automatically.
  • Flavour property has to be used when OpenCore does not automatically pick up the icon for an element, specifically Entries and Tools.
  • There is no need to create an Entry to apply a flavour; if you need to apply a flavour and there isn't already an entry, then you must use a .contentFlavour file.
  • You don't have to use Flavour in all cases, generally themes and Icon Sets are enough to customize the picker to your liking, reserving Flavour for more specific uses.
.contentFlavour file

Another way to get flavours is by placing a .contentFlavour file next to the operating system's bootloader. This option is indicated when the system does not have an entry created in config.plist.
For example, for a Windows system the .contentFlavour file must be in the /EFI/Microsoft/Boot/ folder of the Windows EFI partition.
The content of .contentFlavour is the same as Flavour key: Windows10:Windows, assuming there is a Windows10.icns icon into the active theme folder.
It is another way to have flavours but more complex than if you use the Flavour key in an Entry.

Algorithm used to determine content flavour
  • For a Tool, the value is read from Flavour key.
  • If Flavour=Auto and there is no .contentFlavour file, entry flavour is chosen based on the entry type (e.g. Windows automatically gets Windows flavour).
  • For an automatically discovered entry, it is read from the .contentFlavour file next to the bootloader, if present.
  • If there is a .VolumeIcon.icns (placed at the root of the Preboot volume (macOS) or at the root volume for other filesystems) it takes precedence over .contentFlavour file.
  • For a custom entry:
    it is read from the .contentFlavour file next to the bootloader if Flavour is Auto
    otherwise it is read from Flavour key.
Note: To better understand flavours, it is advisable to read Mike Beaton's text explaining these changes and defining flavours lists.

Kexts

It is recommended to switch to the new versions of the kexts that have been modified and updated:
  • RestrictEvents 1.0.2
  • AppleALC 1.6.1
  • NVMeFix 1.0.8
  • VirtualSMC 1.2.4
  • BrightnessKeys 1.0.2
  • WhateverGreen 1.5.0
  • SidecarFixup 1.0.1
  • BrcmPatchRAM 2.5.9
  • MacHyperVSupport 0.5
  • gfxutil 1.81b.
Replace only the ones you use regularly.
Note: AppleALC is accompanied by a new variant called AppleALCU.kext intended for systems that have digital audio (USB) only.
 
Last edited:
Yeah I was a bit shocked when OpenCanopy didn’t show up after updating to 0.7.0, and then I realised PickerVariant must be modified this time. Other changes are fine.

I won’t enable AllowToggleSip on my builds as their SIP is always enabled, but it should be handy for users who have to disable it.
 
Yeah I was a bit shocked when OpenCanopy didn’t show up after updating to 0.7.0, and then I realised PickerVariant must be modified this time. Other changes are fine.

I won’t enable AllowToggleSip on my builds as their SIP is always enabled, but it should be handy for users who have to disable it.
This is very complex this time, what a lot of changes!!!

OpenCanopy is the part where they have worked the most this time. We have to learn the new Image folder structure and the new PickerVariant values. Flavours is a bit more complex, but as soon as you try it once, I am sure you will get it without problems.

I also always have SIP enabled but I like these tools that are being added to facilitate tasks from within OpenCore.
 
Not much changed with VirtualSMC.kext, unless of course your motherboard is using the Nuvoton NCT6683D microcontroller. Is this an Apple system microcontroller?

I am intrigued with the options MacHyperVSupport brings to the table.
 
Update went smooth as silk, for me. ;)
I always have SIP disabled, since the first day Apple invented it... :mrgreen: Actually, I'm wondering what's the benefit of enabling it when nobody else uses your computer and you're behind a firewall. :confused: For us handymen, I feel it more like a "rottura di coglioni" as they say in Italy. :lol:
My Macs have OSes that span from PPC 10.4 to 10.11 (currently testing 10.14...), most of them haven't seen a security update for ages... I'm indeed wondering if that's not the best security policy — having very outdated OSes. ;)

Well, I'm wandering from the point. Thanks for this always very well documented write-up! :thumbup:
 
@miliuco Just upgraded all my 3 hacks per my signature, to OC 0.7.0 and found a discrepancy with Misc > Tools > Flavour in your OP. It is not present in the sample config.plist provided with the latest OC which was released yesterday (07 June 2021) yet your OP, seems to suggest that it should indeed be present.
I am getting a "no schema for...." message on all my hacks, just prior to landing on the OC menu OS selection icon screen. So far I have not been able to find what could possibly be wrong, all three hacks are working properly even with this error message.
I have attached the config.plist of my Comet Lake hack in the hope that somebody will pick up the reason why that message is displayed with this new OC version on all my 3 hacks.
 

Attachments

  • config.plist
    34.3 KB · Views: 195
@miliuco Just upgraded all my 3 hacks per my signature, to OC 0.7.0 and found a discrepancy with Misc > Tools > Flavour in your OP. It is not present in the sample config.plist provided with the latest OC which was released yesterday (07 June 2021) yet your OP, seems to suggest that it should indeed be present.
I am getting a "no schema for...." message on all my hacks, just prior to landing on the OC menu OS selection icon screen. So far I have not been able to find what could possibly be wrong, all three hacks are working properly even with this error message.
I have attached the config.plist of my Comet Lake hack in the hope that somebody will pick up the reason why that message is displayed with this new OC version on all my 3 hacks.
For Flavour to work you must have PickerAttributes=144.
Flavour key is required in Entries and Tools, in config.plist it is missing in Tools > OpenShell.

If Flavour=Auto, OpenCore picks the icon that corresponds to the input type (Windows, Linux ...) assuming these icons exist in the active theme folder.

If Flavour=Ubuntu:Linux (example) OpenCore searches the folder of the active theme for an icon Ubuntu.icns, if it does not exist it searches for Linux.icns and if it does not exist picks the generic for this type of entry (HardDive.icns).

Same for OpenShell, if the icon Shell.icns exists and Flavour=Shell OpenCore picks the icon named Shell.icns. If Shell.icns does not exist, picks the generic for this type of tool (Tool.icns, if this is missing HardDrive.icns is selected).

Note: OpenShell only works this way if the Name key is UEFIShell, otherwise OpenCore considers it just another tool.
 

Attachments

  • config.plist
    33.5 KB · Views: 173
Thank you @miliuco for your quick response, and above all your excellent explanation which makes a lot of sense and is actually working. The "no schema for ..." error message has vanished after I applied your changes.

Greetings Henties
 
I was too quick to react, because I am still getting the "No schema for AdviseWindows... " error message just prior to the OC boot menu icons appearing.
AdviseWindows under Platforminfo-->Generic is set to Boolean NO but even if I toggle it to YES I still get that error message. The icon selection and display is however working well with PickerAttribute=144
I have attached my config.plist again, maybe you can pick up something that could cause this annoying error message.

Greetings Henties
 

Attachments

  • config.plist
    34.4 KB · Views: 136
I was too quick to react, because I am still getting the "No schema for AdviseWindows... " error message just prior to the OC boot menu icons appearing.
AdviseWindows under Platforminfo-->Generic is set to Boolean NO but even if I toggle it to YES I still get that error message. The icon selection and display is however working well with PickerAttribute=144
I have attached my config.plist again, maybe you can pick up something that could cause this annoying error message.

Greetings Henties

No schema usually means you have something in your config.plist which either should not be there or should be somewhere else. Usually solved by deleting the offending entry.

Compare your config.plist with the sample provided with OpenCore.
 
Status
Not open for further replies.
Back
Top