Jump to content

Intel Framebuffer patching using WhateverGreen


headkaze
486 posts in this topic

Recommended Posts

I'm not familiar with that bootflag.   Where's it documented and what does it do?  Also, what chipset and CPU in your system?  Are you referring to your W.I.P. Laptop with i710510u?
 
EDIT: For others wondering about -igfxblr boot flag, I found it documented here as a WhateverGreen v1.4.6 addition.  Not sure why this didn't appear in my original search.

Luckily that boot flag did help on my laptop.
Big Sur
Clover 5130
Latest WEG & Lilu
Solved black screen on boot to macOS.
Doesn’t happen with earlier versions of weg
Intel HD 630.
Not sure what has changed in WEG to cause black screens when it was working perfectly before. Now have to use a boot flag to regain the same functionality as previous versions without a boot flag.


Sent from my iPhone using Tapatalk
Link to comment
Share on other sites

  • 3 months later...

Does anyone know the difference between a "mobile" framebuffer and a "desktop" framebuffer? Details below...

When I first starting hacking my rig here, framebuffer patching guides warned against using video adapters (I was attempting to use DP->DVI adapters). Using a brute-force, trial and error patching methodology here, I got lucky and determined that I could enable DP->DVI adapters with UHD 630 framebuffer 0x3e920000 and framebuffer patches that changed busID, index, type and flags (framebuffer 0x3e9b0007 would not work).

Now that I know enough about framebuffer patching to be dangerous, I'd like to figure out why one framebuffer works but the other does not (even if I apply patches to change busIDs, types, flags, indices..., framebuffer 0x3e9b0007 will not work with DP->DVI adapters on my rig). The major difference that I see between the two framebuffers (defined here) is that 0x3e9b0007 (the non-working framebuffer) is "desktop" and 0x3e920000 (the working framebuffer) is "mobile." 

Does anyone know the logical difference (including byte sequence in AppleIntelCFLGraphicsFramebuffer) between "mobile" and "desktop" framebuffers?

Link to comment
Share on other sites

 

22 hours ago, tonyx86 said:

Does anyone know the logical difference (including byte sequence in AppleIntelCFLGraphicsFramebuffer) between "mobile" and "desktop" framebuffers?

There's a dump of the binary data in Coffee Lake.bin

 

You can use the 010 Editor along with IntelFramebuffer.bt to decode the data.

 

EDIT: I just noticed that FAQ.IntelHD.en.md contains the above output (Click "Spoiler: CFL/CML connectors" to expand) which also has the raw hex dump.

Edited by headkaze
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

6 hours ago, headkaze said:

EDIT: I just noticed that FAQ.IntelHD.en.md contains the above output (Click "Spoiler: CFL/CML connectors" to expand) which also has the raw hex dump.

 

Thank you very much for your quick reply!  I know how busy you are, so it means a lot.  I gathered virtually all of my framebuffer patching knowledge from a couple of threads where you contributed (including this one) and the IntelHD FAQ.  The IntelHD FAQ indicates which framebuffers are "mobile" and which are "desktop," but I don't believe it provides the hex dump that shows how they are logically distinguished in Coffee Lake.bin. Maybe the "mobile" or "desktop" bit is part of the Framebuffer ID or maybe part of the Framebuffer Flags?

 

I should be able to figure it out from these other links you provided.  Thanks again!

 

EDIT: it appears that IntelFramebuffer.bt is used to generate the connector spoilers in the IntelHD FAQs.  Sorry I was a little slow in understanding your reply, since that's clearly what you meant in your updated comment.  Thanks again.

 

6 hours ago, headkaze said:

 

There's a dump of the binary data in Coffee Lake.bin

 

You can use the 010 Editor along with IntelFramebuffer.bt to decode the data.

ID: 3E920000, STOLEN: 57 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x0000130B
TOTAL STOLEN: 58 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 172 MB, MAX OVERALL: 173 MB (181940224 bytes)
Model name: Intel HD Graphics CFL CRB
Camellia: CamelliaDisabled (0), Freq: 0 Hz, FreqMax: 0 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: 0x00000400, flags: 0x00000187 - ConnectorDP
00000800 02000000 98000000
01050900 00040000 87010000
02040A00 00040000 87010000

ID: 3E9B0007, STOLEN: 57 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x00801302
TOTAL STOLEN: 58 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 172 MB, MAX OVERALL: 173 MB (181940224 bytes)
Model name: Intel UHD Graphics 630
Camellia: CamelliaDisabled (0), Freq: 0 Hz, FreqMax: 0 Hz
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

 

