Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.

joevt

macrumors 604
Jun 21, 2012
6,964
4,259
Code:
➜  ~ nvramp () { printf "$(nvram $1 | sed -E '/^'$1'./s///;s/\\/\\\\/g;s/%/\\x/g')" }
➜  ~ sudo nvramp () { printf "$(nvram $1 | sed -E '/^'$1'./s///;s/\\/\\\\/g;s/%/\\x/g')" }
➜  ~
➜  ~ nvramp () { printf "$(nvram $1 | sed -E '/^'$1'./s///;s/\\/\\\\/g;s/%/\\x/g')" }
Not sure what you're trying to say here. sudo is not required for the nvram command.

Code:
<key>csr-active-config</key>
                <data>B/8=</data>
That is 0x7ff which has all 11 bits set. What about it?
[automerge]1576126586[/automerge]
Oh wait, that's 0x07ff big endian. Shouldn't it be 4 bytes long though? And also it should be little endian.
Code:
printf "\xff\x07\x00\x00" | xxd -p
ff070000
printf "\xff\x07\x00\x00" | base64
/wcAAA==
Or is that from OpenCore config file and OpenCore represents csr-active-config differently than the nvram command?
 
Last edited:

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
Not sure what you're trying to say here. sudo is not required for the nvram command
I was trying to say there is no output from neither one of them commands I tried above.
That is 0x7ff which has all 11 bits set. What about it?
I can't test it yet because once the csrutil disable is set from recovery OC skips the implicit value in the config file. I wonder what advantage will it give us though?
 

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
Not sure what you're trying to say here. sudo is not required for the nvram command
I was trying to say there is no output from neither one of them commands I tried above.
That is 0x7ff which has all 11 bits set. What about it?
I can't test it yet because once the csrutil disable is set from recovery OC skips the implicit value in the config file. I wonder what advantage will it give us?
I used dmpstore from EFI shell:
Code:
dmpstore -all -sfo > fs7:\variables.txt
where fs7: is my EFI partition of the USB drive:
1576128128102.png
 

joevt

macrumors 604
Jun 21, 2012
6,964
4,259
I was trying to say there is no output from neither one of them commands I tried above.
nvramp () { ... } defines a function. A function doesn't do anything until you use it.
bootvar is also a function. It won't print the path without the DevicePathUtil command line utility (attached). Install DevicePathUtil or create an alias.
Code:
alias DevicePathUtil=~/Downloads/DevicePathUtil/bin/DevicePathUtil
nvramp csr-active-config | xxd -p
bootvar Boot0000
I can't test it yet because once the csrutil disable is set from recovery OC skips the implicit value in the config file. I wonder what advantage will it give us?
I was saying that each bit should be tested individually to see what "csrutil status" outputs for each bit, because "Apple Internal: disabled" that you have in your output does not seem to be correct for the 0x03e7 value that you had, according to the bit definitions in csr.h file of xnu source code.
So first 0x001, 0x002, 0x004, etc, up to 0x400.
Also, reread my last post #476 , since I updated it.

