Jump to content

i5-7600T dual monitor output error


16 posts in this topic

Recommended Posts

use HP EliteDesk 800G3 running the latest hackintosh Big Sur. Everything is fine (or maybe I haven't discovered it yet) but I have a problem like this, please help
The e machine has 2 DP and 1 HDMI output ports. If I plug in the DP port, the screen sometimes flickers, the HDMI port is okay. And another problem is that the machine is using the HDMI port, but when I want to switch to DP, I can't output the picture, I have to reset the machine and unplug the HDMI cable to output the picture. That means plugging in 2 wires DP and HDMI can't output the image

img_35631386_raw_1506652608_3296_10009.jpg.png

@tonyx86 pls help me

EFI.zip

Edited by thientruongdx
Link to comment
Share on other sites

1 hour ago, Hervé said:

Did you individually identify the connectors that attach to your various output ports? You may need to adjust your OC config & graphics settings accordingly and possibly bypass AGDP-related output limitations if any are in place for iMac18,1, the SMBIOS you're using. Right now, you inject the following iGPU properties where con2 is set to HDMI type and pipe of all connectors set to 0x12 (any particular reason for this?):

OC_iGPU_properties.jpg

 

i5-7600T iGPU's id is 0x5912, therefore your device-id property injection is unnecessary (but harmless, of course).

 

Default settings of the KBL framebuffer you're using are as follows:


ID: 59120000, STOLEN: 38 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x0000110B
TOTAL STOLEN: 39 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 115 MB, MAX OVERALL: 116 MB (122171392 bytes)
Model name: Intel HD Graphics KBL CRB
Camellia: CamelliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 0, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[3] busId: 0x06, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
01050900 00040000 87010000
02040A00 00040000 87010000
03060A00 00040000 87010000

 

https://github.com/acidanthera/WhateverGreen

https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md

 

what should i do now?
can you guide me

Link to comment
Share on other sites

@thientruongdx

 

You'll need to experiment to figure out what works for you. Also, if you carefully read my thread here, you will learn enough to create and edit your DeviceProperties.  Here are some things to help:
 

First, you need to know which connectors are associated with which displays. The connectors con0, con1 and con2 are as shown here (red text):

 
800 G3 Mini Connectors: con0, con1, con2 as shown
Spoiler

800-G3-Back.thumb.jpg.11f1011d8ad59d782a794adb96257054.jpg



Next, you need to know the port types. Your port types (from here) are as follows:

  • DP: <00 04 00 00>
  • HDMI: <00 08 00 00>

 

Next you'll need to determine the associated Bus IDs for each connector. This may require some experimentation. It looks like you'll be ok with using Bus IDs defined in the 0x59120000 framebuffer, so you may not need to change the busIDs. Getting the right Bus IDs for me was trial and error as I explained here. If you have problems with Bus IDs, you may need to try 0x02, 0x04 and 0x06 (Bus IDs that are valid for HDMI and DP).

Next you need to decide whether you'll use Hackintool or manually edit an existing config.plist. I'd suggest editing your config.plist starting with what I have attached to this post. Use a plist editing tool (e.g. XCode or plistedit pro) to avoid typos, because if you screw up your config.plist format, config.plist will not load and OC won't boot macOS. If you don't use Hackintool to create your framebuffer patches, it's still a good tool to view your patches after you manually apply them. Here's what Hackintool shows for my framebuffer configuration (when only 2 monitors are connected to con0 and con2):
 

Hackintool connector view

Spoiler

Screen Shot 2021-05-21 at 3.34.22 PM.png



To get you started with manual edits, I have edited the attached DeviceProperties as follows:

  • framebuffer-con0-type: <00040000> (DP)
  • framebuffer-con1-type: <00040000> (DP)
  • framebuffer-con2-type: <00080000> (HDMI)

 

My attached plist defines conX-types for con0 and con1, even though these are not changed from their definition in the 0x59120000 framebuffer. I do this for clarity as I'm testing.

 

Since I don't believe the G3 Mini BIOS allows you to specify framebuffer memory, I added properties framebuffer-stolenmem and framebuffer-fbmem.  You may not need these, so you'll need to experiment.  I don't need these on my G4 Mini and my G5 Mini, but I wasn't sure about the G3 Mini.

 

Note that in the attached plist, I added conX-flags properties.  These flags may help address the connect/disconnect problem that you described and are the same flags that I use in my rig.

 

Next you'll need to determine boot-args.  The boot-args that I included in the attached plist are those that I used in my rig.  I think they should work for you, but again, you may need to experiment.


Good luck! Update us with your progress.

 

 

2xDP+1HDMI.plist.zip

Edited by tonyx86
Link to comment
Share on other sites

@thientruongdx Some of the concepts that I mentioned in my post were defined in another post that has since been deleted from this thread.  Following the deletion of those posts, some of what I posted may not be self-explanatory.  Let me know if you have questions.  When I refer to the definition of framebuffer 0x59120000, I am referring to the definition below from this reference.

 

ID: 59120000, STOLEN: 38 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x0000110B
TOTAL STOLEN: 39 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 115 MB, MAX OVERALL: 116 MB (122171392 bytes)
Model name: Intel HD Graphics KBL CRB
Camellia: CamelliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 0, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[3] busId: 0x06, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
01050900 00040000 87010000
02040A00 00040000 87010000
03060A00 00040000 87010000

 

Link to comment
Share on other sites

thank @tonyx86

I used your Plist and saw the change like this

Now I don't have 2nd monitor to check if output 2 is working fine but when I plug 2 HDMI and DP ports into the same monitor it's hard to boot1859668524_ScreenShot2021-06-19at09_59_56.thumb.png.24d91110c9b34a67905d3e7dab9423e4.png

 

And when the machine is working, changing the HDMI and DP output ports is not working. This only works after restarting the machine

Edited by thientruongdx
Link to comment
Share on other sites

@thientruongdx Please attach your updated EFI to each request for help.  Thank you.

 

Also, please tell me what the video connectors are on the monitors you are using.  Do you have 1 DP monitor (connected to a DP port on your G4 Mini) and 1 HDMI monitor (connected to the HDMI port on your G4 Mini) or are you using video adapters (e.g. DP->HDMI)?

 

Also, are you plugging your DP port and your HDMI port into a single monitor at the same time?  If so, why?

Edited by tonyx86
Link to comment
Share on other sites

@thientruongdx 

 

I don't understand your testing strategy.  If you need dual-monitors, then you should have two monitors for your testing.  I may be wrong, but I don't think "hot-swapping" DP and HDMI is very important and I don't think it's a valid way to test.  After you get everything else working, then you should experiment with hot-swapping to see if you can fix it.  For your testing, connect your two monitors and leave them connected.  If you have one monitor, then connect it with one connection (DP or HDMI - whichever works best - not both at the same time to one monitor).  Then proceed as follows...

 

Your next step is to experiment with other KBL framebuffers (AAPL,ig-platform-id) as I explain here.  I can't do this for you, because I don't have an 800 G3 Mini to test.  You may also need to experiment with different BusIDs as I explain here.  When I tested an 800 G3 Mini (before I switched to 800 G4 Mini and then 800 G5 Mini), I never got the 800 G3 Mini to wake from sleep (a known Kabylake HD630 problem).  It is possible that there will be some HD630 graphics issues (like hot-swapping HDMI and DP) that you will not be able to fix completely.

 

In this document (which you should read and learn),  the KBL HD630 framebuffers (AAPL,ig-platform-id) that you should try are listed here.  You will want to experiment with each framebuffer that has 3 Connectors and you will want to try both Desktop and Mobile framebuffers.  For my 800 G4 Mini and 800 G5 Mini, I needed to use a Mobile framebuffer as I explain here.  Others have been successful with Desktop framebuffers.  You will need to test each KBL framebuffer to determine which works best for you.

 

The experimentation process is tedious, so be patient.  As I explain here, it helps to enable System Preferences > Sharing > Remote Login so that you can remotely login to your hack if it boots to black screen (which it might do while your testing).

 

Also, I think you should carefully study EFI-OC0.7.0-r002 attached this post and read this entire thread to learn how I did it.  There are things I did that are different from your EFI.  Some things that are different include:

  • USBPort patching (I don't use USBToolBox.kext and UTBMap.kext)
  • ACPI: I have XOSI and other patches and I do not rename _DSM or EC0

If you post your unpatched DSDT.aml, I would be happy to look at it to suggest other ACPI patches for you.

 

One last thing: when you post your EFI in this forum, delete Platform>Generic>MLB, ROM, SystemSerialNumber and SystemUUID from your config.plist before you post it.  You should not publicly share that private information.

 

Good luck.  Let us know what you find during your experimentation with different KBL framebuffers and BusIDs.

Edited by tonyx86
Link to comment
Share on other sites

@thientruongdx I'll look at your DSDT when I get some time and then I will reply with comments.  

 

While you're waiting for my reply, I would suggest that you continue to experiment as I indicated here.  Also, I noticed that you are using RTCMemoryFixup.kext with boot-arg  rtcfx_exclude=00-FF.  When I was experimenting with RTCMemoryFixup.kext on my 800 G4 Mini, I found that rtcfx_exclude=00-FF breaks CPU power management.  After unsuccessfully trying to find the correct rtcfx_exclude range, I abandoned RTCMemoryFixup.kext and am now using the RTC0 patch that I include in my OC EFI attached here.  See more details here.

Edited by tonyx86
Link to comment
Share on other sites

@thientruongdx The only way to "check that AAPL,ig-platform-id matches my G3 perfectly" is for you to test and find the best one.  As you can see from here, I needed to do a lot of experimentation to find what worked for me.  I think it should be easier for you than it was for me, because I am using DP->DVI adapters and you are not using any adapters.  When I first developed my solution for the 800 G4 Mini, I didn't find any documenation that explained how to patch framebuffer for DP->DVI (in fact, the published guides at the time said NOT to use adapters).  You'll just need to test each framebuffer and pick one that works best for you.

Edited by tonyx86
Link to comment
Share on other sites

@thientruongdx After a quick review of your DSDT, here are my observations:

  • Your DSDT was captured after OC renames were applied (e.g. _DSM -> XDSM).  Would be best to have a clean ACPI captured without patches.  Search and find methods for extracting your original ACPI.

  • Add SSDT-XOSI (see my rig)

  • If you use my HPET patch (Disables HPET), you don't need any IRQ patches.  Apple has been disabling HPET since Skylake I think, so I disable it in my modern hacks.  I haven't included HPET/IRQ patches since my MacPro5,1.  See my observation here.

  • Your original DSDT includes Device (PPMC) that matches the iMac18,1 Device PMCR.  Rename PPMC to PMCR.  This may be just cosmetic (not sure), but can't hurt.

  • It looks like your SSDT-PLUG patch is wrong for your ACPI.  Your CPU ACPI path is _PR_.PR00, not _PR_.CPU0

 

This should give you enough to research and learn more about hacking your rig.

Edited by tonyx86
Link to comment
Share on other sites

@thientruongdx I'd be doing you a disservice if I spoon fed the whole solution to you.  You need to research and learn so you can maintain your rig after your get the initial solution working.  A hackintosh is not a "set it and forget it" appliance.  Do your homework and you'll be glad you "learned the hard way."

Edited by tonyx86
Link to comment
Share on other sites

 Share

×
×
  • Create New...