Contribute
Register

[GUIDE] General Framebuffer Patching Guide (HDMI Black Screen Problem)

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
2,924
Motherboard
Gigabyte Designare Z390
CPU
i7-9700K
Graphics
RX 580
Mac
MacBook Air, Mac Pro
Classic Mac
Quadra
Mobile Phone
iOS
General Framebuffer Patching Guide using Hackintool

15 Jan 2019: Intel FB-Patcher has been renamed to Hackintool.
19 Jan 2019: Guide overhauled. Please be aware of possible HDMI hot-plug issues. After boot you may have to unplug and replug HDMI cable.
02 Feb 2019: Screenshots updated for new Hackintool GUI design and added Step 16 to "disablegfxfirmware".
12 Mar 2019: Hackintool v2.0.9 and newer incorporates the various connector patches from the Compilation of Patches for Various Motherboards below. See that section for details!


About this Guide
If you have a relatively recent motherboard with an Intel iGPU, and on-board HDMI is not working, here's a general guide that may help. This guide is meant to supplement -- not replace -- existing framebuffer patching guides.

Do you have a 360, 370, or 390 series motherboard with desktop Coffee Lake processor, either HDMI or DP monitor, and a Gigabyte, ASUS, ASRock, or MSI motherboard and want to try your luck with a pre-built framebuffer patch? Then check out Compilation of Patches for Various Motherboards at the end of this Guide.

This guide is best suited to relatively new, modern components. This includes (a) modern CPU, (b) modern motherboard, and most importantly, (c) modern monitor. A large number of problems are due to the use of televisions, old monitors, or monitors without DisplayPort 1.2+ or HDMI 1.4+ support.

The primary purpose of this Guide is to activate the on-board HDMI port on your motherboard with the intention of using that port to drive a single monitor. This guide does not recommend using a multi-monitor setup with the iGPU. Multi-monitor setups are best handled by discrete AMD graphics cards.

Contents
This guide is organized into the following sections. You may jump to any section by clicking on the link.
  1. Theory
  2. Preflight Checklist
  3. Preparation
  4. Procedure
  5. Finishing Up
  6. References
  7. Compilation of Patches for Various Motherboards
  8. Help Others
Theory
There are many motherboards available from ASRock, ASUS, EVGA, Gigabyte, MSI and others. The on-board video ports on these boards come in many different combinations. Some boards offer one HDMI and two DPs. Some boards offer two HDMIs. Others may provide DVI and VGA as well. (But note that there is no support for VGA even if the motherboard has a VGA connector.) Update: We now have two confirmed cases of working VGA ports with macOS 10.14 (Mojave) and Coffee Lake CPUs. Therefore, VGA is now considered to be supported.

When MacOS initializes the iGPU display driver (called AppleIntelFramebuffer) it does not know the specific video ports on the motherboard. It doesn't know which port is HDMI, which is DVI, etc. So depending on the Platform ID you select, it makes default assumptions. For Platform ID 0x3E9B0007, for example, all ports are treated by default as DisplayPorts (VGA is also treated as DisplayPort). So if you were to connect a DisplayPort (or VGA) monitor to the motherboard, it would work right away. But if you were to connect an HDMI or DVI monitor to the motherboard, you would get no display at all -- because by default MacOS thinks those are DisplayPort connections.

Fortunately there is a relatively straightforward way to change the default port map. Every physical video port on the motherboard is associated with a port number. These port numbers are 5, 6, and 7, but they are wired to different physical ports on different boards. MacOS allows a maximum of 3 external video connections through the iGPU.

On some motherboards Port 5 may be wired to HDMI, while on others it may be wired to DP or DVI or VGA. Likewise, Ports 6 and 7 are wired to different physical ports on different boards. To solve the HDMI and DVI black screen problem, we first need to determine which ports on the motherboard are wired to HDMI (if any), which are wired to DVI (if any), and which (if any) are wired to DP or VGA.

Once we have determined the physical port mappings for the motherboard, we provide this information to MacOS by filling out a simple Framebuffer Table. Because a maximum of 3 external video ports are supported by MacOS, we can define up to 3 software connectors or "cons". Any software connector can be mapped to any physical video port.
  • The 3 software connectors are called con0, con1, and con2.
  • The 3 physical ports 5, 6, and 7 are available to us as software Indexes 1, 2, and 3.
  • Software Index 1 always refers to physical Port 5.
  • Software Index 2 always refers to physical Port 6.
  • Software Index 3 always refers to physical Port 7.
  • HDMI and DVI are considered to be the same. Set Type to HDMI for both HDMI and DVI physical ports.
  • DP and VGA are considered to be the same. Set Type to DP for both DP and VGA physical ports.
So for example:
  • If we want to inform MacOS that physical Port 6 is type HDMI, we set Index 2 to Type HDMI.
  • If we want to inform MacOS that physical Port 5 is type DVI, we set Index 1 to Type HDMI (because DVI and HDMI are equivalent in MacOS).
  • If we want to inform MacOS that physical Port 7 is type DP, we set Index 3 to Type DP.
  • If we want to inform MacOS that physical Port 7 is type VGA, we set Index 3 to Type DP (because VGA and DP are equivalent in MacOS).
