deeveedee Posted May 5 Share Posted May 5 (edited) The HP EliteBook 850 G7 Laptop with 10th Gen Intel Comet Lake CPU makes an excellent hackbook. If you look at existing posted EFIs / GitHub repos, you'll see one thing in common to all of them: the HDMI port doesn't work. This is because the frame buffer is not patched correctly. You'll notice that hackers have tried to correct the HDMI port behavior with the following incorrect patches: enable-hdmi-dividers-fix - not needed enable-hdmi20 - a whatevergreen arg not implemented for macOS 11+ framebuffer-fbmem, framebuffer-stolenmem, framebuffer-unifiedmem: not needed enable-lspcon-support: incorrect for this laptop The secret to a properly patched framebuffer for this hack is thorough experimentation with patching the framebuffer flags documented in this reference. The logical starting point for framebuffer patching is to assume framebuffer 3E9B0000 or 3EA50009 as recommended here. My laptop has an Intel i7-10610U CPU which, according to this, has device ids 0x9B41,0x9BCC (neither of which is supported by macOS). According to this, the supported Comet Lake device-ids are 0x9BC8 0x9BC5 0x9BC4 I've chosen to spoof device-id 0x9BC8. After thorough experimentation with framebuffer flags, the framebuffer flags that enable both the internal display and the external HDMI port are working framebuffer flags: <0A0BE300> After finding the correct framebuffer flags, you could choose to patch the framebuffer flags with DeviceProperty framebuffer-flags = <0A0BE300> or you could choose an existing framebuffer definition that already has the correct framebuffer flags. The following Comet Lake framebuffer definitions (from here) have the framebuffer flags we need: 3EA50004 3EA50005 3EA60005 For my hack, I chose to use frame buffer 3EA50005: Spoiler ID: 3EA50005, STOLEN: 57 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x00E30B0A TOTAL STOLEN: 58 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 172 MB, MAX OVERALL: 173 MB (181940224 bytes) Model name: Intel Iris Plus Graphics 655 Camellia: CamelliaV3 (3), Freq: 0 Hz, FreqMax: 0 Hz Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3 [0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000498 - ConnectorLVDS [1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x000003C7 - ConnectorDP [2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x000003C7 - ConnectorDP 00000800 02000000 98040000 01050900 00040000 C7030000 02040A00 00040000 C7030000 Comparing framebuffer 3EA50005 to framebuffer 3EA50009 reveals a problem with framebuffer-con0-flags: the flags should be 0x00000098, but framebuffer 3EA50005 defines framebuffer-con0-flags as 0x00000498, so we need to patch framebuffer-con0-flags for working internal display when using framebuffer 3EA50005. The complete, fully working framebuffer patches for the HP EliteBook 850 G7 are as follows (see attached config.plist): Spoiler EDIT: Note that the chosen framebuffer will influence the graphics text displayed in About This Mac Spoiler EDIT: Note that my framebuffer patches for this laptop allow the laptop to drive an external HDMI display and an external DVI display (via HDMI->DVI adapter). config.plist.zip Edited May 7 by deeveedee 2 Link to comment https://www.insanelymac.com/forum/topic/362706-proper-framebuffer-patching-for-hp-elitebook-850-g7-laptop-comet-lake-with-working-hdmi-port/ Share on other sites More sharing options...
deeveedee Posted May 7 Author Share Posted May 7 (edited) If you want to use the Comet Lake laptop framebuffer (AAPL,ig-platform-id) recommended by Dortania here (<0900A53E>) Spoiler D: 3EA50009, STOLEN: 57 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x00830B0A 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: CamelliaV3 (3), 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: 0x000001C7 - ConnectorDP [2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x000001C7 - ConnectorDP 00000800 02000000 98000000 01050900 00040000 C7010000 02040A00 00040000 C7010000 you'll need to patch framebuffer-flags for working HDMI port as I mentioned in my previous post. The patched framebuffer-flags adds flags FBEnableDynamicCDCLK and FBUnknownFlag_400000. framebuffer-flags = <0A0BE300> Spoiler Iris Graphics Framebuffers Framebuffer Flags 0x00E30B0A 1 1 1 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + FBAvoidFastLinkTraining | | | | | | | | | | | | | | | | | | | | | | +-- FBFramebufferCommonMemory | | | | | | | | | | | | | | | | | | | | | +---- FBFramebufferCompression | | | | | | | | | | | | | | | | | | | | +------ FBEnableSliceFeatures | | | | | | | | | | | | | | | | | | | +-------- FBDynamicFBCEnable | | | | | | | | | | | | | | | | | | +---------- FBUseVideoTurbo | | | | | | | | | | | | | | | | | +------------ FBForcePowerAlwaysConnected | | | | | | | | | | | | | | | | +-------------- FBDisableHighBitrateMode2 | | | | | | | | | | | | | | | +---------------- FBBoostPixelFrequencyLimit | | | | | | | | | | | | | | +------------------ FBLimit4KSourceSize | | | | | | | | | | | | | +-------------------- FBAlternatePWMIncrement1 | | | | | | | | | | | | +---------------------- FBAlternatePWMIncrement2 | | | | | | | | | | | +------------------------ FBDisableFeatureIPS | | | | | | | | | | +-------------------------- FBUnknownFlag_2000 | | | | | | | | | +---------------------------- FBAllowConnectorRecover | | | | | | | | +------------------------------ FBUnknownFlag_8000 | | | | | | | +-------------------------------- FBUnknownFlag_10000 | | | | | | +---------------------------------- FBUnknownFlag_20000 | | | | | +------------------------------------ FBDisableGFMPPFM | | | | +-------------------------------------- FBUnknownFlag_80000 | | | +---------------------------------------- FBUnknownFlag_100000 | | +------------------------------------------ FBEnableDynamicCDCLK * | +-------------------------------------------- FBUnknownFlag_400000 * +---------------------------------------------- FBSupport5KSourceSize when using the Dortania-recommended framebuffer, the revised DeviceProperties for HP EliteBook 850 G7 with Comet Lake CPU are: Note again that selection of a different framebuffer (AAPL,ig-platform-id) influences the graphics text displayed in About This Mac Spoiler The revised DeviceProperties are included in the attached config.plist. EDIT: As with the patches in my previous post, these patches allow the laptop to drive an external HDMI display or an external DVI display (via HDMI->DVI adapter). config.plist.zip Edited May 7 by deeveedee 2 Link to comment https://www.insanelymac.com/forum/topic/362706-proper-framebuffer-patching-for-hp-elitebook-850-g7-laptop-comet-lake-with-working-hdmi-port/#findComment-2849965 Share on other sites More sharing options...
deeveedee Posted May 16 Author Share Posted May 16 The graphics description in "About This Mac" can be overridden with the DeviceProperty "model" Link to comment https://www.insanelymac.com/forum/topic/362706-proper-framebuffer-patching-for-hp-elitebook-850-g7-laptop-comet-lake-with-working-hdmi-port/#findComment-2850366 Share on other sites More sharing options...
deeveedee Posted May 23 Author Share Posted May 23 (edited) *** This is a failed experiment. Leaving this post for informational purposes. *** *************************************************************************** I'm experimenting with the alternate CometLake Laptop Framebuffer suggested by Dortania here (00009B3E, recommended for Comet Lake UHD620). Since, according to Intel specs, my i7-10610U includes a UHD620, Dortania suggests that Framebuffer (AAPL,ig-platform-id) 0x3E9B0000 is a better match for my laptop. Spoiler ID: 3E9B0000, 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 I already know that this is not the case, since my laptop works perfectly with AAPL,ig-platform-id 0x3EA50009 (which Dortania recommends for UHD630), but I thought I'd experiment with their recommendation. With Framebuffer 0x3E9B0000, the HDMI port does not work OOB. Based on the Framebuffer flags that worked with Framebuffer 0x3EA50009 here, we see that Framebuffer flags FBEnableDynamicCDCLK and FBUnknownFlag_400000 need to be set for a working HDMI port. Applying this same logic to the default Framebuffer flags for Framebuffer 0x3E9B0000 (0x0000130B) results in modified Framebuffer flags 0x0060130B) Spoiler 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 Modified UHD620 FB Flags 0x0060130B (with FBEnableDynamicCDCLK and FBUnknownFlag_400000) 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 UHD620 Framebuffer Flags 0x0000130B (Framebuffer 3E9B0000) 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 UHD630 Framebuffer Flags 0x00830B0A (Framebuffer 3EA50009) 1 1 1 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 Iris Framebuffer Flags 0x00E30B0A | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +- FBAvoidFastLinkTraining | | | | | | | | | | | | | | | | | | | | | | +--- FBFramebufferCommonMemory | | | | | | | | | | | | | | | | | | | | | +----- FBFramebufferCompression | | | | | | | | | | | | | | | | | | | | +------- FBEnableSliceFeatures | | | | | | | | | | | | | | | | | | | +--------- FBDynamicFBCEnable | | | | | | | | | | | | | | | | | | +----------- FBUseVideoTurbo | | | | | | | | | | | | | | | | | +------------- FBForcePowerAlwaysConnected | | | | | | | | | | | | | | | | +--------------- FBDisableHighBitrateMode2 | | | | | | | | | | | | | | | +----------------- FBBoostPixelFrequencyLimit | | | | | | | | | | | | | | +------------------- FBLimit4KSourceSize | | | | | | | | | | | | | +--------------------- FBAlternatePWMIncrement1 | | | | | | | | | | | | +----------------------- FBAlternatePWMIncrement2 | | | | | | | | | | | +------------------------- FBDisableFeatureIPS | | | | | | | | | | +--------------------------- FBUnknownFlag_2000 | | | | | | | | | +----------------------------- FBAllowConnectorRecover | | | | | | | | +------------------------------- FBUnknownFlag_8000 | | | | | | | +--------------------------------- FBUnknownFlag_10000 | | | | | | +----------------------------------- FBUnknownFlag_20000 | | | | | +------------------------------------- FBDisableGFMPPFM | | | | +--------------------------------------- FBUnknownFlag_80000 | | | +----------------------------------------- FBUnknownFlag_100000 | | +------------------------------------------- FBEnableDynamicCDCLK * | +--------------------------------------------- FBUnknownFlag_400000 * +----------------------------------------------- FBSupport5KSourceSize In this reference, Dortania recommends device-id 0x3E9B ("A UHD 620 in a Comet Lake CPU requires device-id=9B3E0000"). Again, I know this isn't the case and a Comet Lake device-id works just fine, but I'll use the Dortania recommendation for my experiment. The modified DeviceProperties that comply with Dortania's Comet Lake UHD 620 recommendations include the following changes to my original DeviceProperties: device-id: <9B3E0000> AAPL,ig-platform-id: <00009B3E> Framebuffer-flags: <0B136000> EDIT: My brief testing with these revised values indicates that the HDMI port does not work properly in all cases. When booting with the HDMI display connected, the internal display does not work. I'll change the framebuffer flags to be those found working for the previous cases: <0A0BE300> and continue testing. EDIT2: I am not finding that this configuration is working properly when the HDMI display is connected. For now, the best framebuffer patching options for the HP EliteBook 850 G7 with Comet Lake CPU are those posted earlier in this thread, namely: Use Iris framebuffer 3EA50005 and patch con0 flags Use UHD 630 framebuffer 3EA50009 and patch framebuffer flags Edited May 23 by deeveedee Link to comment https://www.insanelymac.com/forum/topic/362706-proper-framebuffer-patching-for-hp-elitebook-850-g7-laptop-comet-lake-with-working-hdmi-port/#findComment-2850568 Share on other sites More sharing options...
deeveedee Posted June 10 Author Share Posted June 10 (edited) See here for experiment with Whatevergreen boot-arg igfxfw=2. based on this experimentation, I do not believe that the i7-10610U CPU has a UHD620 iGPU as is claimed by much of the published hackintosh documentation for this CometLake CPU. Edited June 10 by deeveedee Link to comment https://www.insanelymac.com/forum/topic/362706-proper-framebuffer-patching-for-hp-elitebook-850-g7-laptop-comet-lake-with-working-hdmi-port/#findComment-2851006 Share on other sites More sharing options...
Recommended Posts