Maybe the csr-active-config nvram variable can be removed from recovery so that the OC value can be used, or you can set the csr-active-config nvram variable directly instead of using csrutil? (I haven't tried it). Shouldn't there be an EFI Shell command for setting nvram variables? Maybe not.

I used dmpstore from EFI shell:
where fs7: is my EFI partition of the USB drive:
I guess they look ok. I wonder what that second Boot0080 variable is for. It has a different UUID. The first belongs to EFI.
https://github.com/erikberglund/AppleNVRAM

You said before that the boot order couldn't be set? You didn't say what you were referring to. What is trying to set the boot order? Is it a problem that it can't be set?
 

Attachments

  • DevicePathUtil.zip
    103.5 KB · Views: 200

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
Oh wait, that's 0x07ff big endian. Shouldn't it be 4 bytes long though? And also it should be little endian.
Yea this one is tricky. These "endians" bit me... but it is 0x7FF or 7FF00000 or f/AAAA==
The last 2 can be used in the OC configurator/Xcode or in the XML respectively.
Maybe the csr-active-config nvram variable can be removed from recovery so that the OC value can be used
That was my ultimate goal. But now I have to delete NVRAM and test it, because as I said this variable does not change fro OC once set in the Recovery.
I wonder what that second Boot0080 variable is for.
BootOrder: 0000,0080
Boot0000* ubuntu
Boot0080* Mac OS X
Boot0081* Recovery OS
Boot0082*
BootFFFF*

I have various OSX drives+ Linux.
https://askubuntu.com/questions/1105009/change-boot-order
— Standard UEFIvariables: Boot0080, Boot0081, Boot0082, BootOrder, BootNext, supposedly as a primary mechanism.
— Magic variables [1]: efi-boot-device-data, efi-apple-recovery-data, etc.
https://github.com/acidanthera/bugtracker/issues/308
You said before that the boot order couldn't be set?
I think there was a problem with the OpenCore.efi version. I recompiled it and now it is OK. I also set:
Code:
<key>BlessOverride</key>
        <array>
            <string>2151677985</string>
            <string>PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x5,0x0,0x0)/HD(2,GPT,165FB544-65FF-4D47-969E-58F13E7BDEB6,0x64028,0x2DC037D8)/VenMedia(BE74FCF7-0B7C-49F3-9147-01F4042E6842,ECB9843C3DB1B6449ACD6742EBD4609B)/\47997222-1DEF-4C0D-BB4B-E5BA02417DFF\System\Library\CoreServices\boot.efi</string>
Which is my Catalina drive.
 

joevt

macrumors 604
Jun 21, 2012
6,964
4,259
Yea this one is tricky. These "endians" bit me... but it is 0x7FF or 7FF00000 or f/AAAA==
The last 2 can be used in the OC configurator/Xcode or in the XML respectively.
7FF00000 is 0xf07f. 0xf07f is not what you want.

If it is 0x7ff (bits 0 to 10 all set), then setting it to 7FE00000 would be 0x7FE where bit 0 is not set and would not disable Kext Signing.

I was asking about the Boot0080 that belongs to UUID A5CE328C*. What is that UUID for? What path is in this variable? Is it the same as the Boot0080 from the EFI UUID?

Code:
<key>BlessOverride</key>
        <array>
            <string>2151677985</string>
            <string>PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x5,0x0,0x0)/HD(2,GPT,165FB544-65FF-4D47-969E-58F13E7BDEB6,0x64028,0x2DC037D8)/VenMedia(BE74FCF7-0B7C-49F3-9147-01F4042E6842,ECB9843C3DB1B6449ACD6742EBD4609B)/\47997222-1DEF-4C0D-BB4B-E5BA02417DFF\System\Library\CoreServices\boot.efi</string>
OpenCore uses EFI device paths? Interesting. What's the number 2151677985 for?
 

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
7FF00000 is 0xf07f. 0xf07f is not what you want.
1576154969110.png

1576155074351.png

Looks like 7FE00000 sets 10 bits whereas 7FF00000 sets 11 bits. Am I wrong?
What's the number 2151677985 for
That was a mistake. Good catch.
I was asking about the Boot0080 that belongs to UUID A5CE328C*
Code:
13:928 00:054 OCB: Dumping BootOrder
13:981 00:053 OCB: 0 -> Boot0080 = PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x5,0x0,0x0)/HD(2,GPT,165FB544-65FF-4D47-969E-58F13E7BDEB6,0x64028,0x2DC037D8)/VenMedia(BE74FCF7-0B7C-49F3-9147-01F4042E6842,ECB9843C3DB1B6449ACD6742EBD4609B)/\47997222-1DEF-4C0D-BB4B-E5BA02417DFF\System\Library\CoreServices\boot.efi
14:033 00:052 OCB: Predefined list
14:086 00:052 OCB: 0 -> Boot0080 = PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x5,0x0,0x0)/HD(2,GPT,165FB544-65FF-4D47-969E-58F13E7BDEB6,0x64028,0x2DC037D8)/VenMedia(BE74FCF7-0B7C-49F3-9147-01F4042E6842,ECB9843C3DB1B6449ACD6742EBD4609B)/\47997222-1DEF-4C0D-BB4B-E5BA02417DFF\System\Library\CoreServices\boot.efi
14:139 00:053 OCB: 1 -> Boot0081 - failed to read
14:192 00:052 OCB: 2 -> Boot0082 - failed to read
Not sure why I got Boot0080 twice?
 

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
Code:
  [Restored Dec 12, 2019 at 8:26:33 AM]
