Jump to content

[GUIDE] Intel UHD Graphics 630 Coffee Lake headless mode / main card


1 post in this topic

Recommended Posts

How to set the integrated graphics card Intel UHD Graphics 630 Coffee Lake Refresh (9 generation) in headless mode (without cable) to be used by macOS in video encoding tasks, bringing the image to the monitor with Radeon RX 580, adding hardware video encoding and decoding to the system, or as main card.

 

Note: Instructions for OpenCore.

 

Macs with an integrated graphics card (iGPU) and a dedicated one (dGPU) use the integrated one for video encoding and decoding. When building a Hackintosh with both types of GPU we can find that, although the dGPU is much more powerful than the iGPU, if it is not properly installed and recognized by the system, the video encoding will fail. When this happens but we do not want to have the iGPU as the primary card, we must configure the iGPU as headless mode (it is called like that when it is active but without cable to the display) so that the dGPU shows the image but the integrated one is available for encoding / decode video.

 

The iGPU installation depends on 2 factors:

  • motherboard because each manufacturer places 1-2-3 output ports on the iGPU
  • Intel processor generation, different Intel processor generations carry different iGPU models.


My PC has Z390 Aorus Elite board with an Intel 9 generation CPU (Coffee Lake Refresh, it is configured as Coffee Lake) with Intel UHD Graphics 630 which is in PciRoot(0x0)/Pci(0x2,0x0) whose Plattorm ID is 3E9B0007 and its Device ID it is 3E910000. The dGPU is Radeon RX 580. On this board there is only one connector on the iGPU, it is HDMI v1.4 and corresponds to index 3 in the theoretical list of 3 connectors at most that this model of iGPU can carry:

  • Index 1, BusID 0x00, Type HDMI (type does not matter on this port)
  • Index 2, BusID 0x00, Type HDMI (type does not matter on this port)
  • Index 3, BusID 0x04, Type HDMI (this is the active port, the only one existing).

This can be important when using the iGPU as a primary or single card but not when using it in headless mode.


Headless mode

 

  • iGPU and dGPU must be enabled in BIOS with dGPU as primary.
  • There should be no cable between iGPU port and any type of display.
  • Lilu and WhatEverGreen properly installed.
  • SMBIOS iMac19.1
  • You have to add in DeviceProperties section of OC:
        <key>DeviceProperties</key>
        <dict>
            <key>Add</key>
            <dict>
                <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
                <dict>
                    <key>AAPL,ig-platform-id</key>
                    <data>AwCRPg==</data>  <!-- 0300913e -->
                </dict>
            </dict>
            <key>Delete</key>
            <dict/>
        </dict>

    This code shows data values in Base64, they can also be seen as hexadecimal values although with the inverted bytes (reverse byte order), you can check it with a converter: AwCRPg== in Base64 (device-id) equals 0300913e in hexadecimal (3E910000).

 

With these settings I can boot from the dGPU with the iGPU well recognized by macOS. To check if the VDA Decoder function is activated you can see it in Hackintool (Fully Supported or Failed in System tab) or in the VideoProc app (Hardware acceleration preferences> Option> Enabled or Not available). In my case, with the proposed configuration, both applications detect hardware video encoding.

 

iGPU as main card
 

This card can also be configured to be the primary or main, so that it outputs a signal to the monitor and also encodes video. Here's what to do to make it work like this.
 

  • Enable it on the mother board as main: Initial Display Output IGFX instead of PCIe 1 Slot (this would be the final step)
  • Lilu and WhatEverGreen properly installed
  • SMBIOS iMac19.1
  • Add in config.plist boot args: igfxonln=1 disablegfxfirmware
  • Add in config.plist: in Devices / DeviceProperties section of Clover / OC the code below: 
  			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>device-id</key>
				<data>kT4AAA==</data>
				<key>AAPL,slot-name</key>
				<string>Internal@0,2,0</string>
				<key>AAPL,ig-platform-id</key>
				<data>BwCbPg==</data>
				<key>framebuffer-con0-busid</key>
				<data>AAAAAA==</data>
				<key>framebuffer-con0-type</key>
				<data>AAgAAA==</data>
				<key>framebuffer-con0-enable</key>
				<data>AQAAAA==</data>
				<key>framebuffer-con1-busid</key>
				<data>AAAAAA==</data>
				<key>framebuffer-con1-type</key>
				<data>AAgAAA==</data>
				<key>framebuffer-con1-enable</key>
				<data>AQAAAA==</data>
				<key>framebuffer-con2-busid</key>
				<data>BAAAAA==</data>
				<key>framebuffer-con2-type</key>
				<data>AAgAAA==</data>
				<key>framebuffer-con2-enable</key>
				<data>AQAAAA==</data>
				<key>framebuffer-con2-flags</key>
				<data>xwMAAA==</data>
				<key>framebuffer-patch-enable</key>
				<data>AQAAAA==</data>
				<key>hda-gfx</key>
				<string>onboard-1</string>
			</dict>

If you have KP or black screen when you leave sleep, you have to replace hda-gfx property with No-hda-gfx, this usually fixes those failures when leaving sleep but the audio is lost through HDMI. Replace these 2 lines:

               <key>hda-gfx</key>
               <string>onboard-1</string>

for these other:


                <key>No-hda-gfx</key>
                <data>AAAAAAAAAAA=</data>

In this way, System Profile shows 2 graphic cards, iGPU and dGPU.

intel630.png.459065472d07a091cdb2b04124b92dca.png

rx580.png.ad53c0e1ebeb6babc6fa8010ffeb1d8a.png

 

You can have the iGPU connected to one monitor and the dGPU to another monitor + one TV, achieving 3 screens using both cards simultaneously.
 

intel630-rx580-2.jpg.a0fd8c47cf75ddc3dce9fbd79dbf9f55.jpg

Edited by miliuco
Misspelling fixed
×
×
  • Create New...