Contribute
Register

[Guide] Intel Framebuffer patching using WhateverGreen

@JVenema

Here's a consolidated set of answers to your questions as well as some questions of my own:
  • First, let's confirm this: When you make a framebuffer change, save it to your config.plist, and reboot the system, does Hackintool successfully show the new settings?
  • Next, let's review the behavior in Windows: When you connected a DisplayPort cable, you saw that the internal display was mirrored to DisplayPort.
    • The laptop has 2 DisplayPort outputs corresponding to the 2 Thunderbolt (USB-C) ports.
    • When you connect DisplayPort cable to Thunderbolt Port 1, is the display mirrored?
    • When you connect DisplayPort cable to Thunderbolt Port 2, is the display mirrored?
    • In Windows, there is an option to mirror the display or have independent displays. Usually this is controlled by Function-F8, but could be different on your laptop. After connecting to either of the 2 DisplayPort outputs, have you tried Function-F8 to see if the laptop will display independent screens (i.e. can you turn OFF mirroring)?
    • You stated that HDMI output from Windows was also blank, but the mouse seems to disappear into that screen. Does Function-F8 have any effect on HDMI?
    • Are you using any video adapters (i.e. DisplayPort to HDMI adapter)?
  • Index 3: I can see that all permutations of Indexes 1 and 2 failed. You should try Index 3. If the last row is always Index -1, then we can put Index 3 in either of the middle two rows. Pipe value can be 0x08, 0x09, 0x0A, or 0x12. We do not fully understand the purpose of Pipe, but experimentation has shown that setting all Pipes to the same value such as decimal 18 or hex 0x12 can reduce or eliminate the chances of system rebooting when video cables are hot-plugged.
    • Option 1 for Index 3:
      • Index 0, BusID 0x00, Type LVDS, Pipe 8
      • Index 2, BusID 0x02, Type DP, Pipe 9
      • Index 3, BusID 0x04, Type HDMI, Pipe 10
      • Index -1, BusID 0x00, Type DUMMY
    • Option 2 for Index 3:
      • Index 0, BusID 0x00, Type LVDS, Pipe 8
      • Index 2, BusID 0x02, Type DP, Pipe 9
      • Index 3, BusID 0x01, Type HDMI, Pipe 10
      • Index -1, BusID 0x00, Type DUMMY
    • Option 3 for Index 3:
      • Index 0, BusID 0x00, Type LVDS, Pipe 8
      • Index 2, BusID 0x02, Type DP, Pipe 9
      • Index 3, BusID 0x02, Type HDMI, Pipe 10
      • Index -1, BusID 0x00, Type DUMMY
Having said this, I am concerned why HDMI output is failing in Windows. It would be good to get it working in Windows first and to confirm whether it is an independent display or mirrored display.

Finally, what is the purpose of these entries in ACPI section of config.plist?
Code:
                <dict>
                    <key>Comment</key>
                    <string>change PCI0.VID to IGPU #1 (Thinkpad)</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>UENJMFZJRF8=</data>
                    <key>Replace</key>
                    <data>UENJMElHUFU=</data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>change PCI0.VID to IGPU #2 (Thinkpad)</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>VklEXwhfQURSDAAAAgA=</data>
                    <key>Replace</key>
                    <data>SUdQVQhfQURSDAAAAgA=</data>
                </dict>
 
Last edited:
This is a great thread, thanks to all who give advice and make these tools.

I'm trying to get Intel HD630 working correctly on a Gigabyte Z270P with Intel i7-7700. Everything works except graphics glitches and framebuffer crashes often (video pause for 10 seconds, beachball) . I'm not using any video card, only internal Intel HD630. Display is just single 1080p HDMI connected to motherboard.

Depending on the ig-platform-id and SMBIOS settings (iMac18,1,2,3, Macbook10,1, etc) , the symptoms can be:
  • Pink display with many glitches / ghosts / blinking
  • Normal display with few glitches / ghosts / blinking
  • Normal display with many glitches / ghosts / blinking
Right now, I've:
Using debug WEG+lilu+AppleALC
Applied patches and PCI devices plist data from Headkaze's fbpatcher after loading the -igfxdump file (attached)
Right now they are injected by Clover rather than installed in S/L/E or L/E.

