Jump to content

Different solutions


Andy Vandijck
 Share

925 posts in this topic

Recommended Posts

clover has an option to inject EDID. use the one generated with Displaymerge. see if that helps.

 

Thanks that is what I ended up doing.  The reason why it didn't work initially from Clover is I had a bad checksum.  Once I updated the checksum, injected worked correctly via Clover.

Link to comment
Share on other sites

  • 2 weeks later...

Hi,

My laptop lcd display has a resolution of 1920x1080 and can do 960x540 hidpi mode. Any higher resolution setting in Overrider display folder shows Invalid. I am trying to get the system to accept 1280x720 HIDPI mode (2560x1440 scaled resolution). Using FixEDID I was able to change VendorID and ProductID, but scaled resolution is still the same as before, no 1280x720 hi dpi mode. How can I fix this?

Thanks for your help. 

post-1345794-0-63816600-1405808925_thumb.png

 

Edit: Problem solved!

This is due to graphics driver. My graphics card is HD3000 and original driver from Apple does not permit higher scaled resolutions. Download modified kext from hackintosh site, install to the laptop and now all high resolutions are available including hidpi.

Anyone having problem of "System Only - Invalid?" with SwitchResX may use modified graphics drivers to get HiDPI working.

  • Like 1
Link to comment
Share on other sites

Andy, for some reason I can't get the EDID I generate to work properly. I flashed my HD6670 to have a proper screen resolution, but although the resolution is now correct, I still have underscanning at the Clover screen and boot screen on my TV. When it boots my display is offset to one side, but it still detects it as my TV, it doesn't detect it as an Apple Display or anything. I even tried using my MacBook Pro's EDID and modifying that... From my understanding as long as the display is detected as a regular display rather than a TV it should eliminate the underscan issue, is that correct? I was also hoping maybe it would be possible to change the TV's EDID and tell it that it's not a TV... I'm using HDMI btw.

Link to comment
Share on other sites

  • 2 weeks later...

I ported a number of tools to Mac OS X for getting some hardware info on some machines.

- ectool: Tool to get info from the Embedded Controller

- flashrom: You know this one ;)

- ethtool: Tool to get info from the ethernet adapters / WiFI cards (mostly done)

- ich_descriptors_tool: Tool to get south bridge info

- ifdtool: Tool to get info from UEFI BIOS

- inteltool: Tool for Intel CPU info

- lspci: PCI Info

- mptable: Tool to get multiprocessor description table

- msrtool: Tool for MSR info

- nvramtool: Tool for NVRAM info

- osxpmem: Tool for getting OS X memory data

- probe, video: Tool for checking Intel GPUs

- setpci: Tool for setting PCI data

- superiotool: Tool for probing SuperIO chip

- testvideobios: Tool for forcing load of a custom (video) BIOS ROM

 

2 kexts:

- DirectHW.kext: Direct HW communication driver

- pmem.kext: Direct memory access driver, this creates /dev/pmem

 

Enjoy :D

 

I also collected some info on a real MacBook Pro.

Also my laptop dump from some of the apps is attached ;)

hw_tools.zip

LaptopDump.zip

MBP81INFO.zip

  • Like 15
Link to comment
Share on other sites

Thanks to Andy posting pmem.kext because I have now been able to do something I wanted to do for a while and that’s put a script together to dump the ACPI tables directly from memory. I only put it together in the last 24 hours or so, so it’s not perfect and it may not work for everyone. 

 
The script doesn’t deal with ACPI_recl (reclaimable) regions so it may fail to find the RSDP pointer. It fails on my iMac so for now I uncomment line #282 and force a larger block size of memory to read and then it works.
 
There may well be other error checks which haven’t be dealt with properly too, but for now it works as an example of reading memory directly from within OS X.
 
I’ve tested it on 10.9 and 10.10 DP5.
 
The script requires a memory map to work from. I have been using the FirmwareMemoryMap.txt file from DarwinDumper’s Firmware Memory Map option.
 
Usage is:
./dumpACPIfromMem.sh
or
./dumpACPIfromMem.sh /path/to/FirmwareMemoryMap.txt

 
ps. @Andy - I hope you don’t mind me posting this here but I thought this would show a good example for the kext.
 
EDIT: I forgot to mention that this dumps the native tables from BIOS and not the tables injected by the boot loader.
 
