Jump to content
vit9696

Lilu — kext and process patcher

356 posts in this topic

Recommended Posts

Advertisement

Hi vit9696.

 

First of all. Thanks for your work!

I just want to know how to patch framework/custom kexts via Lilu, like previously AppleALC did through UserPatches.plist, although this may be not reliable in some cases...

 

Thanks in advance

 

Edit: I found something at Shiki.

But I'm curious that what some args mean like 'Skip' 'Section' etc...  :)

Edited by PMheart

Share this post


Link to post
Share on other sites

Thanks for give this perfect way to patch framework on macOS.

 

I hope this can patch the 4k displays in coredisplay.framework but i don't how to write the plugin,

Share this post


Link to post
Share on other sites

Hi vit9696.

 

First of all. Thanks for your work!

I just want to know how to patch framework/custom kexts via Lilu, like previously AppleALC did through UserPatches.plist, although this may be not reliable in some cases...

 

Thanks in advance

 

Edit: I found something at Shiki.

But I'm curious that what some args mean like 'Skip' 'Section' etc...  :)

Hi, as for kexts best examples are lvs's kexts (IntelGraphicsFixup and friends), they are reasonably simple and offer a good brief example of what one needs.

As for frameworks currently it is only safe to patch frameworks within a certain process, and yes, Shiki is generally a good example for it.

This line is basically all you need: https://github.com/vit9696/Shiki/blob/master/Shiki/kern_start.cpp#L39

Share this post


Link to post
Share on other sites

Hi, as for kexts best examples are lvs's kexts (IntelGraphicsFixup and friends), they are reasonably simple and offer a good brief example of what one needs.

As for frameworks currently it is only safe to patch frameworks within a certain process, and yes, Shiki is generally a good example for it.

This line is basically all you need: https://github.com/vit9696/Shiki/blob/master/Shiki/kern_start.cpp#L39

That's amazing ! But now it's a little late... Time for some sleep. Will check later.

 

 

Sent from my iPhone 7 using Tapatalk

Share this post


Link to post
Share on other sites

That's amazing ! But now it's a little late... Time for some sleep. Will check later.

 

 

Sent from my iPhone 7 using Tapatalk

Alright, I am usually busy and rarely visit insanely, so feel free to pm if you have concrete issues to investigate :).

Share this post


Link to post
Share on other sites

Plug-ins by @lvs1974

Don't set Lilu and these plug-ins in SLE or LE, it won't work. Use kexts injection from Clover.

 

IntelGraphicsFixup Superseded by WhateverGreen

Fixes boot logo on all known Intel Graphics.

Fixes PAVP freezes on Intel Azul, Skl, Kbl Graphics.
Fixes display initialization issues for Azul, Skl, Kbl Graphics.
 
NvidiaGraphicsFixup Superseded by WhateverGreen
Fixes an issue in AppleGraphicsDevicePolicy.kext so that we could use any ProductName, without the usual hang with a black screen.

Modifies macOS to recognize NVIDIA's web drivers as platform binaries. This resolves the issue with transparent windows without content, which appear for applications that use Metal and have Library Validation enabled. Common affected applications are iBooks and Little Snitch Network Monitor, though this patch is universal and fixes them all.

Injects IOVARendererID into GPU properties (required for Shiki-based solution for non-freezing Intel and/or any discrete GPU)

NVidiaAudio device to add connector-type, layout-id and other properties for HDMI audio (allows audio for HDMI, DP, Digital DVI ports)

 

Enable 3 & 25 mode hibernation on certain hardware.
Patching of IOPCIFamily to avoid hang & black screen after resume. (Option)
(Use the last FakeSMC.kext from @slice)
 
Supports AirPort_Brcm4360, AirPort_BrcmNIC and AirPort_BrcmNIC_MFG
Implements patch for passing chip id checking, in <=10.12 it's required for successful driver starting
Implements patch for "Third Party Device" (returns vendor name "Apple")
Implements patch for removing of white-list check
 
Edited by Andrey1970

Share this post


Link to post
Share on other sites

@vit9696

 

first of all, thank you for great work.

i want to report one. i can't use applelife site and russian lang very well

 

lvs1974's HibernationFixup is good working. i checked all. but i found one bug, after wakeup hibernation mode, i can't control brightness key. in setting, I can change it directly with the mouse.

 

i tried both dsdt patch and ssdt injection methods. but failed. I wonder if this is normal or not.

 

sorry.

 

thanks in advance

Share this post


Link to post
Share on other sites

@vit9696

 

first of all, thank you for great work.

i want to report one. i can't use applelife site and russian lang very well

 

lvs1974's HibernationFixup is good working. i checked all. but i found one bug, after wakeup hibernation mode, i can't control brightness key. in setting, I can change it directly with the mouse.

 

i tried both dsdt patch and ssdt injection methods. but failed. I wonder if this is normal or not.

 

sorry.

 

thanks in advance

@Sherlocks

Could you try to perform the following steps:

 

- Remove HibernationFixup.kext

