Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

FrankenCrab

macrumors newbie
Original poster
Hello, everyone,
there has long been a problem with running the Windows Intel HD 3000 driver on 2011 MacBook Pros with the dGPU disabled: the firmware-provided VBT contains incorrect information for the internal dual-channel LVDS panel. Until now, enabling the Intel driver would result in corrupted display output.

We finally have a relatively simple fix. It may be not too relevant these days, but still better late than never, sadly we didn't have Fable/Sol class models 10 years ago to be able to empower any layman to find a solution to problems like these.

What the fix does
On the 17-inch 2011 MacBook Pro (MacBookPro8,3), the LFP entry in Apple’s Video BIOS Table normally describes a generic 1280×800 panel instead of the machine’s actual 1920×1200 dual-channel LVDS display. When the Windows Intel HD 3000 driver takes control, it relies on this incorrect information and programs the display hardware incorrectly, producing a corrupted image. The attached UEFI driver patches the existing LFP entry in place with the correct MacBookPro8,3 panel configuration before Windows boots. This allows the Intel HD 3000 driver to initialize the internal display correctly, with full graphics acceleration.
I hold no credit to this fix personally, as it's a collaborative work by Claude Fable and ChatGPT Sol, and I only did the field testing.

Installation and requirements
Attached are two .efi drivers, one for native 60Hz, the other for 90Hz (one redeeming quality of these swan song TN panels is that they usually allow for stable overclocking, and I personally prefer running this MBP at 90Hz), these drivers are injectable via OCLP (which you'd want to use anyway for working sound/correct PCI table on UEFI Windows installs on 2011 machines). Simply unzip the files to OC/Drivers folder on your EFI partition where you installed OpenCore and add the following entry to the OpenCore config.plist right below the ResetNvramEntry.efi dict:

<dict>
<key>Arguments</key>
<string></string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>LoadEarly</key>
<false/>
<key>Path</key>
<string>MBP83Vbt90InPlaceDxe.efi</string>
</dict>

(replace <string>MBP83Vbt90InPlaceDxe.efi</string> with <string>MBP83Vbt60InPlaceDxe.efi</string> if you prefer native 60Hz instead)

I can confirm that the fix works correctly on my machine, including the internal display, Intel HD 3000 graphics acceleration, and 90 Hz refresh rate. The change is not permanent and does not flash or modify the Mac’s firmware. The driver patches the existing Intel graphics OpRegion in RAM on each OpenCore boot, and the original state is restored after a reboot.

These binaries are specifically configured for the 17-inch MacBookPro8,3 and won't work on any other model, although source code allows for creating custom resolution variants provided you can first capture complete panel timing, its firmware VBT layout, and live register values of your model.

Edit: Updated the attachments to include the source code, reproducible build scripts, instructions for creating custom refresh-rate and resolution variants, and a revised 90 Hz driver using slightly more conservative timings.
 

Attachments

Last edited:
  • Like
Reactions: DeLife
Hello, this is a great tool! But I have a 15-inch MacBook A1286 from 2011, and when I install the driver meant for the 17-inch model, I get only 1/4 of the screen image visible—yet there are no artifacts!!! I got the EDID of my panel in macOS 10.15, here it is: "
edid-decode (hex):

00 ff ff ff ff ff ff 00 06 10 a4 9c 00 00 00 00
16 13 01 03 80 21 15 78 0a e5 85 a3 54 4f 9c 26
0e 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 ab 22 a0 a0 50 84 1a 30 30 20
36 00 4b cf 10 00 00 19 00 00 00 01 00 06 10 30
00 00 00 00 00 00 00 00 0a 20 00 00 00 fe 00 4c
54 4e 31 35 34 42 54 30 38 00 0a 20 00 00 00 fc
00 43 6f 6c 6f 72 20 4c 43 44 0a 20 20 20 00 ac

----------------

Block 0, Base EDID:
EDID Structure Version & Revision: 1.3
Vendor & Product Identification:
Manufacturer: APP
Model: 40100
Made in: week 22 of 2009
Basic Display Parameters & Features:
Digital display
Maximum image size: 33 cm x 21 cm
Gamma: 2.20
RGB color display
First detailed timing is the preferred timing
Color Characteristics:
Red : 0.6396, 0.3300
Green: 0.3095, 0.6103
Blue : 0.1503, 0.0546
White: 0.3134, 0.3291
Established Timings I & II: none
Standard Timings: none
Detailed Timing Descriptors:
DTD 1: 1440x900 59.901458 Hz 16:10 55.469 kHz 88.750000 MHz (331 mm x 207 mm)
Hfront 48 Hsync 32 Hback 80 Hpol N
Vfront 3 Vsync 6 Vback 17 Vpol N
Manufacturer-Specified Display Descriptor (0x01): 00 01 00 06 10 30 00 00 00 00 00 00 00 00 0a 20 '.....0......... '
Alphanumeric Data String: 'LTN154BT08'
Display Product Name: 'Color LCD'
Checksum: 0xac

----------------

Preferred Video Timing if only Block 0 is parsed:
DTD 1: 1440x900 59.901458 Hz 16:10 55.469 kHz 88.750000 MHz (331 mm x 207 mm)
Hfront 48 Hsync 32 Hback 80 Hpol N
Vfront 3 Vsync 6 Vback 17 Vpol N

----------------

Native Video Resolution:
1440x900

----------------

" Could you please create a driver for me, since I'm not very familiar with Linux? :/
 

Attachments

Here's a 15-inch 1440x900 driver to test. Roughly only a 50/50 chance this is gonna work, though.
Hello! I finally decided to try figuring out Linux in the morning, so I installed WSL on Windows 10. That allowed me to compile my little JSON config file for my display, and it worked! My MacBook Pro 15 a1286 (which I picked up from a scrap metal yard) came back to life on Windows 10 (it only took me 5 hours to figure out your utility)!!! I'll attach the .efi file so others can use it too!
 

Attachments

Register on MacRumors! This sidebar will go away, and you'll see fewer ads.