EDIT2: I will work to improve the script to make it dump more as I see it currently does not get all the SSDT tables as you'd see from using Linux or Clover (F4) from GUI.  Done.
 
 
EDIT: Attachment removed.
The script has now matured sufficiently to the point where I wish to see results from other hardware. I have moved this request to the DarwinDumper thread as that is where I eventually wish this script to a part of.
  • Like 3
Link to comment
Share on other sites

EDIT: I forgot to mention that this dumps the native tables from BIOS and not the tables injected by the boot loader.

 

some 'bootloaders' also update the legacy regions for ACPI and DMI so the correct tables will be dumped.

  • Like 1
Link to comment
Share on other sites

Thanks for the note bs0d. I currently have the option of booting using Chameleon, Clover or Ozmosis so I'll check this evening using the updated version of the script that I've just added to the above post.

I do quite like the option of being able to dump native tables though..

Link to comment
Share on other sites

Thanks for the note bs0d. I currently have the option of booting using Chameleon, Clover or Ozmosis so I'll check this evening using the updated version of the script that I've just added to the above post.

I do quite like the option of being able to dump native tables though..

@blackosx good luck bro i will try your next update :)

Link to comment
Share on other sites

I’ve managed to grab some time to test v0.35 of my script on OS X 10.9.4 booted using three different loaders. I’ve run the script twice, first time taking the first RSDP pointer found in memory, and then second time taking the last RSDP pointer found in memory.
 
EDIT: Revised to include tables from all RSDP pointers found (not just first and last)
 