But in addition to Type we also need to specify something called the BusID. Every software connector must be assigned a unique BusID, but only certain BusID values are permitted:
  • DisplayPort is the most flexible. BusIDs 0x02, 0x04, 0x05, 0x06 are permitted. Any of these values should work on any motherboard. These values apply to VGA as well.
  • HDMI is very restrictive. Only BusIDs 0x01, 0x02, 0x04, 0x06 are permitted but some motherboards will only accept one or two of these possibilities. The Gigabyte Designare Z390, for instance, only accepts 0x04.
  • DVI is the same as HDMI. The same BusIDs and even the same Type are used.
With this crash course in Ports, Connectors, Indexes, Types, and BusIDs we're ready to start...

We begin by determining the Type of each physical Port. Once we have completed this task, the rest is relatively easy. So in the beginning we have 3 answers to discover:
  • Port 5 (Index 1) is which Type?
  • Port 6 (Index 2) is which Type?
  • Port 7 (Index 3) is which Type?
The high level procedure is illustrated below.
Port to Index Mapping.png
Preflight Checklist
  1. Download Hackintool from here.
  2. Lilu and WhateverGreen must be installed.
  3. Your computer must be booted up with proper graphics Device ID and Platform ID values. These can be specified easily in Clover. Choose either Option 1 or Option 2 below.
    • Devices --> Fake ID --> IntelGFX --> Enter appropriate Device ID (e.g. 0x3E9B8086).
    • Graphics --> Inject Intel --> Check this ON.
    • Graphics --> ig-platform-id --> Click pop-up menu and choose appropriate ID (e.g. 0x3E9B0007).
    Be sure to replace PciRoot(0x0)/Pci(0x2,0x0), AAPL,ig-platform-id, and device-id with values that are correct or appropriate for your system.
    Code:
    <key>Properties</key>
    <dict>
        <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
        <dict>
            <key>AAPL,ig-platform-id</key>
            <data>BwCbPg==</data>
            <key>device-id</key>
            <data>mz4AAA==</data>
            <key>framebuffer-patch-enable</key>
            <data>AQAAAA==</data>
        </dict>
    </dict>
  4. For most Coffee Lake desktop processors, Device ID 0x3E9B and Platform ID 0x3E9B0007 can be used. Please refer to this framebuffer patching guide to determine the appropriate values for your system. These values allow the proper display driver to be attached to the iGPU. If the default (non-accelerated) display driver gets attached instead, then this Guide will not work. Any Platform ID with all connectors set to Index = -1 is known as a headless platform, and must be avoided, such as Platform ID 0x3E920003 as shown:
    Hackintool - Headless.png
  5. But herein lies the problem: When the proper (accelerated) display driver is connected, your motherboard's HDMI and DVI ports will stop working. So you must either (1) connect your display monitor to a different but working video port on the motherboard (try DisplayPort), or (2) use a discrete (external) GPU and connect your display monitor to the discrete GPU.
  6. To determine whether the proper display driver is attached to the iGPU, run Hackintool. If GPU Info is shown properly as in the image below, then you're good to proceed. If you see GPU: ??? then start again at Preflight Check or post a request for help.
    Hackintool - GPU Info.png
  7. Make a list of the video ports on your motherboard (e.g. HDMI, DP, DVI-D, VGA).
  8. During the procedure we will need to test each of the video ports. So you must have monitor(s) and cables for each type of video connector. The procedure can, however, be followed even if one of the cable types is not available or supported by your monitor, but that will add a bit of guesswork.
  9. At this point your computer is booted up and running with the accelerated display driver for your iGPU. It does not matter whether you specified ig-platform-id and graphics Device ID using fields/checkboxes in Clover Configurator or by inserting Devices-->Properties. It just matters that the accelerated driver is active. But now you must clear the following settings (if they exist) from config.plist (use Clover Configurator) but DO NOT REBOOT:
    • Devices --> Fake ID --> IntelGFX --> remove any entry you might have made in this field.
    • Graphics --> Inject Intel --> uncheck the checkbox.
    • Graphics --> ig-platform-id --> remove any entry you might have made in this field.
  10. Save the config.plist and quit Clover Configurator.

Preparation
  1. Run Hackintool. From the top menu bar, select Framebuffer and choose macOS 10.14.
    Hackintool - Select Framebuffer.png
  2. From the Patch menu, select Apply Current Patches and make sure the check-mark is present!
    Hackintool - Patch Menu.png
    Note: This option displays the currently active framebuffer settings in the Connectors tab. It does not actually apply any changes to your system. But when changes are made as described later in this Guide and the system is rebooted, this option displays those settings instead of the default framebuffer settings. So if you made and applied some changes, rebooted, and did not see those changes in Hackintool, it is because Apply Current Patches was not selected. Also note that whenever you select a new Platform ID from the pop-up menu, the default settings for that platform will appear in Connectors (as it should). To see your previously applied settings, however, just select Apply Current Patches once again.
  3. Select the most appropriate Platform ID for your motherboard. See Which ig-platform-id should I use for my system. Different Platform IDs will have a different set of connectors. If you choose a headless platform ID, all connectors will have Index = -1 (all off).
    Hackintool - Headless Platform.png
  4. In this case we select Platform ID 0x3E9B0007 and then we click the Connectors tab. This will be our main focus -- this is the connector mapping table -- where we can assign Index, BusID, Pipe, Type, and Flags. Each row in the table corresponds to a software connector. Connectors are numbered sequentially from 0. So we are looking at the mapping table for con0, con1, and con2. At this time, don't trust any of the values in this table!
    Hackintool - Chose 3E9B0007.png Hackintool - Default Connectors.png
  5. If your monitor is connected to one of the on-board video ports, one of the rows will be highlighted in red. Because I used a DisplayPort cable and nothing else, only one row is highlighted. This tells me definitively that the red line belongs to a DisplayPort connection. So now I need to determine its Port number. This is done by clicking on the red row and reading Port number from the bottom right of the window.
    Hackintool - DP1 Highlight.png Hackintool - DP1 Port.png
    Great! One down, two to go. We now know that Port 5 -- which is Index 1 -- is DisplayPort. So our discovery result looks like this:
    • Port 5 (Index 1) is DisplayPort