Edited by tonyx86
Link to comment
Share on other sites

2 hours ago, tonyx86 said:

EDIT: it appears that IntelFramebuffer.bt is used to generate the connector spoilers in the IntelHD FAQs.  Sorry I was a little slow in understanding your reply, since that's clearly what you meant in your updated comment.  Thanks again.

Yes but it only shows the hex dump of the connectors. You can take a look at the "struct FramebufferCFL" entry in IntelFramebufer.bt to see how the data is structured in Coffee Lake.bin and then search for the framebuffer id. Attached is a screenshot showing the id and connector data highlighted.

 

CFL_3E920000.png

  • Thanks 1
Link to comment
Share on other sites

I'm not too sure what is different with Big Sur. WEG Graphics was working fine on Mojave and Catalina, but not with the Big Sur 11.3.1 USB installer. It fails to load the installer graphics part on both Clover r5136 and OpenCore 0.7.0

 

System Configuration

  • Catalina 10.15.7 trying to upgrade with Big Sur 11.3.1 USB Installer
  • Clover r5136 and OpenCore 0.7.0 (both UEFI mode)
  • SMBIOS: iMac17,1
  • Motherboard: Skylake Asus H170I-PRO
  • CPU: Intel Core i3 6300
  • GPU: Intel HD530, device id 1912
  • Connection: DisplayPort to DisplayPort connector
  • no WEG boot arguments
  • Lilu 1.5.3, WEG 1.5.0

The following DeviceProperties configuration works perfect with DisplayPort and HDMI for iMac17,1 on Mojave and Catalina, but not with the Big Sur installer.

 

1292785166_HD530Properties.png.d1d2534aaa9c36c2b7e77e5b1a6f70a4.png

 

HackinTool3.png.c10c6d7da9bca2a2c010c2cb35a7e86a.png

 

HackinTool4.png.6aefe8a0c88b88239492bf8df0e53b8b.png

 

 

Edited by Jingu
Link to comment
Share on other sites

  • 5 weeks later...

Hello everyone, hi @headkaze and @vit9696 I would like to ask you the following that I have been noticing when using the latest releases of WhateverGreen kext, before raising any ticket in https://github.com/acidanthera/bugtracker/issues

 

On my Intel NUC and Lenovo laptop, I am getting in the kernel log many, many errors that repeat each 2 seconds and I have no idea where this is coming from or how I can solve this. Namely:

2021-07-18 11:14:15.96 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB2 Not waiting for VBL as path state is not active
2021-07-18 11:14:15.99 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] [Connection_probe] err = 0
2021-07-18 11:14:16.01 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid Slice Count
2021-07-18 11:14:16.01 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid EU Count
2021-07-18 11:14:16.05 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB2 Not waiting for VBL as path state is not active
2021-07-18 11:14:16.05 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] [Connection_probe] err = 0
2021-07-18 11:14:17.67 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] displayPath is not NULL for index i = 0. continue
2021-07-18 11:14:17.70 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB2 Not waiting for in set gamma to solid color as path state is not active
2021-07-18 11:14:17.76 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] HDMI2.0 TODO: Enable AVI INFO frame
2021-07-18 11:14:18.03 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] HDMI2.0 TODO: Enable AVI INFO frame
2021-07-18 11:14:18.26 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] HDMI2.0 TODO: Enable AVI INFO frame
2021-07-18 11:14:18.52 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB2: Flip called without enabling VBL
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] [AGDC] Get stream AUX access read for agdc port 1 stream=0 : address=0x2200, size=16
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] FB0 Getting display status
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] FB0 Display status is = 1
2021-07-18 11:14:18.66 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-18 11:14:18.66 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-18 11:14:18.68 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] [AGDC] Get stream AUX access read for agdc port 1 stream=0 : address=0x2200, size=16
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] FB0 Getting display status
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] FB0 Display status is = 1
2021-07-18 11:14:18.68 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-18 11:14:18.70 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] [AGDC] Get stream AUX access read for agdc port 1 stream=0 : address=0x2200, size=16
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] FB0 Getting display status
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] FB0 Display status is = 1
2021-07-18 11:14:18.70 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-18 11:14:18.73 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] [AGDC] Get stream AUX access read for agdc port 1 stream=0 : address=0x2200, size=16
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] FB0 Getting display status
2021-07-18 11:14:19.28 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][INFO   ] FB0 Display status is = 1
2021-07-18 11:14:18.73 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-18 11:14:18.75 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-18 11:14:18.75 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
[...]
2021-07-18 11:14:18.77 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr e with Status = 0xe00002d6
2021-07-18 11:14:18.77 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux

The last two lines keep repeating.

 

From your experience, do you know if a) this is related to WhateverGreen? b) Any idea how to fix this if you consider it a serious error or how to stop flooding the logs?

Is this totally related to the native Catalina kext for Intel iGPU display?


Many thanks!

Link to comment
Share on other sites

On 6/18/2021 at 9:50 AM, Jingu said:

I'm not too sure what is different with Big Sur. WEG Graphics was working fine on Mojave and Catalina, but not with the Big Sur 11.3.1 USB installer. It fails to load the installer graphics part on both Clover r5136 and OpenCore 0.7.0

Spoiler
On 6/18/2021 at 9:50 AM, Jingu said:

1292785166_HD530Properties.png.d1d2534aaa9c36c2b7e77e5b1a6f70a4.png

 

 

 

 

 

 

 

 

@Jingu Just curious - why do you specify a portcount of 4?

 

Link to comment
Share on other sites

5 hours ago, tonyx86 said:

@MacKonsti I'm not seeing this on my HackMini8,1.  What console filters/settings are you using to see these kernel log messages?

Hi mate long time no see. Nothing complex, really.

SMBIOS = MacMini8,1 / IGPU is Intel Iris Plus Graphics 655 [8086:3ea5]

Terminal command = log show --style syslog -debug --info --last boot --predicate 'process == "kernel"' | cut -c 1-22,43-999 | grep -i igpu

On Clover I only use for WhateverGreen the following injection, i.e. mainly device-id and platform-ID:

			<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
			<dict>
				<key>AAPL,GfxYTile</key>
				<data>AQAAAA==</data>
				<key>AAPL,ig-platform-id</key>
				<data>BAClPg==</data>
				<key>hda-gfx</key>
				<string>onboard-1</string>
				<key>model</key>
				<string>Intel Iris Plus Graphics 655</string>
			</dict>

The AAPL,GfxYTile is used for a stupid reason = when I use my monitor in vertical format, rebooting creates artefacts... so with this parameterI get a black screen before going to the BIOS boot screen...

Thanks!

 

Edited by MacKonsti
Link to comment
Share on other sites

@MacKonsti Always good to hear from you and see you still active.  I don't see any of those log messages on my HackMini8,1.  My DeviceProperties also include AAPL,GfxYTile, but only because I saw it in the IORegistry dump from a real MacMini8,1.  My DeviceProperties also include graphic-options, but again, only because I saw this in the IORegistry dump of a real MacMini8,1.

Link to comment
Share on other sites

Hi mate, one thing I forgot to mention @tonyx86 is that I run graphics via the USB-C port (only one) to mini-Display-Port via a special cable. I do not use HDMI port of the Intel NUC. Are you using the hardware port too? What is it? And the device properties injected, are they as simple as mine above in your config.plist? Thanks

Link to comment
Share on other sites

@MacKonsti I use DP->DVI adapters, so my framebuffer patching required a lot of experimentation, since at the time (May 2020) there were no guides for patching with adapters and the guides all said not to use adapters.  In the end, it is simple.  See my EFI attached here.  I haven't tried USB-C/Thunderbolt (my rig's USB-C port is USB3 only).  I have a HackBookPro14,1 (HP Envy Laptop) that works perfectly, but I haven't tested its USB-C/Thunderbolt port with video.

  • Thanks 1
Link to comment
Share on other sites

Hey guys, any word on whether any of these methods work on Iris Xe?

 

I ask because the 3rd iteration of the LG Gram 17 fixed a lot of the long-standing issues and hell will freeze over before I buy a laptop with a soldered-in SSD.

Edited by anarkhos
Link to comment
Share on other sites

On 7/23/2021 at 6:38 PM, MacKonsti said:

Hi mate, one thing I forgot to mention @tonyx86 is that I run graphics via the USB-C port (only one) to mini-Display-Port via a special cable. I do not use HDMI port of the Intel NUC. Are you using the hardware port too? What is it? And the device properties injected, are they as simple as mine above in your config.plist? Thanks

