Jump to content

Clover General discussion


ErmaC
29,872 posts in this topic

Recommended Posts

2 hours ago, Slice said:

It looks like all needed kexts are successfully loaded including VoodooI2C and VoodooPS2. I just don't know why both should be used. AFAIK PS2 is a bus and I2C is another bus. You should use one or another, but I don't know the logic of these kexts. You should ask something else.

At my side Clover does all work.

I tested with rehanbman's Clover_v2.4k_r4701.RM-4963.ca6cca7c worked fine during installation and post installation 

I think that clover has changed something related VoodooI2C or bug  

Link to comment
Share on other sites

On 12/14/2019 at 6:14 AM, maleorderbride said:

I am attempting to inject some thunderbolt AAPL,PathProperties via .efi, but am unable to do so in Clover. OpenCore supports it, but Clover does not yet.

 

Even removing this partial implementation in Clover would be an improvement since then I could use EfiDevicePathPropertyDatabase.efi to enable AAPL,PathProperties injection via .efi, which used to work in older versions of Clover before Clover partially enabled this feature.

I was able to do this without using OpenCore or Clover on my MacPro3,1 Mac Pro (Early 2008) running Catalina 10.15.

 

There's a set of nvram properties starting at 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:AAPL,PathProperties0000 and counting up 0001, 0002, etc. I made a script to do the following:

1) convert nvram properties to binary

2) translate that to plist using gfxutil

3) find ioregistry device tree plane paths of upstream bridge of Thunderbolt controllers

4) use output from gfxutil to convert ioregistry device tree plane paths to efi device paths

5) modify plist with new properties using those efi device paths

6) convert plist to binary using gfxutil

7) convert binary to nvram properties

 

The attached example includes my modified/updated version of gfxutil (rewritten to use edk2 device path library). It adds PCI-Thunderbolt properties to my four Thunderbolt controllers. This is not sufficient to improve or change any behavior (there is no difference in behavior with or without this property). This is probably an incorrect use of device properties because the PCI-Thunderbolt property is normally set by a function in an ACPI SSDT and is therefore stored in the IO Registry as type Number. The Apple Device Properties Protocol can only create IO Registry properties of type Data (just a series of bytes). A proper solution will require a kext or SSDT. In the case of an SSDT, something like Clover or OpenCore is required, therefore you might as well use them to set properties instead of this method...

 

https://github.com/acidanthera/gfxutil

joevt_gfxutil.zip

  • Like 2
Link to comment
Share on other sites

11 hours ago, Slice said:

It looks like all needed kexts are successfully loaded including VoodooI2C and VoodooPS2. I just don't know why both should be used. AFAIK PS2 is a bus and I2C is another bus. You should use one or another, but I don't know the logic of these kexts. You should ask something else.

At my side Clover does all work.


I don't know maybe this information will be useful
image.thumb.png.e81b900ff51be2be8fcfa292b51a9dca.png

Link to comment
Share on other sites

The kexts are loaded by the directory file name ordering which is not in any sorted order on a (V)FAT volume, just in the order of creation. I'm guessing that the order is not correct anymore for the prerequisite kexts or something? There should maybe be an option to set the order of the injection... You can however force kexts/dependencies to be loaded.

Link to comment
Share on other sites

20 hours ago, Pene said:

Hi,

What memory info did you add exactly?

Also, how does dmi dump look after you added memory info?

 

sorry for late.

i tested mojave and catalina. perfect working. previously, my desktop depended on memory info by clover without custom memory info in smbios.

 

 