Procedure
  1. Keep your primary monitor connected at all times.
  2. Now connect one of the other on-board video ports to a monitor that supports that type of input. For example, if your motherboard has a DVI port, connect it now to a monitor with DVI input. Chances are that all of your DisplayPort connections will light up, but your DVI and HDMI connections may or may not light up. Do not use video adapters (e.g. DP-to-HDMI, DVI-to-HDMI, etc.) during this procedure. Instead, use straight connections (HDMI-to-HDMI, DP-to-DP, DVI-to-DVI, etc.).
  3. One of the rows in Hackintool will light up in red. Because my motherboard has 2 DisplayPort connectors, I now unplugged the cable from the first one and inserted it into the second. As soon as I did this, a different row lit up in red. And once again we need to determine Port number by clicking the red bar. In this case the port number of the second DisplayPort connector is 6.
    Hackintool - DP2 Highlight.png Hackintool - DP2 Port.png
    Our discovery result has now expanded to this:
    • Port 5 (Index 1) is DisplayPort
    • Port 6 (Index 2) is DisplayPort
  4. Because there are only 3 video connectors on this motherboard and I know that my HDMI output isn't working, there's no point connecting an HDMI cable. But feel free to connect one and verify the black screen. Through the process of elimination we can safely conclude that Port 7 (Index 3) must be HDMI. So our discovery result now looks like this:
    • Port 5 (Index 1) is DisplayPort
    • Port 6 (Index 2) is DisplayPort
    • Port 7 (Index 3) must be HDMI
  5. Now look at the Type and Index columns. We see that all three rows are set to Type DP (DisplayPort) and the Index values are 1, 2, and 3. The first two look correct, but we have just determined that Index 3 must be HDMI.
  6. So we change the Type of Index 3 to HDMI from the pop-up menu. And we set its BusID to 0x04. Why 0x04? There are other possible values for BusID, but we need to start somewhere and test the possibilities one at a time. Because BusID 0x04 is currently assigned to Index 2, we swap the values between them. Index 2 get BusID 0x06 (which is a valid BusID for DisplayPort) and Index 3 gets 0x04. So the result looks like this:
    Hackintool - HDMI Parameters.png
  7. Now we're ready to test our changes. Click the Patch tab and make the selections shown in the General and Advanced sub-tabs: (Because I'm using a Coffee Lake processor, the Device ID in the Advanced sub-tab is set to 0x3E9B: Intel UHD Graphics 630. You should select the most appropriate Device ID for your CPU.)
    Hackintool - Patch General.png Hackintool - Patch Advanced.png
  8. Hackintool sometimes resets the Connectors page when certain checkboxes are clicked. So at this time go back to Connectors page, double-check your settings (redo them if needed), and return to the Patch page. And now click Generate Patch.
    Hackintool - Patch Generate.png
  9. Now we need to insert the patch into our existing config.plist. Mount the EFI partition of the Mojave SSD using Clover Configurator or EFI Mounter v3.
  10. Then select File --> Export --> Clover config.plist from the Hackintool menu bar as follows:
    Hackintool - File Export Patch to config.png
  11. And from the file browser that appears, navigate to the CLOVER folder on the EFI partition of the Mojave SSD and select the existing config.plist. Hackintool will backup the existing file and insert the patch directly into the config.plist in a non-destructive manner.
  12. Now the patch has been installed so let's test our changes. Reboot the computer at this time.
  13. When Mojave starts up, login and connect your motherboard's HDMI port to an HDMI input on your monitor. Does HDMI turn on? At this stage it might not. But if it does, we're done!
  14. If HDMI (or DVI) does not turn on, try a different permitted BusID. Run Hackintool once again, select Framebuffer --> macOS 10.14 and verify that Patch --> Apply Current Patches is still checked on. Then repeat Steps 5 through 13, but apply a different BusID using the following cheat sheet:
    BusIDs with VGA.png
  15. If you have fewer than 3 video ports there are two options for disabling unused Indexes. Option 1 is to set the Index value to -1. Option 2 is to leave the Index value as-is, but set the BusID to 0x00. Based on some user feedback, Option 2 may be the one to try first. For example, if you have a single HDMI at Port 0x07 (Index 3) you could try any of the configurations in the spoiler below.
    Index 3: BusID 0x04, Type HDMI
    Index 1: BusID 0x00, Type DUMMY
    Index 2: BusID 0x00, Type DUMMY
    Index -1: BusID 0x00, Type DUMMY


    or

    Index 1: BusID 0x00, Type DUMMY
    Index 3: BusID 0x04, Type HDMI
    Index 2: BusID 0x00, Type DUMMY
    Index -1: BusID 0x00, Type DUMMY


    or

    Index 1: BusID 0x00, Type DUMMY
    Index 2: BusID 0x00, Type DUMMY
    Index 3: BusID 0x04, Type HDMI
    Index -1: BusID 0x00, Type DUMMY
  16. In order to reduce graphics glitches and prevent some (rare) boot failures, it's recommended to enable the "disablegfxfirmware" checkbox as shown.
    CC - disablegfxfirmware.png

