Jump to content

Clover Change Explanations


172 posts in this topic

Rev 3661

 

Patches by BuildVersion:

 

Following Micky1979's idea about to be more strict/specific filtering patches by OS BuildVersion (MatchBuild) instead of OS ProductVersion (MatchOS). Since MatchBuild is an "unique" value, this will simply overwrites other unmatched BuildVersion even OS ProductVersion was matched. Applied to "KextsToPatch" & "KernelToPatch". From example below it will ignore other Sierra (10.12) BuildVersions (ex: 16A238m/16A239j) other than specified MatchBuild (16A254g):

 

 

  Reveal hidden contents

 

 

KernelToPatch:

 

With "KernelToPatch" will give Clover users the ability to patch current kernel with their own patterns onthefly. For example: to propose some "new" kernel patches after big OS update (like OS Sierra introduced yesterday) without needing to wait for Clover updates, and maybe alot of other purposes. ** This may lead Clover cannot find internal kernel patch patterns if they already replaced by your custom patterns, so use with caution (or disable from GUI if anything goes wrong). Config examples:

 

 

  Reveal hidden contents

 

 

Sample logs:

 

 

  Reveal hidden contents

 

post-1101532-0-13125500-1469689420_thumb.png

Edited by cecekpawon
  • Like 6

Rev 3663

 

Prune long vertical scroll. Adjust the number of rows to prune from "theme.plist":

<key>Theme</key>
<dict>
  <key>Layout</key>
  <dict>
    <key>PruneScrollRows</key>
    <integer>5</integer>
  </dict>
</dict>

post-1101532-0-39780400-1469777472_thumb.png

post-1101532-0-81879800-1469777477_thumb.png

  • Like 3

Rev 3669, 3670

Graphical checkbox in Clover menu (coded by Needy)

 

Screen Shot 2016-08-01 at 12.57.57.png

  • Like 6

Rev 3679

 

Experimental: Size matter, screenshot as PNG instead of BMP. Inspired by mr. Coderush "CrScreenshotDxe". Maybe useful for other PNG encoding purposes. Activate by "-D LODEPNG".

 

Rev 3681

 

Hover icons, for both 1st & 2nd row:

 

Clover will search any icons with suffix "_hover.(ext)" & use it as hovered state.
Applied to: os_*, func_*, tool_* icons. Ex: func_about_hover.png, os_mac_hover.png, tool_shell_hover.png.

 

Fixed icon format:

 

One extension for all. Ex: If user has specified an ext (Icon->Format) like "png", then Clover will ignore any other extensions including default "icns". Valid values: icns, png, bmp (untested).

<key>Theme</key>
<dict>
  <key>Badges</key>
  <dict>
    <key>Inline</key>
    <false/>
    <key>OffsetX</key>
    <integer>0</integer>
    <key>OffsetY</key>
    <integer>0</integer>
    <key>Scale</key>
    <integer>16</integer>
    <key>Show</key>
    <true/>
    <key>Swap</key>
    <false/>
  </dict>
  <key>Icon</key>
  <dict>
    <key>Format</key>
    <string>png</string>
  </dict>
</dict>

Example: based on blacktype theme by xenatt, vol icon taken from metal theme by Slice.

 

EDIT (Sat Feb 17 17:12:06 2018): Current hover icons being reverted, so it will no longer exists.

blacktype.zipUnavailable

Edited by cecekpawon
  • Like 5
  • 2 weeks later...

Rev 3698

Exclude ICNS and BMP graphics format.

All artist have to use only PNG graphics. In fact this is true now and I can reduce Clover size.

 

Embedded refit font is replaced now by PNG font "hellfire-9W". Is there other propositions?

Rev 3706

Embedded font can be Black or White as set in theme.plist.

		<key>Font</key>
		<dict>
			<key>Type</key>
			<string>Black</string>
		</dict>

Rev 3712

Built with ./ebuild.sh -D CHECK_FLAGS

 

This feature change a method for Details menu called by press Space in main menu

Screen Shot 2016-08-18 at 12.43.26.png

 

I will accept propositions for other useful boot-args to be included here:

debug

npci

-alcbeta

...

after some discussion.

  • Like 4
  • 4 weeks later...

Rev 3729 by Needy

new submenu for CSR

scroll for Help
radio button for TextOnly

 

Now you can set SIP bits in additional menu in CloverGUI

Screen Shot 2016-09-12 at 14.42.15.png

 

 