Last login: Thu Dec 12 08:26:30 on console
➜  ~ csrutil status
System Integrity Protection status: unknown (Custom Configuration).

Configuration:
    Apple Internal: disabled
    Kext Signing: disabled
    Filesystem Protections: disabled
    Debugging Restrictions: disabled
    DTrace Restrictions: disabled
    NVRAM Protections: disabled
    BaseSystem Verification: disabled

This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.
➜  ~ csrutil disable
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
➜  ~ nvram -p
bluetoothInternalControllerInfo    %15%82%ac%05%00%00%11Z%b8%8d%12M_%b9
fmm-computer-name    G5%e2%80%99s Mac Pro
_kdp_ipstr    192.168.1.170
bluetoothActiveControllerInfo    %15%82%ac%05%00%00%00%00%11Z%b8%8d%12M_%b9
SystemAudioVolume    :
SystemAudioVolumeDB    %fa
csr-active-config    %7f%f0%00%00
boot-args    -v -liludbgall liludump=10 debug=0x144 -no_compat_check agdpmode=pikera -wegtree shikigva=64 shiki-id=Mac-7BA5B2D9E42DDD94
EFIBluetoothDelay    %b8%0b
➜  ~ nvram -x -p
<?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>EFIBluetoothDelay</key>
    <data>
    uAs=
    </data>
    <key>SystemAudioVolume</key>
    <data>
    Og==
    </data>
    <key>SystemAudioVolumeDB</key>
    <data>
    +g==
    </data>
    <key>_kdp_ipstr</key>
    <data>
    MTkyLjE2OC4xLjE3MA==
    </data>
    <key>bluetoothActiveControllerInfo</key>
    <data>
    FYKsBQAAAAARWriNEk1fuQ==
    </data>
    <key>bluetoothInternalControllerInfo</key>
    <data>
    FYKsBQAAEVq4jRJNX7k=
    </data>
    <key>boot-args</key>
    <string>-v -liludbgall liludump=10 debug=0x144 -no_compat_check agdpmode=pikera -wegtree shikigva=64 shiki-id=Mac-7BA5B2D9E42DDD94</string>
    <key>csr-active-config</key>
    <data>
    f/AAAA==
    </data>
    <key>fmm-computer-name</key>
    <data>
    RzXigJlzIE1hYyBQcm8=
    </data>
</dict>
</plist>
➜  ~
  [Restored Dec 12, 2019 at 8:35:44 AM]
Last login: Thu Dec 12 08:35:40 on console
➜  ~ nvram -x -p
<?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>EFIBluetoothDelay</key>
    <data>
    uAs=
    </data>
    <key>SystemAudioVolume</key>
    <data>
    Og==
    </data>
    <key>SystemAudioVolumeDB</key>
    <data>
    +g==
    </data>
    <key>_kdp_ipstr</key>
    <data>
    MTkyLjE2OC4xLjE3MA==
    </data>
    <key>bluetoothActiveControllerInfo</key>
    <data>
    FYKsBQAAAAARWriNEk1fuQ==
    </data>
    <key>bluetoothInternalControllerInfo</key>
    <data>
    FYKsBQAAEVq4jRJNX7k=
    </data>
    <key>boot-args</key>
    <string>-v -liludbgall liludump=10 debug=0x144 -no_compat_check agdpmode=pikera -wegtree shikigva=64 shiki-id=Mac-7BA5B2D9E42DDD94</string>
    <key>csr-active-config</key>
    <data>
    B/8=
    </data>
    <key>fmm-computer-name</key>
    <data>
    RzXigJlzIE1hYyBQcm8=
    </data>