Finishing Up
This turned out to be a relatively simple case because two of the three ports were configured properly by default and there was virtually no guesswork. But what if no other row lights up when you connect another video port? In this case you have to resort to trial and error. Hopefully one of the ports will be known, so you only have to figure out one more or two more.

Let's say you've already discovered that Port 5 (Index 1) is DisplayPort, and that's all the information you can get because no other row turns red. So if the next port to configure is HDMI, you would try to assign HDMI to Port 6 (Index 2) and set its Type and BusIDs appropriately and reboot. If HDMI still does not activate, you would assign it to Port 7 (Index 3) and set its Type and BusID appropriately. If this still fails, you would try a different BusID on Port 6 and then again on Port 7 until you find the magic combination.

Once HDMI (or DVI) has been successfully enabled we can run Hackintool once again to check the Port number. First, we see that the row marked HDMI is now lit up in red (the first row is our DisplayPort connection) and if we click on the HDMI row itself, we can confirm that the Port number is indeed 0x07.
Hackintool - HDMI Highlight.png Hackintool - HDMI Port.png
And we're done!

References
  1. The techniques described in this guide depend on Lilu and its plug-in, WhateverGreen. A thorough guide to Lilu and its various plug-ins is located here. Written by @jaymonkey, it goes into considerably more depth and uses a large number of examples.
  2. Written by @headkaze, author of Hackintool, this guide covers a broad range of Intel processor generations.

Compilation of Patches for Various Motherboards
Framebuffer patches submitted by forum members are provided here. If your motherboard is listed, you may be able to simply copy-and-paste the patch into your config.plist as described in the spoiler below.

Update: 12 Mar 2019: Hackintool v2.0.9 and newer incorporates these predefined connector patches so you can simply select the appropriate one from the Patch --> System Configs menu bar item. See Procedure to Insert Framebuffer Patch into config.plist below for details.
SystemConfigs2.png

12 Mar 2019: You can now use Hackintool v2.0.9 or newer to inject framebuffer connector patches directly, without having to follow the manual procedure below.

Hackintool Method:
To inject Framebuffer connector patches through Hackintool, follow this procedure:
  1. Run Hackintool and select the menu bar item Framebuffer --> MacOS 10.14 or Framebuffer --> MacOS 10.13 as appropriate.
  2. Mount your EFI partition. This can be done from Hackintool itself, from Clover Configurator, or from EFI Mounter v3.
  3. Use the menu bar item Patch --> System Configs to select your motherboard. Not all motherboards, of course, are listed. If your motherboard is not listed, try using a similar motherboard -- one that has the same number and types of video ports on its I/O panel. If that does not work, use the full procedure from the beginning of this post.
  4. Click the Intel icon on the top left of Hackintool, then click Connectors tab at the bottom to view the connector settings that were applied.
  5. Click the Patch tab at the bottom and follow Steps 7 to 11 in the Procedure section of the main guide. This will generate the patch from the connector settings and save them to your config.plist.
End of Hackintool Method.

Manual Method:
If you prefer to inject Framebuffer connector patches manually, follow this procedure:
  1. Mount EFI partition of the Mojave SSD.
  2. From the EFI/CLOVER folder, edit config.plist using BBEdit, TextWranger, or TextEdit. If you choose TextEdit, make sure to select "Make Plain Text" as shown:
  3. Now find the indicated section in the file and paste the framebuffer patch.
    XML:
    <key>Devices</key>
    <dict>
        <key>Audio</key>
        <dict>
            <key>Inject</key>
            <integer>11</integer>
            <key>ResetHDA</key>
            <true/>
            </dict>
                <key>FakeID</key>
                <dict>
                <key>ATI</key>
                <string>0x0</string>
                <key>IMEI</key>
                <string>0x0</string>
                <key>IntelGFX</key>
                <string>0x0</string>
                <key>LAN</key>
                <string>0x0</string>
                <key>NVidia</key>
                <string>0x0</string>
                <key>SATA</key>
                <string>0x0</string>
                <key>WIFI</key>
                <string>0x0</string>
                <key>XHCI</key>
                <string>0x0</string>
            </dict>
            ----- paste the framebuffer patch right here, just above USB -----
            <key>USB</key>
            <dict>
                <key>AddClockID</key>
                <false/>
                <key>FixOwnership</key>
                <true/>
                <key>Inject</key>
                <true/>
             </dict>
             <key>UseIntelHDMI</key>
             <false/>
        </dict>
  4. Save the file and reboot.
End of Manual Method.
16 Jan 2019: This is the preferred version for Designare Z390.