Ozmosis
Only valid pointers found in whole scan were:
---------------------------------------------------------------
RSD PTR #1 : Revision=02 | RSDT Address=cab84028 | XSDT Address=00000000cab84070 | XSDT Length=36
RSD PTR #1 : Revision=02 | RSDT Address=cabb1028 | XSDT Address=00000000cabb1060 | XSDT Length=36
RSD PTR #1 : Revision=02 | RSDT Address=cabbf028 | XSDT Address=00000000cabbf070 | XSDT Length=36
RSD PTR #2 : Revision=02 | RSDT Address=cabc0028 | XSDT Address=00000000cabc0070 | XSDT Length=36
---------------------------------------------------------------
Get first RSDP pointer
=====================
Found Table: XSDT at 00000000cab84070 | Length: 100 | Table ID: A M I
Number of tables in XSDT = 8
Found Table: FACP at 00000000cab8fc68 | Length: 244 | Table ID: A M I
Found Table: APIC at 00000000cab8fd60 | Length: 146 | Table ID: A M I
Found Table: MCFG at 00000000cab8fdf8 | Length: 60 | Table ID: A M I
Found Table: HPET at 00000000cab8fe38 | Length: 56 | Table ID: A M I
Found Table: SSDT at 00000000cab8fe70 | Length: 877 | Table ID: SataTabl
Found Table: SSDT at 00000000cab901e0 | Length: 2474 | Table ID: Cpu0Ist
Found Table: SSDT at 00000000cab90b90 | Length: 2706 | Table ID: CpuPm
Found Table: DMAR at 00000000cab91628 | Length: 176 | Table ID: SNB 
Found Table: DSDT at 00000000cab84168 | Length: 47866 | Table ID: A M I
Found extra SSDT tables
01e95018 points to zero data
Found Table: SSDT at ca8eda98 | Length: 771 | Table ID: ApIst
Found Table: SSDT at ca8ec018 | Length: 2107 | Table ID: Cpu0Cst
Found Table: SSDT at ca8eec18 | Length: 281 | Table ID: ApCst
Get second RSDP pointer
=====================
Found Table: XSDT at 00000000cabb1060 | Length: 60 | Table ID: A M I
Number of tables in XSDT = 3
Found Table: FACP at 00000000cabbcc28 | Length: 244 | Table ID: A M I
Found Table: APIC at 00000000cabbcd20 | Length: 146 | Table ID: A M I
Found Table: MCFG at 00000000cabbcdb8 | Length: 60 | Table ID: A M I
Found Table: DSDT at 00000000cabb1128 | Length: 47866 | Table ID: A M I
Get third RSDP pointer
=====================
Found Table: XSDT at 00000000cabbf070 | Length: 92 | Table ID: A M I
Number of tables in XSDT = 7
Limiting length to 1MB
Found Table: -ext at 00000000cabc10c8 | Length: 1048576 | Table ID: PL,curre
00000000cabc11c0 points to zero data
Limiting length to 1MB
Found Table: (?? at 00000000cabc1258 | Length: 1048576 | Table ID: ????
Limiting length to 1MB
Found Table: ? at 00000000cabc1298 | Length: 1048576 | Table ID: ?
Limiting length to 1MB
Found Table:  at 00000000cabc12d0 | Length: 1048576 | Table ID: ??rT_0
00000000cabc1640 points to zero data
Found Table: FACP at 00000000cabc20d8 | Length: 244 | Table ID: Notebook
Found Table: DSDT at 00000000cabc0168 | Length: 8041 | Table ID: Notebook
Get last RSDP pointer
=====================
Found Table: XSDT at 00000000cabc0070 | Length: 100 | Table ID: Notebook
Number of tables in XSDT = 8
Found Table: FACP at 00000000cabc20d8 | Length: 244 | Table ID: Notebook
Found Table: APIC at 00000000cabc21d0 | Length: 146 | Table ID: Notebook
Found Table: MCFG at 00000000cabc2268 | Length: 60 | Table ID: Notebook
Found Table: HPET at 00000000cabc22a8 | Length: 56 | Table ID: Notebook
Found Table: SSDT at 00000000cabc22e0 | Length: 877 | Table ID: SataTabl
skipping table with address 0000000000000000
Found Table: SSDT at 00000000cabc2700 | Length: 908 | Table ID: CpuPm
Found Table: SLIC at 00000000cabc2a90 | Length: 374 | Table ID: Notebook
Found Table: DSDT at 00000000cabc0168 | Length: 8041 | Table ID: Notebook
 
Chameleon (DropSSDT = Yes)
 
Only valid pointers found in whole scan were:
---------------------------------------------------------------
RSD PTR #1 : Revision=02 | RSDT Address=cab84028 | XSDT Address=00000000cab84070 | XSDT Length=36
RSD PTR #2 : Revision=02 | RSDT Address=cabb1028 | XSDT Address=00000000cabb1060 | XSDT Length=36
---------------------------------------------------------------
Get first RSDP pointer
=====================
Found Table: XSDT at 00000000cab84070 | Length: 100 | Table ID: A M I
Number of tables in XSDT = 8
Found Table: FACP at 00000000cab8fc68 | Length: 244 | Table ID: A M I
Found Table: APIC at 00000000cab8fd60 | Length: 146 | Table ID: A M I
Found Table: MCFG at 00000000cab8fdf8 | Length: 60 | Table ID: A M I
Found Table: HPET at 00000000cab8fe38 | Length: 56 | Table ID: A M I
Found Table: SSDT at 00000000cab8fe70 | Length: 877 | Table ID: SataTabl
Found Table: SSDT at 00000000cab901e0 | Length: 2474 | Table ID: Cpu0Ist
Found Table: SSDT at 00000000cab90b90 | Length: 2706 | Table ID: CpuPm
Found Table: DMAR at 00000000cab91628 | Length: 176 | Table ID: SNB 
Found Table: DSDT at 00000000cab84168 | Length: 47866 | Table ID: A M I
Found extra SSDT tables
Limiting length to 1MB
Found Table: p{N
                 at 01e95018 | Length: 1048576 | Table ID: 
Found Table: SSDT at ca8eda98 | Length: 771 | Table ID: ApIst
Found Table: SSDT at ca8ec018 | Length: 2107 | Table ID: Cpu0Cst
Found Table: SSDT at ca8eec18 | Length: 281 | Table ID: ApCst
Get last RSDP pointer
=====================
Found Table: XSDT at 00000000cabb1060 | Length: 60 | Table ID: A M I
Number of tables in XSDT = 3
Found Table: FACP at 00000000cabbcc28 | Length: 244 | Table ID: A M I
Found Table: APIC at 00000000cabbcd20 | Length: 146 | Table ID: A M I
Found Table: MCFG at 00000000cabbcdb8 | Length: 60 | Table ID: A M I
Found Table: DSDT at 00000000cabb1128 | Length: 47866 | Table ID: A M I
 
Clover EFI
Only valid pointers found in whole scan were:
---------------------------------------------------------------
RSD PTR #1 : Revision=02 | RSDT Address=00000000 | XSDT Address=000000001ff69000 | XSDT Length=36
RSD PTR #2 : Revision=02 | RSDT Address=cabb1028 | XSDT Address=00000000cabb1060 | XSDT Length=36
---------------------------------------------------------------
Get first RSD pointer
=====================
Found Table: XSDT at 000000001ff69000 | Length: 108 | Table ID: A M I
Number of tables in XSDT = 9
Found Table: FACP at 000000001ff68000 | Length: 244 | Table ID: A M I
Found Table: APIC at 00000000cab8fd60 | Length: 146 | Table ID: A M I
Found Table: MCFG at 00000000cab8fdf8 | Length: 60 | Table ID: A M I
Found Table: HPET at 00000000cab8fe38 | Length: 56 | Table ID: A M I
Found Table: SSDT at 000000001ff63000 | Length: 877 | Table ID: SataTabl
Found Table: SSDT at 000000001ff61000 | Length: 2474 | Table ID: Cpu0Ist
Found Table: SSDT at 000000001ff5f000 | Length: 2706 | Table ID: CpuPm
Found Table: DMAR at 00000000cab91628 | Length: 176 | Table ID: SNB 
Found Table: SSDT at 000000001ff5e000 | Length: 1549 | Table ID: CpuPm
Found Table: FACS at 00000000cabbdf80 | Length: 64
Found Table: DSDT at 000000001ff65000 | Length: 8041 | Table ID: A M I
Get last RSD pointer
=====================
Found Table: XSDT at 00000000cabb1060 | Length: 60 | Table ID: A M I
Number of tables in XSDT = 3
Found Table: FACP at 00000000cabbcc28 | Length: 244 | Table ID: A M I
Found Table: APIC at 00000000cabbcd20 | Length: 146 | Table ID: A M I
Found Table: MCFG at 00000000cabbcdb8 | Length: 60 | Table ID: A M I
Found Table: DSDT at 00000000cabb1128 | Length: 47866 | Table ID: A M I
EDIT:
So with all three loaders it's possible to retrieve both original BIOS tables and injected tables. 

As far as I know, Ozmosis does not give me the option of dropping SSDT tables, instead I guess intelligently deciding which tables to drop?

  • Like 2
Link to comment
Share on other sites

Hey Andy :-)

 

Sry my Laptop was in RMA, and i had no time in the meantime...

 

But they bricked my Keyboard Backlight and i need to send it again to RMA :-(

 

After i get a working Laptop back, i will look forward here!

 

But thank you very very much Andy, for all your time and work you investigated for me!

 

Cheers :-)

  • Like 1
Link to comment
Share on other sites

dear Andy,

I have a stupid question .... how do I add the files in clover?

Please create a short description for stupid user

 

Thanks in advance verbeug.gif

 

spakk

Link to comment
Share on other sites

dear Andy,

I have a stupid question .... how do I add the files in clover?

Please create a short description for stupid user

 

Thanks in advance verbeug.gif

 

spakk

Put them either under /EFI/CLOVER/drivers64 in case of legacy boot or /EFI/CLOVER/drivers64UEFI in case of UEFI boot.

You can also do them both ;)