I also tried replacing the motherboard (was a Dell Optiplex 7050 but now in a Gigabyte z270), but not yet the CPU.

For now I'm mirroring the display using a DisplayLink USB video card.

One thing I'm not sure about is if it's important what the system's settings "DVMT Pre-Allocated" and "DVMT Total Gfx Mem". They are now set to 1024M and MAX, but maybe this isn't correct.

Any hints?
 

Attachments

  • debug-data.zip
    846.3 KB · Views: 86
  • CLOVER.zip
    8.3 MB · Views: 91
Last edited:
Yes I do see the changes, after the reboot if "Apply Current Patches" is enabled. But I can only see them in FB Patcher and not in Hackintool. For some reason Hackintool v1.8.2 does not work, the dropdown boxes are not populated after "Framebuffer->macOS 10.14". Hacktool has the same behavior on the Hackintosh and on my MacBook pro, while FP Patcher does work on both.

Note that as said I can not login on the windows machine. But the HDMI does work, although the screen was black I could see the mouse cursor move onto it. Thus I could move the mouse over the black screen. I assume that after login the user settings on how he wants to use the additional Display get activated.

Now I'm at home and can not test easily on a Display Port monitor. I tried just the port that was free on the laptop, since the other port was used for an external SSD (Samsung EVO 840 250GB), which contains the macOS.
As for the other windows stuff I still have to test. But seeing the mouse move on a black screen with the HDMI output, one can assume that at least the HDMI output can be different from the internal Display.

As for the purpose of the part that you mentioned, I have no idea. I just used a config file from:
I used the guide:
Booting the OS X installer on LAPTOPS with Clover
at:
Which has a link to the site with the different config files.
I used the file:
config_HD615_620_630_640_650.plist
Which seemed appropriate to me and indeed, it worked almost out of the box. Further the file is perhaps opened in Clover Configurator, that could also be a source for it, but I did not put that code in with a specific intention. It is inherited in some way.

As said it does not seem to fail under windows, it does seem to work. I assume if it is possible to display the mouse cursor and move it around, that then the HDMI output work under windows.
 
This is a great thread, thanks to all who give advice and make these tools.

I'm trying to get Intel HD630 working correctly on a Gigabyte Z270P with Intel i7-7700. Everything works except graphics glitches and framebuffer crashes often (video pause for 10 seconds, beachball) . I'm not using any video card, only internal Intel HD630. Display is just single 1080p HDMI connected to motherboard.

Depending on the ig-platform-id and SMBIOS settings (iMac18,1,2,3, Macbook10,1, etc) , the symptoms can be:
  • Pink display with many glitches / ghosts / blinking
  • Normal display with few glitches / ghosts / blinking
  • Normal display with many glitches / ghosts / blinking
Right now, I've:
Using debug WEG+lilu+AppleALC
Applied patches and PCI devices plist data from Headkaze's fbpatcher after loading the -igfxdump file (attached)
Right now they are injected by Clover rather than installed in S/L/E or L/E.

I also tried replacing the motherboard (was a Dell Optiplex 7050 but now in a Gigabyte z270), but not yet the CPU.

For now I'm mirroring the display using a DisplayLink USB video card.

One thing I'm not sure about is if it's important what the system's settings "DVMT Pre-Allocated" and "DVMT Total Gfx Mem". They are now set to 1024M and MAX, but maybe this isn't correct.

Any hints?
Just a thought what about framebuffer size? What I've read is that apple assumes a minimum of 64MB, while on most windows systems it is 32MB. I was able to set it in the bios to 64MB and removed the framebuffer lines from the config.plist file related to fix this to get it to 64MB.
 
Note that as said I can not login on the windows machine. But the HDMI does work, although the screen was black I could see the mouse cursor move onto it. Thus I could move the mouse over the black screen. I assume that after login the user settings on how he wants to use the additional Display get activated.
Okay, so HDMI through Windows wasn't blank because the mouse icon could be seen -- and it wasn't mirrored either. So it appears to be an independent video channel. The only thing left to try is Index 3.
 
@JVenema

