Customization of Integrated Graphics Interface Output
If the integrated graphics are used for output under macOS, generally the DP interface is driver - free. If HDMI is used, the monitor may be black or the color output may be incorrect. So we often need to customize the display interface.
Device Introduction¶
The device information used in this tutorial is as follows:
Category | Value |
---|---|
Motherboard | AsRock Z490 Steel Legend |
CPU | i7 - 10700 |
GPU | Intel UHD Graphics 630 |
Interface | DP 1.4 + HDMI 1.4 |
OC Configuration Information¶
To be concise, since my motherboard basically has all options, only the ID attribute is injected for the integrated graphics part here:
After restarting and entering the system, Hackintool automatically determined the current platform ID as 0x3E9B0007
through this integrated graphics ID.
View Interface Information¶
In Hackintool, find "Applied Patches" - "Interfaces", select the platform ID you saw above, and you can see the current interface situation:
It can be seen that this platform has three interfaces by default, and all of them are DP. However, the interfaces of our motherboard are as follows:
It is a classic combination of 1 HDMI + 1 DP. So at this time, our HDMI has no signal display. So what can we do to make this HDMI display? Don't worry. Keep reading.
Display Interface Types¶
- 02000000
- LVDS and eDP interfaces
- Generally used to drive the built - in monitor of a laptop
- 00040000
- DP interface
- Generally, the monitor built in the USB - C is a DP interface.
- The DP interface is usually driver - free under macOS.
- 00080000
- HDMI interface
- HDMI under macOS usually cannot display normally and the interface data needs to be customized.
- 10000000
- VGA interface
- VGA monitors are not supported by default after version 10.8.
- If your CPU is from the 6th generation onwards, it actually uses the DP interface, so just drive it as a DP interface.
- 04000000
- Dual - link DVI interface
- This thing is basically obsolete.
- 00020000
- Single - link DVI interface
- This thing is basically obsolete.
- 80000000
- S - Video interface
- This thing is basically obsolete.
- 01000000
- Used when there is no physical display interface.
Look for the Official Manual¶
Look for the buffer frame information of our current platform ID in WhatGreen's official manual:
Model name: Intel UHD Graphics 630 ID: 3E9B0007
Mobile: 0, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x000003C7 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x000003C7 - ConnectorDP
[3] busId: 0x06, pipe: 8, type: 0x00000400, flags: 0x000003C7 - ConnectorDP
01050900 00040000 C7030000
02040A00 00040000 C7030000
03060800 00040000 C7030000
It can be seen that three bus IDs are listed for the 3E9B0007 platform. We will decompose them for easier understanding. Here, take the first one as an example. For a detailed explanation, see the figure below:
- The "bus ID" is unique, and multiple interfaces cannot share it.
- The maximum value of the "bus ID" on most platforms is
06
. - The "bus ID" is crucial. Generally, when we customize the interface, we are actually exploring and traversing this value.
- The "channel" actually has no reference value. You can write it according to the values recommended for different platforms in the manual.
C7030000
is an identifier. Fill it in according to the manual.- Customizing the number of interface displays also requires the use of
framebuffer - patch - enable | Data | 01000000
.
Traverse Interface 1¶
Now start customizing display interface 1. Generally, only the busid needs to be traversed. The index number, channel, and identifier remain the same as those queried in the manual. Specify interface 1 as the HDMI type:
framebuffer - con0 - alldata = 01010900 00080000 C7030000
framebuffer - con0 - enable = 01000000
The final effect is as follows:
After replacement, restart and take a look. Although HDMI doesn't work, it can be seen that the specified HDMI interface type we set has taken effect:
Since using "bus ID" 01
for interface 1 is not successful, start trying to traverse it to the maximum value 06
one by one:
framebuffer - con0 - alldata = 01020900 00080000 C7030000
framebuffer - con0 - alldata = 01030900 00080000 C7030000
framebuffer - con0 - alldata = 01040900 00080000 C7030000 (Since interface 2 is also bus ID 4, remember to unplug the DP)
framebuffer - con0 - alldata = 01050900 00080000 C7030000
framebuffer - con0 - alldata = 01060900 00080000 C7030000
Restart after each traversal. At most, only 5 more restarts are needed. If none of them work, it means that this "interface 1" doesn't correspond to the physical HDMI interface at all. Then only interface 3 can be traversed.
Traverse Interface 3¶
Enable interface 3, specify the display type as HDMI, and start traversing from "bus ID" 01
. At most, try restarting the computer 6 times:
framebuffer - con2 - alldata = 03010800 00080000 C7030000
framebuffer - con2 - alldata = 03020800 00080000 C7030000
framebuffer - con2 - alldata = 03030800 00080000 C7030000
framebuffer - con2 - alldata = 03040800 00080000 C7030000 (Since interface 2 is also bus ID 4, remember to unplug the DP)
framebuffer - con2 - alldata = 03050800 00080000 C7030000
framebuffer - con2 - alldata = 03060800 00080000 C7030000
Fortunately, we finally succeeded when we tried "bus ID" 04
:
framebuffer - con2 - alldata = 03040800 00080000 C7030000
Since our interface 2 also uses "bus ID" 04
, if both DP and HDMI are plugged in at this time, neither monitor can display normally. So the DP cable, that is, interface 2, must be unplugged for testing. Finally, it is found that the HDMI interface successfully lights up the monitor:
However, at this time, due to the conflict of "bus ID" between interface 2 and 3, we have to manually change interface 2 to another "bus ID". All of them also need to be traversed:
framebuffer - con1 - alldata = 02010A00 00040000 C7030000
framebuffer - con1 - alldata = 02020A00 00040000 C7030000
framebuffer - con1 - alldata = 02030A00 00040000 C7030000
framebuffer - con1 - alldata = 02050A00 00040000 C7030000
framebuffer - con1 - alldata = 02060A00 00040000 C7030000
Fortunately, we finally succeeded when we tried "bus ID" 02
:
framebuffer - con1 - alldata = 02020A00 00040000 C7030000
Also, remember that for multiple monitors, use the boot option igfxonln = 1
.
Final Effect¶
Finally, after restarting the computer nearly 10 times, the DP and HDMI interfaces can finally light up the monitors simultaneously:
Teach One to Fish¶
It is guessed that there are actually rules for these motherboards of various motherboard manufacturers. So some common combination cases can be placed below this article. Since my energy is limited, everyone is also welcome to share your successful cases in the comment section (just attach the motherboard model and interface data). The specific format can refer to the following:
AsRock¶
- DP + HDMI: Z490 Steel Legend
framebuffer - con1 - alldata = 02020A00 00040000 C7030000
framebuffer - con2 - alldata = 03040800 00080000 C7030000
- DP + HDMI: Z490 Extreme4
framebuffer - con2 - alldata = 03040800 00080000 C7030000
ASUS¶
- DP + HDMI: ROG STRIX B460 - I GAMING
framebuffer - con0 - alldata = 01060900 00040000 C7030000
framebuffer - con1 - alldata = 02040A00 00080000 C7030000
- DP + HDMI: Z170I PRO GAMING
framebuffer - con0 - alldata = 01050900 00080000 C7030000
- DP + HDMI: TUF GAMING B460M - PRO
framebuffer - con1 - alldata = 02060A00 00080000 C7030000
- HDMI + DVI: TUF B360M - PLUS GAMING
framebuffer - con1 - alldata = 02020A00 00080000 C7030000
- ASUS TUF Gaming FX504GE HM370 chipset
framebuffer - con2 - alldata =01050900 00080000 C7010000
Dell¶
- HDMI + VGA: Vostro 3260 100 - series
AAPL,ig - platform - id = 00001259
framebuffer - con0 - alldata = 01050900 00080000 C7030000
framebuffer - con1 - alldata = 02000A00 00040000 C7030000 (VGA may not work)
MSI¶
- HDMI: MAG B365M MORTAR
framebuffer - con0 - alldata = 01050900 00080000 C7030000
- DP + HDMI: MPG Z390 GAMING PRO CARBON AC
framebuffer - con0 - alldata = 01010900 00080000 C7030000
- DP + HDMI: MAG B460M MORTAR
framebuffer - con0 - alldata = 01010800 00080000 C7030000
- DP + HDMI + Thunderbolt: MEG Z490I UNIFY
framebuffer - con0 - alldata = 01010900 00080000 C7030000
Lenovo¶
- HDMI: Yangtian S540 - 14 - IWL - HDMI
framebuffer - con1 - alldata = 01010900 00080000 C7010000
- HDMI + VGA: V330 - 15IKB LNVNB161216 chipset
framebuffer - con1 - alldata = 01050900 00040000 87010000
framebuffer - con2 - alldata = 02040A00 00080000 87010000
Gigabyte¶
- DP + HDMI: B360M AORUS PRO
framebuffer - con0 - alldata = 01050900 00040000 C7030000
framebuffer - con2 - alldata = 03040800 00080000 C7030000