Same goes for the 32 bit drivers, drivers32 and drivers32UEFI...

  • Like 3
Link to comment
Share on other sites

Very cool... nice work.

 

I swapped HFSPLUS-64.efi for the Apple extract HFSPlus.efi in latest build of Clover.

 

It worked, but is noticeably slower than the Apple code. My boot (Clover->OS X login) goes from 6.7 seconds to 9.1.

 

Compiled with optimizer on?

Link to comment
Share on other sites

Andy, awesome, are these HFS+ drivers read and write? Because if so what license are these sources under? I would definitely want to put an open source hfs+ read/write driver into clover sources.....

Unfortunately no.

These are not read+write.

They are licensed under the GPL as they use the filesystems that are part of GRUB.

Plenty of other filesystem though (including exfat, ntfs, ...)

Link to comment
Share on other sites

Put them either under /EFI/CLOVER/drivers64 in case of legacy boot or /EFI/CLOVER/drivers64UEFI in case of UEFI boot.

You can also do them both ;)

Same goes for the 32 bit drivers, drivers32 and drivers32UEFI...

 

Hey Andy

 

but only add to the existing folders? or you have to remove the drivers that are already there? ie they can be together?

Link to comment
Share on other sites

Thank you Andy Vandijck...great effort!... :) 

 

One question for you. 

 

In my "drivers64UEFI" folder i have these files:

 

4gOWho.png

 

​But in your archive there are so many .efi files. 

 

Then, my question is:

 

which of your files have to put in my folder? 

 

Regards.

Link to comment
Share on other sites

The only driver that can be replaced at your folder for his correspondent (if you want to try it) is HFSPlus-64.efi...

 

This collection provided by AnV are only FileSystem drivers that (also) can be used with Clover...

 

They wasn't built specifically for Clover...

  • Like 2
Link to comment
Share on other sites

 Share

×
×
  • Create New...