Skip to content
This repository has been archived by the owner on Apr 26, 2020. It is now read-only.

More bugs... #1

Open
vit9696 opened this issue Jul 11, 2019 · 58 comments
Open

More bugs... #1

vit9696 opened this issue Jul 11, 2019 · 58 comments

Comments

@vit9696
Copy link

vit9696 commented Jul 11, 2019

I have just run through Ivy section, and that's what I found:

  1. Renaming ACPI devices is dangerous, and you just stepped on the rake. Using Count = 1 will only replace the first occurrence of the value, effectively breaking most of ACPI tables. This will make Windows unbootable at the very least, and may cause severe issues on macOS as well. Basically this advice is not only wrong, but it violates the recommendations from OpenCore configuration manual:

    In the majority of the cases ACPI patches are not useful and harmful:
    • Avoid renaming devices with ACPI patches. This may fail or perform improper renaming of unrelated devices
    (e.g. EC and EC0), be unnecessary, or even fail to rename devices in select tables. For ACPI consistency it is much
    safer to rename devices at I/O Registry level, as done by WhateverGreen.
    

    The "correct" approach is not to rename anything as it is cosmetics with the only exception of IMEI, IGPU, HDEF, and HDAU, which are handled by WhateverGreen and AppleALC. This will produce much less problems with all operating systems.

  2. can interfere with Firmware so avoid when possible this comment for DisableIOMapping is wrong. On the contrary it does not interfere with the firmware. Should better say use this when you need VT-d support in other operating systems.

  3. not needed for AHCI or NVMe SSDs. It depends. AHCI usually need it, so best to check Trim Status in About Mac → Details → SATA/SAS (check English locale for macOS to be sure with the names).

  4. Needed for seeing your availble drives. Better to reword it show OpenCore UI when booting. Setting to NO will boot the default option. This option is a hack until "Opt" button support is implemented.

  5. ScanPolicy This allow you I suppose it should be 0 allows you. Honestly, it will be better to properly document Security section. Perhaps in a separate chapter, as it is not the best idea for a "quick" setup.

  6. dart=0 does not function with System Integrity Protection enabled, so it is kind of useless. -xcpm is no longer relevant on 10.12 or newer.

  7. Forcibly rewrites NVRAM variables, not needed for us as sudo nvram is prefered but useful for those edge cases Clarify that: Note that Add will not overwrite values already present in NVRAM.

  8. when newer versions are available from OpenCore that's garbage. It just updates, and no version comparison happens.

  9. Forces .efi drivers, change to NO for faster. Should be Automatically connects added UEFI drivers. This is slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load.

  10. ConsoleControl set to YES is needed on most APTIO firmwares, otherwise you may see text output during booting instead of nice Apple logo.

  11. SanitiseClearScreen is really needed on select AMD GPUs on Z370.

  12. RequestBootVarRouting is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc.

@khronokernel
Copy link
Owner

khronokernel commented Jul 12, 2019

@vit9696

  1. Completely missed that I had Count 1 but that doesn't change the fact that it's still incorrect on my part. You say that we shouldn't be renaming devices via ACPI so would you prefer I add that you should make an SSDT based off of these instead?:
    https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EHCx_OFF.dsl
    https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl#L34-L49

  2. Fixed

  3. Fixed

  4. Fixed(though this will need to be updated when OPT is integrated)

  5. Will work on a dedicated chapter for this

  6. Will add note on dart=0 and removed -xcpm

  7. Clarified

  8. Fixed

  9. Fixed

  10. Fixed

  11. Do you happen to know what graphics cores this affects and whether other 300 series chipsets are included? Or if it’s GPU/brand specific

  12. Fixed

Only thing that needs to be updated are images, add chapter on Security Section and the sample config.plists

@vit9696
Copy link
Author

vit9696 commented Jul 12, 2019

@khronokernel

  1. Pretty much. In some (very) rare cases renaming might make sense e.g. Sandy Bridge EHC USB devices, which could not work in USB 3.0 only mode, and conflict with operating system configuration. But in general it is either not needed, or better solutions to actual problems can be found, just like that SSDT you pointed to.

  2. Rechecked. Known bugged configurations include Gigabyte Z170x-UD5 TH with Sapphire Nitro+ RX64 or Radeon Vega FE, Gigabyte Z370-HD3 ASUS GTX 780. All with 4K screens. Most likely the bug is specific to APTIO V.

Sample config.plists is probably a bad idea as config.plist change a lot. But the rest makes some sense. Will ping you when I found more flaws…

@vit9696
Copy link
Author

vit9696 commented Jul 15, 2019

Second pass:

Current issues section is probably mislabeled. An issue is something that needs to be resolved, but we do not plan to make changes here. Kext ordering is a design decision, Z97 and NVMe are unrelated to OC. Last two are mostly fixed by now. This probably wants to be named Highlights or Things to Keep in Mind.