Index 1, BusID 0x01, Type DP
Index 2, BusID 0x06, Type DP
Index 3, BusID 0x04, Type HDMI
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                BgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
            </dict>
        </dict>
Index 1, BusID 0x05, Type DP
Index 2, BusID 0x06, Type DP
Index 3, BusID 0x04, Type HDMI
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                BQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                CQAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                BgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                CgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                CAAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
            </dict>
        </dict>
This board has only 1 port, and it is HDMI v1.4.

Index 1, BusID 0x00, Type HDMI (type does not matter here)
Index 2, BusID 0x00, Type HDMI (type does not matter here)
Index 3, BusID 0x04, Type HDMI <-- this is the active port
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                kj4AAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-fbmem</key>
                <data>
                AACQAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-stolenmem</key>
                <data>
                AAAwAQ==
                </data>
                <key>framebuffer-unifiedmem</key>
                <data>
                AAAAgA==
                </data>
            </dict>
        </dict>
There is only 1 video port on this motherboard -- an HDMI port.
Index 1, BusID 0x05, Type DP
Index 2, BusID 0x06, Type HDMI
Index 3, BusID 0x04, Type HDMI <-- this may be the active port
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>device-id</key>
				<data>
				mz4AAA==
				</data>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				BQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				CQAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAQAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				BgAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				CAAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				AwAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				CgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-fbmem</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-stolenmem</key>
				<data>
				AACQAw==
				</data>
				<key>framebuffer-unifiedmem</key>
				<data>
				AAAAYA==
				</data>
			</dict>
		</dict>
Index 1, BusID 0x01, Type DP
Index 2, BusID 0x02, Type HDMI <-- physically, this is DVI port
Index 3, BusID 0x04, Type HDMI
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>device-id</key>
				<data>
				mz4AAA==
				</data>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				CQAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAQAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				CAAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				AwAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				CgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-fbmem</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-stolenmem</key>
				<data>
				AACQAw==
				</data>
				<key>framebuffer-unifiedmem</key>
				<data>
				AAAAYA==
				</data>
			</dict>
		</dict>
Index 1, BusID 0x05, Type DP
Index 2, BusID 0x06, Type HDMI <-- may or may not work (physical port is DVI)
Index 3, BusID 0x04, Type HDMI
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                kj4AAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                BQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                BgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
            </dict>
        </dict>
Index 1 - Bus ID 5 - Type DP (physically a VGA Port)
Index 2 - Bus ID 2 - Type HDMI (physically a DVI Port)
Index 3 - Bus ID 4 - Type HDMI (physically HDMI as well)
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>device-id</key>
				<data>
				mz4AAA==
				</data>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				BQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAQAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				AwAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
			</dict>
		</dict>
Index 1, BusID 0x01, Type HDMI
Index 2, BusID 0x06, Type HDMI
Index 3, BusID 0x05, Type DP <-- Not tested, but may work
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                BgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BQAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
            </dict>
        </dict>
Index 0, BusID 0x00, Type LVDS
Index 1, BusID 0x01, Type HDMI
Index 2, BusID 0x06, Type HDMI
Index 3, BusID 0x05, Type DP
PortCount = 4
All 5 of the above parameters are specified by the XML code. You do not have to set PortCount yourself -- the code below will do it for you. Both HDMI ports and DP port is fully functional. LVDS is just a placeholder; ignore it.
XML:
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                BQAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                BgAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-portcount</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-unifiedmem</key>
                <data>
                AAAAgA==
                </data>
            </dict>
Index 1, BusID 0x05, Type DP <-- this is physically a VGA port
Index 2, BusID 0x02, Type HDMI <-- this is physically a DVI port
Index 3, BusID 0x04, Type HDMI <-- this is the actual HDMI port
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>device-id</key>
				<data>
				kj4AAA==
				</data>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				BQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAQAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				AwAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
			</dict>
		</dict>
Index 1, BusID 0x00, Type DUMMY (no physical port here)
Index 2, BusID 0x02, Type HDMI (physical port is DVI-D)
Index 3, BusID 0x04, Type HDMI (physical port is HDMI)
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>AAPL,slot-name</key>
				<string>Internal</string>
				<key>device-id</key>
				<data>
				kj4AAA==
				</data>
				<key>device_type</key>
				<string>VGA compatible controller</string>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				BQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				AwAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>model</key>
				<string>3rd Gen Core processor Graphics Controller</string>
			</dict>
		</dict>
Index 1, BusID 0x05, Type DP <-- this is physically a VGA port (it works!)
Index 2, BusID 0x06, Type HDMI <-- not used
Index 3, BusID 0x04, Type HDMI <-- this is the actual HDMI port
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>device-id</key>
				<data>
				mz4AAA==
				</data>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				BQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAQAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				BgAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				AwAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-fbmem</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-stolenmem</key>
				<data>
				AACQAw==
				</data>
				<key>framebuffer-unifiedmem</key>
				<data>
				AAAAYA==
				</data>
			</dict>
		</dict>
This motherboard has only 2 video ports, both HDMI.
Index 1, BusID 0x01, Type HDMI
Index 2, BusID 0x02, Type HDMI
Index 3, BusID 0x04, Type HDMI
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>device-id</key>
				<data>
				mz4AAA==
				</data>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-pipecount</key>
				<data>
				AgAAAA==
				</data>
			</dict>
		</dict>