- Set hibernatemode to 29 (you will have to set it manually in /Library/Preferences/com.apple.PowerManagement.[your UUID].plist).

- Put you PC into hibernation

- Turn on your PC and resume from hibernation

- Check whether you can control a brightness using keyboard

Share this post


Link to post
Share on other sites

@Sherlocks

Could you try to perform the following steps:

 

- Remove HibernationFixup.kext

- Set hibernatemode to 29 (you will have to set it manually in /Library/Preferences/com.apple.PowerManagement.[your UUID].plist).

- Put you PC into hibernation

- Turn on your PC and resume from hibernation

- Check whether you can control a brightness using keyboard

 

hello lvs1974. i'm glad to meet you in here.

 

i tested hibernation 29. brightness control is no problem.

 

3/25 can't control brightness with hiberantion mode.

EmuVariableUefi-64.efi + lilu.kext + your hiberantion kext(1.1.4) + rc script + -hbfx-dump-nvram.

Share this post


Link to post
Share on other sites

hello lvs1974. i'm glad to meet you in here.

 

i tested hibernation 29. brightness control is no problem.

 

3/25 can't control brightness with hiberantion mode.

EmuVariableUefi-64.efi + lilu.kext + your hiberantion kext(1.1.4) + rc script + -hbfx-dump-nvram.

Hello Sherlocks, thanks for greetings!

 

So, you don't have a hardware NVRAM...

 

There is only one difference when we use HibernationFixup: nvram.plist is saved.

This means that clover will restore all saved nvram variables.

 

Could you do this:

- repeat one hibernation/resume (EmuVariableUefi-64.efi + lilu.kext + your hiberantion kext(1.1.4) + rc script + -hbfx-dump-nvram)

- after resume copy nvram.plist from your boot disc to EFI partition and remove clover rc.shutdown script (or just clear executable attribute for it using chmod -x)

- shutdown your PC

- turn on again

- check whether you can control a brightness using keyboard

 

I just want to be sure that something stored in nvram.plist causes this issue.

Share this post


Link to post
Share on other sites

Hello Sherlocks, thanks for greetings!

 

So, you don't have a hardware NVRAM...

 

There is only one difference when we use HibernationFixup: nvram.plist is saved.

This means that clover will restore all saved nvram variables.

 

Could you do this:

- repeat one hibernation/resume (EmuVariableUefi-64.efi + lilu.kext + your hiberantion kext(1.1.4) + rc script + -hbfx-dump-nvram)

- after resume copy nvram.plist from your boot disc to EFI partition and remove clover rc.shutdown script (or just clear executable attribute for it using chmod -x)

- shutdown your PC

- turn on again

- check whether you can control a brightness using keyboard

 

I just want to be sure that something stored in nvram.plist causes this issue.

I dont understand all steps.

I have only nvram file in ESP.

1.implement combination(nvram+lilu+~).

2.remove both nvram file(copy to desktop) and rc script

3.reboot

4.boot osx, go hibernation.

5.enter hibernationed disk

6.test

 

Sorry my english

Right?

 

 

Add. Above steps, no need hibernation mode

Also i cant see debug log with bootarg for debug in kernel log. Is it normal?

 

Okay i understand you want.

First. restore nvram with hibernation mode(cant control brightness)

Two. Remove rcscript(avoid to save new nvram file) and bootarg.

Tree. Reboot.

Four. After login, test brightness with nvram(cant brightness)

 

 

나의 LG-F410S 의 Tapatalk에서 보냄

Share this post


Link to post
Share on other sites

Okay i understand you want.

First. restore nvram with hibernation mode(cant control brightness)

Two. Remove rcscript(avoid to save new nvram file) and bootarg.

Tree. Reboot.

Four. After login, test brightness with nvram(cant brightness)

 

 

나의 LG-F410S 의 Tapatalk에서 보냄

Correct!

 

Do you have nvram.plist which causes this issue (step Four)?

Could you attach and post it here?

Can you reproduce this issue after every new restart?

Share this post


Link to post
Share on other sites

Correct!

 

Do you have nvram.plist which causes this issue (step Four)?

Could you attach and post it here?

Can you reproduce this issue after every new restart?

 

 

no more reproduce this issue after reboot(step4)

 

i have only nvram.plist in ESP(nvram file gernerated from rc script. you already know).

 

but i see your hibernationfix makes nvram in Root. i noticed after rcscript remove. because rc script automately remove nvram file in root to avoid dummy or filevault2

 

so i take a nvram from Root. 

 

Since there are two nvram files, something seems to be causing a problem(not sure).
 
In hibernation 29, nvram files are always present on ESP partitions.
 
thanks in advance

nvram.zip

Share this post


Link to post
Share on other sites

 

no more reproduce this issue after reboot(step4)

 

i have only nvram.plist in ESP(nvram file gernerated from rc script. you already know).

 

but i see your hibernationfix makes nvram in Root. i noticed after rcscript remove. because rc script automately remove nvram file in root to avoid dummy or filevault2

 

so i take a nvram from Root. 

 