0:102  0:000  === [ Get Smbios ] ========================================
0:102  0:000  Type 16 Index = 0
0:102  0:000  Total Memory Slots Count = 4
0:102  0:000  Type 17 Index = 0
0:102  0:000  SmbiosTable.Type17->Speed = 2133MHz
0:102  0:000  SmbiosTable.Type17->Size = 8192MB
0:102  0:000  SmbiosTable.Type17->Bank/Device = BANK 0 DIMM_A1
0:102  0:000  SmbiosTable.Type17->Vendor = Samsung
0:102  0:000  SmbiosTable.Type17->SerialNumber = 9935F68A
0:102  0:000  SmbiosTable.Type17->PartNumber = M378A1K43BB1-CPB    
0:102  0:000  Type 17 Index = 1
0:102  0:000  Ignoring insane frequency value 0MHz
0:102  0:000  SmbiosTable.Type17->Speed = 0MHz
0:102  0:000  SmbiosTable.Type17->Size = 0MB
0:102  0:000  SmbiosTable.Type17->Bank/Device = BANK 1 DIMM_A2
0:102  0:000  SmbiosTable.Type17->Vendor = <null string>
0:102  0:000  SmbiosTable.Type17->SerialNumber = <null string>
0:102  0:000  SmbiosTable.Type17->PartNumber = <null string>
0:102  0:000  Type 17 Index = 2
0:102  0:000  Ignoring insane frequency value 0MHz
0:102  0:000  SmbiosTable.Type17->Speed = 0MHz
0:102  0:000  SmbiosTable.Type17->Size = 0MB
0:102  0:000  SmbiosTable.Type17->Bank/Device = BANK 2 DIMM_B1
0:102  0:000  SmbiosTable.Type17->Vendor = <null string>
0:102  0:000  SmbiosTable.Type17->SerialNumber = <null string>
0:102  0:000  SmbiosTable.Type17->PartNumber = <null string>
0:102  0:000  Type 17 Index = 3
0:102  0:000  Ignoring insane frequency value 0MHz
0:102  0:000  SmbiosTable.Type17->Speed = 0MHz
0:102  0:000  SmbiosTable.Type17->Size = 0MB
0:102  0:000  SmbiosTable.Type17->Bank/Device = BANK 3 DIMM_B2
0:102  0:000  SmbiosTable.Type17->Vendor = <null string>
0:102  0:000  SmbiosTable.Type17->SerialNumber = <null string>
0:102  0:000  SmbiosTable.Type17->PartNumber = <null string>
0:102  0:000  Boot status=0
0:102  0:000  Running on: 'System Product Name' with board 'B150M-A_M.2'
 

 

i added like this

		<key>Memory</key>
		<dict>
			<key>Channels</key>
			<integer>2</integer>
			<key>Modules</key>
			<array>
				<dict>
					<key>Frequency</key>
					<integer>2133</integer>
					<key>Part</key>
					<string>M378A1K43BB1-CPB</string>
					<key>Serial</key>
					<string>9935F68A</string>
					<key>Size</key>
					<integer>8192</integer>
					<key>Slot</key>
					<integer>0</integer>
					<key>Type</key>
					<string>DDR4</string>
					<key>Vendor</key>
					<string>Samsung</string>
				</dict>
			</array>
			<key>SlotCount</key>
			<integer>4</integer>
		</dict>

 

10:778  0:095  === [ PatchSmbios ] =======================================
10:778  0:000  insert table 9 for dev 0:0
10:778  0:000  insert table 9 for dev 0:1
10:778  0:000  insert table 9 for dev 0:0
10:778  0:000  Injecting user memory modules to SMBIOS
10:778  0:000  Channels: 2
10:778  0:000  Interleave: 0 2 1 3 4 6 5 7 8 10 9 11 12 14 13 15 16 18 17 19 20 22 21 23
10:778  0:000  BANK 0 DIMM0 2133MHz 8192MB(Ext:0MB)
10:778  0:000  BANK 1 DIMM0 EMPTY
10:778  0:000  BANK 0 DIMM1 EMPTY
10:778  0:000  BANK 1 DIMM1 EMPTY
10:778  0:000  mTotalSystemMemory = 8192
10:778  0:000  NumberOfMemoryDevices = 4
10:778  0:000  Type20[0]->End = 0x7FFFFF, Type17[0] = 0x2000

 

strangely i can't get DMI dump.

but eveything is great without problem.

 

Edited by Sherlocks
  • Like 1
Link to comment
Share on other sites

On 12/26/2019 at 8:46 PM, pkdesign said:

Originally I used Hackintool to download Clover 5101. not sure hwre they get it from. Then I checked https://github.com/CloverHackyColor/CloverBootloader  and downloaded from there. Both have the same result.

 

BTW, it also reverts to "Christmas" theme which is VERY annoying.

Delete Christmas and New Year themes in your Clover EFI folder: problem solved!

Link to comment
Share on other sites

9 minutes ago, D-an-W said:

Anyone have an issue with no audio devices when moving from r5101 to r5102?

 

I switched back to my backup of r5101 and they are back.

 

I can include logs if required.

 

I update Clover from r5101 to r5102 on my IvyBridge config: there is no issue with audio device (HDMI output)

Link to comment
Share on other sites

I don't use HDMI audio just the onboard audio and AppleALC.kext

 

From looking at the boot log, it seems something changed. Perhaps the "Log audio devices" change?

 

r5101 Boot Log - Search for Audio (Working Audio)

0:199  0:000  Loading AudioDxe.efi  status=Success
6:073  0:000  found 2 handles with audio
15:429  0:000  found 2 handles with audio
17:752  0:000  found 2 handles with audio

 

 

r5102 Boot Log - Search for Audio (Not Working Audio)

0:200  0:000  Loading AudioDxe.efi  status=Success
6:081  0:000  found 2 handles with audio
6:084  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 0
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 1
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 2
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 3
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 4
6:084  0:000  Found Audio Device Realtek ALC899 (Headphones) at index 5
6:084  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 6
6:084  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 7
6:084  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 8
22:614  0:000  found 2 handles with audio
22:617  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 0
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 1
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 2
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 3
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 4
22:617  0:000  Found Audio Device Realtek ALC899 (Headphones) at index 5
22:617  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 6
22:617  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 7
22:617  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 8
25:174  0:000  found 2 handles with audio
25:176  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 0
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 1
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 2
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 3
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 4
25:176  0:000  Found Audio Device Realtek ALC899 (Headphones) at index 5
25:176  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 6
25:176  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 7
25:176  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 8

 

  • Sad 1
Link to comment
Share on other sites

13 minutes ago, D-an-W said:

I don't use HDMI audio just the onboard audio and AppleALC.kext

 

From looking at the boot log, it seems something changed. Perhaps the "Log audio devices" change?

 

r5101 Boot Log - Search for Audio (Working Audio)


0:199  0:000  Loading AudioDxe.efi  status=Success
6:073  0:000  found 2 handles with audio
15:429  0:000  found 2 handles with audio
17:752  0:000  found 2 handles with audio

 

 

r5102 Boot Log - Search for Audio (Not Working Audio)


0:200  0:000  Loading AudioDxe.efi  status=Success
6:081  0:000  found 2 handles with audio
6:084  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 0
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 1
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 2
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 3
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 4
6:084  0:000  Found Audio Device Realtek ALC899 (Headphones) at index 5
6:084  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 6
6:084  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 7
6:084  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 8
22:614  0:000  found 2 handles with audio
22:617  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 0
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 1
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 2
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 3
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 4
22:617  0:000  Found Audio Device Realtek ALC899 (Headphones) at index 5
22:617  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 6
22:617  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 7
22:617  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 8
25:174  0:000  found 2 handles with audio
25:176  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 0
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 1
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 2
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 3
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 4
25:176  0:000  Found Audio Device Realtek ALC899 (Headphones) at index 5
25:176  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 6
25:176  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 7
25:176  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 8

 

 

I can only test HDMI because no others output devices. 

 

Link to comment
Share on other sites

On 12/28/2019 at 10:17 PM, apianti said:

You can't write c++ code because of the standard c++ library

I am currently experimenting a C++ switch. It's already working and will be committed in a branch. C++ doesn't need the STL or any kind of library.

C++ is a language that you can separate from it's "tools".

I've used C++ for many years, always without std lib. So I have plenty of object like string, vector etc.

This confusion about standard library and standard language is often made, because both are standardized by the same organisation.

I'll post here when I'll have committed...

  • Thanks 1
Link to comment
Share on other sites

3 hours ago, D-an-W said:

I don't use HDMI audio just the onboard audio and AppleALC.kext

 

From looking at the boot log, it seems something changed. Perhaps the "Log audio devices" change?

 

r5101 Boot Log - Search for Audio (Working Audio)


0:199  0:000  Loading AudioDxe.efi  status=Success
6:073  0:000  found 2 handles with audio
15:429  0:000  found 2 handles with audio
17:752  0:000  found 2 handles with audio

 

 

r5102 Boot Log - Search for Audio (Not Working Audio)


0:200  0:000  Loading AudioDxe.efi  status=Success
6:081  0:000  found 2 handles with audio
6:084  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 0
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 1
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 2
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 3
6:084  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 4
6:084  0:000  Found Audio Device Realtek ALC899 (Headphones) at index 5
6:084  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 6
6:084  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 7
6:084  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 8
22:614  0:000  found 2 handles with audio
22:617  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 0
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 1
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 2
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 3
22:617  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 4
22:617  0:000  Found Audio Device Realtek ALC899 (Headphones) at index 5
22:617  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 6
22:617  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 7
22:617  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 8
25:174  0:000  found 2 handles with audio
25:176  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 0
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 1
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 2
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 3
25:176  0:000  Found Audio Device Realtek ALC899 (LineOut) at index 4
25:176  0:000  Found Audio Device Realtek ALC899 (Headphones) at index 5
25:176  0:000  Found Audio Device Realtek ALC899 (SPDIF) at index 6
25:176  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 7
25:176  0:000  Found Audio Device Intel Panther Point HDMI (HDMI) at index 8

 

This is my compilation with no changes from the master and the audio is working properly:

AudioDxe.efi.zip

CLOVERX64.efi.zip

BOOTX64.efi.zip

please try and let me know.

  • Like 1
Link to comment
Share on other sites

4 minutes ago, D-an-W said:

One thing to point out is boot time audio still worked ok.

Oh sorry, but my changes regard only about logging devices in the boot-log, if audio is working at boot time then your problem is another (other changes between 5101 <->5102). 

Edited by vector sigma
Link to comment
Share on other sites

10 minutes ago, D-an-W said:

Is it possible to build specific commits so I can see with which one it last worked?

 

to build clover:

cd ~/Desktop/
git clone https://github.com/CloverHackyColor/CloverBootloader.git
cd CloverBootloader
. ./edksetup.sh
./ebuild.sh -fr

then to build a specific commit:

git checkout <commit_id> (eg: git checkout 12d559aef62a33ad65e38ab9210872d63d815815 or git checkout 12d559ae)
./ebuild.sh -fr

this command shows you every commit between 5101 and 5102:

git log --oneline 5101^..5102

 

Edited by Florin9doi
  • Thanks 1
Link to comment
Share on other sites

@Jief_Machak, the below function:

BOOLEAN checkOSBundleRequired(UINT8 loaderType, TagPtr dict)
{
    BOOLEAN inject = TRUE;
    TagPtr  osBundleRequired;
    CHAR8   osbundlerequired[256];
    
    osBundleRequired = GetProperty(dict,"OSBundleRequired");
    if (osBundleRequired)
        toLowerStr(osbundlerequired, osBundleRequired->string);
    else
        osbundlerequired[0] = '\0';

    if (OSTYPE_IS_OSX_RECOVERY(loaderType)) {
        if (AsciiStrnCmp(osbundlerequired, "root", 4) &&
            AsciiStrnCmp(osbundlerequired, "local", 5) &&
            AsciiStrnCmp(osbundlerequired, "console", 7) &&
            AsciiStrnCmp(osbundlerequired, "network", 7)) {
            inject = FALSE;
        }
    } else if (OSTYPE_IS_OSX_INSTALLER(loaderType)) {
        if (AsciiStrnCmp(osbundlerequired, "root", 4) &&
            AsciiStrnCmp(osbundlerequired, "local", 5) &&
            AsciiStrnCmp(osbundlerequired, "console", 7)) {
            inject = FALSE;
        }
    }
    
    return inject;
}

is still callled even for 10_install and 10_recovery, so some kexts maybe excluded anyway. Should not those extensions be injected with KextPatcherRegisterKexts() (i.e. with FSInject) instead of AddKext()?

  • Like 1
Link to comment
Share on other sites

9 hours ago, brousseau6933 said:

Delete Christmas and New Year themes in your Clover EFI folder: problem solved!

I certainly did, but to automatically and without permission change my theme is not right at all.

On 12/20/2019 at 7:21 AM, Slice said:

I made the follow change.

If VolumeName begins with # then the line will not shown.

So, create a file .VolumeLabel.txt in the EFI partition with a name for this volume

"EFI" or "ESP" or "My USB Stick" or "#EFI" or anything else.

In the case of "#..." the message "Clover booted from XXX" will disappear.

Good?

This still does not work with 5102. It now just says "5102, booted from EFI" in the lower right corner.

Link to comment
Share on other sites

2 hours ago, vector sigma said:

@Jief_Machak, the below function:


BOOLEAN checkOSBundleRequired(UINT8 loaderType, TagPtr dict)
{
    BOOLEAN inject = TRUE;
    TagPtr  osBundleRequired;
    CHAR8   osbundlerequired[256];
    
    osBundleRequired = GetProperty(dict,"OSBundleRequired");
    if (osBundleRequired)
        toLowerStr(osbundlerequired, osBundleRequired->string);
    else
        osbundlerequired[0] = '\0';

    if (OSTYPE_IS_OSX_RECOVERY(loaderType)) {
        if (AsciiStrnCmp(osbundlerequired, "root", 4) &&
            AsciiStrnCmp(osbundlerequired, "local", 5) &&
            AsciiStrnCmp(osbundlerequired, "console", 7) &&
            AsciiStrnCmp(osbundlerequired, "network", 7)) {
            inject = FALSE;
        }
    } else if (OSTYPE_IS_OSX_INSTALLER(loaderType)) {
        if (AsciiStrnCmp(osbundlerequired, "root", 4) &&
            AsciiStrnCmp(osbundlerequired, "local", 5) &&
            AsciiStrnCmp(osbundlerequired, "console", 7)) {
            inject = FALSE;
        }
    }
    
    return inject;
}

is still callled even for 10_install and 10_recovery, so some kexts maybe excluded anyway. Should not those extensions be injected with KextPatcherRegisterKexts() (i.e. with FSInject) instead of AddKext()?

 

+1.

some kexts not loaded. strangely i lost load of ApplePS2SmartTouchPad.kext in recovery. i have to use voodoops2.

my folder structure is same like before

Others

10.15

 

Edited by Sherlocks
  • Like 2
Link to comment
Share on other sites

3 hours ago, D-an-W said:

Just the same sorry, no audio devices detected.

 

One thing to point out is boot time audio still worked ok.

 

r5102

1169539330_Screenshot2019-12-31at13_33_20.png.92182c94da183f438400422541f5b678.png

 

 

With r5102 compiled by myself, I've got this:

 

 

Capture d’écran 2019-12-31 à 17.56.04.png

Link to comment
Share on other sites

×
×
  • Create New...