I also use the USB-C port of my NUC for the display, there are no errors in the log. Since macOS doesn't support daisy-chain displays I only enabled 2 ports, frame buffers. Not sure if that's the reason, but worth a try.

Link to comment
Share on other sites

20 minutes ago, wern apfel said:

I also use the USB-C port of my NUC for the display, there are no errors in the log. Since macOS doesn't support daisy-chain displays I only enabled 2 ports, frame buffers. Not sure if that's the reason, but worth a try.

Hi mate thanks for confirming, which NUC are you using? I have the NUC8i7BEH2, can you share the graphics device properties you are injecting for WhateverGreen please, to compare?

 

Are you running this same log output command that I posted?

 

Remember that for OpenCore (not sure for Catalina but for sure on Big Sur) you guys need to add an extra parameter to keep the kernel logs: msgbuf=1048576

 

Are you using this boot-arg? You can't imagine what logs you're missing without it :D:D

  • Thanks 1
Link to comment
Share on other sites

1 hour ago, MacKonsti said:

Hi mate thanks for confirming, which NUC are you using? I have the NUC8i7BEH2, can you share the graphics device properties you are injecting for WhateverGreen please, to compare?

 

Are you running this same log output command that I posted?

 

Remember that for OpenCore (not sure for Catalina but for sure on Big Sur) you guys need to add an extra parameter to keep the kernel logs: msgbuf=1048576

 

Are you using this boot-arg? You can't imagine what logs you're missing without it :D:D

I use the NUC8i5BEK2, the graphics should be the same. I use it only a few weeks, for now only Monterey is installed.

 

Boot-arguments

keepsyms=1 debug=0x144 alcverbs=1 msgbuf=10485760

Terminal command + output

log show --style syslog -debug --info --last boot --predicate 'process == "kernel"' | cut -c 1-22,43-999 | grep -i igpu 
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Ring Size: 32 KB
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Graphics Scheduler Preemption Enabled!
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Setting preemptionDelayIntervalUS to 400 microseconds
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Setting preemptionTimerIntervalUS to 2000 microseconds
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Will NOT fallback to host-side scheduling if graphics firmware fails to load
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Scheduler Tail Coalescing Enabled.
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Scheduler Page Fault Handling Enabled.
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Scheduler Single Channel Index Disabled
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Scheduler Channel Wait For Complete Disabled
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Scheduler: Process CSB using HWS.
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Scheduler: PM notify enabled
2021-07-29 13:05:33.19 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Selected Apple Firmware Scheduler
2021-07-29 13:05:33.20 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Graphics Address: PPGTT, Separate Address Space
2021-07-29 13:05:33.20 kernel[0]: (AppleIntelKBLGraphics) [IGPU] MultiForceWake Enabled: Using 3D Driver
2021-07-29 13:05:33.20 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Render Compression Enabled.
2021-07-29 13:05:33.20 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Render Compression for IOSurface is Enabled.
2021-07-29 13:05:33.21 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Begin Gfx firmware load process
2021-07-29 13:05:33.21 kernel[0]: (AppleIntelKBLGraphics) [IGPU]    ForceWake Multithread = 0x30002
2021-07-29 13:05:33.21 kernel[0]: (AppleIntelKBLGraphics) [IGPU]    CONFIG0 (0xD00)       = 0x80000000
2021-07-29 13:05:33.21 kernel[0]: (AppleIntelKBLGraphics) [IGPU]    GT_THREAD_STATUS      = 0x400b0000
2021-07-29 13:05:33.21 kernel[0]: (AppleIntelKBLGraphics) [IGPU]    Doing retry #0
2021-07-29 13:05:33.24 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Graphics Firmware Version: 2.18.5.2
2021-07-29 13:05:33.25 kernel[0]: (AppleIntelKBLGraphics) [IGPU] Graphics accelerator is using scheduler: Apple Firmware
2021-07-29 13:05:33.63 kernel[0]: (IOPlatformPluginFamily) HE2N_Key Does Not Exist, use kSMCPStatesIGPU for Internal GPU
2021-07-29 13:05:34.24 kernel[0]: (IOGraphicsFamily) loadPrefs: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2-10ac-a0be-1b9c84d747a4543d using new key