Index 2, BusID 0x02, Type HDMI (physical port is DVI)
Index 3, BusID 0x04, Type HDMI
Index 1, BusID 0x01, Type DP
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                CgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                CAAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                CQAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
            </dict>
        </dict>
Index 1, BusID 0x05, Type DP
Index 2, BusID 0x02, Type HDMI
Index 3, BusID 0x04, Type HDMI
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>device-id</key>
				<data>
				mz4AAA==
				</data>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				BQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAQAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				AwAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
			</dict>
		</dict>
Index 1, BusID 0x05, Type DP
Index 2, BusID 0x04, Type HDMI
Index 3, BusID 0x06, Type DP
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                kj4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                BQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BgAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-fbmem</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-stolenmem</key>
                <data>
                AACQAw==
                </data>
                <key>framebuffer-unifiedmem</key>
                <data>
                AAAAgA==
                </data>
            </dict>
        </dict>
Index 1, BusID 0x01, Type HDMI
Index 2, BusID 0x02, Type HDMI <-- May or may not work (physical port is DVI)
Index 3, BusID 0x06 or 0x04, Type DP
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2, 0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-pipecount</key>
                <data>
                AgAAAA==
                </data>
            </dict>
        </dict>
Index 1, BusID 0x05, Type DP
Index 2, BusID 0x02, Type HDMI
Index 3, BusID 0x01, Type HDMI
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                kj4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-unifiedmem</key>
                <data>
                AAAAgA==
                </data>
            </dict>
        </dict>
Index 1, BusID 0x05, Type DP
Index 2, BusID 0x04, Type DP
Index 3, BusID 0x06, Type HDMI
XML:
    <key>Properties</key>
    <dict>
        <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
        <dict>
            <key>AAPL,ig-platform-id</key>
            <data>
            BwCbPg==
            </data>
            <key>device-id</key>
            <data>
            mz4AAA==
            </data>
            <key>enable-hdmi20</key>
            <data>
            AQAAAA==
            </data>
            <key>framebuffer-con0-busid</key>
            <data>
            BQAAAA==
            </data>
            <key>framebuffer-con0-enable</key>
            <data>
            AQAAAA==
            </data>
            <key>framebuffer-con0-flags</key>
            <data>
            xwMAAA==
            </data>
            <key>framebuffer-con0-index</key>
            <data>
            AQAAAA==
            </data>
            <key>framebuffer-con0-pipe</key>
            <data>
            EgAAAA==
            </data>
            <key>framebuffer-con0-type</key>
            <data>
            AAQAAA==
            </data>
            <key>framebuffer-con1-busid</key>
            <data>
            BAAAAA==
            </data>
            <key>framebuffer-con1-enable</key>
            <data>
            AQAAAA==
            </data>
            <key>framebuffer-con1-flags</key>
            <data>
            xwMAAA==
            </data>
            <key>framebuffer-con1-index</key>
            <data>
            AgAAAA==
            </data>
            <key>framebuffer-con1-pipe</key>
            <data>
            EgAAAA==
            </data>
            <key>framebuffer-con1-type</key>
            <data>
            AAQAAA==
            </data>
            <key>framebuffer-con2-busid</key>
            <data>
            BgAAAA==
            </data>
            <key>framebuffer-con2-enable</key>
            <data>
            AQAAAA==
            </data>
            <key>framebuffer-con2-flags</key>
            <data>
            xwMAAA==
            </data>
            <key>framebuffer-con2-index</key>
            <data>
            AwAAAA==
            </data>
            <key>framebuffer-con2-pipe</key>
            <data>
            EgAAAA==
            </data>
            <key>framebuffer-con2-type</key>
            <data>
            AAgAAA==
            </data>
            <key>framebuffer-con3-busid</key>
            <data>
            AAAAAA==
            </data>
            <key>framebuffer-con3-enable</key>
            <data>
            AQAAAA==
            </data>
            <key>framebuffer-con3-flags</key>
            <data>
            IAAAAA==
            </data>
            <key>framebuffer-con3-index</key>
            <data>
            /////w==
            </data>
            <key>framebuffer-con3-pipe</key>
            <data>
            AAAAAA==
            </data>
            <key>framebuffer-con3-type</key>
            <data>
            AQAAAA==
            </data>
            <key>framebuffer-fbmem</key>
            <data>
            AAAAAA==
            </data>
            <key>framebuffer-patch-enable</key>
            <data>
            AQAAAA==
            </data>
            <key>framebuffer-stolenmem</key>
            <data>
            AACQAw==
            </data>
            <key>framebuffer-unifiedmem</key>
            <data>
            AAAAgA==
            </data>
        </dict>
    </dict>
Index 1, BusID 0x01, Type HDMI
Index -1, BusID 0x00, Type Dummy
Index 3, BusID 0x06, Type DP
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2, 0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                mAAAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                CAAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                hwEAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                CQAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BgAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                hwEAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                CgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-fbmem</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-stolenmem</key>
                <data>
                AACQAw==
                </data>
                <key>framebuffer-unifiedmem</key>
                <data>
                AAAAYA==
                </data>
            </dict>
        </dict>
