khronokernel / Opencore-Vanilla-Desktop-Guide

Host for files for the OpenCore Vanilla Desktop Guide
https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/
287 stars 70 forks source link

More bugs... #1

Open vit9696 opened 5 years ago

vit9696 commented 5 years ago

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 commented 5 years ago

@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 commented 5 years ago

@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 commented 5 years ago

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:

khronokernel commented 5 years ago

@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

khronokernel commented 5 years ago

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

vit9696 commented 5 years ago

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 commented 5 years ago

@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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

@khronokernel I think emulated NVRAM part wants:

khronokernel commented 5 years ago

@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 commented 5 years ago

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 commented 5 years ago

@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 commented 5 years ago

@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 commented 5 years ago

@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 commented 5 years ago

@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 commented 5 years ago

@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 commented 5 years ago

@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 commented 5 years ago

@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

vit9696 commented 4 years ago

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

khronokernel commented 4 years ago

@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 commented 4 years ago

@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 commented 4 years ago

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 commented 4 years ago

I really appreciate the work you are doing with the Guide. I consult it several times a week.

I don’t know if this mod can be done or maybe it is a part of the gitbook framework.

At the bottom of each page there is:

"Last updated xxxx days ago”

If you could also have that at the top of the page it would help. No need to scroll down to check when the last changes were done.

Thanks for listening.

Dennis

khronokernel commented 4 years ago

@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 commented 4 years ago

I would like to see when each page was last updated. If it is a lot more work, don’t worry about it. I’ll put my button on happy.

Again, thank you for making the guide.

Dennis

Sent from my iPhone

On Jan 13, 2020, at 3:45 PM, Mykola Grymalyuk notifications@github.com wrote:

 @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?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

DWomack commented 4 years ago

This is probably a gitbook framework issue, but when I look at the pages on an iPhone with latest iOS, I see:

Last updated -3 or such.

Dennis

Sent from my iPhone

On Jan 13, 2020, at 4:11 PM, Dennis Womack dennis.womack@gmail.com wrote:

I would like to see when each page was last updated. If it is a lot more work, don’t worry about it. I’ll put my button on happy.

Again, thank you for making the guide.

Dennis

Sent from my iPhone

On Jan 13, 2020, at 3:45 PM, Mykola Grymalyuk notifications@github.com wrote:

 @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?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

filamento commented 4 years ago

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.

vit9696 commented 4 years ago

@khronokernel as an experiment we may want to start recommending trying to setup Apple GuC firmware on Kaby Lake and newer. See https://github.com/acidanthera/bugtracker/issues/748#issuecomment-601472727. 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
khronokernel commented 4 years ago

@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:

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 commented 4 years ago

@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: https://github.com/acidanthera/bugtracker/issues/586#issuecomment-603019943. 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 commented 4 years ago

@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 commented 4 years ago

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 commented 4 years ago

@telepati it does not matter.

@dreamwhite unlikely.

vit9696 commented 4 years ago

@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 commented 4 years ago

@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 commented 4 years ago

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 commented 4 years ago

@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) <AppleIntelKBLGraphics`IntelAccelerator::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) <AppleIntelKBLGraphics`IntelAccelerator::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) <AppleIntelKBLGraphics`IntelAccelerator::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) <AppleIntelKBLGraphics`IntelAccelerator::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) <AppleIntelKBLGraphics`IntelAccelerator::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) <AppleIntelKBLGraphics`IntelAccelerator::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) <AppleIntelKBLGraphics`IntelAccelerator::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) <AppleIntelKBLGraphics`IntelAccelerator::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 commented 4 years ago

@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 commented 4 years ago

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

telepati commented 4 years ago

@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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

@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 commented 4 years ago

@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 commented 4 years ago

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

telepati commented 4 years ago

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 commented 4 years ago

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

telepati commented 4 years ago

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 commented 4 years ago

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