Here's a consolidated set of answers to your questions as well as some questions of my own:
  • First, let's confirm this: When you make a framebuffer change, save it to your config.plist, and reboot the system, does Hackintool successfully show the new settings?
  • Next, let's review the behavior in Windows: When you connected a DisplayPort cable, you saw that the internal display was mirrored to DisplayPort.
    • The laptop has 2 DisplayPort outputs corresponding to the 2 Thunderbolt (USB-C) ports.
    • When you connect DisplayPort cable to Thunderbolt Port 1, is the display mirrored?
    • When you connect DisplayPort cable to Thunderbolt Port 2, is the display mirrored?
    • In Windows, there is an option to mirror the display or have independent displays. Usually this is controlled by Function-F8, but could be different on your laptop. After connecting to either of the 2 DisplayPort outputs, have you tried Function-F8 to see if the laptop will display independent screens (i.e. can you turn OFF mirroring)?
    • You stated that HDMI output from Windows was also blank, but the mouse seems to disappear into that screen. Does Function-F8 have any effect on HDMI?
    • Are you using any video adapters (i.e. DisplayPort to HDMI adapter)?
  • Index 3: I can see that all permutations of Indexes 1 and 2 failed. You should try Index 3. If the last row is always Index -1, then we can put Index 3 in either of the middle two rows. Pipe value can be 0x08, 0x09, 0x0A, or 0x12. We do not fully understand the purpose of Pipe, but experimentation has shown that setting all Pipes to the same value such as decimal 18 or hex 0x12 can reduce or eliminate the chances of system rebooting when video cables are hot-plugged.
    • Option 1 for Index 3:
      • Index 0, BusID 0x00, Type LVDS, Pipe 8
      • Index 2, BusID 0x02, Type DP, Pipe 9
      • Index 3, BusID 0x04, Type HDMI, Pipe 10
      • Index -1, BusID 0x00, Type DUMMY
    • Option 2 for Index 3:
      • Index 0, BusID 0x00, Type LVDS, Pipe 8
      • Index 2, BusID 0x02, Type DP, Pipe 9
      • Index 3, BusID 0x01, Type HDMI, Pipe 10
      • Index -1, BusID 0x00, Type DUMMY
    • Option 3 for Index 3:
      • Index 0, BusID 0x00, Type LVDS, Pipe 8
      • Index 2, BusID 0x02, Type DP, Pipe 9
      • Index 3, BusID 0x02, Type HDMI, Pipe 10
      • Index -1, BusID 0x00, Type DUMMY
Having said this, I am concerned why HDMI output is failing in Windows. It would be good to get it working in Windows first and to confirm whether it is an independent display or mirrored display.

Finally, what is the purpose of these entries in ACPI section of config.plist?
Code:
                <dict>
                    <key>Comment</key>
                    <string>change PCI0.VID to IGPU #1 (Thinkpad)</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>UENJMFZJRF8=</data>
                    <key>Replace</key>
                    <data>UENJMElHUFU=</data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>change PCI0.VID to IGPU #2 (Thinkpad)</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>VklEXwhfQURSDAAAAgA=</data>
                    <key>Replace</key>
                    <data>SUdQVQhfQURSDAAAAgA=</data>
                </dict>
Just tested with my usb-c to HDMI converter. Under windows after login all ports work both USB-C and the HDMI and for all ports I can either mirror or extend the display under windows. Will now try the index 3 variants under macOS.
 
Okay, so HDMI through Windows wasn't blank because the mouse icon could be seen -- and it wasn't mirrored either. So it appears to be an independent video channel. The only thing left to try is Index 3.
I tested as far as I know all Index 3 options and no luck. Any hint bout controlling the backlight, it seems that the app Brighter slider is not controlling the backlight, but just makes the pixels darker or lighter.
Further I searched were the entries came from you asked about and the are from the original file I downloaded.
 

