Jump to content

How to Spoof HD520 to HD620 in Monterey in preparation for Ventura?


yahgoo

Recommended Posts

my HP 840 G3 (i7-6600U CPU, HD 520 iGPU with id 0x1916) laptop is working fine on Monterey 12.3 as MacBookPro13,1.
In preparation of the coming Ventura Public Release, I genSMBIOS it to MacBookPo14,1.
Since WEG v1.6.0 and above can spoof SKL to KBL from HD520 to HD620
then I have updated all kexts to the latest.
It can boot into Monterey after iGPU doing retries 50 times and the dock is not transparent.
Youtube can be played. But there is some performance lag on the UI.

Attached are the DeviceProperties and NVRAM from config.plist

 

I am new to frame buffer patching. Can someone please help me figure out how to spoof HD520 to HD620?

Spoiler

DeviceProperties.png

 

NVRAM.png

 

Link to comment
Share on other sites

  • Administrators

Those values you inject for fbmem (5MB !), stolenmem (8MB !)portcount (4 !) or device-id look rather odd and incorrect to me. I invite you to consult the existing threads posted this Ventura beta section where you'll find copies of the Clover packs I posted for my Skylake/HD520 Dell Latitude E7270. You may want to revisit the iGPU faked id you went for, knowing that:

  • 8086:591e -> HD 615
  • 8086:5916 -> HD 620
  • 8086:591b -> HD 630

On top of the correct iGPU properties injection, you also need to ensure you use:

  • the correct SMBIOS (MBP14,1)
  • the correct version of Lilu + Whatevergreen (WEG v1.6.0 minimum) kexts

Check your system's default DVMT settings; if DVMT is set to 32MB, try and patch that at BIOS level to 64MB or 96MB. If you can't, adjust fbmem and stolenmem so that the sum of the two parameters totals a little less than 32MB.

 

KBL framebuffer 0x59160000 defines the following graphics settings:

ID: 59160000, STOLEN: 34 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x00000B0B
TOTAL STOLEN: 35 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 103 MB, MAX OVERALL: 104 MB (109588480 bytes)
Model name: Intel HD Graphics KBL CRB
Camellia: CamelliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000098 - ConnectorLVDS
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000800, flags: 0x00000187 - ConnectorHDMI
00000800 02000000 98000000
01050900 00040000 87010000     -> 0105 connector good for HDMI. Type 00080000 for HDMI audio.
02040A00 00080000 87010000     -> Ok for DP, incl. audio.

 

If patching were required due to DVMT=32MB, all you'd have to inject is this:

framebuffer-stolenmem        DATA        0000F001     // i.e. 31MB

or a lower value like 19+MB but certainly not down to 8MB only!

 

When default DVMT value is 32MB and cannot be increased in BIOS, the regular convention adopted for years and inherited from Haswell's original mobile framebuffers is to set:

  • stolenmem to 19MB (i.e. 0x01300000)
  • fbmem to 9MB (0x00900000)

No need to patch fbmem or stolenmem if DVMT=64MB or higher.

 

KBL framebuffer 0x591B0000 has closer fbmem + stolenmem settings to SKL framebuffer 0x19160000 used for HD 520 graphics but it requires con1 patching for HDMI:

ID: 591B0000, STOLEN: 38 MB, FBMEM: 21 MB, VRAM: 1536 MB, Flags: 0x0000130B
TOTAL STOLEN: 39 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 136 MB, MAX OVERALL: 137 MB (144191488 bytes)
Model name: Intel HD Graphics KBL CRB
Camellia: CamelliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000098 - ConnectorLVDS
[2] busId: 0x04, pipe: 10, type: 0x00000800, flags: 0x00000187 - ConnectorHDMI
[3] busId: 0x06, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
00000800 02000000 98000000
02040A00 00080000 87010000     -> Not good for HDMI output. Needs patching to 01050900 [00080000 87010000].
03060A00 00040000 87010000     -> Ok for DP, incl audio.


All explanations readily available in original Ventura beta 1 thread.

 

I would suggest you modify your properties injection like this:

AAPL,ig-platform-id            00001659        DATA
device-id                      16590000        DATA
framebuffer-con1-enable        1               NUMBER
framebuffer-con1-type          00080000        DATA

or like this:

AAPL,ig-platform-id             00001B59                        DATA
device-id                       1B590000                        DATA
framebuffer-con1-enable         1                               NUMBER
framebuffer-con1-alldata        010509000008000087010000        DATA

adding the fbmem + stolenmem patches only if required.

 

Of course, all this applies to Ventura only; I don't know if such KBL-spoofing settings work under Monterey, I've never even considered trying but why not? You should revert to previous and normal settings for Monterey and experiment with Ventura beta booted off a USB key instead.