Index 1, BusID 0x01, Type HDMI
Index 2, BusID 0x00, Type Dummy
Index 3, BusID 0x00, Type Dummy
Index -1, BusID 0x00, Type Dummy
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>device-id</key>
				<data>
				mz4AAA==
				</data>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				AwAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
			</dict>
		</dict>
Index 1, BusID 0x05, Type HDMI
Index 2, BusID 0x04, Type Dummy
Index 3, BusID 0x06, Type DP
Index -1, BusID 0x00, Type Dummy
XML:
		<key>Properties</key>
		<dict>
			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,ig-platform-id</key>
				<data>
				BwCbPg==
				</data>
				<key>device-id</key>
				<data>
				mz4AAA==
				</data>
				<key>enable-hdmi20</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				BQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con1-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				BgAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				xwMAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				AwAAAA==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				EgAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AAQAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
			</dict>
		</dict>
This system has VGA and HDMI. The settings below are only for enabling HDMI on Index 2. There is no support for VGA. Indexes 1 and 3 could be set to BusID=0x00 and Type=DUMMY -- feel free to try it and see.
Index 1, BusID 0x05, Type HDMI
Row 2: Index 2, BusID 0x02, Type HDMI
Index 3, BudID 0x04, Type HDMI
XML:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                BQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
            </dict>
        </dict>

Please Help Others
If you find a successful set of parameters for your motherboard, please help the community by posting a screenshot of the Hackintool Connectors page with all the necessary settings applied. You may have to enter the changes again in the Connectors page. You may post the screenshot in this thread and I'll compile a list from everyone's contributions.
 
Last edited:
Joined
Dec 26, 2015
Messages
210
Motherboard
GA-Z97X-UD3H
CPU
i5-4690
Graphics
GTX 1050 Ti
Mobile Phone
Android
Now thats called a proper connector patching tutorial. Very detailed explanation. It clears a lot of confusion.
 

jaymonkey

Moderator
Joined
Aug 27, 2011
Messages
2,535
Motherboard
ASRock-Z97 EX6
CPU
i7-4790K OC @ 4.8GHz
Graphics
Vega 64LC + HD4600
Mac
MacBook Air, MacBook Pro
Mobile Phone
Android, iOS
@CaseySJ,

Nice Job !!

Very well written guide on advanced patching of framebuffer ports and connectors using Hackingtool.
Have added a link to your guide in the Lilu + Plug-in's guide.

Cheers
Jay
 
Last edited:

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
2,924
Motherboard
Gigabyte Designare Z390
CPU
i7-9700K
Graphics
RX 580
Mac
MacBook Air, Mac Pro
Classic Mac
Quadra
Mobile Phone
iOS
@jaymonkey Thank you!! Building my first Hackintosh has been an immensely satisfying experience so I hope others can benefit from the experience gained along the way...
 
Joined
Nov 10, 2018
Messages
16
Motherboard
ASRock B360M-ITX/ac
CPU
i5 8400
Graphics
Onboard HD630
Mac
MacBook Pro
Thank you very much so far.
However, I still can't get any combination to work. Will probably post a more detailed thread soon to get help, but one question first - if only one connector is working (DP), can I somehow follow your guide as well? I have tried to exchange all the bus IDs and types (with the exception of leaving the type of the DP of course), but I still get black screen on both DVI and HDMI, unfortunately.
 

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
2,924
Motherboard
Gigabyte Designare Z390
CPU
i7-9700K
Graphics
RX 580
Mac
MacBook Air, Mac Pro
Classic Mac
Quadra
Mobile Phone
iOS
Thank you very much so far.
However, I still can't get any combination to work. Will probably post a more detailed thread soon to get help, but one question first - if only one connector is working (DP), can I somehow follow your guide as well? I have tried to exchange all the bus IDs and types (with the exception of leaving the type of the DP of course), but I still get black screen on both DVI and HDMI, unfortunately.
Yes, if DisplayPort is working you should be able to identify the other connectors one by one.
  • Which row lights up with DisplayPort?
  • Please post a screenshot of the Connectors page.
  • What BusID and Type combinations have you attempted?
 
Joined
Nov 10, 2018
Messages
16
Motherboard
ASRock B360M-ITX/ac
CPU
i5 8400
Graphics
Onboard HD630
Mac
MacBook Pro
Ok, so this is my current configuration:
Bildschirmfoto 2019-01-12 um 16.12.25.png

As it is (slightly) visible, the last row lights up in red when my DP monitor is connected.
I also tried changing the first two lines, with the first one being HDMI and the second DVI (with the bus IDs changed as well). Then I tried this configuration with the bus IDs of DP and HDMI changed. I also tried the first two lines changed and DP and HDMI bus IDs exchanged. So I basically tried every single configuration possible, I guess.
My platform ID is set as shown with device ID set to 0x3E9B, however I also tried 0x3E92 which didn't change anything either.

The thing is that the only row ever lighting up in red is the DP one, with neither of the two other monitors - connecting them via HDMI or DVI - ever showing a picture. I have also attached my config.plist, maybe there's anything else wrong? I also tried a config.plist you posted in another thread recently where someone had issues with the i5 8400, that didn't change anything either.