Attachments

  • Screenshot 2019-02-08 at 20.22.43.png
    Screenshot 2019-02-08 at 20.22.43.png
    96 KB · Views: 137
  • Screenshot 2019-02-08 at 20.28.53.png
    Screenshot 2019-02-08 at 20.28.53.png
    101.8 KB · Views: 137
  • Screenshot 2019-02-08 at 20.31.06.png
    Screenshot 2019-02-08 at 20.31.06.png
    88.1 KB · Views: 97
  • Screenshot 2019-02-08 at 20.34.32.png
    Screenshot 2019-02-08 at 20.34.32.png
    91.1 KB · Views: 102
I tested as far as I know all Index 3 options and no luck. Any hint bout controlling the backlight, it seems that the app Brighter slider is not controlling the backlight, but just makes the pixels darker or lighter.
Further I searched were the entries came from you asked about and the are from the original file I downloaded.
Alas I think there are few options remaining. I'll provide some additional comments and suggestions, and I hope others with more laptop experience can chime in.
  • Which SMBIOS name are you using? MacBookProX,Y?
  • Your config.plist is using a mobile platform ID 0x591B0000 and a mobile device id 0x5916.
  • However, FB-Patcher is highlighting the first row in red (external) instead of green (internal LVDS).
  • So you may want to try using the desktop platform ID 0x59120000 and, optionally, desktop device id 0x5912.
  • The default connectors for 0x59120000 are:
    • [Index 1] busId: 0x05, pipe: 9, type: DP
    • [Index 2] busId: 0x04, pipe: 10, type: DP
    • [Index 3] busId: 0x06, pipe: 10, type: DP
  • But you may want to modify the last 2:
    • [Index 1] busId: 0x05, pipe: 9, type: DP
    • [Index 2] busId: 0x06, pipe: 10, type: DP
    • [Index 3] busId: 0x04, pipe: 10, type: HDMI
 
Last edited:
Alas I think there are few options remaining. I'll provide some additional comments and suggestions, and I hope others with more laptop experience can chime in.
  • Which SMBIOS name are you using? MacBookProX,Y?
  • Your config.plist is using a mobile platform ID 0x591B0000 and a mobile device id 0x5916.
  • However, FB-Patcher is highlighting the first row in red (external) instead of green (internal LVDS).
  • So you may want to try using the desktop platform ID 0x59120000 and, optionally, desktop device id 0x5912.
  • The default connectors for 0x59120000 are:
    • [Index 1] busId: 0x05, pipe: 9, type: DP
    • [Index 2] busId: 0x04, pipe: 10, type: DP
    • [Index 3] busId: 0x06, pipe: 10, type: DP
  • But you may want to modify the last 2:
    • [Index 1] busId: 0x05, pipe: 9, type: DP
    • [Index 2] busId: 0x06, pipe: 10, type: DP
    • [Index 3] busId: 0x04, pipe: 10, type: HDMI
I use MacBookPro14.3, since that seems the best match ijn CPU and screen size (not resolution). It is a mobile platform (laptop), so that seemed normal to me. I shall try the other platform ID and device Id and see what happens. I also noticed that the coloring of the lines was not as expected.
Thank you for your help and suggestions.
 
Alas I think there are few options remaining. I'll provide some additional comments and suggestions, and I hope others with more laptop experience can chime in.
  • Which SMBIOS name are you using? MacBookProX,Y?
  • Your config.plist is using a mobile platform ID 0x591B0000 and a mobile device id 0x5916.
  • However, FB-Patcher is highlighting the first row in red (external) instead of green (internal LVDS).
  • So you may want to try using the desktop platform ID 0x59120000 and, optionally, desktop device id 0x5912.
  • The default connectors for 0x59120000 are:
    • [Index 1] busId: 0x05, pipe: 9, type: DP
    • [Index 2] busId: 0x04, pipe: 10, type: DP
    • [Index 3] busId: 0x06, pipe: 10, type: DP
  • But you may want to modify the last 2:
    • [Index 1] busId: 0x05, pipe: 9, type: DP
    • [Index 2] busId: 0x06, pipe: 10, type: DP
    • [Index 3] busId: 0x04, pipe: 10, type: HDMI
I tried the suggested platform and device id, but at the moment during boot that I normally see that the apple logo becomes smaller and less stretched, the machine now hangs. Just a black screen thats all. Thus at the moment otherwize the more advanced display settings becomes active it now goes wrong.
 
Back
Top