Link to comment
Share on other sites

Thanks for your speedy reply.

 

I tried all your above recommended settings one at a time. I did not patch fbmem or stolenmem since BIOS video size is set to 64MB.

As long as I have defined AAPL,ig-platform-id and device-id, the opencore verbose boot shows [iGPU] Unsupported Auxiliary ID .... followed by Doing retries #50.

 

If I add  -disablegfxfirmware in boot args under NVRAM then YouTube cannot work.

Spoiler

iGPU - Unsupported Auxiliary ID Follow by doing retry 50.jpg

 

Link to comment
Share on other sites

  • Administrators

Were you booting Monterey or Ventura beta (and which beta)?

I've no graphics boot arg other than igfxonln=1 in my E7270 setup (to ensure that LCD screen remains activated when HDMI is plugged in but that's platform specific, not Ventura specific).

I'm using Lilu v1.6.2 and Whatevergreen v1.6.1 since Ventura beta 3.

I've no error message in the boot log about iGPU firmware failing:

Spoiler
kernel: (AppleIntelKBLGraphics) [IGPU] Ring Size: 32 KB
kernel: (AppleIntelKBLGraphics) [IGPU] Ring Size: 32 KB
kernel: (AppleIntelKBLGraphics) [IGPU] Graphics Scheduler Preemption Enabled!
kernel: (AppleIntelKBLGraphics) [IGPU] Graphics Scheduler Preemption Enabled!
kernel: (AppleIntelKBLGraphics) [IGPU] Setting preemptionDelayIntervalUS to 400 microseconds
kernel: (AppleIntelKBLGraphics) [IGPU] Setting preemptionDelayIntervalUS to 400 microseconds
kernel: (AppleIntelKBLGraphics) [IGPU] Setting preemptionTimerIntervalUS to 2000 microseconds
kernel: (AppleIntelKBLGraphics) [IGPU] Setting preemptionTimerIntervalUS to 2000 microseconds
kernel: (AppleIntelKBLGraphics) [IGPU] Will NOT fallback to host-side scheduling if graphics firmware fails to load
kernel: (AppleIntelKBLGraphics) [IGPU] Will NOT fallback to host-side scheduling if graphics firmware fails to load
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Tail Coalescing Enabled.
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Tail Coalescing Enabled.
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Page Fault Handling Enabled.
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Page Fault Handling Enabled.
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Single Channel Index Disabled
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Single Channel Index Disabled
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Channel Wait For Complete Disabled
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Channel Wait For Complete Disabled
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler: Process CSB using HWS.
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler: Process CSB using HWS.
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler: PM notify enabled
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler: PM notify enabled
kernel: (AppleIntelKBLGraphics) [IGPU] Forced to use Host Preemptive Scheduler
kernel: (AppleIntelKBLGraphics) [IGPU] Forced to use Host Preemptive Scheduler
kernel: (AppleIntelKBLGraphics) [IGPU] Graphics Address: PPGTT, Separate Address Space
kernel: (AppleIntelKBLGraphics) [IGPU] Graphics Address: PPGTT, Separate Address Space
kernel: (AppleIntelKBLGraphics) [IGPU] MultiForceWake Enabled: Using 3D Driver
kernel: (AppleIntelKBLGraphics) [IGPU] MultiForceWake Enabled: Using 3D Driver
kernel: (AppleIntelKBLGraphics) [IGPU] Render Compression Enabled.
kernel: (AppleIntelKBLGraphics) [IGPU] Render Compression Enabled.
kernel: (AppleIntelKBLGraphics) [IGPU] Render Compression for IOSurface is Enabled.
kernel: (AppleIntelKBLGraphics) [IGPU] Render Compression for IOSurface is Enabled.
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Throttle Cap = 100ms.
kernel: (AppleIntelKBLGraphics) [IGPU] Scheduler Throttle Cap = 100ms.
kernel: (AppleIntelKBLGraphics) [IGPU] Graphics accelerator is using scheduler: Host Preemptive
kernel: (AppleIntelKBLGraphics) [IGPU] Graphics accelerator is using scheduler: Host Preemptive

 

There's probably something wrong in your config/setup so post a zipped copy of your EFI folder if you want further assistance. Ideally your boot log too.

Link to comment
Share on other sites

  • Administrators

You've tested things in preparation of Ventura, great even if a little odd doing this with Monterey rather than with a Ventura beta build. But, as I said, why not? The boot arg -igfxsklaskbl won't be necessary in Ventura.

 

However, this is obviously not the proper way to run Monterey at all on a fully supported Skylake platform. Changing thread title to reflect true situation and closing this topic.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...