GFX WhateverGreen config

                <key>AAPL,GfxYTile</key>
				<data>
				AQAAAA==
				</data>
				<key>AAPL,ig-platform-id</key>
				<data>
				CQClPg==
				</data>
				<key>enable-max-pixel-clock-override</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-busid</key>
				<data>
				BQAAAA==
				</data>
				<key>framebuffer-con0-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-flags</key>
				<data>
				xwEAAA==
				</data>
				<key>framebuffer-con0-has-lspcon</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-index</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-pipe</key>
				<data>
				CQAAAA==
				</data>
				<key>framebuffer-con0-preferred-lspcon-mode</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con0-type</key>
				<data>
				AAgAAA==
				</data>
				<key>framebuffer-con1-busid</key>
				<data>
				BAAAAA==
				</data>
				<key>framebuffer-con1-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con1-flags</key>
				<data>
				xwEAAA==
				</data>
				<key>framebuffer-con1-index</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-con1-pipe</key>
				<data>
				CgAAAA==
				</data>
				<key>framebuffer-con2-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con2-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con2-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con2-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con2-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con2-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-busid</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-con3-flags</key>
				<data>
				IAAAAA==
				</data>
				<key>framebuffer-con3-index</key>
				<data>
				/////w==
				</data>
				<key>framebuffer-con3-pipe</key>
				<data>
				AAAAAA==
				</data>
				<key>framebuffer-con3-type</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-flags</key>
				<data>
				CgODAA==
				</data>
				<key>framebuffer-memorycount</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-patch-enable</key>
				<data>
				AQAAAA==
				</data>
				<key>framebuffer-pipecount</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-portcount</key>
				<data>
				AgAAAA==
				</data>
				<key>framebuffer-unifiedmem</key>
				<data>
				AAAAgA==
				</data>
				<key>igfxfw</key>
				<data>
				AgAAAA==
				</data>

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Thanks for posting the config @wern apfel I had a look, not sure why WhateverGreen for this IGPU needs all that, since it's a model supported directly by the OS it seems (on some Apple computer that now can't remember).

You do have this IGPU, yes ? According to my lspci -nn output (and Hackintool reports similar)

00:02.0 VGA compatible controller [0300]: Intel Corporation Coffee Lake Iris Plus Graphics 655 [8086:3ea5] (rev 01)

I mean, why define memorycount, patch-enable, pipe etc. as I don't see the point for this graphics adapter to be honest...

 

@tonyx86 and @wern apfel I made a mistake, apologies. The errors are not under IGPU but IGFB for frame-buffer, I am 99% certain you got them too:

$ log show --style syslog -debug --info --last boot --predicate 'process == "kernel"' | cut -c 1-22,43-999 | grep -i error | grep -i igfb
2021-07-31 14:54:17.74 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB2 Not waiting for VBL as path state is not active
2021-07-31 14:54:19.30 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB2 Not waiting for VBL as path state is not active
2021-07-31 14:54:19.35 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid Slice Count
2021-07-31 14:54:19.35 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid EU Count
2021-07-31 14:54:19.40 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB2 Not waiting for VBL as path state is not active
2021-07-31 14:54:20.99 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] displayPath is not NULL for index i = 0. continue
2021-07-31 14:54:21.57 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB2 Not waiting for in set gamma to solid color as path state is not active
2021-07-31 14:54:21.63 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] HDMI2.0 TODO: Enable AVI INFO frame
2021-07-31 14:54:21.88 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] HDMI2.0 TODO: Enable AVI INFO frame
2021-07-31 14:54:22.09 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] HDMI2.0 TODO: Enable AVI INFO frame
2021-07-31 14:54:22.30 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB2: Flip called without enabling VBL
2021-07-31 14:54:22.53 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-31 14:54:22.53 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-31 14:54:22.55 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-31 14:54:22.55 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-31 14:54:22.57 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-31 14:54:22.57 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-31 14:54:22.59 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-31 14:54:22.59 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-31 14:54:22.62 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 0 with Status = 0xe00002d6
2021-07-31 14:54:22.62 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-31 14:54:22.64 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr e with Status = 0xe00002d6
2021-07-31 14:54:22.64 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-31 14:54:22.66 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr e with Status = 0xe00002d6
2021-07-31 14:54:22.66 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-31 14:54:24.81 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB0: ReadAUX Timeout for addr 100 with Status = 0xe00002d6
2021-07-31 14:54:24.81 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] [AGDC] Failed with status -536870212 for stream access aux
2021-07-31 14:56:13.10 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid Slice Count
2021-07-31 14:56:13.10 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid EU Count
2021-07-31 14:56:22.10 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid Slice Count
2021-07-31 14:56:22.10 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid EU Count
2021-07-31 14:56:28.46 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid Slice Count
2021-07-31 14:56:28.46 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid EU Count
2021-07-31 14:56:34.46 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid Slice Count
2021-07-31 14:56:34.46 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid EU Count
2021-07-31 14:56:37.37 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid Slice Count
2021-07-31 14:56:37.37 kernel[0]: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ]  updateSliceConfig Requesting Invalid EU Count