Regarding mountEFI, is it not easier to just use diskutil from Terminal? It is really just diskutil list and then sudo diskutil mount /dev/disk0s1, where 0s1 is the ESP partition as seen in first command output.

MacOS Journaled → HFS+ macOS Journaled is more clear

drivers → Drivers, kexts → Kexts, TOOLS → Tools case matters for vaulting. Also makes sense to fix Sample.plist, although it matters little.

usb map the way it is presented is a bad idea. This kext, UsbInjectAll, reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such. A good idea to add there is CPU PM SSDT (we have it in Docs) and EHC switch off.

Every time clover configurator is mentioned, god decapitates a kitty, please do not.

Never ever put files unused for booting (like create_vault.sh or Docs) to EFI/OC. They may get vaulted. Tools must contain efi files (and their dependencies) only.

s/This section allows us to dynamically rename parts of the DSDT via OpenCore. Since we're not running a real mac, and macOS is pretty particular with how things are named but the maojority of the time these patches are only cosmetic and can be more damadging that useful./This section allows us to dynamically modify parts of the ACPI (DSDT, SSDT, etc.) via OpenCore. macOS usually does not care much about ACPI, so in the majority of the cases you need to do nothing here./

For NormalizeHeaders replace irrelevant for macOS Mojave 10.14 and higher with only relevant for macOS High Sierra 10.13.

Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used.

Workaround for OEM Windows logo not drawing on systems with BGRT tables.

We also add 2 more properties, which are usually unnecessary, as this can be configured in BIOS

this is where you would add USB port… just remove, it is builtin in Quirks.

ExternalDiskIcons makes USB disks internal sometimes, and today is not really needed. For NVMe on Z87 and below you just add built-in property via DeviceProperties.

UIScale 10 is most likely wrong, should be 02 I believe.

UpdateSMBIOSMode add: Use Custom on Dell laptops requiring CustomSMBIOSGuid quirk.

ConnectDrivers, Disabling the quirk makes booting slightly faster

Typos:

  • s/that can called/that can be called/
  • parts in braces need a space in front of the opening brace (like this), similarly to metric suffixes 5 MB, 1 GHz, etc)
  • s/yours requires/it requires/
  • s/GFXutil/gfxutil/
  • s/look like 0xDDCCBBAA/look like DDCCBBAA/
  • many dots are missing in the end of sentences
  • s/glean/clean/
  • s/EFI_GLOBAL_VARIABLE_G/EFI_GLOBAL_VARIABLE_GUID/

@khronokernel
Copy link
Owner

khronokernel commented Jul 15, 2019

@vit9696

Current issues section is probably mislabeled. An issue is something that needs to be resolved, but we do not plan to make changes here. Kext ordering is a design decision, Z97 and NVMe are unrelated to OC. Last two are mostly fixed by now. This probably wants to be named Highlights or Things to Keep in Mind.

Switched to “Things to note about OpenCore”

Regarding mountEFI, is it not easier to just use diskutil from Terminal? It is really just diskutil list and then sudo diskutil mount /dev/disk0s1, where 0s1 is the ESP partition as seen in first command output.

Personal preference, users on the r/hackintosh subreddit show that anywhere you can remove terminal commands can alleviate a lot of accidental issues. (Also I just realized I have “either mountEFI or Clover Configurator.”, will remove Clover Configurator)

MacOS Journaled → HFS+ macOS Journaled is more clear

Reason I have it as “macOS Journaled with GUID partition map” is because that’s what the Disk utility screen shows. Swapping to “HFS+ macOS Journaled” I feel could confuse more users but I'll add a note

drivers → Drivers, kexts → Kexts, TOOLS → Tools case matters for vaulting. Also makes sense to fix Sample.plist, although it matters little.

Fixed, also already removed mention of sample config.plist

usb map the way it is presented is a bad idea. This kext, UsbInjectAll, reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such. A good idea to add there is CPU PM SSDT (we have it in Docs) and EHC switch off.

So how I'm misinterpreting this: You want me to explain more why a USB map is prefered over UsbInjectAll, correct? If so I have fixed this

Every time clover configurator is mentioned, god decapitates a kitty, please do not.

Most if not all mentions should be removed

Never ever put files unused for booting (like create_vault.sh or Docs) to EFI/OC. They may get vaulted. Tools must contain efi files (and their dependencies) only.

Fixed

s/This section allows us to dynamically rename parts of the DSDT via OpenCore. Since we're not running a real mac, and macOS is pretty particular with how things are named but the maojority of the time these patches are only cosmetic and can be more damadging that useful./This section allows us to dynamically modify parts of the ACPI (DSDT, SSDT, etc.) via OpenCore. macOS usually does not care much about ACPI, so in the majority of the cases you need to do nothing here./

Fixed

For NormalizeHeaders replace irrelevant for macOS Mojave 10.14 and higher with only relevant for macOS High Sierra 10.13.