</dict>
</plist>
➜  ~ csrutil status
System Integrity Protection status: unknown (Custom Configuration).

Configuration:
    Apple Internal: disabled
    Kext Signing: disabled
    Filesystem Protections: disabled
    Debugging Restrictions: disabled
    DTrace Restrictions: disabled
    NVRAM Protections: disabled
    BaseSystem Verification: disabled

This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.
➜  ~ csrutil disable
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
@joevt Both values give me the same result and still no csrutil disable unless you are in recovery mode
 

joevt

macrumors 604
Jun 21, 2012
6,964
4,259
Code:
➜  ~ csrutil status
    Apple Internal: disabled
    Kext Signing: disabled
    Filesystem Protections: disabled
    Debugging Restrictions: disabled
    DTrace Restrictions: disabled
    NVRAM Protections: disabled
    BaseSystem Verification: disabled


➜  ~ nvram -p
csr-active-config    %7f%f0%00%00

➜  ~ nvram -x -p
    <key>csr-active-config</key>
    <data>
    f/AAAA==
    </data>


➜  ~ nvram -x -p
    <key>csr-active-config</key>
    <data>
    B/8=
    </data>

➜  ~ csrutil status
    Apple Internal: disabled
    Kext Signing: disabled
    Filesystem Protections: disabled
    Debugging Restrictions: disabled
    DTrace Restrictions: disabled
    NVRAM Protections: disabled
    BaseSystem Verification: disabled

@joevt Both values give me the same result and still no csrutil disable unless you are in recovery mode
I don't think csrutil works outside of recovery even if SIP is disabled.

The first value is 0x0000f07f as a 32 bit hex number (since the bytes are stored little endian as 7ff00000)
The second value is 0x0000ff07 as 32 bit hex number or 0x07ff has a 16 bit hex number (it is stored little endian as 07ff). But you didn't see a difference so I could be wrong. I guess I should do some tests on my Mac mini. I don't need SIP disabled on that so I should be able to test each bit separately and try your settings as well.

The Boot0080 info in the log you posted (OpenCore) is only from the EFI variables. Compare it with the one from A5CE328C*. If you posted the dump store as text then I could do it. Use the bootvar command with DevicePathUtil to dump it in macOS.
 

h9826790

macrumors P6
Apr 3, 2014
16,656
8,587
Hong Kong
Hi guys, I have successfully used OC with iMacPro1,1 with a few exceptions:

System Details:
GA z97x-ud7 th with 4690K
Sapphire RX 590 Nitro+ SE
IX2790 5K 27 inch display
NVMe SSD installed with PCIe card as my motherboard doesn't have NVMe slot. This results in only x8 lanes for the video card.
I had to disable iGPU as the system OC/Clover won't work with it enabled. Tried various settings none works - shows allocation error. This is why I disabled it and am using iMacPro as it doesn't have iGPU.

Kexts: AirportBrcmFixup.kext, AppleALC.kext, HibernationFixup.kext, IntelMausi.kext, Lilu.kext, SMCProcessor.kext, SMCSuperIO.kext, USBInjectAll.kext, VirtualSMC.kext, WhateverGreen.kext.

Drivers: ApfsDriverLoader.efi, FwRuntimeServices.efi, VirtualSmc.efi.