Can you confirm? Anyone else too? Not sure if this is by the system or WhateverGreen...

  • Thanks 1
Link to comment
Share on other sites

Hi @headkaze and forks, I'm trying to patch the UHD630 on i7-10870h for my ASUS ZenBook Pro Duo 15, which has two screens (main screen is OLED 4k, secondary screen is 3084x1100 LCD, both are touchscreens). However, I can only get one of the screen work at a time. I've tried 0900A53E, 00009B3E, and 07009B3E.

Could you instruct me how do I make both of the screens work on the same time? Below are some of the test I have done with these framebuffers.

For the main screen only setup: (secondary screen, 3084x1100 LCD, cannot be detected. The secondary screen functions as a trackpad which has the cursor and tap to click function only. (multi touch gestures including scroll not work.))

1688948249_ScreenShot2021-08-01at5_44_11AM.thumb.png.aacf15b72ba5d7b372d4474e5852fe35.png

 

1284606624_ScreenShot2021-08-01at5_45_48AM.thumb.png.eab4976d6ae4e6ab49ac42d51090caad.png

 

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

For the secondary screen only setup: (main screen, 4k OLED, is detected but is black. The OLED functions as a trackpad which actually mirrors the position of the secondary screen with its touch functionalities. (multi touch gestures works.))

 

1158689971_ScreenShot2021-08-01at5_48_24AM.png.8baaa8b9b8469dc519ee68981833ffe5.png

 

1923845097_ScreenShot2021-08-01at5_49_59AM.png.ec4ca7ca228e537b704f3483f3d89f45.png

684403567_ScreenShot2021-08-01at5_55_28AM.png.da93720339550e8c03f12a362846e519.png

 

For the secondary screen, although both screens are detected, only the secondary screen is working, which is the one at bus-id 0x06 in both tests above.

 

1453221711_ScreenShot2021-08-01at12_17_38AM.thumb.png.6e454dd545d3a16d0c63d61ebba880a1.png

 

188794888_ScreenShot2021-08-01at12_21_12AM.png.b54964a3fa5fdf43f05e008b1a6b5907.png

Edited by shiecldk
Link to comment
Share on other sites

@MacKonsti When searching the log for IGFB, I do see the same errors as you indicated.  My rig (fully defined here) is as follows:

  • Intel Chipset: Q370
  • Intel CPU: i9-9900 (8 core / 16 thread)
  • Graphics: UHD630 Coffee Lake (device-id 0x3e98) (3 DP->DVI)
  • macOS: Big Sur 11.5.1
  • Framebuffer: 0x3e920000
  • WhateverGreen.kext 1.5.1

 

If I hadn't looked, I'd never have known about the ERRORs, so thanks for pointing this out.  I haven't observed any issues (graphics or otherwise), so I'm not sure how to interpret the ERRORs.

 

EDIT: @MacKonsti I checked again and my errors are slightly different from what you posted.  My ERRORs are all/only "FBx: ReadAUX Timeout for addr" and "AGDC not registered. Unmanaged display." errors.

Edited by tonyx86
  • Thanks 1
Link to comment
Share on other sites

  • 1 year later...

I have been basing my Intel framebuffer patches on the assumption that logical connectors (as seen by WEG for framebuffer patching) are numbered starting at 0 (con0) and that the index is independent of the connector number (e.g., con0 could have index = 1).  Further, my understanding is that the connectors defined in macOS standard 3-connector framebuffers define con0, con1, con2.  I thought that in the following framebuffer definition corresponding to AAPL,ig-platform-id 0x59120000, con0 has index = 1, con1 has index = 2, con2 has index = 3.  Is my understanding correct?

 

For example, when using WEG to patch the framebuffer definition (below) for 0x59120000, is WEG patching con0, con1 and con2 (with indices 1, 2 and 3 respectively) or is WEG patching con1, con2 and con3?