Fixed

Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used.

Fixed

this is where you would add USB port… just remove, it is builtin in Quirks.

My main concern is that generally every new version of macOS requires a new port limit patch wich users may prefer to use over a USB map. Unless how OpenCore implements the port limit patch will always work even on newer versions of macOS, I will add a note that the quirk is the prefered option

We also add 2 more properties, which are usually unnecessary, as this can be configured in BIOS

Fixed

ExternalDiskIcons makes USB disks internal sometimes, and today is not really needed. For NVMe on Z87 and below you just add built-in property via DeviceProperties.

Fixed

UIScale 10 is most likely wrong, should be 02 I believe.

Fixed

UpdateSMBIOSMode add: Use Custom on Dell laptops requiring CustomSMBIOSGuid quirk.

Fixed

ConnectDrivers, Disabling the quirk makes booting slightly faster

Fixed

s/that can called/that can be called/

Fixed

s/GFXutil/gfxutil/

Fixed

s/look like 0xDDCCBBAA/look like DDCCBBAA/

Fixed

many dots are missing in the end of sentences

Thats how I construct the paragraphs, just personal preference but the inconsistency is likely your issue. Will go through and try to address this issue

s/glean/clean/

Glean means to collect/extract

s/EFI_GLOBAL_VARIABLE_G/EFI_GLOBAL_VARIABLE_GUID/

Fixed

Repository owner deleted a comment Jul 15, 2019
@khronokernel
Copy link
Owner

@vit9696 I've also added a section on emulated NVRAM if you want to check to see any issues

@vit9696
Copy link
Author

vit9696 commented Jul 17, 2019

Thanks, the changes are mostly satisfying, making one more pass.

— s/Order of kexts matter/Order of kexts matters/

— s/example ca be/example can be/

— Please note that UEFI drivers are not supported with OpenCore!
This makes no sense to me. What does it mean?

— base EFI folder photo has TOOLS instead of Tools, and this error remains on many photos/lines

— NVRAM guide needs logout hook installation, check the readme.

Ping me when all the issues are addressed as the guide is a bit messed up at the moment.

@khronokernel
Copy link
Owner

@vit9696

s/Order of kexts matter/Order of kexts matters/

Personally don’t see an issue

s/example ca be/example can be/

Fixed

Please note that UEFI drivers are not supported with OpenCore!

Incorrect wording on my part, meant to be “UEFI drivers from Clover are not supported with OpenCore!(ie: EmuVariableUEFI-64)”
The information was found in this comment but checking the DOCS again shows no actual mention of this. Instead seems more as best practice to grab from source instead of using Clover's drivers so unsure if my new wording is even correct. A better way to say this would be "UEFI drivers are not recommended to be used with OpenCore!" but would like clarification if it even matters

base EFI folder photo has TOOLS instead of Tools, and this error remains on many photos/lines

There was only 1 photo I could find which was under “Creating a USB” base EFI. And there was only 1 mention of TOOLS which has been fixed. If you do see anywhere else I will gladly fix

NVRAM guide needs logout hook installation, check the readme.

Fixed but slight issue on my end with interpretation. Do you still need to run the LogoutHook.command separately or can you just run sudo defaults write com.apple.loginwindow LogoutHook /location/LogoutHook/LogoutHook.command and it adds the nvram.plist automatically when you power down?

@vit9696
Copy link
Author

vit9696 commented Jul 25, 2019

UEFI drivers and UEFI drivers from Clover are completely different things. UEFI drivers is a general term, and OpenCore.efi or AppleUiSupport.efi are UEFI drivers (surprise). We do nit recommend the use of Clover UEFI drivers due to various incompatibilities, but it has nothing to do with what you wrote.

You just run sudo defaults write com.apple.loginwindow LogoutHook /location/LogoutHook/LogoutHook.command and it adds the nvram.plist automatically when you power down. This, yes.

@Gengik84
Copy link

Hi @khronokernel
Great work, thx!
regard to verbose.md (hiding verbose), is some cases if we set to YES verbose show correctly.
If we set to NO some part of verbose are hidden.
In this case I show this
2019-08-11 10 45 28
nothing more... and after i see login windows
Regard to Spoof.md why not add whatevergreen boot argument like at "-wegnoegpu" or with properties "disable-external-gpu"?
Thx in advance

@vit9696
Copy link
Author

vit9696 commented Aug 11, 2019

@khronokernel I think emulated NVRAM part wants:

  • DisableVariableWrite to be mentioned
  • to not support native NVRAM be replaced with to have incompatible native NVRAM with macOS

@khronokernel
Copy link
Owner

@vit9696 Thank you for catching the DisableVariableWrite, had added that already elsewhere but forgotten to in emulated NVRAM.

@Gengik84

why not add whatevergreen boot argument like at "-wegnoegpu" or with properties "disable-external-gpu"?