Since there are two nvram files, something seems to be causing a problem(not sure).
 
In hibernation 29, nvram files are always present on ESP partitions.
 
thanks in advance

 

Yes, HibernationFixup creates nvram.plist in the root folder of boot disk.

There's no any problem with two nvram.plist, because Clover chooses the newest one (checks modification time).

So, you need to get nvram.plist from the root folder and post it here.

Share this post


Link to post
Share on other sites

Yes, HibernationFixup creates nvram.plist in the root folder of boot disk.

There's no any problem with two nvram.plist, because Clover chooses the newest one (checks modification time).

So, you need to get nvram.plist from the root folder and post it here.

 

okay

i attached file on reply above.

both nvram file in ESP and Root

Share this post


Link to post
Share on other sites

okay

i attached file on reply above.

both nvram file in ESP and Root

I don't see a big difference...

 

Could you try to remove SMCHelper.efi and repeat the same actions?

 

And after that could you try attached FakeSMC & CPUSensors instead of installed on your system? 

HWSensors.5.2.678.pkg.zip

Share this post


Link to post
Share on other sites

I don't see a big difference...

 

Could you try to remove SMCHelper.efi and repeat the same actions?

 

And after that could you try attached FakeSMC & CPUSensors instead of installed on your system? 

 

strange issue resolved now.

 

hmm..

 

both SMCHelper.efi and FakeSMC & CPUSensors cases, no luck. still can't control brightness except volume up & down.

 

 

1:999  0:000  Use origin smbios table type 1 guid.

1:999  0:000  PrepareHibernation:
1:999  0:000      read prefs \Library\Preferences\com.apple.PowerManagement.plist status=Success
1:999  0:000      using default sleep image name = \private\var\vm\sleepimage
1:999  0:000      returning previously calculated offset: 2A76255000
1:999  0:000   SleepImageOffset: 2A76255000
2:000  0:000  02 01 0C 00 D0 41 03 0A 00 00 00 00 01 01 06 00 | .....A..........
2:000  0:000  00 17 03 12 0A 00 01 00 00 00 00 00 04 04 1A 00 | ................
2:000  0:000  32 00 41 00 37 00 36 00 32 00 35 00 35 00 30 00 | 2.A.7.6.2.5.5.0.
2:000  0:000  30 00 30 00 00 00 7F FF 04 00                   | 0.0.......
2:000  0:000  boot-image before: PciRoot(0x0)\Pci(0x17,0x0)\Sata(0x1,0x0,0x0)\2A76255000
2:000  0:000  DeleteBootOption: Boot0082
2:000  0:000   Boot0082 deleted
2:000  0:000  DeleteFromBootOrder: 0082
2:000  0:000  BootOrder: 7: Boot0007, Boot000C, Boot0006, Boot0005, Boot0008, Boot0009, Boot000B
2:000  0:000  Not found
2:000  0:000  Options 0082 was not deleted: Not Found
2:000  0:000   IOHibernateRTCVariables found - will be used as boot-switch-vars
2:002  0:002  Custom boot is disabled
2:002  0:000  Closing events for wake

Share this post


Link to post
Share on other sites

strange issue resolved now.

 

hmm..

 

both SMCHelper.efi and FakeSMC & CPUSensors cases, no luck. still can't control brightness except volume up & down.

Don't quite understand: what is the issue has been resolved?

What do you mean?

Share this post


Link to post
Share on other sites

Don't quite understand: what is the issue has been resolved?

What do you mean?

Q.what do you mean?

A.i can't suddenly use hibernation mode 3 and 25. Only hold black screen. I dont know exactly why happen. I just return my vanilla setting. And try your hibernation setting(kext, bootarg, rcscript) again. Then i got hibernation mode.

 

 

Brigtness control is still no luck on any setting(remove SMCHelper. Use your FakeSMC)

 

Between 29 and 3, can i check something? Example. Debug log or others.

 

나의 LG-F410S 의 Tapatalk에서 보냄

Share this post


Link to post
Share on other sites

Q.what do you mean?

A.i can't suddenly use hibernation mode 3 and 25. Only hold black screen. I dont know exactly why happen. I just return my vanilla setting. And try your hibernation setting(kext, bootarg, rcscript) again. Then i got hibernation mode.

 

 

Brigtness control is still no luck on any setting(remove SMCHelper. Use your FakeSMC)

 

Between 29 and 3, can i check something? Example. Debug log or others.

 

나의 LG-F410S 의 Tapatalk에서 보냄

You can also try hibernate mode 59.

Debug logs are useless here.

Also you can try to set standby and autopoweroff to 0 in pmset.

 

No more ideas.

Probably you have some dedicated ACPI method in DSDT to control a brightness.

Probably it has something common with embedded controller.

Share this post


Link to post
Share on other sites

You can also try hibernate mode 59.

Debug logs are useless here.

Also you can try to set standby and autopoweroff to 0 in pmset.

 

No more ideas.

Probably you have some dedicated ACPI method in DSDT to control a brightness.