1. Under About This Mac > Displays, the display shows as 27-inch (3840x2160). How do I get to show 5K resolution. It is not just cosmetic (wouldn't care if it were), if I keep Safari (or any app) open and reboot, when I log back in, the top part of Safari is offscreen, I can't access any of the top buttons to close or move Safari. I suspect it starts at 4K resolution and switched to 5K as soon as login. Is this because of x8 vs x16?

2. Given that I have a Haswell processor and using iMacPro1,1 do I need any/all of these boot-args lilucpu=10 agdpmod=pikera shikigva=96 shiki-id=Mac-7BA5B2D9E42DDD94.

Just want to confirm that you know this thread is for OpenCore on Mac Pro?
 

codedj

macrumors newbie
Dec 15, 2019
12
7
I misunderstood all this OpenCore discussion to assume these are not real macs. Didn't understand why people were using OC on real macs.

Moved it here https://www.tonymacx86.com/threads/...h264-does-not-support-hevc-hw.240353/page-132

There I learnt that HEVC encoding/decoding is fixed in WhateverGreen 1.3.6 which is not released yet. I tried it and have verified that VideoProc now shows both H264 and HEVC enabled.

If you are up for it, you can build the kext from source code https://github.com/acidanthera/WhateverGreen.
 
Last edited:

h9826790

macrumors P6
Apr 3, 2014
16,656
8,587
Hong Kong
I misunderstood all this OpenCore discussion to assume these are not real macs. Didn't understand why people were using OC on real macs.

Moved it here https://www.tonymacx86.com/threads/...h264-does-not-support-hevc-hw.240353/page-132

There I learnt that HEVC encoding/decoding is fixed in WhateverGreen 1.3.6 which is not released yet. I tried it and have verified that VideoProc now shows both H264 and HEVC enabled.

If you are up for it, you can build the kext from source code https://github.com/acidanthera/WhateverGreen.

Because we can't get HEVC hardware encoding without using Clover or OpenCore.

Also, OpenCore allow us to run Catalina on unsupported Mac "natively" (No need to patch the OS, won't break after OS update, won't break after NVRAM reset...)

Therefore, we started to explorer how to use OpenCore on cMP properly, and what can we achieve by using OpenCore on real Mac.
 
  • Like
Reactions: JedNZ and codedj

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
hi all,
any chance this become a patch that do everything in one step for dumbass morron like me. I would really like to see what kind of acceleration we got in lighroom and in première , because my RX580 is seen but not fully supported.
I don't think we are there yet in fact finding what LILU,WEG patches is the easiest task. But as you noticed we have to manipulate SMBIOS variables to get the HEVC encoding work. So what kexts/frameworks have to be modified we don't know yet. There are also few drawbacks.
The first thing is that changing SMBIOS to imacpro disables all the outputs from the video card but one. Also only one of the cards in a dual setup will have one of the outputs working. I don't know if this is LILU/WEG bug or is it Apple internal.
The second weakness is the missing CPU power management. There is a patch developed by pikeRalpha, but for instance X5690 is missing in the database I sent a request in the GitHub project page adding the correct layout to be included but I doubt anything will change since PikeRalpha works for Apple for some time now. Untill we reach the point where HEVC encoding is enabled without SMBIOS spoofing we can't really integrate it in any automatic patches.
 
  • Like
Reactions: edgerider and cdf

w1z

macrumors 6502a
Aug 20, 2013
692
481
Is there a special config or method to booting the cMP with OC residing on a USB? If I copy the same EFI folder from the USB to the internal EFI partition, OC recognizes the internal macos install and boots it

I tried every possible combination / config I could think off but it just won't recognize the macos installation and all I get is a black screen with a frozen/unresponsive keyboard.

Appreciate any help I can get with my config.plist.
 

Attachments

  • config.txt
    6.3 KB · Views: 147

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
Is there a special config or method to booting the cMP with OC residing on a USB? If I copy the same EFI folder from the USB to the internal EFI partition, OC recognizes the internal macos install and boots it

I tried every possible combination / config I could think off but it just won't recognize the macos installation and all I get is a black screen with a frozen/unresponsive keyboard.

Appreciate any help I can get with my config.plist.
Create a USB installer for OSX and place the EFI folder in the ESP partition. Follow the structure in the manual.
 
  • Like
Reactions: w1z and cdf

w1z

macrumors 6502a
Aug 20, 2013
692
481
Create a USB installer for OSX and place the EFI folder in the ESP partition. Follow the structure in the manual.

Just tried this but OC is now booting the installer instead of the internal Catalina installation.

No problems with the structure of the EFI folder.
 

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
Just tried this but OC is now booting the installer instead of the internal Catalina installation.

No problems with the structure of the EFI folder.
Creating the USB

Creating the USB is simple, all you need to do is format it with GUID partition map. There is no real size requirement for the USB as OpenCore's entire EFI will generally be less than 5MB.

5uTJbgI.png

Formatting the USB
Next, we'll want to mount the EFI partition on the USB with mountEFI.

4l1oK8i.png

mountEFI
You'll notice that once we open the EFI partition, it's empty. This is where the fun begins.

EDeZB3u.png

Empty EFI partition

Base folder structure


To setup OpenCore’s folder structure, you’ll want to grab those files from OpenCorePkg and construct your EFI to look like the one below:

1Ssvqfw.png

base EFI folder
Now you can place your necessary .efi drivers from AppleSupportPkg into the drivers folder and kexts/ACPI into their respective folders.
 
  • Like
Reactions: JedNZ

w1z

macrumors 6502a
Aug 20, 2013
692
481
Creating the USB

Creating the USB is simple, all you need to do is format it with GUID partition map. There is no real size requirement for the USB as OpenCore's entire EFI will generally be less than 5MB.

5uTJbgI.png

Formatting the USB
Next, we'll want to mount the EFI partition on the USB with mountEFI.

4l1oK8i.png

mountEFI
You'll notice that once we open the EFI partition, it's empty. This is where the fun begins.

EDeZB3u.png

Empty EFI partition

Base folder structure


To setup OpenCore’s folder structure, you’ll want to grab those files from OpenCorePkg and construct your EFI to look like the one below:

1Ssvqfw.png

base EFI folder
Now you can place your necessary .efi drivers from AppleSupportPkg into the drivers folder and kexts/ACPI into their respective folders.

Appreciate the lengthy reply and instructions but I already know how to create an ESP partition. You previously said to "Create a USB installer for OSX" which I understood to mean a macos USB installer.

No matter what I try, OC fails to boot my internal/nvme macos installation when residing in an ESP partition on a USB flash drive.
 

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
Appreciate the lengthy reply and instructions but I already know how to create an ESP partition. You previously said to "Create a USB installer for OSX" which I understood to mean a macos USB installer.

No matter what I try, OC fails to boot my internal/nvme macos installation when residing in an ESP partition on a USB flash drive.
Have you tried blessing the opencore.efi? If you have the folder structures correct when using osx installer USB you should have two boot entries on the boot screen:
One for the installer and another one for the EFI boot (which is the one you want). Try my EFI folder. Just put your config file
[automerge]1576666282[/automerge]
Code:
sudo bless --mount /Volumes/EFI --setBoot --file /Volumes/EFI/EFI/OC/OpenCore.efi  --verbose

And SIP disabled.
 

Attachments

  • EFI.zip
    2.2 MB · Views: 128

w1z

macrumors 6502a
Aug 20, 2013
692
481
Have you tried blessing the opencore.efi? If you have the folder structures corrected when using osx installer USB you should have two boot entries on the boot screen:
One for the installer and another one for the EFI boot (which is the one you want). Try my EFI folder. Just put your config file

That's the thing, I don't have boot screen support as I am using a 5700 XT in my cMP. I also tried blessing in multiple ways ie. --mount or --folder as well as with and without --file option
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.