Main reason was that most users who are already using this boot flag shouldn't need to be told to use it for OpenCore as well, but the more I think about it I feel it would make sense to add it. Especially if this guide becomes the defacto for new users(but at that point a lot more info would need to be added but that's a talk for another day). So appreciate the suggestion, will be added to the guide shortly

regard to verbose.md (hiding verbose), is some cases if we set to YES verbose show correctly.
If we set to NO some part of verbose are hidden.

I do apologize but slightly confused on wording, are you saying that even when setting ConsoleControl and ProvideConsoleGop to True still provides you with verbose?

@Gengik84
Copy link

I do apologize but slightly confused on wording, are you saying that even when setting ConsoleControl and ProvideConsoleGop to True still provides you with verbose?

with FwRuntimeServices :
ProvideConsoleGop = yes
ConsoleControl = yes
Yes, I have verbose

@vit9696
Copy link
Author

vit9696 commented Aug 12, 2019

@khronokernel, @Gengik84 is right that this is obviously not enough for most systems. I would strongly suggest you to read the documentation, particularly you need to play closest attention to ConsoleBehaviourOs, ConsoleBehaviourUi, IgnoreTextInGraphics, and SanitiseClearScreen. Documentation for the first one even contains the list of values to try on different firmwares.

@Gengik84
Copy link

@vit9696 Thx :)
I'm referring only to guide, in particular to

Wanting a more clean booting experience with macOS without all that verbose text while booting? Well you need a couple things:
ConsoleControl set to True
ProvideConsoleGop set to True

without all that verbose

For all case, this is not right
I think it is better to specify, as you suggested, so as to avoid misunderstandings and make the guide even better
Thx again for your work and support
It's really appreciated

@khronokernel
Copy link
Owner

@Gengik84 Sorry for the late response, forgot to message saying it's been updated. If there's any other issues, feel free to send it my way

@Gengik84
Copy link

@khronokernel Hi, dont worry :)
i see incorrect DevicePath for audio device in skylake/kabylake/coffelake.md because _ADR for HDAS/HDEF is 0x001F0003 and Path = PciRoot(0x0)/Pci(0x1f,0x3)
PciRoot(0x0)/Pci(0x1b,0x0) is for previous series

@khronokernel
Copy link
Owner

@Gengik84

incorrect DevicePath for audio device

Oh wow, nice catch on that one. Completely flew over me, will update shortly but images will be a bit longer

@Gengik84
Copy link

@khronokernel Thx for your work

will update shortly but images will be a bit longer

Maybe an image for default config.plist is enough, you can inform, explaining to change path because:

_ADR for HDAS/HDEF is 0x001F0003 and Path = PciRoot(0x0)/Pci(0x1f,0x3)
PciRoot(0x0)/Pci(0x1b,0x0) is for previous series

@DWomack
Copy link

DWomack commented Nov 6, 2019

@khronokernel
This isn't a bug, but I couldn't find the right place to let you know...

You and others are really doing a good job with this.

It is really valuable to those like me that are new to OpenCore. The things you people are doing is really amazing.

Dennis

khronokernel pushed a commit that referenced this issue Nov 18, 2019
@vit9696
Copy link
Author

vit9696 commented Jan 12, 2020

Hi, @khronokernel, none of these are needed in OC, as quirks implement all the functionality.

@khronokernel
Copy link
Owner

khronokernel commented Jan 13, 2020

@vit9696 Thank you for that, they're meant to be removed once I clean up a bit more of the guide, I noticed the additional info added for AppleXcpmExtraMsrs and the Emulate section. That was my reason for not adding X79/X99/etc to the guide when I added Skylake-X, so holding off on them for now until I correct it. Thank you for the heads up though, appreciated.

I actually did have a question regarding IncreasePciBarSize, what is the main use for this and how would you know when to use it? The "misconfigured or broken firmware" part leaves me a bit lost and checking your commit in OcSupportPkg for addition comments didn't lead me far.
Did a bit more research, I see what you mean by the part about "misconfigured or broken firmware" though still would like to know what the error generally looks like, just a kernel panic on IOPCIFamily or a stall somewhere?

@vit9696
Copy link
Author

vit9696 commented Jan 13, 2020

@khronokernel I believe on most firmwares it should be resolvable through Above 4G encoding or alike, but on X99 it may be broken regardless. As for the error, it is usually a kernel panic.

@vit9696
Copy link
Author

vit9696 commented Jan 13, 2020

Ah, also, we got several reports on your other guide.

For SSDs I am not positive what is wrong with Samsung 970 series. I own both 970 Pro and 970 EVO Plus (yes, it does require a firmware update) and they are quite stable. For any non-apple NVMe SSD you are recommended to use 07151129's NVMeFix, as it reduces heat and energy consumption. For Intel SSDs, I own both 520 and 530, and they work properly. There was a bug with APFS trim, but it is fixed in some 10.14 release.