Probably it has something common with embedded controller.

Thanks.

I dont know exactly why happen this problem. So just found and report it you.

Because i like debug and report.

 

Thank you for your help

Have a great day.

 

 

나의 LG-F410S 의 Tapatalk에서 보냄

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By headkaze
      Framebuffer patching in Mojave
      Binary patching framebuffers using KextsToPatch in Clover is no longer a viable method in Mojave for Skylake and above. Now you need to use Lilu + WhateverGreen.
       
      Not just for Mojave
      This method of framebuffer patching is not only required for Mojave we recommend it for all previous and future releases of macOS.
       
      Coffee Lake Users
      Please note that the new WhateverGreen will not work with fake Kaby Lake platform-id's. You will need to have either macOS 10.14 Beta 4 (18A336e) or macOS High Sierra 10.13.6 (17G2112). The latter is a special build only available to MacBookPro15,1 or MacBookPro15,2 board id's. You can create a macOS High Sierra 10.13.6 (17G2112) installer by running installinstallmacos.py. (Update: vit9696 added back ability to fake Kaby Lake platform-id's)
       
      Lilu + WhateverGreen
      WhateverGreen is going to replace all the other video patching plugins for Lilu (it currently has merged WhateverGreen, IntelGraphicsFixup, NvidiaGraphicsFixup, Shiki and CoreDisplayFixup). Others will likely follow (such as AppleALC, HibernationFixup and IntelGraphicsDVMTFixup). This is aiming to be the all-in-one solution for video.
       
      Preliminary
      1. Remove:
      - FakePCIID_Intel_HD_Graphics
      - IntelGraphicsFixup
      - NvidiaGraphicsFixup
      - CoreDisplayFixup
      - Shiki
      2. Turn off all graphics injections in Clover:
      - config.plist/Graphics/Inject/ATI=NO
      - config.plist/Graphics/Inject/Intel=NO
      - config.plist/Graphics/Inject/NVidia=NO
      - config.plist/Graphics/ig-platform-id=
      - config.plist/Devices/FakeID/IntelGFX=

      3. Disable DSDT Clover fixes:
      - AddHDMI
      - FixDisplay
      - FixIntelGfx
      - AddIMEI
      4. Disable UseIntelHDMI
      5. Remove boot argument: -disablegfxfirmware
      6. Remove any IGPU and HDMI entries from:
      - config.plist/Devices/Arbitrary
      - config.plist/Devices/Properties
      - config.plist/Devices/AddProperties
      7. Remove any IGPU and HDMI related SSDT and DSDT from:
      - CLOVER/ACPI/patched
      8. Renaming GFX0 -> IGPU
      - WhateverGreen will do this automatically (see caveat below)
      - Be aware that WhateverGreen does not rename all instances of GFX0 -> IGPU but should be okay in most cases
      - You may need to include Clover GFX0 -> IGPU rename for other kexts or ACPI patching that require it
       
      Compile Lilu + WhateverGreen
      Download WhateverGreen. Make sure you place the debug version of Lilu into the root of WhateverGreen before you compile. Install Lilu and WhateverGreen kext's into the usual place. Compile WhateverGreen as debug if you want to view debug output.
       
      Having trouble compiling?
      If you're having trouble compiling you can download the official release binaries or download my (unsupported) build_lilu.sh shell script and run it in a folder to download and build Lilu + WhateverGreen using Xcode automatically. I recommend you try the debug versions first (place them into Clover's EFI/Clover/kexts/Other folder).
       
      Get the device path of your IGPU:
      Download and use the gfxutil tool like so:
      $ ./gfxutil IGPU = PciRoot(0x0)/Pci(0x2,0x0) ig-platform-id
      For the AAPL,ig-platform-id (AAPL,snb-platform-id for Sandy Bridge) entry Clover requires this value to be in Data format so you need to reverse the bytes. So if you want your platform-id to be 0x3EA50009 first reverse the bytes (0900A53E) then use Xcode's plist editor to add the values to Clover's config.plist.

       
      What ig-platform-id should I use for my system?
      You should choose one that is the closest match to your system. I recommend you do some research on this before choosing one. See post #2 for available options. More info can be found here.
       
      You can determine the generation of your CPU by the first digit after the hyphen.
      Examples:
      - Intel(R) Core(TM) i5-2760QM (Gen 2)
      - Intel(R) Core(TM) i7-5257U CPU @ 2.70GHz (Gen 5)
      - Intel(R) Core(TM) m3-6Y30 (Gen 6)
      - Intel(R) Core(TM) i5-8350U (Gen 8)
       
      Spoofing Intel CPU Gen
      If you need to spoof a different Intel CPU generation you can use the lilucpu=N boot flag. The N refers to the following Intel generations:
      4    SandyBridge 5    IvyBridge 6    Haswell 7    Broadwell 8    Skylake 9    KabyLake 10   CoffeeLake To spoof a CPU you will need to set a valid device-id in your GPU entry in Devices/Properties for the appropriate Intel generation.
       
      Eg. Spoofing Skylake (lilucpu=8 boot flag with device-id=0x16190000), Kaby Lake (lilucpu=9 boot flag with device-id=0x12590000).
       
      Here are some recommended frames:
       
      Gen 2: Sandy Bridge (Intel HD Graphics 2000/3000)
      - S/L/E/AppleIntelSNBGraphicsFB.kext
      - Support started with OS X 10.7.x and ended with macOS 10.13.6
      - Metal support is not available
      - device-id: 0x0102 0x0106 0x010A 0x0112 0x0116 0x0122 0x0126
      - AAPL,snb-platform-id (desktop): 0x00030010 (default)
      - AAPL,snb-platform-id (laptop): 0x00010000 (default)
       
      Gen 3: Ivy Bridge (Intel HD Graphics 2500/4000)
      - S/L/E/AppleIntelFramebufferCapri.kext
      - Support started with OS X 10.8.x
      - device-id: 0x0152 0x0156 0x0162 0x0166
      - AAPL,ig-platform-id (desktop): 0x0166000A (default), 0x01620005
      - AAPL,ig-platform-id (laptop): 0x01660003 (default), 0x01660009, 0x01660004
       
      Gen 4: Haswell (Intel HD Graphics 4200-5200)
      - S/L/E/AppleIntelFramebufferAzul.kext
      - Support started with OS X 10.9.x
      - device-id: 0x0D26 0x0A26 0x0A2E 0x0D22 0x0412
      - AAPL,ig-platform-id (desktop): 0x0D220003 (default)
      - AAPL,ig-platform-id (laptop): 0x0A160000 (default), 0x0A260005 (recommended)
       
      Gen 5: Broadwell (Intel HD Graphics 5300-6300)
      - S/L/E/AppleIntelBDWGraphicsFramebuffer.kext
      - Support started with OS X 10.10.2
      - device-id: 0x0BD1 0x0BD2 0x0BD3 0x1606 0x160E 0x1616 0x161E 0x1626 0x1622 0x1612 0x162B
      - AAPL,ig-platform-id (desktop): 0x16220007 (default)
      - AAPL,ig-platform-id (laptop): 0x16260006 (default)
       
      Gen 6: Skylake (Intel HD Graphics 510-580)
      - S/L/E/AppleIntelSKLGraphicsFramebuffer.kext
      - Support started with OS X 10.11.4
      - device-id: 0x1916 0x191E 0x1926 0x1927 0x1912 0x1932 0x1902 0x1917 0x193B 0x191B
      - AAPL,ig-platform-id (desktop): 0x19120000 (default)
      - AAPL,ig-platform-id (laptop): 0x19160000 (default)
       
      Gen 7: Kaby Lake (Intel HD Graphics 610-650)
      - S/L/E/AppleIntelKBLGraphicsFramebuffer.kext
      - Support started with macOS 10.12.6
      - device-id: 0x5912 0x5916 0x591B 0x591C 0x591E 0x5926 0x5927 0x5923 0x87C0
      - AAPL,ig-platform-id (desktop): 0x59160000 (default)
      - AAPL,ig-platform-id (laptop): 0x591B0000 (default)
       
      Gen 8: Coffee Lake (Intel UHD Graphics 630)
      - S/L/E/AppleIntelCFLGraphicsFramebuffer.kext
      - Support started with macOS 10.13.6 (17G2112) / 10.14 beta 4 (18A336e)
      - device-id: 0x3E9B 0x3EA5 0x3EA6 0x3E92 0x3E91 0x3E98
      - AAPL,ig-platform-id (desktop): 0x3EA50000 (default), 0x3E9B0007 (recommended)
      - AAPL,ig-platform-id (laptop): 0x3EA50009 (default)
       
      Framebuffer Patching
      WhateverGreen does most of the work automatically for you and in most cases you do not need any extra Framebuffer Patching. At the minimum though you should choose an ig-platform-id suitable for your system and place it in config.plist/Devices/Properties like this:

      Here are some reasons why you might need extra Framebuffer Patching:
      - Setting DVMT for those who can't set it above 32 MB in BIOS (framebuffer-stolenmem / framebuffer-fbmem)
      - Setting higher VRAM for 4K users who experience graphical glitches (framebuffer-unifiedmem)
      - Disabling eGPU (disable-external-gpu)
      - Enable pixel clock patch for 4K support (enable-hdmi20)
      - Disabling connectors to enable sleep (framebuffer-pipecount / framebuffer-portcount / framebuffer-conX-type=-1)
      - Removing CNConnectorAlwaysConnected flag for eDP laptop screens on < 10.13.6 (framebuffer-con0-flags=0x00000090)
      - Changing connector types to match your systems ports (framebuffer-conX-type)
       
      Framebuffer Patching Types
      We have three different types of patches:
       
      1. Arbitrary (Recommended)
      framebuffer-patch-enable (required to enable below) framebuffer-framebufferid (optional; defaults to current platform-id) (all below are optional) framebuffer-mobile framebuffer-pipecount framebuffer-portcount framebuffer-memorycount framebuffer-stolenmem framebuffer-fbmem framebuffer-unifiedmem framebuffer-cursormem (Haswell only) framebuffer-camellia framebuffer-flags framebuffer-conX-enable (required to enable below) framebuffer-conX-index framebuffer-conX-busid framebuffer-conX-pipe framebuffer-conX-type framebuffer-conX-flags 2. All Data
      framebuffer-conX-enable (required to enable below) framebuffer-conX-alldata 3. Find / Replace
      framebuffer-patchX-enable (required to enable below) framebuffer-patchX-framebufferid (optional; defaults to current platform-id) framebuffer-patchX-find framebuffer-patchX-replace framebuffer-patchX-count (optional; defaults to 1) You should place your patches in config.plist/Devices/Properties in Clover config.plist.
       
      Here are some example patches:
      - 32MB BIOS, 19MB stolen (framebuffer) 9MB fbmem (cursor) 2048MB unifiedmem (vram)

       
      - Pipe / Port Count 3 to 2
      - Connector 1 DP to HDMI
      - Connector 2 Disable

       
      Here is an example of the All Data method:

       
      Here is an example of the Find / Replace method:

       
      Framebuffer Dumps
      There are two ways to dump your framebuffer data (both require WhateverGreen + Lilu debug versions):
       
      1. Using -igfxdump boot flag to dump IGPU framebuffer kext to /AppleIntelFramebuffer_X_Y (root of your boot drive)
       
      There are several ways of reading this dump:
      - Using 010 Editor along with the IntelFramebuffer.bt template
      - Using Hackintool File->Open menu
       
      2. Using -igfxfbdump boot flag to dump native and patched framebuffer table to ioreg at IOService:/IOResources/WhateverGreen
       
      There are several ways of reading this dump:
      - Using dump_platformlist.sh shell script
      - Using Hackintool File->Import->IOReg Dump menu
       
      3. Using Hackintool Framebuffer->macOS 10.14 menu
       
      Adjusting the brightness on a laptop
      1. Method 1
      Enable Clover DSDT fix AddPNLF. Enable SetIntelBacklight and SetIntelMaxBacklight. A specific value is not necessary - it will be automatically injected according to the processor installed.
      2. Method 2
      Use this ACPI table: SSDT-PNLF.dsl SSDT-PNLF.aml
      Do not use both methods at the same time!
       
      Digital Audio (HDMI / DVI / DP)
      To enable digital audio it is necessary to set the necessary properties and, usually, patch the connectors.
      To enable audio in general and HDMI in particular use WEG along with AppleALC.kext.
      On 10.10.5 and above, WEG automatically changes the connector-type of DP (00040000) to HDMI (00080000) if no custom patches are used.
      The actual connection may be of any type (HDMI / DVI / DP), but for the digital audio to function the connector-type must explicitly be HDMI.
       
      VGA support
      In most cases with Intel Skylake and newer it works by default.
      For Ivy Bridge and possibly other generations there are the options to patch your connectors with the following:
      06020000 02000000 30000000 // Option 1
      06020000 01000000 30000000 // Option 2
      On OS X 10.8.2 and newer it is impossible to have VGA on Ivy Bridge systems.
      Hot-plugging VGA usually does not work.
      In case this doesn't help - there are no other known solutions at this time.
       
      EDID
      EDID is usually correctly identified, so no actions are required. In rare cases, EDID needs to be injected manually.
      An EDID dump can be obtained, for example, with Linux. The correct EDID must be put into *AAPL00,override-no-connect* property for IGPU, where the second 0 stands for the display number.
      In some cases the EDID dump may be incompatible with macOS and leads to distortions. For some EDID in such cases you can use this script, which corrects a provided EDID and saves it to your desktop.
       
      HDMI in UHD resolution with 60 fps
      Add the enable-hdmi20 property to IGPU, otherwise you will get a black screen. Or instead of this property use the boot-arg -cdfon
       
      Disablng a discrete graphics card
      Add the disable-external-gpu property to IGPU. Or instead of this property, use the boot-arg -wegnoegpu
       
      Fix the invalid maximum link rate issue on some laptops (Dell XPS 15 9570, etc.)
      Add the enable-dpcd-max-link-rate-fix property to IGPU, otherwise a kernel panic would happen due to a division-by-zero. Or instead of this property, use the boot-arg -igfxmlr.
      You could also manually specify a maximum link rate value via the dpcd-max-link-rate for the builtin display.
      Typically use 0x14 for 4K display and 0x0A for 1080p display. All possible values are 0x06 (RBR), 0x0A (HBR), 0x14 (HBR2) and 0x1E (HBR3). If an invalid value is specified, the default value 0x14 will be used instead. If this property is not specified, same as above.  
      Fix the infinite loop on establishing Intel HDMI connections with a higher pixel clock rate on Skylake, Kaby Lake and Coffee Lake platforms
      Add the enable-hdmi-dividers-fix property to IGPU or use the -igfxhdmidivs boot argument instead to fix the infinite loop when the graphics driver tries to establish a HDMI connection with a higher pixel clock rate, for example connecting to a 2K/4K display with HDMI 1.4, otherwise the system just hangs (and your builtin laptop display remains black) when you plug in the HDMI cable.  
      1. General Notes
      For those who want to have "limited" 2K/4K experience (i.e. 2K@59Hz or 4K@30Hz) with their HDMI 1.4 port, you might find this fix helpful. For those who have a laptop or PC with HDMI 2.0 routed to IGPU and have HDMI output issues, please note that this fix is now succeeded by the LSPCON driver solution, and it is still recommended to enable the LSPCON driver support to have full HDMI 2.0 experience.  
      (You might still need this fix temporarily to figure out the connector index of your HDMI port. See the LSPCON section below.)
      LSPCON driver support to enable DisplayPort to HDMI 2.0 output on IGPU
      1. Brief Introduction
      Recent laptops (Kaby Lake/Coffee Lake-based) are typically equipped with a HDMI 2.0 port. This port could be either routed to IGPU or DGPU, and you can have a confirmation on Windows 10. Intel (U)HD Graphics, however, does not provide native HDMI 2.0 output, so in order to solve this issue OEMs add an additional hardware named LSPCON on the motherboard to convert DisplayPort into HDMI 2.0.
      LSPCON works in either Level Shifter (LS) or Protocol Converter (PCON) mode. When the adapter works in LS mode, it is capable of producing HDMI 1.4 signals from DisplayPort, while in PCON mode, it could provide HDMI 2.0 output. Some onboard LSPCON adapters (e.g. the one on Dell XPS 15 9570) have been configured in the firmware to work in LS mode by default, resulting a black screen on handling HDMI 2.0 connections.
      Starting from version 1.3.0, WhateverGreen now provides driver support for the onboard LSPCON by automatically configuring the adapter to run in PCON mode on new HDMI connections, and hence solves the black screen issue on some platforms.
       
      2. Before you start
      LSPCON driver is only applicable for laptops and PCs with HDMI 2.0 routed to IGPU. LSPCON driver is necessary for all newer platforms unless the new IGPU starts to provide native HDMI 2.0 output. Supported Intel Platform: Skylake, Kaby Lake, Coffee Lake and later.
      Skylake Case: Intel NUC Skull Canyon; Iris Pro 580 + HDMI 2.0 with Parade PS175 LSPCON.
      Coffee Lake Case: Some laptops, e.g. Dell XPS 15 9570, are equipped with HDMI 2.0 and Parade PS175 LSPCON. If you have confirmed that your HDMI 2.0 is routed to IGPU and is working properly right now, you don't need to enable this driver, because your onboard LSPCON might already be configured in the firmware to work in PCON mode.
      3. Instructions
      Dump your kernel log and you should also be able to see something simillar to lines below.
       
      // When you insert the HDMI 2.0 cable igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB0] called with controller at 0xffffff81a8680000 and framebuffer at 0xffffff81a868c000. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB0] No LSPCON chip associated with this framebuffer. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB0] Will call the original method. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB0] Returns 0x0. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] called with controller at 0xffffff81a8680000 and framebuffer at 0xffffff81a869a000. igfx @ (DBG) SC:   LSPCON::probe() DInfo: [FB2] Found the LSPCON adapter: Parade PS1750. igfx @ (DBG) SC:   LSPCON::probe() DInfo: [FB2] The current adapter mode is Level Shifter (DP++ to HDMI 1.4). igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] LSPCON driver has detected the onboard chip successfully. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] LSPCON driver has been initialized successfully. igfx @ (DBG) SC: LSPCON::getMode() DInfo: [FB2] The current mode value is 0x00. igfx @ (DBG) SC: LSPCON::getMode() DInfo: [FB2] The current mode value is 0x00. igfx @ (DBG) SC: LSPCON::getMode() DInfo: [FB2] The current mode value is 0x00. igfx @ (DBG) SC: LSPCON::getMode() DInfo: [FB2] The current mode value is 0x01. igfx @ (DBG) SC: LSPCON::setMode() DInfo: [FB2] The new mode is now effective. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] The adapter is running in preferred mode [Protocol Converter (DP++ to HDMI 2.0)]. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] Will call the original method. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] Returns 0x0. // When you remove the HDMI 2.0 cable igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB0] called with controller at 0xffffff81a8680000 and framebuffer at 0xffffff81a868c000. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB0] No LSPCON chip associated with this framebuffer. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB0] Will call the original method. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB0] Returns 0x0. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] called with controller at 0xffffff81a8680000 and framebuffer at 0xffffff81a869a000. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] LSPCON driver (at 0xffffff802ba3afe0) has already been initialized for this framebuffer. igfx @ (DBG) SC: LSPCON::setModeIfNecessary() DInfo: [FB2] The adapter is already running in Protocol Converter (DP++ to HDMI 2.0) mode. No need to update. igfx @ (DBG) SC: LSPCON::wakeUpNativeAUX() DInfo: [FB2] The native AUX channel is up. DPCD Rev = 0x12. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] Will call the original method. igfx @ (DBG) SC:     GetDPCDInfo() DInfo: [FB2] Returns 0x0. Additionally, you can find these properties injected by the driver under the corresponding framebuffer.
      (Only available in DEBUG version)
       
      fw-framebuffer-has-lspcon indicates whether the onboard LSPCON adapter exists or not.
      fw-framebuffer-preferred-lspcon-mode indicates the preferred adapter mode. 1 is PCON, and 0 is LS.
       
      Debug Output
      To get debug output from Lilu use the -liludbgall liludump=60 boot flags. You will need to compile Lilu and WhateverGreen as debug for both of these flags to work. Log files should be located at /var/log/Lilu_*.
       
      To view debug paste the following into Terminal (weglog.txt will output to your home directory):
      log show --predicate 'process == "kernel" AND (eventMessage CONTAINS "WhateverGreen" OR eventMessage CONTAINS "Lilu")' --style syslog --source --last boot >weglog.txt Getting Help

      To help the users of this forum diagnose issues with your configuration please generate a Lilu debug log and then run gen_debug.sh to generate a folder of debug files you can attach to a forum post requesting help.

      Credits
      - vit9696 and lvs1974 for WhateverGreen (Full Credits) and Lilu (Full Credits)
      - Andrey1970 for his guide on applelife.ru
      - RehabMan for all data patching method, ioreg framebuffer dump and other contributions
       


    • By monw3d
      hey everybody
       
      as title said lilu causing very long boot 5-6 mins on SSD
      my EFI is up to date and set properly, only usb3 not working looking for kext
       
      OS 10.14.5
      my mobo p61a-d3 with i5 2400
      when -liluoff is used bood time is under 30 seconds
       
      i have tried lilu 1.2.6 to 1.3.3 same results
       
      how can i get lilu bootlog?
      i dont know how to solve this problem
       
      edit - usb3 fixed and working
    • By noisegate
      Hi,
       
      I use AppleALC v1.3.5, I can see the device in system info but no sound. Any idea?
       
      Thanks!
       
    • By olvko
      As I found no binary kext for DiskArbitrationFixup Lilu plugin from https://github.com/Goldfish64/DiskArbitrationFixup, I compiled current version. Attached below, as it may be useful for other people.
       
      This Lilu plug-in disables error "The disk you inserted was not readable by this computer" after macOS boot in case you have eg. Linux partitions in the same computer.
       
      Compiled under macOS 10.14.3 without debugging symbols against Lilu 1.3.4 headers. Requires Lilu.kext (https://github.com/acidanthera/Lilu) alongside to work.
       
      I do not give any warranty for its work and I am not an author of original code.
      DiskArbitrationFixup-08032019.zip
    • By poles89
      Hi guys,
       
      Though native graphics acceleration is supported on i3 from Mojave, I'm not able to manage to get it.
       
      This is my system configuration :
      Motherboard:  Asus Prime H370-Plus
      CPU: i3-8100 (UHD 630)
      OS: Mojave 10.14.2
       
      I'm trying every possible way to get full graphics acceleration. But whatever I try it shows only 4MB video memory or leads to Kernal Panic. Here are some ways I have tried so far:
       
      Prerequisites: 
      Installed latest Lilu+WEG on L/E. set DMVT prealloc to 64MB on bios.  
      Option 1: IntelGFX-> 0x3E928086, ig-platform-id-> 0x3E9B0007, Inject Intel = true. Output:  Kernal Panic
      Option 2: Blank IntelGFX, blank ig-platform-id, Inject Intel = false Output:  Kernal Panic
      Option 3:  IntelGFX-> 0x3E928086, ig-platform-id-> 0x5912000, Inject Intel = true.  Output: Booted Successfully but no graphics acceleration.
                     I knew that ig-platform-id-> 0x5912000 doesn't work in mojave and its works only for high sierra but I set this because with this ig-platform-id I can boot. Another way I can boot it by
                     setting invalid Fake IntelGFX value like 0x12345678.
      Option 4:  Downloaded Intel FBPatcher & followed this guide. But as I opened the app, its shows like this:
       
                     
                    
                     It clearly indicates it neither can detect Intel CPU generation nor GPU memory (currently shows 0 MB). I changed to different PlatformId from the drop down but no improvement. Anyway I
                     applied a patch with SMBIOS ->Macmini8,1 by someione's recommendation . I attached a config file (config_fbpather.plist) for this. Output:  Kernal Panic
       
      I have tried the upper mentioned methods with SMBIOS like  iMac14,2 / iMac18[1,2,3]  and Macmini8,1. I'm using HDMI port for display output. Now I don't know whats wrong with theses methods but maybe someone can help me to figure out this problem. I have also attached those config.plist files.
       
      Thanks in advance.
       
      config_fakeid_0x3E928086.plist
      config_fbpatcher.plist
      config_fbpatcher_with_device_id.plist
      config_platform-id_0x59120000.plist
×