Rev 3733

It was my mistake setting nvda_drv=1 flag as boot-args. No! It is NVRAM variable nvda_drv that can have a value "1".

So I make new config value

	<key>SystemParameters</key>
	<dict>
		<key>NvidiaWeb</key>
		<true/>
	</dict>

This value will switch macOS to use Nvidia WEB drivers instead of system one.

There is also GUI switch

Screen Shot 2016-09-12 at 14.46.20.png

Please test and report.

 

PS. For system

For system 10.12 (and up?) there is NVRAM variable  "nvda_drv" taking a symbolic value '1'.

  • Like 10

Rev 3737
We can fake our EDID to be like Apple's one.
Also changes in config.plist (old config also supported)

	<key>Graphics</key>
	<dict>
		<key>EDID</key>
		<dict>
			<key>Custom</key>
			<data>AP///////wAGECGSAAAAAAASAQOAIRV4CunVmVlTjigmUFQAAAABAQEBAQEBAQEBAQEBAQEB3iGgcFCEHzAgIFYAS88QAAAY3iGgcFCEHzAgIFYAS88QAAAAAAAA/gBXNjU3RwAxNTRXUDEKAAAA/gAjMz1IZYSq/wIBCiAgAJo=</data>
			<key>Inject</key>
			<true/>
			<key>VendorID</key>
			<string>0x1006</string>
			<key>ProductID</key>
			<string>0x9221</string>
		</dict>

See, VendorID = 0x1006 is Apple

  • Like 4

Rev 3744 -3748

New boot-args to choose in Details menu


CHAR16* ArgOptional[NUM_OPT] = {
  L"arch=i386",
  L"arch=x86_64",
  L"-v ",
  L"-s ",
  L"-x ",
  L"nv_disable=1",
  L"slide=0",
  L"darkwake=0",
  L"-xcpm",
  L"-gux_no_idle",
  L"-gux_nosleep",
  L"-gux_nomsi",
  L"-gux_defer_usb2",
  L"keepsyms=1",
  L"debug=0x100",
  L"kextlog=0xffff",
  L"-alcoff",
  L"-shikioff",
  L"nvda_drv=1"
};

Rev 3748

partially reverted commit 3733

 

We found that for systems up to ElCapitan 10.11.6 there was boot-args "nvda_drv=1" to switch on Nvidia WEB drivers. If absent then system drivers used.

But for Sierra there is NVRAM variable "nvda_drv" that take a value of string "1".

 

Since this revision you can check this point in Details menu and got both variable changed, for 10.x and for 10.12.

  • Like 6

Rev 3755

New look for options menu.

It became possible because of previous commits

Screen Shot 2016-09-16 at 13.21.11.png

  • Like 7
  • 3 weeks later...

Rev 3787

Introduce SMCHelper efi driver.

 

It is not a replacement for FakeSMC.kext, it is a helper for it.

It works as follow