ID: 59120000, STOLEN: 38 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x0000110B
TOTAL STOLEN: 39 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 115 MB, MAX OVERALL: 116 MB (122171392 bytes)
Model name: Intel HD Graphics KBL CRB
Camellia: CamelliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 0, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[3] busId: 0x06, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
01050900 00040000 87010000
02040A00 00040000 87010000
03060A00 00040000 87010000

I ask, because in this document, the following example is given:

 

Example of a semantic patch: HDMI type connector (connector-type=00080000 for connectors with index 1, 2 and 3).

connector.png.8b229468baa500a6339f277a4ae7a9ad.png

 

Is this example for a 4-connector framebuffer (with con0, con1, con2 and con3) and con0 is not being patched, or is this a misprint in the document? 

Edited by deeveedee
Link to comment
Share on other sites

  • 1 month later...

@deeveedee

 

It is sort of confusing at first.  con0 don't use.

I'm assuming you have external standalone Monitor?

Display Monitor if external sitting on the table or desk?

DVI

HDMI

DP

 

Whatevergreen Intel HD Manual

 

Semantic and Binary patching; 2 choices to get the job done.  which one works?  have to try.

For myself I used the shorter version of Binary. 

Though I have used the long version Binary as well. Which seems to work well with Kaby Lake UHD 630 mobile laptops. 

 

EXAMPLE Using a Broadwell Laptop  <> Mobile designation <> chips are different so be careful not to use mobile-laptop for Desktop and vice versa.

 

0x16260006  mobile  356 MB

ID: 16260006, STOLEN: 34 MB, FBMEM: 21 MB, VRAM: 1536 MB, Flags: 0x00000B0B
TOTAL STOLEN: 56 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 124 MB, MAX OVERALL: 125 MB (131608576 bytes)
Camellia: CamelliaDisabled (0), Freq: 2777 Hz, FreqMax: 2777 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000230 - ConnectorLVDS
[1] busId: 0x05, pipe: 11, type: 0x00000400, flags: 0x00000507 - ConnectorDP
[2] busId: 0x04, pipe: 11, type: 0x00000400, flags: 0x00000507 - ConnectorDP
00000800 02000000 30020000 < don't use > may cause black out screen
01050B00 00040000 07050000
02040B00 00040000 07050000

 

How it turns out from the above data using the Whatevergreen Index:

 

framebuffer-con1-enable | Data | 01000000

framebuffer-con1-alldata | Data | 01050B00 00080000 82000000

framebuffer-con2-enable | Data | 01000000

framebuffer-con2-alldata | Data | 02040B00 00080000 82000000

 

HDMI or LVDS; I think it pretty much covers all three types of output.  Display outs.

XXXXXXXX 00080000 82000000 <> wildcard type thing here ( Rehabman introduced this pretty cool trick )

 

So:

 

First 8 numbers:

01050B00 <> this comes from line two up top of the Whatevergreen Manual.

02040B00 <> this is is from line three up top.

 

These get tossed:

00040000 07050000

00040000 07050000

 

And Replaced with Wildcard ( there's a proper name; Rehabman has all the duds)

 

00080000 82000000  HDMI pass through. I believe DP as well.

 

Now in the case where there is a bump:

 

00040000  <> replace the 4 with 8 on both line 2 and 3.

 

So lets put the two different lines in a row:

 

bus ID 1 <> 00040000 07050000

bus ID 1 <> 00080000 07050000

 

bus ID 2 <> 00040000 07050000

bus ID 2 <> 00080000 07050000

 

keep the First 8 in line 2 and 3

bus ID 1 <> 01050B00

bus ID 2 <> 02040B00

 

End result:

01050B00 00080000 82000000

02040B00 00080000 82000000

 

bus ID 0 <> don't need except in that funny circumstance.

 

Sometimes this doesn't not pan out: 00080000 82000000

so try: 0004000 8200000

or : 0006000 82000000

or: 00080000 07050000

 

 

 

 

 

connector.png

Link to comment
Share on other sites

Webfalter released a new version of OCToolbox. It's a small tool which has some calculators for OpenCore. I suggested to him to include a calculator for Framebuffer and Connector flags as well. It's a bit easier to use than the tiny window in Hackintool and also includes a Big Endian to Little Endian converter. It can also "reverse engineer" flag values to show the flags it includes.

 

725464529_Bildschirmfoto2023-07-13um08_22_44.thumb.png.09b7d9b1b20b908a0ddb5cee9d93bb19.png

Edited by cankiulascmnfye
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

×
×
  • Create New...