I have to add that some other stuff is not working yet either, like audio. However this is a fresh build and I wanted to get my screens working first (two of them matter, the DVI one is just for testing purposes).

Thank you for your help already, very appreciated.

Edit: It works. After having tried pretty much everything I decided to do something which makes no sense at all according to what I read so far and changed the bus IDs of the HDMI and DVI to 01 and 02. Now I get a pink screen on my HDMI, but I've read somewhere else about this and should be able to fix it with exchanging the types I guess.

I'm incredibly happy right now to get a picture on more than one screen, however I have absolutely no explanation for this. Do you? I thought you had to set the bus ID to 04, 05 or 06 for the digital outputs?
 

Attachments

Last edited:

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
2,924
Motherboard
Gigabyte Designare Z390
CPU
i7-9700K
Graphics
RX 580
Mac
MacBook Air, Mac Pro
Classic Mac
Quadra
Mobile Phone
iOS
@aureus Good work, especially by thinking outside the box and trying BusIDs 0x01 and 0x02!! As we learn more, especially from motherboards with DVI and VGA connectors, we'll update the guide.

On the Asus Prime H370M-Plus with VGA, DVI, and HDMI the configuration that seems to work is this:
Code:
Row 1: Index 2, BusID 0x02, Type HDMI (0x0008)
Row 2: Index 3, BusID 0x04, Type HDMI (0x0008)
Row 3: Index 1, BusID 0x01, Type DP (0x0004)
Notice that BusIDs 0x01 and 0x02 are used, but in this case I think the owner forgot to update the Type column, which suggests that the Type field may not be important. It's also not clear whether Index is important.

The settings in your config.plist are as follows:
Code:
Row 1: BusID ????,  Type DVI-D (0x04)
Row 2: BusID 0x06, Type HDMI (0x0008)
Row 3: BusID 0x04, Type ????
This seems like an early test version of config.plist. Can you please fill out the table above with the configuration that is now working for you?

Some questions based on your observation:
  • HDMI = BusID 0x01. Does HDMI port work if you change BusID to 0x02 or does it only work with BusID 0x01?
  • DVI = BusID 0x02. Does DVI port work if you change BusID to 0x01 or does it only work with BusID 0x02?
  • DP = BusID 0x04?
  • Did you notice whether the Type field matters? Or only the BusID field matters?
 
Last edited:
Joined
Nov 10, 2018
Messages
16
Motherboard
ASRock B360M-ITX/ac
CPU
i5 8400
Graphics
Onboard HD630
Mac
MacBook Pro
Here is my current properties section:

Code:
<key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2, 0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-pipecount</key>
                <data>
                AgAAAA==
                </data>
            </dict>
        </dict>
I assume that not setting the bus ID for port 3 in this example (con2) means it uses the standard value of the selected framebuffer? I generated this part via FB patcher, so currently this is set to 0x06 (or 0x04, not sure right now, I think both worked). Same goes for the type, I think if it's not set it's set to DP by default (in regards to the code you posted, however as my config.plist changed this example is a bit different).

Notice that I tried to deactivate port 2 and changing pipecount to 2, however leaving port 3 as index 3. I tried to get sleep working this way, without success so far though, but this is the only configuration I could get both screens working (so index 1 HDMI, index 3 DP, port 2 set to index -1, bus IDs set as described and types accordingly). When I set portcount to 2 as well, my DP screen stays black (I don't really have a clue about the difference between pipe- and portcount at this point). I need some further investigation into this (hints appreciated), but I've been working on getting my screens to work for at least 10 hours, so I need a break. I will also try changing the bus IDs for HDMI and DVI later.

Type field does matter for the HDMI port at least, because I had, as described, a pink tint before I set the type to HDMI. It does not however matter for the DVI port for some reason, because the screen worked just fine with the type being set to HDMI.

I hope I answered your questions as I could thus far, if not just ask again. I will gladly help, as I received so much help from this forum (and your original post) already. However, as I said, I'm a bit exhausted at this point due to working on this two days straight. But I will continue to solve my other problems later and in this context also hopefully cover your questions as well.
 

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
2,924
Motherboard
Gigabyte Designare Z390
CPU
i7-9700K
Graphics
RX 580
Mac
MacBook Air, Mac Pro
Classic Mac
Quadra
Mobile Phone
iOS
Your configuration is as follows, where items in black are explicitly set by your patch and items in red were left to their default values, which I entered in red.

Row 1: Index 1, BusID 0x01, Type HDMI
Row 2: Index -1, BusID 0x02, Type DVI-D
Row 3: Index 3, BusID 0x06 or 0x04, Type DP
Pipecount = 2

  • With this setup you are getting HDMI and DP output.
  • You were trying to disable DVI-D by reducing port count to 2, but that disabled your DisplayPort, so you set pipe count to 2.
  • If you leave out pipecount, do you still get HDMI and DP output?
  • I agree that by not explicitly specifying any Row 3 values, default values get assigned, which are shown in red. BusID is most likely 0x06 for Row 3.
  • Because of the pink tint that occurred when Type was set incorrectly, it seems that Type does in fact matter.
Thank you! I think you answered all of my questions. This has been very helpful, and I need to get some additional information from people in similar situation in order to update the Guide.

Follow-up Question:
  • Now that HDMI is working, which Row lights up in red when you plug in an HDMI cable?
 
Top