1. FakeSMC (my version 3.4, I don't know if Kozlek wants to add same functionality) catches all system events like "SMC key write" and store them into NVRAM. Hardware or emulated.

2. After reboot Clover >=3787 will read NVRAM (or nvram.plist) and gather all SMC keys into own stack.

example

1:882  0:000  === [ Dump SMC keys from NVRAM ] ==========================
1:882  0:000  found AppleSMC protocol
1:886  0:003     fakesmc-key-LsBA-ui8:90 
1:886  0:000     fakesmc-key-NTOK-ui8:01 
1:886  0:000     fakesmc-key-NATi-ui16:00 00 
1:886  0:000     fakesmc-key-NATJ-ui8:00 
1:886  0:000     fakesmc-key-CLKH-{clh:00 00 70 80 00 01 19 40 
1:886  0:000     fakesmc-key-LSSS-ui16:02 00 
1:888  0:001     fakesmc-key-CLKT-ui32:00 01 3D 87 
1:889  0:000     fakesmc-key-MSDW-ui8:00 

3. When we start a system boot.efi may ask for the SMC protocol and keys

->LocateProtocol(gAppleSMCProtocolGuid, 0, 0/CB592D78) = Success

4. Those keys can be used by boot.efi for Hibernation wake or for FileVault or else.

5. I am not sure if those keys should be reported again for FakeSMC. At this moment no.

 

 

Rev 3791

Fix zero pointer dereferencing.

The bug was introduced in commit 3590  :shock: , so we have 200 non-working revisions from 3590 up to 3790.

Details

+    SelectionImages[4]->HasAlpha = TRUE;

But this image exists only with BootCampStyle else there is NULL.

So mov 1, @18h where there is legacy interrupt table.

My legacy computer worked but didn't sleep. My UEFI computer seems not affected.

I see many messages about Clover not working, black screen etc. 

I think in most cases 3791 should work again.

  • Like 14
  • 3 weeks later...

Rev 3808

Added a new submenu into Clover GUI for suite related audio options.

- In this first commit can be handled boolean ResetHDA and AFGLowPowerState options

 

Rev 3847

Extends and update existing nVidia card list.

 

Rev 3848

- Extends recently created Audio tuning submenu with the ability to change the already provided

layout-id from config.plist

- The number of finded HDA Controller now are been showed with his Vendor and Device ID

- for both Audio and Graphics submenu a minus typo was correct using ternary logic

- GFX_MANUFACTERER has been renamed into HRDW_MANUFACTERER (the same manufacter struct is used for both Graphics and Audio)

Thx to Micky1979, Jolly and gengik84 for the test.

(more work is needed... the next step is move all the related HDA stuff from device_inject into a dedicated 'class', add harcoded name for the Controller and finally retrive the Codec values)

  • Like 5

Rev 3876 and older

Making modules and settings for the FileVault2 possibility.

 

Rev 3877

Exclude AppleEvent, OSInfo, AppleGraphicsConfig as they are embedded into Clover.

  • Like 3

Rev 3879
Skylake support, by goodwin_c.


	<key>CPU</key>
	<dict>
		<key>HWPEnable</key>
		<true/>
	</dict>

 
This variable switches on Intel Speed Shift technology.
Also named Hardware-Controlled Performance States

Present on MacBook9,1

  • Like 10

Rev 3885

Added ability to show HDA Controller name in the Clover GUI (Audio tuning subMenu)

 

HDA_CName.png

 

- harcoded names for HDA Controllers

- fixed zeroMem from previus commit (r3848)

- migrate all Audio related stuff from device_inject into dedicate 'class'

- cleanup

 

Rev 3893

Fix for commit r3885

  • Like 4

Rev 3895 - 3905

Strict Hibernate rule

If you set in your config plist

	<key>Boot</key>
	<dict>
		<key>StrictHibernate</key>
		<true/>
	</dict>

Then Hibernate will work other way. And this is only way to do hibernation on FileVault2 locked volume.

 

Strict Hibernation

 

Hardware

- UEFI BIOS

- hardware NVRAM

- GPT formatted HDD with EFI and Recovery partitions

 

Software

- Clover rev.3905+

- SMCHelper.efi

- OsxAptioFix2Drv.efi - there must be version 2, compatible with Hibernation

- FakeSMC.kext version 3.4.x only!

- sudo pmset -a hibernatemode 25

 

If you set StrictHibernate = TRUE while you didn't fulfil all conditions then Clover automatically switchs StrictHibernate to FALSE. So TRUE is safe settings, nothing happens in worst scenario.

If you have no Hardware NVRAM then after power on you will not see "Hibernated" and forced ordinary boot. In such cases you may look into boot.log (preboot.log, debug.log, bdmesg output) what is happen.

If you have a reboot during wake then most probably you have no correct FakeSMC.

Edited by Slice
Forgot to say about AptioFix
  • Like 8

Rev 3904

If you see in system log

AppleLPC::notifyPlatformASPM - registering with plugin with ASPM Support false

then you want to set in config.plist

	<key>ACPI</key>
	<dict>
		<key>DisableASPM</key>
		<true/>
	</dict>

The message will gone and macOS works smoother.

Why? This is FADT->Flags bit 4.

If set, indicates to OSPM that it must not enable OSPM ASPM control on this platform.

Yes, macOS can't control hackintosh hardware ASPM. (OSPM = OS Power Management)

 

The idea from eierfrucht

  • Like 12
  • 4 weeks later...

Rev 3908

Added function

	<key>Boot</key>
	<dict>
		<key>NeverDoRecovery</key>
		<true/>

In the case when ordinary boot failed the boot.efi can set flag "recovery-boot-mode". It is not reliable for us and we want just ignore this variable to boot ordinary.

  • Like 4

Rev 3913-3914

USB keyboard will be reconnected automatically for FileVault2. But this affects only new American Megatrend UEFI BIOS version 5.

 

Rev 3920

MatchBuild for several builds, by Micky1979

Kext or Kernel Patches can match several builds separated by comma now.

 

Rev 3928

HDMI injection is possible now. For example by Arbitrary Properties.


Rev 3929-3937

Change Clover repository folders structure.

 

Rev 3938

correct MMIO region for Polaris cards

There was a mistake in Polaris card injection. This patch has resolved one of problems with these cards.


Rev 3950

Added a line into preboot.log

The CPU supported SSE4.1

or

The CPU not supported SSE4.1

 for you to decide is it possible to install Sierra here.


Rev 3952

New patch_for_edk2 rev 23215+ preventing load efi drivers and applications.

With this patch we can use recent EDK2 at least 23447.

EDK2 decided to prevent load applications and drivers from external sources. All modules must be loaded from FirmwareVolume.

I am not agree with this policy and canceled this check.


Rev 3940...3953

Multiple updates platform data by Sherlocks. Now Clover knows much more models.

{
  "MacBook1,1",
  "MacBook2,1",
  "MacBook3,1",
  "MacBook4,1",
  "MacBook5,1",
  "MacBook5,2",
  "MacBook6,1",
  "MacBook7,1",
  "MacBook8,1",
  "MacBook9,1",
  "MacBookPro1,1",
  "MacBookPro2,1",
  "MacBookPro2,2",
  "MacBookPro3,1",
  "MacBookPro4,1",
  "MacBookPro5,1",
  "MacBookPro5,3",
  "MacBookPro5,5",
  "MacBookPro6,1",
  "MacBookPro6,2",
  "MacBookPro7,1",
  "MacBookPro8,1",
  "MacBookPro8,2",
  "MacBookPro8,3",
  "MacBookPro9,1",
  "MacBookPro9,2",
  "MacBookPro10,1",
  "MacBookPro10,2",
  "MacBookPro11,1",
  "MacBookPro11,2",
  "MacBookPro11,3",
  "MacBookPro11,5",
  "MacBookPro12,1",
  "MacBookPro13,1",
  "MacBookPro13,2",
  "MacBookPro13,3",
  "MacBookAir1,1",
  "MacBookAir2,1",
  "MacBookAir3,1",
  "MacBookAir4,1",
  "MacBookAir4,2",
  "MacBookAir5,1",
  "MacBookAir5,2",
  "MacBookAir6,1",
  "MacBookAir6,2",
  "MacBookAir7,1",
  "MacBookAir7,2",
  "Macmini1,1",
  "Macmini2,1",
  "Macmini3,1",
  "Macmini4,1",
  "Macmini5,1",
  "Macmini6,1",
  "Macmini6,2",
  "Macmini7,1",
  "iMac4,1",
  "iMac5,1",
  "iMac6,1",
  "iMac7,1",
  "iMac8,1",
  "iMac9,1",
  "iMac10,1",
  "iMac11,1",
  "iMac11,2",
  "iMac11,3",
  "iMac12,1",
  "iMac12,2",
  "iMac13,1",
  "iMac13,2",
  "iMac14,1",
  "iMac14,2",
  "iMac14,3",
  "iMac14,4",
  "iMac15,1",
  "iMac16,1",
  "iMac16,2",
  "iMac17,1",
  "MacPro1,1",
  "MacPro2,1",
  "MacPro3,1",
  "MacPro4,1",
  "MacPro5,1",
  "MacPro6,1",
};
  • Like 17
  • 1 month later...

Rev 3979

Menu for custom kexts patches.

It looks like follow

Screen Shot 2017-01-23 at 13.10.28.png

 

But you should take into account that the menu is called before OS choosen so it can't reflect MatchOS and MatchBuild.

The menu will reflect all patches defined in config.plist as if OS matched. You may enable or disable any of these patches.

When you start an OS then there will be additional check for all enabled patches if OS matched. If not matched then the patch will be disabled no matter of menu settings.

 

PS. Please reduce your comments in kexts patches. They used for menu!

 

Rev 3980

Same for kernel patches.


Rev 3981

This update by ErmaC    #1654  

  • Like 10

Rev 3982

Menu for DSDT custom patches enabling

Screen Shot 2017-01-23 at 17.47.46.png

  • Like 5

Rev 3984

Menu for Arbitrary Devices Properties Injection. See  #49 

Screen Shot 2017-01-24 at 16.44.08.png

 

This injection method is more native then _DSM and works before it.

  • Like 5
  • 2 weeks later...