For CPUs Catalina still has support for dual-socket chipsets, and there is no change with it. However, there is a bug with AppleIntelMCEReporter driver, which apparently is still being resolved. Currently there is a plist-only kext workaround for it.

@DWomack
Copy link

DWomack commented Jan 13, 2020 via email

@khronokernel
Copy link
Owner

@vit9696 Has been corrected with proper info, thank you

@DWomack Yeah that's gitbook's framework and I can't seem to change the location, but instead I can manually add it to the page at the top under the title. So for every time the specific page has been updated, just update the "last edited" part. Is that what you were thinking or having the "last edited" always be the most recent of all pages?

@DWomack
Copy link

DWomack commented Jan 13, 2020 via email

@DWomack
Copy link

DWomack commented Jan 13, 2020 via email

@filamento
Copy link

Hi, newbie here!

Could you please specify in your guide what's the recommended value for "WriteFlash" in legacy BIOS computers (using emulated nvram)?

Kind regards.

@khronokernel
Copy link
Owner

@vit9696 Sounds good to me, my idea is to have DRM stuff on a separate page and setup an issues tab in the guide for users to report in(I'm sure you don't want random people to be flooding the bug tracker). I can also add the recommendation of igfxfw=2 and such into the Kaby and coffee sections of the guide.

I do have some questions:

  • Is there a specific reason it's only Kaby Lake and newer? My guess would be that the HD 630 and UHD 630 basically the same though curious if there's more to it
  • Best ways to test DRM playback?
    • AppleTV+
    • iTunes/AppleTV movies
    • Netflix in Safari?(As you mentioned in the other thread, Chrome doesn't use hardware but I believe Safari does though)
    • Hulu/AmazonPrime?(Same idea as Netflix)
  • What are some good prerequisites?
    • Hardware acceleration
    • Hardware decoding

Thanks for any pointers you can give.

Also kinda related but not really, have you heard much about Sidecar support on iGPU-less systems? 10.15.0 or .1 broke support partially(iMac19,x boardID was fine) but now it's outright broken. Not really that important but curious if you've heard much or have some tips

@vit9696
Copy link
Author

vit9696 commented Mar 24, 2020

@khronokernel we did a bit more research on the matter, and there actually is no change with the DRM. We indeed can load Apple SpringBoard firmware on IGPUs on at least 9th generation of Intel mobile chipsets (and likely newer), and that dramatically improves IGPU performance. Older chipsets will be unsupported almost certainly due to old ME version. However, PAVP support is still not there and will likely never be: acidanthera/bugtracker#586 (comment). Also, it is best to inject igfxfw rather than use a boot-arg just as usual.

Regarding DRM testing, you can go with this guide. It is a bit outdated, as we were able to figure out that Apple TV can actually be decoded programmatically if forced to run in compatibility mode (FairPlay 1.x) but other than that it is all the same. For IGPU-based configurations you can always use the standard guides (here and here). For the rest just refer to the chart.

I know absolutely nothing about SideCar and am yet to try it.

UPDATE: Actually we can confirm that it works on desktops too and even with 8th gen CPUs. You just need a new chipset (e.g. Z390, B360, H370, H310, etc).

@telepati
Copy link

telepati commented Mar 24, 2020

@vit9696 I think, this GuC thing works better on 10.15.4+ right? Cause, I already tried on 10.15.3 and still Safari freezes and the system locks continue.

Note: Yes I have Polaris Card RX560, Asus Z390 TUF and 9900K

@dreamwhite
Copy link

Just a answer? Will DRM playback ever work on a only-iGPU laptop as my Dell Inspiron 5370 with i5-8250U? I can't watch Netflix in 1080p :'(

@vit9696
Copy link
Author

vit9696 commented Mar 24, 2020

@telepati it does not matter.

@dreamwhite unlikely.

@vit9696
Copy link
Author

vit9696 commented Mar 25, 2020

@khronokernel

"Z390, B360, H370, H310 boards and newer are supported"

that's not correct. DRM (in HDCP mode) is not supported on any IGPU-only configuration, be that old or new, starting from 10.12.3 or so. The only IGPU-only supported DRM configuration was HD 4000 in 10.12.x days.

Easiest way to test this is by playing an iTunes movies or trailer

Should have a note, that FairPlay 1.x encrypted trailers play on any configuration if WhateverGreen patches are properly applied, including IGPU-only configurations. However, FairPlay 1.x encrypted iTunes movies will not play on IGPU-only configurations for longer than 3-5 seconds. They will error soon after that HDCP is unsupported.

Hardware based DRM, found on AppleTV+

It is not necessarily hardware, so better change to Mixed DRM. It is close to FairPlay 1.x, but is a bit more restricted, and can be hardware-based if supported.

AppleTV+ comes with a free trial

You can just open TV.app, choose TV+ → Free Apple TV+ Premieres → Click on any episodes. This will let you test DRM without starting the trial or any kind of registration at all.

Load Apple's own GuC onto the iGPU(only properly supported on Z390, B360, H370, H310 and newer)

This is not directly related. While Apple's GuC is required for hardware DRM to work, you also need to provision PAVP with Apple certificates. We cannot do this, as OEM vendors (e.g. Dell) already provision their devices with their own (or likely Intel) certificates, and provisioning can be done only once.

In theory reprovisioning is possible on Z390 and alike, but you will have to clean the ME region (requires SPI flasher and a lot of thought), and then use a tool named named PavpProvision from OpenCorePkg. To use the tool you will also need to manually edit the source code with provisioning certificates from Apple firmware. I.e. this is pretty much impossible for even advanced users.

shikigva | Data | <50 00 00 00>
For disabling WEG/Shiki's DRM patches

This is wrong. It will not disable Shiki patches. shikigva=80 (aka 0x50) forces the use of AMD GPU for iTunes/TV.app (bit 16) and for Safari (bit 64). All in all, you should not inject anything related to shikigva with IGPU-only configurations. Disabling Shiki patches is shikigva=128 (<80 00 00 00>), but this will not work on anything but Xeons with AMD GPUs.

Note that shikigva args are meant to be placed in the boot-args section, do not mix shikigva flags together

That's garbage, you can inject shikigva in any GPU, IGPU or dGPU. The only thing is that you must ensure that you do that into one GPU, otherwise the first found will be used, and it is indeterministic.

Basically, what you have for IGPU-only (shikigva=80, igfxfw=2) actually applies to AMD+IGPU Z390+. And for < Z390 it will be shikigva=80 without igfxfw=2.

@khronokernel
Copy link
Owner

@vit9696

  1. Corrected
  2. Corrected
  3. Corrected
  4. Corrected
  5. Corrected
  6. Corrected
  7. Corrected

That's garbage, you can inject shikigva in any GPU, IGPU or dGPU. The only thing is that you must ensure that you do that into one GPU, otherwise the first found will be used, and it is indeterministic.

I was referencing boot-args specifically as to throwing a bunch in there, but has been cleared up

Everything should be good now but I'll omit it from the gitbook for now and wait for validation just to be safe: DRM page

@vit9696
Copy link
Author

vit9696 commented Mar 25, 2020

DRM is broken for iGPU-only systems
This started from around 10.12.3

This is not correct. It has never worked on systems with HSW+. It was possible to fix it with IVB CPUs till 10.12.2 via Shiki. Afterwards it became permanently broken for them too.

FairPlay 2.x/3.x: Hardware based DRM, found in Netflix, Amazon Prime
Note: Requires either an iGPU or newer AMD GPU to work (Polaris+)

This is not correct. The only setup it works with are AMD GPUs Polaris+. IGPU has nothing to do with it. There were some 7th generation AMD GPUs with hardware DRM decoding, but from what I remember none worked with streaming services, only iTunes movies.

Note: Requires either an iGPU or newer AMD GPU to work (Polaris+)

Requires physically absent IGPU (Xeon CPU) or newer AMD GPU to work (Polaris+). When IGPU is physically absent it is possible to force Apple TV+ into FairPlay 1.x mode.

It is possible to fix DRM on Z390, B360, H370, H310 boards and newer but this requires a clean ME region(requires SPI flasher) and PavpProvision to manually edit the source code with provisioning certificates from Apple firmware. This is extremely complicated, hardware breaking if not done correctly so not a practical route to go down for most users

Do not include this. Firstly because it is theorising, though likely, secondly because no single user will be able to make any sense of it, putting aside doing.

For AMD dGPU + iGPU + Z390, B360, H370, H310 or newer are recommended to use the following under…

In my opinion, it is mixing up unrelated things. Write something like below.

Find your configuration in the chart. If none fits, you are out of luck. If Shiki Mode is empty, you are done. Otherwise insert shikigva with the provided value into any installed GPU via DeviceProperties → Add.

You do not need to use <data> with OpenCore. Could just use data, like this:

Снимок экрана 2020-03-26 в 01 50 31

In my opinion, do not mix igfxfw with the DRM stuff, they are related on ME side, but not really helpful to the user.

@Mateo1234454545
Copy link

@khronokernel as an experiment we may want to start recommending trying to setup Apple GuC firmware on Kaby Lake and newer. See acidanthera/bugtracker#748 (comment). We need some stats on how many machines this works, and whether PAVP enabling/Shiki disabling also works. We will update WhateverGreen guides accordingly soon as well.

Easiest to diagnose GuC is by checking IGPU frequencies in Intel PowerGadget or by checking boot log to contain Apple Scheduler reference, like this:

kernel: (AppleIntelKBLGraphics) [IGPU] Graphics Firmware Version: 2.14.0.0
kernel: (AppleIntelKBLGraphics) [IGPU] Graphics Firmware Version: 2.14.0.0
kernel: (AppleIntelKBLGraphics) [IGPU] Graphics accelerator is using scheduler: Apple Firmware
kernel: (AppleIntelKBLGraphics) [IGPU] Graphics accelerator is using scheduler: Apple Firmware

With latest weg commits and boot arg igfxfw=2 doesn't seem to load GUG.
2020-03-26 08:12:05.934141+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::populateAccelConfig(IOAccelConfig*)> [IGPU] Graphics Scheduler Preemption Disabled! 2020-03-26 08:12:05.934145+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::populateAccelConfig(IOAccelConfig*)> [IGPU] Graphics Scheduler Preemption Disabled!
2020-03-26 08:12:05.934146+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::populateAccelConfig(IOAccelConfig*)> [IGPU] Will NOT fallback to host-side scheduling if graphics firmware fails to load 2020-03-26 08:12:05.934149+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::populateAccelConfig(IOAccelConfig*)> [IGPU] Will NOT fallback to host-side scheduling if graphics firmware fails to load
2020-03-26 08:12:05.934150+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::populateAccelConfig(IOAccelConfig*)> [IGPU] Scheduler Tail Coalescing Enabled. 2020-03-26 08:12:05.934152+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::populateAccelConfig(IOAccelConfig*)> [IGPU] Scheduler Tail Coalescing Enabled.
2020-03-26 08:12:05.934153+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::populateAccelConfig(IOAccelConfig*)> [IGPU] Graphics firmware disabled via NVRAM 2020-03-26 08:12:05.934155+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::populateAccelConfig(IOAccelConfig*)> [IGPU] Graphics firmware disabled via NVRAM
2020-03-26 08:12:05.945208+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Scheduler: Multiple channel indexes per command streamer 2020-03-26 08:12:05.945214+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Scheduler: Multiple channel indexes per command streamer
2020-03-26 08:12:05.945216+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Scheduler: Process CSB using HWS. 2020-03-26 08:12:05.945219+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Scheduler: Process CSB using HWS.
2020-03-26 08:12:05.945220+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Scheduler: PM notify enabled 2020-03-26 08:12:05.945222+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Scheduler: PM notify enabled
2020-03-26 08:12:05.945224+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Graphics Address: PPGTT, Separate Address Space 2020-03-26 08:12:05.945226+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Graphics Address: PPGTT, Separate Address Space
2020-03-26 08:12:05.945228+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] MultiForceWake Enabled: Using 3D Driver 2020-03-26 08:12:05.945230+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] MultiForceWake Enabled: Using 3D Driver
2020-03-26 08:12:05.945231+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Render Compression Enabled. 2020-03-26 08:12:05.945234+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Render Compression Enabled.
2020-03-26 08:12:05.945235+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Render Compression for IOSurface is Enabled. 2020-03-26 08:12:05.945238+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Render Compression for IOSurface is Enabled.
2020-03-26 08:12:05.946175+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIGScheduler2::initPriorityConfig()> [IGPU] Scheduler Throttle Cap = 100ms. 2020-03-26 08:12:05.946178+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIGScheduler2::initPriorityConfig()> [IGPU] Scheduler Throttle Cap = 100ms.
2020-03-26 08:12:05.950346+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Graphics accelerator is using scheduler: Host Priority Scheduler 2020-03-26 08:12:05.950352+0200 localhost kernel[0]: (AppleIntelKBLGraphics) <AppleIntelKBLGraphicsIntelAccelerator::start(IOService*)> [IGPU] Graphics accelerator is using scheduler: Host Priority Scheduler
2020-03-26 08:12:06.001748+0200 localhost kernel[0]: (AppleGraphicsPowerManagement) <AppleGraphicsPowerManagement`AGPMController::createAGPMClass(AGPMController*, IOService*, IOService*)> [AGPM Controller] build gpuDict by GPU IGPU.
debug_20940.zip

@dhinakg
Copy link
Collaborator

dhinakg commented Mar 26, 2020

@vit9696 is it correct that the chart was made with Vega in mind? If I understand correctly, if you have Polaris Ellesmere+IGPU and you are using an iMac/Mac Mini SMBIOS, you should use shikigva=16 instead of shikigva=80, because FairPlay 2.x is broken on these AMD cards, correct?

@vit9696
Copy link
Author

vit9696 commented Mar 26, 2020

@dhinakg depends, starting with 10.15.4 shikigva=80 works fine on Polaris, at least for me.

@telepati
Copy link

telepati commented Mar 26, 2020

@dhinakg depends, starting with 10.15.4 shikigva=80 works fine on Polaris, at least for me.

It works for me too with RX560+IGPU enabled on BIOS SMBIOS 19,1. No freezing or system lock too.

@dhinakg
Copy link
Collaborator

dhinakg commented Mar 26, 2020

Interesting - would the best course of action just be to link to the chart and provide a brief explanation on how to use it, or provide an example for a sample hardware configuration too?
cc: @khronokernel

@vit9696
Copy link
Author

vit9696 commented Mar 26, 2020

Yes, I believe it is the best route to do it. A brief explanation on how to use and 1-2 example hardware configurations.

@telepati
Copy link

@dhinakg here is mine maybe this not right way cause I don't know how to inject shikigva that's why I am using as a boot-args;

Asus TUF Z390, 9900K, RX560

BIOS setting; --> IGPU enabled
SMBIOS 19,1

Screen Shot 2020-03-26 at 11 29 51 PM

Screen Shot 2020-03-26 at 11 30 55 PM

With these settings Apple TV and Netflix (on Safari of course) working without any problem.

@dhinakg
Copy link
Collaborator

dhinakg commented Mar 26, 2020

@vit9696 I have just pushed some changes to the DRM page on the drm-fix branch, please look over it and make sure it is correct. I mostly unsure about the loading Apple GuC part, as I haven't seen much information on it for desktops.

@telepati
Copy link

@dhinakg first picture does not show exactly which PciRoot?
Screen Shot 2020-03-27 at 03 50 33

@telepati
Copy link

Also, you can add the guide this for the people can easily find their Device Locations

IGPU device locations PciRoot, gfxutil may be used: gfxutil -f IGPU

https://github.com/acidanthera/gfxutil/releases

@vit9696
Copy link
Author

vit9696 commented Mar 27, 2020

@dhinakg looks more or less good to me. Maybe fix some grammar, and done.

@telepati
Copy link

telepati commented Mar 27, 2020

Hey, @vit9696 what is for these two; is it for everyone? Cause on my system if I add 'agdpmode' I can't make a boot monitor goes to sleep. I don't think 'agdpmode' useful for everyone.

Screen Shot 2020-03-27 at 6 49 51 PM

I am using this way and everything working. Boot Ok. Netflix on Safari Ok. AppleTV Ok.

Screen Shot 2020-03-27 at 7 18 44 PM

@vit9696
Copy link
Author

vit9696 commented Mar 27, 2020

Why either of the two should be for everyone? First is a comment, second is for myself. Use the docs to help you.

@dhinakg
Copy link
Collaborator

dhinakg commented Mar 28, 2020

@vit9696 Just pushed some grammar changes. If there are no technical issues with this I'll merge into master.
Just to confirm, you need Skylake or up + 300-series chipset (14nm) or newer, right? It is the same for laptops too, right? (just for my curiosity)

@vit9696
Copy link
Author

vit9696 commented Mar 28, 2020

Yes, that's the requirement, but even that is not a guarantee. Better make it clear, as we already got a false alarm (acidanthera/bugtracker#790). Looks good otherwise.

@vit9696
Copy link
Author

vit9696 commented Apr 3, 2020

With 0.5.7 you will need to update several properties in BooterQuirks to still have Windows and Linux booting as well as improve macOS security on some platforms.

  1. Firmwares that previously required ShrinkMemoryMap (mainly HEDT and APTIO IV) will have to replace that with RebuildAppleMemoryMap.
  2. Firmwares with memory attributes table (MAT) support (mainly Z370 and newer, but sometimes found in Z170/Z270 too) will want RebuildAppleMemoryMap and SyncRuntimePermissions enabled and EnableWriteUnprotector disabled. Disabling EnableWriteUnprotector may not work for some, however.

@khronokernel
Copy link
Owner

Oh thank you for the info, much appreciated

@rottenpants466
Copy link

rottenpants466 commented Apr 7, 2020

In my case my MB: Gigabyte Z370 AORUS Gaming K3 (with latest firmware) wont boot with EnableWriteUnprotector disabled and RebuildAppleMemoryMap & SyncRuntimePermissions enabled

My question is: Do i only enable EnableWriteUnprotector and leave RebuildAppleMemoryMap and SyncRuntimePermissions disabled or do i enable all 3 quirks?

Thank you all

@Juan-VC-gh
Copy link

Can @vit9696 briefly explain how is CPU PM handled with the AppleCpuPmCfgLock and AppleXcpmCfgLock kernel quirks enabled? My laptop has CFG-Lock and seems I will never be able to get it unlocked so I wonder if cpu pm is worse than with write access to msr 0xe2 and I am curious how is it managed with the register locked.

@tachigami
Copy link

Gigabyte Z370 HD3P, 8700K, OC5.7, 10.15.3

EnableWriteUnprotector=yes
RebuildAppleMemoryMap=yes/no
SyncRuntimePermissions=yes/no

boots just fine but having

EnableWriteUnprotecto=no
RebuildAppleMemoryMap=yes
SyncRuntimePermissions=yes 

the system hangs right after startup disk changed in the system settings

@dhinakg
Copy link
Collaborator

dhinakg commented Apr 25, 2020

This repo is no longer used.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests