Jump to content

Clover v.2 Instructions


ErmaC
57 posts in this topic

Recommended Posts

DOWNLOADS

 

Installer
Screen Shot 2012-11-24 at 9.55.18.png
I am sorry but the forum doesn't allow attachments larger then 10Mb while the new version is 12Mb.
So look for new revisions at the project home
http://sourceforge.n.../cloverefiboot/


CD ISO bootable with Clover


Many previous revisions can be found here http://tools.inmac.org/clover/


Utility to install Clover from Windows http://cvad-mac.narod.ru/bootdiskutilityexe/

Additional foreign file system drivers for EFI.
FS drivers.zip

Manuals:
Russian language offline manual:

 

Клевер цвета хаки 3262.pdf

Клевер цвета хаки 4871.pdf

English and Spanish see here http://clover-wiki.zetam.org/


Localization
If you want to add your native language to the program please translate the follow files
TextsToTranslate.zip
and upload the result at this thread.

 

For some old UEFI BIOSes you need LegacyRegion  driver that absent in regular Clover package

Take it here

LegacyRegion2Dxe.efi-IA32.zip

LegacyRegion2Dxe.efi-X64.zip

  • Like 19
Link to comment
Share on other sites

INSTALLATION

 

Using the installer

Start installer. Press "Continue" and "OK' as many times as needed.

Choose a partition to install

Screen Shot 2012-09-15 at 11.51.36.png

Customize what to install

Screen Shot 2012-09-15 at 11.53.47.png

Choose themes. Default one is black-green by blackosx.

Screen Shot 2012-09-15 at 11.54.57.png

C l8r themes preview.

 

Manual Installation

 

					Installation ( Use fdisk440 instead of fdisk )
					==============================================
Install fdisk440 first :
------------------------
 sudo cp fdisk440 /usr/sbin/fdisk440
fdisk440 - The Chameleon team modded the Apple's fdisk to only update the first 440 bytes in the MBR by adjusting MBR_CODE_SIZE to 0x1B8. The modded fdisk was renamed fdisk440 by Tamás Kosárszky on 2010-02-19 to avoid confusion between Apple's fdisk and the Chameleon fdisk.
This utility resolves Windows sleep problem.
Chameleon modded sources with explanations is here
http://forge.voodooprojects.org/p/chameleonApplications/source/tree/HEAD/trunk/fdisk.tproj
Files Install :
--------------------
- Install clover to the partition's root directory:
cp BOOT /
cp -r EFI /
sudo cp -v etc/* /etc/

Active partition installation
-----------------------------
Suppose that your partition is on /dev/disk0s2 HFS+

- Install boot0 to the MBR:
 sudo fdisk440 -f boot0 -u -y /dev/rdisk0

- Install boot1h2 to the partition's bootsector:
sudo dd if=boot1h2 of=/dev/rdisk0s2
Attention! My boot1h2 differs from Chameleon's one and will works with both Clover and Chameleon. [b]You can't use Chameleon's boot1h with Clover-64.[/b]
Use boot1h2 to boot a bootloaders boot1, boot2, boot3...
Note: dd can't change boot sector of the system partition. You should start from other partition
EFI Partition Install (FAT32) or to USB stick drive (disk1s1).
---------------------------------

Suppose that your installation is on /dev/disk0s1

- Prepare EFI partition:
sudo mkdir /Volumes/EFI
sudo mount_msdos /dev/disk0s1 /Volumes/EFI/
- Install clover to the EFI partition's root directory:
cp boot /Volumes/EFI/
sudo umount -f /Volumes/EFI/

- Install boot0 to the MBR:
 sudo fdisk440 -f boot0 -u -y /dev/rdisk0

- Install boot1f32alt to the partition's bootsector:

sudo fdisk440 -f boot0 -u -y /dev/rdisk0
dd if=/dev/rdisk0s1 count=1 bs=512 of=origbs
cp boot1f32alt newbs
dd if=origbs of=newbs skip=3 seek=3 bs=1 count=87 conv=notrunc
dd if=newbs of=/dev/rdisk0s1 count=1 bs=512
cp BOOT /Volumes/EFI/
Enter fdisk and set EFI partitoin as active partition.
fdisk -e /dev/rdisk0
>f 1
>w
>q
USB stick installation
-----------------------
Do not reformat factory formatted stick!
sudo fdisk440 -f boot0 -u -y /dev/rdisk1
dd if=/dev/rdisk1s1 count=1 bs=512 of=origbs
cp boot1f32alt newbs
dd if=origbs of=newbs skip=3 seek=3 bs=1 count=87 conv=notrunc
dd if=newbs of=/dev/rdisk1s1 count=1 bs=512
cp BOOT /Volumes/Kingston/
cp -r EFI /Volumes/Kingston/

 

 

Warning

to use USB stick for first Clover installation and tests. There are cases where users are running install for the first time directly to HDD and then they mess with existing working Chameleon boot.

 

The best way to play with and test Clover (or any other booter) is to test from USB stick. Prepare MBR formatted USB stick with one FAT32 partition and then install Clover there. This stick can be used for standard BIOS Clover boot and for UEFI boot. Once Clover is set up on that stick and all is working good and you know what you are doing, then install it to HDD.

Edited by Slice
Update
  • Like 8
Link to comment
Share on other sites

By dmazar: How to do UEFI boot Original post
 

How to do UEFI Boot


I'll repost some info regarding UEFI boot from there:

When trying UEFI boot, try with following combination of drivers in /EFI/CLOVER/Drivers64UEFI folder:

1. HFSPlus.efi, OsxFatBinaryDrv-64.efi

if this does not work, then

2. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxLowMemFixDrv-64.efi
and then if this does not work then

3. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxAptioFixDrv-64.efi (with slide=0 in boot args in config.plist)
and if even this does not work, then try:

4. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxAptioFixDrv-64.efi (with slide=0 in boot args in config.plist), EmuVariableRuntimeDxe.efi (from here)

More about it:

1. HFSPlus.efi, OsxFatBinaryDrv-64.efi
This works on boards with Gigabyte Hybrid EFI. This is the best option for UEFI boot, in the sense that no special fixes are required. Any OSX should boot fine, unless some big change happens that will stop working boot here.

2. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxLowMemFixDrv-64.efi
This works on Insyde H2O UEFI. Some small memory issue will be fixed by LowMemFix, and then everything should be equal to case 1.

3. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxAptioFixDrv-64.efi (with slide=0 for ML)
This works for all other boards ... well, where works. This is not so good solution because it depends on current functioning of boot.efi and current structures that are passed between boot.efi (boot loader) and kernel, like boot args and device tree. Meaning: if structure of boot args changes, like it changed when Lion came out, which caused Chameleon to fail to boot Lion, this will again break Chameleon and UEFI boot with AptioFix - until somebody fixes it. This is the most annoying thing to me because the major point for having UEFI boot is to use boot.efi as bootloader and to avoid such things. Well, if this happens, the first solution will be to fall back to standard Clover until the thing is resolved. The small issue is that standard Clover is also dependent on kernel boot args when kernel and kext patching or kext injection is used - this would also need to be turned off in that case.

4. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxAptioFixDrv-64.efi, EmuVariableRuntimeDxe.efi
This works on Dell Vostro, some ThinkPad's - some laptops with Phoenix UEFI. All mentioned in 3. is applicable here.

All other drivers may or may not be needed. Drivers listed above are required minimum. The best way to test if the driver is needed or not is to try without it - if the thing still works, then it is not needed. Well, more or less ... since for example normal boot works without FSInject, but that one can be needed sometimes.

Edited by Slice
Update
  • Like 5
Link to comment
Share on other sites

How to use - common words


OK.
In the following we will assume that you correctly installed Clover.
The default configuration that comes with the installer is usually good enough for most configurations,
so as a fist attempt just try to boot.
Remember choose a starting device in BIOS or CLOVERX64.EFI in the case of UEFI BIOS.

The boot process will proceed as follows:
Legacy BIOS: BIOS->MBR->PBR->boot->CLOVERX64.EFI-> ... system, namely boot.efi->mach_kernel->Login
UEFI BIOS: UEFI->CLOVERX64.EFI-> ... system

The file CLOVERX64.EFI located at /Volumes/YourHDD/EFI/CLOVER/ is a graphical menu to choose a system to boot (CloverGUI).
MainMenu.png
As you see there is a help calling by F1 key.
Help.png
This is a Russian example. There are also other languages and the choice depends on setting in your config.plist file

<key>SystemParameters</key>
<dict>
<key>prev-lang:kbd</key>
<string>en:0</string>

At this moment there are languages: en, ru, it, es, pt, de, id, fr, ua, pl.
There is no your language? Took "TextsToTranslate from Downloads section, translate it to your language and upload here. I will implement ASAP.

You can change some settings directly from GUI. This is for temporarily enable/disable some features that you are not sure
Options.png CPU.png Graphics.png Kexts.png

Now you can boot a system. Just press "Enter". Or you may press 'Space" and choose other method to boot
Details.png

Edited by Slice
Update
  • Like 6
Link to comment
Share on other sites

Automatic DSDT fix


One of the the most important concerns in the hackintosh world is how to create a good DSDT.aml.
If you already have your own DSDT.aml, you can directly place it into /EFI/CLOVER/acpi/patched. Moreover, in case you have different OS versions on the same computer and you want each of them to boot with a different DSDT (wow! it's possible!), what you have to do is to place each DSDT.aml in the root partition of the corresponding OS version.

Order of searching is follow

1. Look for /booted_partition/DSDT.aml if not found then

2. Look for /clover_partition/EFI/CLOVER/OEM/your_motherboard_name/ACPI/patched/DSDT.aml, if not found then

3. Look for /clover_partition/EFI/CLOVER/ACPI/patched/DSDT.aml if not found then

4. Took OEM DSDT from BIOS of the computer.

If you don't have any good DSDT yet, you may allow Clover to create an autopatched DSDT for you. Namely, Clover will extract the DSDT as provided by the BIOS and consequently apply some patches. The specific set of patches that will be applied depends on your choice. The following example showcases how to apply one of the available patches by altering the configuration file config.plist:

	<key>ACPI</key>
	<dict>
		<key>DSDT</key>
		<dict>
			<key>Name</key>
			<string>DSDT.aml</string>
			<key>Fixes</key>
			<dict>
				<key>AddDTGP_0001</key>
				<true/>
				<key>AddMCHC_0008</key>
				<false/>
				<key>FakeLPC_0020</key>
				<false/>
				<key>FixAirport_4000</key>
				<true/>
				<key>FixDarwin_0002</key>
				<false/>
				<key>FixDisplay_0100</key>
				<true/>
				<key>FixFirewire_0800</key>
				<true/>
				<key>FixHDA_8000</key>
				<true/>
				<key>FixHPET_0010</key>
				<true/>
				<key>FixIDE_0200</key>
				<false/>
				<key>FixIPIC_0040</key>
				<true/>
				<key>FixLAN_2000</key>
				<true/>
				<key>FixSATA_0400</key>
				<false/>
				<key>FixSBUS_0080</key>
				<true/>
				<key>FixShutdown_0004</key>
				<true/>
				<key>FixUSB_1000</key>
				<true/>
				<key>NewWay_80000000</key>
				<true/>
				<key>FIX_RTC_20000</key>
				<true/>
				<key>FIX_TMR_40000</key>
				<true/>
				<key>AddIMEI_80000</key>
				<true/>
				<key>FIX_INTELGFX_100000</key>
				<false/>
				<key>FIX_WAK_200000</key>
				<true/>
				<key>DeleteUnused_400000</key>
				<true/>
				<key>FIX_ADP1_800000</key>
				<true/>
				<key>AddPNLF_1000000</key>
				<true/>
				<key>FIX_S3D_2000000</key>
				<true/>
				<key>FIX_ACST_4000000</key>
				<true/>
				<key>AddHDMI_8000000</key>
				<true/>
				<key>FixRegions_10000000</key>
				<true/>
			</dict>
		</dict>
 

To calculate them it is better to use an application by Cvad


If you want to see a result of patches then you can set

	<key>ACPI</key>
	<dict>
		<key>DSDT</key>
		<dict>
			<key>Debug</key>
			<true/>

Then you will found in /EFI/CLOVER/ACPI/origin the follow files

DSDT-or.aml - original DSDT.aml, before any patches;

DSDT-pa0.aml - patched DSDT.aml, first attempt. It will created immediately before system start even if the system panics.

DSDT-pa1.aml and next numbers until you can start system. Last file will be the best.

 

The patch will be applied even for custom DSDT and all loaded SSDT.

In some cases your DSDT already contains some Method(_DSM...). In this case you have to choose if you want to remain old _DSM  (you are sure it is good), or you want to drop OEM _DSM because it is for Windows and doesn't work in OSX. 

Choose

			<key>DropOEM_DSM</key>
			<dict>
				<key>ATI</key>
				<true/>
				<key>Firewire</key>
				<true/>
				<key>HDA</key>
				<true/>
				<key>HDMI</key>
				<true/>
				<key>IDE</key>
				<true/>
				<key>IntelGFX</key>
				<true/>
				<key>LAN</key>
				<true/>
				<key>LPC</key>
				<false/>
				<key>NVidia</key>
				<true/>
				<key>SATA</key>
				<true/>
				<key>SmBUS</key>
				<false/>
				<key>USB</key>
				<true/>
				<key>WIFI</key>
				<true/>
			</dict>

You may also make your custom binary patches for DSDT. Examples

			<key>Patches</key>
			<array>
				<dict>
					<key>Comment</key>
					<string>Remove battery device from desktop</string>
					<key>Find</key>
					<data>W4IeQkFUMQhfSElEDEHQDAoIX1VJRAEUCF9TVEEApAA=</data>
					<key>Replace</key>
					<data></data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>Add _SUN property for GIGE</string>
					<key>Find</key>
					<data>UFhTWAhfQURSAAhfUFJXEgYC</data>
					<key>Replace</key>
					<data>UFhTWAhfQURSAAhfU1VOCgQIX1BSVxIGAg==</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>Rename GFX0 to IGPU</string>
					<key>Find</key>
					<data>R0ZYMA==</data>
					<key>Replace</key>
					<data>SUdQVQ==</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>Rename HDEF to AZAL</string>
					<key>Find</key>
					<data>SERFRg==</data>
					<key>Replace</key>
					<data>QVpBTA==</data>
				</dict>
			</array>

Length Find and Replace may be different

 

And one more problem with DSDT patching.

If you set FixDisplay=true it will create display device with real address.

But in some cases there is similar device with address 0xFFFF. The is a conflict.

As we found there are no common rules what to do so there is a setting

			<key>ReuseFFFF</key>
			<false/>

Set True or False and see a result. I can't know what is better for you.

DsdtFix.png

Edited by Slice
Update
  • Like 3
Link to comment
Share on other sites

Instructions for GraphicsInjector


Historically the sources for GraphicsInjector came from Chameleon where it is named GraphicsEnabler.
It is easy to see is user tell about GE then it means he uses Chameleon else if he tell about GI then he uses Clover :)
But Clover runs forward.

Intel videocards: GMA950, X3100, HD300, HD4000 - proved.
You have just set

	<key>Graphics</key>
	<dict>
		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<false/>
			<key>Intel</key>
			<true/>
			<key>NVidia</key>
			<false/>
		</dict>
 

But one note. Some notebooks (like Dell Inspiron 1525) booted into black screen. You can use sleep-trick or erase Device(CRT) from DSDT.
The last thing will be performed by the Clover if you set DsdtFixMask with bit 0x0100 - "FixDisplay".

NewWay you should set FIX_INTELGFX_100000
For Intel HD4000 one more parameter is possible

<key>ig-platform-id</key>
<string>0x01620005</string>
Where 162 for desktop like iMac13 and 166 for MacBookPro and MacMini. Last digit is a version of graphics engine.
We can't confirm information about memory/pipes/connectors dependency.
Default value set by Clover always work.

NVidia - a wide set of supported video cards, and the database is continuously replenished by ErmaC.
There are parameters in config.plist
		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<false/>
			<key>Intel</key>
			<false/>
			<key>NVidia</key>
			<true/>
		</dict>
		<key>NVCAP</key>
		<string>04000000000003000C0000000000000A00000000</string>
		<key>display-cfg</key>
		<string>03010300FFFF0001</string>
		<key>VideoPorts</key>
		<integer>2</integer>
 

But the Clover is clever enough that you need no to set these parameters. Just one: Inject = true and this will be the best choice for you. I have many successful reports and no unsuccessful.

New NVidia cards named Kepler don't needed in Inject. They works without it.

ATI/AMD
This is a special conversation. I have GA AMD Radeon HD6670 and VFX HD5570 so I tested these technologies in the cases of 5xxx and 6xxx.
You may set nothing (GI = No) and enter desktop with a common ATIRadeonFramebuffer. It works including OpenGL, you may even test with OpenGL Extension Viewer but this is not very good way to go. If you call DVDPlayer it will crash.
If you set GI = Yes you will enter black screen or see empty desktop because all info appears to be on second invisible desktop.
You need ATIConnector patch. Original topic by bcc9.
As example for ATI HD6670 is my config

		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<true/>
			<key>Intel</key>
			<false/>
			<key>NVidia</key>
			<false/>
		</dict>
		<key>DualLink</key>
		<integer>0</integer>
		<key>FBName</key>
		<string>Ipomoea</string>
		<key>InjectEDID</key>
		<true/>
		<key>LoadVBios</key>
		<true/>

And then I do connectors patch for the "Ipomoea" framebuffer.

	<key>KernelAndKextPatches</key>
	<dict>
		<key>ATIConnectorsController</key>
		<string>6000</string>
		<key>ATIConnectorsData</key>
		<string>000400000403000000010000210302040400000014020000000100000000040310000000100000000001000000000001</string>
		<key>ATIConnectorsPatch</key>
		<string>040000001402000000010000000004040004000004030000000100001102010500000000000000000000000000000000</string>

For Mobile Radeon there in necessity to do

<key>LoadVBios</key>
<string>Yes</string>
Yes, this is a key difference to launch mobility.

EDID
In some case you need to inject EDID string. Or may be you just know the better EDID then provided by manufacture.
<key>InjectEDID</key>
<string>Yes</string>
In this case EDID string obtained by BIOS will be accesible by OSX that is not always true.
If your monitor is non-DDC at all then you may inject some artificial EDID
<key>CustomEDID</key>
<data>AP///////wAyDADfAAAAAAASAQOAIRV4CunVmVlTjigmUFQAAAABAQEBAQEBAQEBAQEBAQEB3iGgcFCEHzAgIFYAS88QAAAY3iGgcFCEHzAgIFYAS88QAAAAAAAA/gBXNjU3RwAxNTRXUDEKAAAA/gAjMz1IZYSq/wIBCiAgAJo=</data>

AAPL,DualLink
For some older cards you should set DualLink=0 or 1. For example ATI HD1600. There must be =0 else you will see four screens.
<key>DualLink</key>
<string>1</string>
Edited by Slice
Update
  • Like 5
Link to comment
Share on other sites

ATIConnector patching

First of all I want to thank bcc9 for the method, pcj for implementing this patch and dmazar for making it working.
Instruction how to do.
1. Download radeon_bios_decoder and ati_personality.pl from bcc9 topic.

New one ati-personality.pl.0.11.zip

2. Look into SystemProfiler to know what is your Radeon card. My DeviceID=0x6758 which is 6000 series. What is your series? Search through vanilla ATI kexts to find your deviceID or near to that.
For example, if your DeviceID=0x68B2 then you may found that Juniper included very similar DIDs.
See AMDRadeonAccelerator.kext/Contens/Info.plist
Screen Shot 2012-09-16 at 15.37.12.png
You must write your DeviceID here.
Also see ATI5000Controller.kext/Contents/Info.plist. The same rule: "if your deviceId is absent then write it near the similar one"
Example

IOPCIMatch
0x68981002 0x68991002 0x68E01002 0x68E11002 0x68D81002 0x68C01002 0x68C11002 0x68D91002 0x68B21002 0x68B81002 0x68B01002 0x68B11002 0x68A01002 0x68A11002

Now you are sure your device is controlled by ATI5000.

3. Dump information with ati_personality.pl.
The interesting for you is the 5000 section.


Kext /System/Library/Extensions//ATI5000Controller.kext/Contents/MacOS/AMD5000Controller

Personality: Douc
ConnectorInfo count in decimal: 2
Disk offset in decimal 165856

0000000 02 00 00 00 00 05 00 00 09 03 00 00 21 03 02 02
0000010 00 04 00 00 04 02 00 00 00 03 00 00 11 02 01 01
0000020

And so on. There are several Framebuffers. What to choose? I think any. But the better will be (for my mind, may be I am wrong)
5000: Baboon for desktop, Galago for mobile.
6000: Ipomoea for desktop, Osmunda for mobile.

This is my example with HD6670 devID=0x6758 (Turks).
Connectors info:


Personality: Ipomoea

ConnectorInfo count in decimal: 3

Disk offset in decimal 180112

0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 01 05
0000010 00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03
0000020 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 02

4. Next step. Dump your bios with the script radeon_bios_decoder from bcc9.
One moment. Where can you get your VideoBios? There are different ways. The simplest one is to start Clover and press F6.
You may find file /EFI/misc/c0000.bin in your Clover partition if it is FAT32 formatted.


iMac:test slice$ ./radeon_bios_decode <c0000.bin
ATOM BIOS Rom:
SubsystemVendorID: 0x1458 SubsystemID: 0x2557
IOBaseAddress: 0xe000
Filename: R667D32I.F1

BIOS Bootup Message:
GV-R667D3-2GI/F1
PCI ID: 1002:6758

Connector at index 0
Type [@offset 44282]: HDMI-A (11)
Encoder [@offset 44286]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 44356]: 0x92, OSX senseid: 0x3

Connector at index 1
Type [@offset 44292]: DVI-D (3)
Encoder [@offset 44296]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 44383]: 0x95, OSX senseid: 0x6

Connector at index 2
Type [@offset 44302]: VGA (1)
Encoder [@offset 44306]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 44410]: 0x90, OSX senseid: 0x1

All that we need is senseid for each output.
DVI-D: 06
VGA: 01
HDMI: 03
So replace the digits in the chosen connectors info. (red digits).
First digits (green) at every line are connector's type
0004 - DP
0008 - HDMI
1000 - VGA
Must be
0400 - DVI-D
0200 - LCD - for notebooks

0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 01 05
0000010 00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03
0000020 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 02

Corrected table:
0000000 04 00 00 00 04 03 00 00 00 01 00 00 12 04 01 06
0000010 00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03
0000020 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 01

I can also exchange 2nd and 3rd lines
0000000 04 00 00 00 04 03 00 00 00 01 00 00 12 04 01 06
0000010 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 01
0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03


5. Now I can write initial table into ATIConnectorsData, and corrected table into ATIConnectorsPatch of my config.plist.


<key>KernelAndKextPatches</key>
<dict>
<key>ATIConnectorsController</key>
<string>6000</string>
<key>ATIConnectorsData</key>
<string>000400000403000000010000120401050008000004020000000100001102040310000000100000000001000000000002</string>
<key>ATIConnectorsPatch</key>
<string>040000000403000000010000120401061000000010000000000100000000000100080000040200000001000011020403</string>

6. This patch will work in two cases: if KernelCache is used, or if boot-args contain a key "WithKexts".
If for some reason kernelcache is not load then the patch will not be applied.
Remember that you do the patch with the chosen framebuffer, and it will not work if you set other frame buffer in the config.plist

	<key>Graphics</key>
	<dict>
		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<true/>
		</dict>
		<key>FBName</key>
		<string>Ipomoea</string>
 

It works for my two computers with HD6670 and with HD5570 giving me working DVDPlayer and all other functionality. I can play 4x4Evolution.

Some news.
0000000 04 00 00 00 04 03 00 00 00 01 00 00 12 04 00 06
0000010 10 00 00 00 10 00 00 00 00 01 00 00 00 00 01 01
0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 02 03

If you have a problem with Sleep then change encoderid for VGA output to zero (red digits)
If you have a problem with HDMI plug&play then change HotPlugID to 05 (blue digits)

Now hackers says that HotPlugID must be in numeric order 00, 01, 02 ...  (blue digits)

Edited by Slice
Update
  • Like 9
Link to comment
Share on other sites

Any kext patching

 

You may do many patches with this ability.

One funny sample

 

I look into kext VoodooHDA and found a string "Headphones" = 48 65 61 64 70 68 6F 6E 65 73 00

______________2012_09_08___20.20.59.png

I want to rename it to "Telephones" ;) = 54 65 6C 65 70 68 6F 6E 65 73 00

So I write into config.plist the follow

<key>KextsToPatch</key>
<array>
<dict>
<key>Name</key>
<string>VoodooHDA</string>
<key>Find</key>
<data>SGVhZHBob25lcwA=</data>
<key>Replace</key>
<data>VGVsZXBob25lcwA=</data>
</dict>
</array>

 

Reboot and have the result

______________2012_09_08___20.28.41.png

 

Now about more useful patches. One of them is ATIConnectors patch only for 5000 and 6000 controller under 10.7 or 10.8. In other case you should patch as any kext.

For example OS 10.6, ATI Radeon X1650 with non-usual DeviceID=0x71cd. You have to write this value into info.plist but not only.

You also should patch the binaries of ATIRadeonX1000.kext.

Do the follow

<dict>
<key>Name</key>
<string>ATIRadeonX1000</string>
<key>Find</key>
<string>81fa87710000</string>
<key>Replace</key>
<string>81facd710000</string>
</dict>

 

There are predefined patches

Edited by Slice
New format for rev1717+
  • Like 5
Link to comment
Share on other sites

CustomEDID

It is needed in two cases

1. There is non-DDC monitor.

2. This is DDC_monitor, but Apple's driver can't get EDID from them. While BIOS - yes.

For the second case we just set InjectEDID = yes

For the first case we should also write CustomEDID obtained from anywere into config.plist.

Screen_shot_2012_09_12_at_14.01.07.png

You may create your best custom EDID by ViewSonic EDID editor

just port it into OSX by Wineskin

This is my result (a file from lvs1974)

Screen Shot 2012-09-16 at 20.25.39.png

EDID sample to load by the program

128 BYTES OF EDID CODE:
        0   1   2   3   4   5   6   7   8   9
  ________________________________________
 0  |  00  FF  FF  FF  FF  FF  FF  00  0D  AF
10  |  26  15  00  00  00  00  09  10  01  03
20  |  80  21  15  78  0A  C6  A9  9A  57  4E
30  |  85  26  1E  50  52  00  00  00  01  01
40  |  01  01  01  01  01  01  01  01  01  01
50  |  01  01  01  01  BC  1B  00  A0  50  20
60  |  17  30  30  20  36  00  4B  CF  10  00
70  |  00  18  00  00  00  FE  00  4E  31  35
80  |  34  49  32  2D  4C  30  32  0A  20  20
90  |  00  00  00  FE  00  43  4D  4F  0A  20
100  |  20  20  20  20  20  20  20  20  00  00
110  |  00  FE  00  4E  31  35  34  49  32  2D
120  |  4C  30  32  0A  20  20  00  88

Edited by Slice
Update
  • Like 5
Link to comment
Share on other sites

Hiding unnecessary menu entries


The Clover usually find many entries with possibility to boot. There are EFI entries and legacy boot sectors. If you think you don't need it then you may hide it.
The method by skoczi.
Was
MainMenu.png
became
Hiding.png

A full set of possible hiding as follow
Since rev1600 (?) there is new format for hiding.

<key>GUI</key>
<dict>
          <key>Volumes</key>
          <dict>
                     <key>Legacy</key>
                     <string>First</string>
                     <key>Hide</key>
                     <array>
                                <string>VOLUME_NAME</string>
                                <string>VOLUME_UUID</string>
                                <string>TODO_HIDE_VOLUME_BY_TYPE/GROUP</string>
                    </array>
        </dict>
        <key>HideEntries</key>
        <dict>
                  <key>OSXInstall</key>
                 <true/>
                 <key>Recovery</key>
                 <true/>
                 <key>Duplicate</key>
                 <true/>
                 <key>WindowsEFI</key>
                 <false/>
                  <key>Grub</key>
                  <false/>
                  <key>Gentoo</key>
                  <false/>
                  <key>Ubuntu</key>
                 <false/>
                <key>OpticalUEFI</key>
                <true/>
                <key>InternalUEFI</key>
                <true/>
                <key>ExternalUEFI</key>
                <true/>
       </dict>
</dict>
Edited by buoo
Update
Link to comment
Share on other sites

DeviceProperties Injection


This is a private Apple protocol but well known initially from VBox sources and corrected by next testing. We created some DeviceProperties array (so called EFIString by, for example, EFIStudio) and permit to boot.efi use it.
But we see next requirement
In Chameleon, due to netkas efforts, there is a setting PCIRootUID=0 or 1 to make injection working. What is the number? It apperas to be _UID property of Device (PCI0). It is enough for Chameleon but EFI always use PCIRootUID=0 no matter if you see in DSDT

Device (PCI0)
{
Name (_HID, EisaId ("PNP0A03"))
Name (_ADR, 0x00)
Name (_UID, 0x01)
Name (_BBN, 0x00)
We can set in config.plist PCIRootUID=1 in this case and this works at many configurations. But
as I see on screen boot.efi searches boot device at path Acpi(PNP0A08, 0) . It means always PCIRootUID=0 and always _HID=PNP0A08.
So we have to correct DSDT to
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08"))
Name (_CID, EisaId ("PNP0A03"))
Name (_ADR, Zero)
Name (_UID, Zero)
Name (_BBN, Zero)
And then we have to set PCIRootUID=0 or just forget it because 0 is a default value.
This DSDT patch always performed by Clover so you just have to control that all is good.

Clover performs automatic DeviceProperties generation. You may set Yes on No to do that.
<key>StringInjector</key>
<string>No</string>
If NO then automatic generation.
if YES then your custom string will be used.
Consider automatic injection:
LAN injection - always ON
USB: default YES
<key>USBInjection</key>
<string>Yes</string>
Graphics injection as said before. Default - yes.
<key>GraphicsInjector</key>
<string>Yes</string>
Sound injection. This is only the property "LayoutID". This injector will not make you working sound but help you to do that.
Instructions by dmazar
// enabled by default
// syntax:
// - HDAInjection=No - disables injection
// - HDAInjection=887 - injects layout-id 887 decimal (0x00000377)
// - HDAInjection=0x377 - injects layout-id 887 decimal (0x00000377)
// - HDAInjection=Detect - reads codec device id (eg. 0x0887)
// converts it to decimal 887 and injects this as layout-id.
// if hex device is cannot be converted to decimal, injects legacy value 12 decimal
// - all other values are equal to HDAInjection=Detect

Now we can consider manual producing DeviceProperties array. You may use EFIStudio as an example but it is deprecated.
You may set Clover to automatically produce some strings and then look in it from DarwinDumper report.
You may took those strings convert them to plist,
gfxutil -i hex -o xml dp.hex dp.plist
edit the plist, for example you know your PinConfiguration
Screen shot 2012-09-17 at 12.14.01.png
Then convert the plist back to hex
gfxutil -i xml -o hex dp.plist new_dp.hex
And then copy this hex string into config.plist
<key>StringInjector</key>
<string>Yes</string>
<key>DeviceProperties</key>
<string>7a00000001000000010000006e0000000200000002010c00d041030a0000000001010600001b7fff040028000000500069006e0043006f006e00660069006700750072006100740069006f006e00730000000800000001080100180000006c00610079006f00750074002d00690064000000080000000c000000</string>
This way automatic patching will not be performed and your own string will be used.

 

EDITED.

GraphicInject has new syntax since Clover rev 2000+

		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<true/>
			<key>Intel</key>
			<false/>
			<key>NVidia</key>
			<false/>
		</dict>

There are separate settings for different vendors.

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

Development

 

You may use GloverGrover or CloverGroverPro. Here is instructions for manual development.

 

EDITED 26.08.2015: edk2 revisions go to undefined direction. We want to use revision 18198. Else you may exclude "-r 19198" if you know how to overcome incompatibilities.

cd ~
mkdir src
cd src
svn co -r 18198 https://svn.code.sf.net/p/edk2/code/trunk/edk2 edk2
cd edk2
svn co svn://svn.code.sf.net/p/cloverefiboot/code/ Clover
make -C BaseTools/Source/C
cd Clover
./buildgettext.sh
./buildgcc-4.9.sh 
./buildnasm.sh 
cd .. 
./edksetup.sh 
cp -R Clover/Patches_for_EDK2/* ./
./ebuild.sh 
./ebuild.sh -mc
./ebuild.sh -ia32

One note. In svn repository there are no files HFSPlus.efi because of licensing. Took them here from download section.
Or you may use opensource VBoxHFS.efi.
To use Apple's driver you may correct Clover.fdf from

      # foreign file system support
INF  Clover/VBoxFsDxe/VBoxHfs.inf
#INF  RuleOverride=BINARY Clover/HFSPlus/HFSPlus.inf

to

       # foreign file system support
#INF  Clover/VBoxFsDxe/VBoxHfs.inf
INF  RuleOverride=BINARY Clover/HFSPlus/HFSPlus.inf

Making package and CD image

cd ~/src/edk2/Clover/CloverPackage/
./makepkg
./makeiso 

mtoc.NEW.zip

Edited by Slice
Update for rev 3000+
  • Like 5
Link to comment
Share on other sites

About kexts injection


©dmazar
When kext injection is working, then any caches should be ignored (kernelcache, Extensions.mkext) and boot.efi should load kernel and kexts separatelly - slower boot with lot of dots on a screen. Also, if any kexts are loaded, then they should be visible in system as they would normally be. For example, FakeSMC would write some line in kernel log and can be seen with kextstat | grep -i fake.
Plus, boot.log will have something like: FSInjection: OS=xx.x Injecting kexts from: 'xxxxx' done!

If above is not happening, then this kext injection is not working.

A short info how this kext loading is working. Maybe it will help you to see what went wrong:
- FSInject.efi is loaded on startup from \efi\drivers - this is file system proxy driver that is just loaded initially. will get activated later if needed.
- volume selection screen is shown - you can mark the volume and press space to get boot options and then choose "Boot Mac OS X with extra kexts (skips cache)" (going into details to avoid confusion)
- this searches for appropriate folder where kexts could be located
--- EFI/CLOVER/OEM/xxx/kexts/xx.y (version speciffic) or
--- EFI/CLOVER/OEM/xxx/kexts/Other or
--- EFI/CLOVER/kexts/xx.y or
--- EFI/CLOVER/kexts/Other
- first one found is used, no metter if it is empty or not (possible mistake: if you are booting 10.8 and have kexts\10.8 which is empty and kexts\Other with FakeSMC, then kexts\10.8 will be used and no kexts will be added)
- if one is found, then FSInject.efi is activated - this replaces existing file system driver with our proxy implementation. this one is able to block OSX caches and inject drivers to /S/L/E.
- boot.efi is started - it can not load caches (blocked by FSInject), so it loads kernel and kexts from /S/L/E (FSInject will take care to report our extra kexts as being in /S/L/E)
- lot of dots should appear on screen during kext loading

So, this is what is required:
- FSInject.efi in /EFI/CLOVER/drivers
- kexts in appropriate folder

Kexts will be loaded always if not set boot-args=NoKexts
If you want to boot without kernelcache you may write manually boot-args=NoCache

 

There is a submenu in Details menu

- boot without cache

- boot without kexts

- boot without cache and kexts

By default all extra kexts loaded if there is no FakeSMC in the kernelcache, usual for installation.

Else we propose all kexts are in kernelcache.

Do this by

	<key>SystemParameters</key>
	<dict>
		<key>InjectKexts</key>
		<string>Detect</string>

This is default value. Other possible value "Yes" to load kexts always.

You can also may always ignore cache "NoCaches"="Yes". But this is wrong idea.

 

Kext injection in ElCapitan will work since rev 3259.

Edited by Slice
Update
  • Like 3
Link to comment
Share on other sites

Instructions for P- and C-states generator


This method was initially developed by mojodojo in Chameleon and comes to Clover with some improvements.

  • Your DSDT must contain a Processor section like this
    Scope (\_PR)
    {
    Processor (CPU0, 0x00, 0x00001010, 0x06) {}
    Processor (CPU1, 0x01, 0x00001010, 0x06) {}
    }
    Do not copy my sample! It is hardware dependent.
  • Write into config.plist
    		<key>SSDT</key>
    		<dict>
    			<key>Generate</key>
    			<dict>
    				<key>CStates</key>
    				<true/>
    				<key>PStates</key>
    				<true/>
    			</dict>
    
    
  • Generated P and C states will be as SSDT tables additional to existing so why you should drop OEM tables to not conflict with new one. It will be better to drop some tables
    		<key>DropTables</key>
    		<array>
    			<dict>
    				<key>Signature</key>
    				<string>DMAR</string>
    			</dict>
    			<dict>
    				<key>Signature</key>
    				<string>SSDT</string>
    				<key>TableId</key>
    				<string>CpuPm</string>
    			</dict>
    			<dict>
    				<key>Length</key>
    				<integer>720</integer>
    				<key>Signature</key>
    				<string>SSDT</string>
    			</dict>
    		</array>
    
    
    But OEM tables may contain not only P and C section. For example I have three table and one of them is for SATA.
    So I extracted this table, name it as SSDT-8.aml and place into /EFI/CLOVER/acpi/patched - a place where we can load additional ACPI tables.
  • Generating P-states you may use additional settings
    <key>UnderVoltStep</key>
    <string>1</string>
    This is for Core2Duo and will not work for i3-i7.
    Undervoltage technology gives you more cool CPU. Reasonable values 0,1,2. If you overcool your CPU it may freeze. :cold:
    (I mean hangs...)


    <key>PLimitDict</key>
    <string>1</string>
    This value has the same sense as in PlatformPlugin.plist. This is limit to maximum P-state counting down from 0.
    That is 0 - no limit, 1 - maximum frequency will be limited by one step before maximum. 2 - two steps before maximum...
    This is a story.
    I have notebook Dell Inspiron 1525 with Core2Duo @2400MHz. It is too high for notebook! When I write this text I usually have 600MHz
    Screen shot 2012-09-18 at 10.19.45.png
    But when I play a game my CPU go to maximum speed and the temperature becomes increasing. After 10 minutes it overrun 100C and the computers switched off. :surprised: because of overheating control.
    So I set PLimitDict=2 and now I never have CPU speed larger then 2000. PStates with 2200 and 2400 is prohibited.
    Now I can play the game infinitely long without overheating.

    NOTE! I encounter strange thing that Core2Quad works faster if PLimitDict=1. I can't explain this. So test different settings.
  • Generating C-states.
    			<key>UseSystemIO</key>
    			<false/>
    			<key>EnableC7</key>
    			<false/>
    			<key>EnableC6</key>
    			<true/>
    			<key>EnableC4</key>
    			<false/>
    			<key>EnableC2</key>
    			<false/>
    			<key>C3Latency</key>
    			<string>0x03E7</string>
    
    This technology is not proved to be fine. The settings above looks to be the best.
Edited by Slice
Update
  • Like 4
Link to comment
Share on other sites

Patching DSDT to get Sleep working

 

Performed automatically if you set some non-zero mask. Yes, the mask will be applied also on your loaded custom DSDT.

As fas as I know the DSDT collection by tony is far from perfect.

But there is another question "How to correct PlatformPlugin to get Sleep and Speedstep working".

This is not related to Clover but I have to tell about to avoid questions "Why my sleep/restart/shutdown/speedstep is not working?"

 

When you choose how your hackintosh will be named, for example, MacBook4,1, then you may look a predefined setting for this model in the system

/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/MacBook4_1.plist

And you have what to do with this plist. See red text - a text to insert or correct.


  1.  
    ConfigArray



    WWEN


    model

    MacBook4,1

    restart-action


    cpu-p-state

    0




     
    This setting will be useful for Sleep, Restart and Shutdown. Check you have problems with one of them.

  2. CtrlLoopArray


    Description
    SMC_CPU_Control_Loop

    PLimitDict

    MacBook4,1
    0

     
    This is the PLimitDict that we already consider when generating P-state. You should check if it is present else you will not SpeedStep and will not have sleep working.
     

  3. CStateDict

    MacBook4,1
    CSD3
    CSD3

    C6

    enable

    Remove this section at all!
    Having this section I see CPU always at maximum frequency.
     

  4. StepDataDict

    MacPro3,1
    SP1
    SP1

    qAYAAAAAAAEAAgQAACEAAAACAAAB//8A/wD/AP8A/wD/AAYAAP8BAAP/A...

 

This influence on how many steps will be in work.

See thread by flAked with all results. MSRDumper

For example I successfully insert this data from MacPro3,1 to plist for iMac12,1 and got better result.

Edited by .: ErmaC :.
Update
  • Like 4
Link to comment
Share on other sites

CPU settings and geekbench


No magics. Geekbench measures real CPU speed multiply by core count. Be sure your speedstep setting permit your CPU goes with higher speed, or may be with turbo.

GeekBenchScore = MaxCpuFrequency * CoreCount + RamFrequency/2 * RamChannels;

CoreCount = {2 for i3}, {3 for i5}, {4 for i7}

RamChannels = 2 if you place similar DIMMs into same colors slots. Else 1 channel.

I also saw a system with 3 channels memory.

Example: i3-2120@3.3GHz, 2channels RAM@1333MHz

GeekBench = 3300 * 2 + 1333/2 * 2 = 7933

The follow set of parameters

	<key>CPU</key>
	<dict>
		<key>BusSpeedkHz</key>
		<integer>133330</integer>
		<key>QPI</key>
		<integer>4800</integer>
		<key>Type</key>
		<string>0x0201</string>
	</dict>

Turbo = Yes if you CPU is supporting such technology which is not always true. See, for example
http://ark.intel.com...-Cache-3_30-GHz
no_turbo.png
Turbo property can't be changed. It may present or not. See boot.log

ProcessorType = 0x0201 This value corresponds to Yonah CPU. Do not set this key until something new will be found! Clover knows all CPU from Celeron M up to Haswell and can set this value automatically!

CpuFrequencyMHz = 3200 This value will be used in System Profiler and About window. No more.

BusSpeedkHz = 133330 This value must be in the range 90 - 400MHz. Some manufacture like to write into DMI the value x4, for example at some ASUS motherboard I saw 1600MHz. This is wrong.
Common rule is follow
CPUspeed = BusSpeed * Multiplier
DMI contains a value in MHz that is not exact. A better value may be written in kHz.
My examples:
133MHz -> 133330kHz
100MHz -> 99790kHz
The system will run smoother and the system clock will be more accurate.

QPI = 4800 This value appears to be in SystemProfiler as Bus Speed or Processor Bus Speed or Something else in the future system. It is mirage for Apple. Let it be. Write some value here at your will. It is cosmetic and will not influence on somewhat.
ProcessorSpeed.png
 

Edited by Slice
Update
  • Like 3
Link to comment
Share on other sites

ACPI tables loading

Rules are follow
  • Look into your boot.log to find an OEM name of your computer
    In my case
    running on Inspiron 1525
    ... with board 0U990C
    So I can use names "Inspiron 1525" or "0U990C".
  • All ACPI tables may be placed in the follow places
    /EFI/CLOVER/acpi/patched - common place
    /EFI/CLOVER/OEM/0U990C/acpi/patched - high priority. If the place exists then will not search in common place.
  • DSDT.aml may be placed at the root of booted partition. So different OSes may have different DSDT.
  • A full set of possible ACPI tables that can be loaded (with current revision 676)
    CHAR16* ACPInames[NUM_TABLES] = {
    L"SSDT.aml",
    L"SSDT-0.aml",
    L"SSDT-1.aml",
    L"SSDT-2.aml",
    L"SSDT-3.aml",
    L"SSDT-4.aml",
    L"SSDT-5.aml",
    L"SSDT-6.aml",
    L"SSDT-7.aml",
    L"SSDT-8.aml",
    L"SSDT-9.aml",
    L"APIC.aml",
    L"BOOT.aml",
    L"ECDT.aml",
    L"HPET.aml",
    L"MCFG.aml",
    L"SLIC.aml",
    L"SLIT.aml",
    L"SRAT.aml",
    L"UEFI.aml"
    };
    Since rev3000+ there is no more such list.
    You have to choice:
    - or all *aml files will be loaded from the /patched folder except dsdt*.aml files. Loading order is not guaranted
    - or you have to write into config.plist your own list what to load
    	<key>ACPI</key>
    	<dict>
    		<key>SortedOrder</key>
    		<array>
    			<string>SSDT-2.aml</string>
    			<string>SSDT-1.aml</string>
    			<string>SSDT-5.aml</string>
    			<string>SSDT-6.aml</string>
    		</array>
    	</dict>
    
    
     
    In this case only these tables will be loaded.
  • Loading new ACPI table you probably want also to drop OEM tables.
    		<key>DropTables</key>
    		<array>
    			<dict>
    				<key>Signature</key>
    				<string>DMAR</string>
    			</dict>
    			<dict>
    				<key>Signature</key>
    				<string>SSDT</string>
    				<key>TableId</key>
    				<string>CpuPm</string>
    			</dict>
    			<dict>
    				<key>Length</key>
    				<integer>720</integer>
    				<key>Signature</key>
    				<string>SSDT</string>
    			</dict>
    		</array>
    
    
     
     
  • DropDMAR=Yes is a key to resolve the problem with VT-d panics.
Edited by Slice
Update for rev 3000+
  • Like 1
Link to comment
Share on other sites

DSDTmini

 

This is universal DSDT for any Intel-based computer... Not working for now.

As we have good autopatch OEM DSDT this technology is no more needed to be developed.

Edited by ErmaC
Update
Link to comment
Share on other sites

Custom SMBios


SMBIOS part of config.plist may be as follow

	<key>SMBIOS</key>
	<dict>
		<key>ProductName</key>
		<string>MacBook1,1</string>
		<key>SerialNumber</key>
		<string>4H629LYAU9C</string>
	</dict>

Moreover, these keys may be absent too.
Clover automatically detect the hardware and chooses the best values for SMBIOS by internal tables. It is enough.
It is quite enough for all hardware configurations. You may apply your own settings in the case if you want to test how the OS will live with other settings or may be you want to set your unique serial number. OK, do this!
But do not strive to fill all fields of the section if you don't understand what is what!

How port from Chameleon Smbios.plist to Clover config.plist

To be filled ....
Example n.1

From smbios.plist (Chameleon)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SMbiosdate</key>
<string>08/03/10</string>
<key>SMbiosvendor</key>
<string>Apple Inc.</string>
<key>SMbiosversion</key>
<string>MP31.88Z.006C.B05.0903051113</string>
<key>SMboardproduct</key>
<string>Mac-F2268DC8</string>
<key>SMfamily</key>
<string>MacPro</string>
<key>SMmanufacturer</key>
<string>Apple Inc.</string>
<key>SMproductname</key>
<string>MacPro3,1</string>
<key>SMserial</key>
<string>ElEvEnChArS</string>
<key>SMsystemversion</key>
<string>1.3</string>
</dict>
</plist>

to confing.plist (Clover)
....
<key>SMBIOS</key>
<dict>
<key>BiosVendor</key>
<string>Apple Inc.</string>
<key>BiosVersion</key>
<string>MP31.88Z.006C.B05.0802291410</string>
<key>BiosReleaseDate</key>
<string>08/03/10</string>
<key>Manufacturer</key>
<string>Apple Inc.</string>
<key>ProductName</key>
<string>MacPro3,1</string>
<key>Version</key>
<string>1.3</string>
<key>Family</key>
<string>MacPro</string>
<key>SerialNumber</key>
<string>ElEvEnChArS</string>
<key>SmUUID</key>
<string>00000000-0000-X000-X000-XXXXXXXXXXXX</string>
<key>BoardManufacturer</key>
<string>Apple Inc.</string>
<key>BoardSerialNumber</key>
<string>C02032101R5DC771H</string>
<key>Board-ID</key>
<string>Mac-F42C88C8</string>
<key>BoardVersion</key>
<string>Proto1</string>
<key>Mobile</key>
<string>No</string>
<key>LocationInChassis</key>
<string>Part Component</string>
<key>ChassisManufacturer</key>
<string>Apple Inc.</string>
<key>ChassisAssetTag</key>
<string>P6TDeluxeV1</string>
<key>FirmwareFeatures</key>
<string>0xX000XXXX</string>
</dict>
....

Edited by Slice
Update
  • Like 6
Link to comment
Share on other sites

Clover F.A.Q.

 

To be filled during discussion and testing. So... begin?

  • - Question.
    - Answer.
  • - Question.
    - Answer
  • - Question.
    - Answer

 

Guys ... keep in mind that Slice (and all help him) make an extraordinary effort in an attempt to documenting the project.

 

Who asks for a Clover F.A.Q. section.

This post is currently a work in progress :moil:.... so

 

I invite anyone to write simple questions and answers that we can include in the Clover F.A.Q. post.

Edited by ErmaC
Update
Link to comment
Share on other sites

iCloudFix

 

© dmazar

Thanks to pene and slice for research and pointing into right direction, we have some kind of a workaround for iCloud sign-in problem.

 

And then ... it gets a little bit complicated. By blocking parts of those runtime services, we are also blocking Clover's injection of platform UUID through runtime services. Fortunately, we can still inject it like Chameleon and XPC, through device tree. But this requires changes in config.plist:

Instead of just specifying CustomUUID:

<key>SystemParameters</key>
<dict>
<key>CustomUUID</key>
<string>739EBE45-0D8C-5BFC-9AD1-6C5EF6E973A4</string>
...
</dict>

 

I need to specify:

 

<key>SystemParameters</key>
<dict>
<key>InjectSystemID</key>
<string>Yes</string>
<key>CustomUUID</key>
<string>5AA3001E-8C00-0042-41B2-F42804929E8A</string>
...
</dict>

 

Where:

739EBE45-0D8C-5BFC-9AD1-6C5EF6E973A4 - is my Hardware UUID displayed in System Information/Hardware Overview screen

5AA3001E-8C00-0042-41B2-F42804929E8A - is system-id that Chameleon injects to get above Hardware UUID

 

This Chameleon's system-id can be found by booting with Chameleon and then checking IOReg IODeviceTree:/efi/platform or just from Terminal:

> ioreg -l -p IODeviceTree | grep \"system-id

 

Hope it's not too complicated.

 

Also be sure your Ethernet card is set to built-in.

Edited by Slice
Update
  • Like 4
Link to comment
Share on other sites

  • 3 weeks later...

Using MOUSE


Since revision 750 there is mouse interface in Clover GUI.
In case of legacy boot (by boot0->boot1->boot) you may put a driver into the folder /EFI/CLOVER/drivers32 or /EFI/CLOVERdrivers64
PS2MouseDxe.efi
USBMouseDxe.efi
or even both of them.
No conflict expected. Moreover, you can move pointer by two mouse simultaneously.

Usually it is not needed. The driver included by default.
In case of UEFI boot you usually don't need in additional driver. It is already present in UEFI BIOS.

You must add into config.plist new values (new section)

	<key>GUI</key>
	<dict>
		<key>Mouse</key>
		<dict>
			<key>DoubleClick</key>
			<integer>500</integer>
			<key>Enabled</key>
			<true/>
			<key>Mirror</key>
			<false/>
			<key>Speed</key>
			<integer>8</integer>
		</dict>

This values are typical and are good for most hardware. You may tune for your convenience for your values.

Your theme folder must contain an image for the pointer icons/pointer.png
Installer already contains images for all themes included.

How to use? I think there will be no problem: move, click, double-click, right-click in all menus and out of items.

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

  • 1 month later...

How to make orange icons to be metallic

 
If you see orange drive instead of metallic, external instead of internal, and DVD player doesn't work you may:
- use other icns file, but this doesn't solve DVD problem;
- substitute DeviceID from ICH6, but this reduce SATA functionality;
- use DeviceMergeNub, but it is additional kext;
- use patched AppleAHCIPort.kext, but until SoftwareUpdate.
It is better to write into Clover's config.plist

	<key>KernelAndKextPatches</key>
	<dict>
		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Comment</key>
				<string>Orange_icons_fix</string>
				<key>Name</key>
				<string>AppleAHCIPort</string>
				<key>Find</key>
				<data>RXh0ZXJuYWw=</data>
				<key>Replace</key>
				<data>SW50ZXJuYWw=</data>
			</dict>
		</array>
	</dict>

It works! Drives are metallic, DVD player works.

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

×
×
  • Create New...