Jump to content

Need help to swap framebuffers on Dell XPS 2720

Recommended Posts

Hi everybody. I have an unusual problem with my Dell XPS 2720. At least this one is new to me !


This is an All-In-One Haswell desktop and I've got Mojave 10.14.1 running pretty well on it except for one strange issue.


The internal display shows up as AppleDisplay under AppleIntelFrameBuffer@1 and if I connect an external display to the HDMI port that shows up as AppleDisplay under AppleIntelFrameBuffer@0. There is a little trick that I need to do to actually get the 2nd display to appear the first time which is not a big deal but the big problem is that if the system sleeps, it will then KP upon wake if and only if an external disply is connected to the HDMI port.


I have tried defining this system as both an iMac14,1 and iMac14,2 with the same result. iMac15,1 won't recognize an external display.


I assume that this is due to the displays being in the opposite places from where the OS expects them to be.


Can I swap the framebuffers with kext patches in Clover ? Or is DSDT/SSDT patching the way to go ?


Any guidance much appreciated :)

Share this post

Link to post
Share on other sites

post debug file while HDMI is connected

what trick did you do to enable the 2ndary monitor?

  • Like 1

Share this post

Link to post
Share on other sites

Thanks for your reply !


Please advise how you would like me to generate a 'debug' file.


Not much of a trick to get the external display to show, really.


Seems as thought it's always active but just not receiving the proper resolution mode initially as the external monitor's green light is on solid but with (backlit) black display at boot up.


I simply click "Gather Windows" on SystemPreferences->Displays to get the configuration panel for the external display to show up on my primary internal display. Then I switch it to Scaled and purposely select an unsupported resolution like 720p. Then when I immediately switch back to "Default for Display", the external display works and stays that way.


Unfortunately, if I sleep, the system will then reboot on wake. This does not happen if I do not connect the external display.


I should also mention that if I connect the external display after boot up, the system promptly reboots. So the external display must be connected prior to boot up to work at all.  However, if I disconnect the external display then the primary display does go black for a moment but then bounces right back and all is well.


In the meantime, I have tried changing the SMBIOS designation to Macmini7,1 but end up with the exact same result.


Interestingly, I got a hold of an ioreg file for a genuine iMac14,1 and the primary display actually shows up as an AppleBacklightDisplay under AppleIntelFramebuffer@2 which I totally did not expect.


I figured that it would live under AppleIntelFramebuffer@0 where AGPM lives.


So, now I'm just more confused, lol !


I have enclosed 4 ioregs. 1 for the system with just an internal display, one with the external HDMI display connected before my fix and one after my fix and also one from a genuine iMac14,1. Hope this helps to get things rolling :)


I had thought that getting my primary/internal display to land under AppleIntelFramebuffer@0 and my external HDMI display to land under AppleIntelFramebuffer@1 might fix everything but maybe that's a flawed assumption on my part :(



Share this post

Link to post
Share on other sites

Add this to KextToPatch

Name = AppleIntelFramebufferAzul

find = 01050900 00040000 87000000 

replace = 01051200 00080000 87000000 

comment = HDMI Audio


post your Clover folder if you need need

Share this post

Link to post
Share on other sites

You nailed it !


Added your patch and all is 👌


I rebooted and then attached the external HDMI display and it just worked, no panic/restart.


I sleep the system with 2 displays and it wakes up perfectly every time.


And of course, the external display is recognized just fine without the need to set it a wrong res and then reset it back to a good one.


So could you please explain exactly what this patch is changing ?


What I think that I understand is that it's applied to Framebuffer@1 (105) and changes the port type from DP(04) to HDMI(08).


But Framebuffer@1 is where my internal display attaches while my external HDMI display actually attaches to Framebuffer@0.


At least that's what I assumed since that's where the new AppleDisplay appears when I connect the external HDMI display.


What does swapping the 2 bytes 09->12 immediately after the 0105 do ?


If you wouldn't mind expanding on these points, I would sure love to learn.


Thank you so much. This is a really great site.


You and Herve particularly have been so consistently amazing over the years !


I do have one last strangeity and I apologize if it's offtopic here but ...


This system will KP at middle boot right after FakePCIID.kext loads about every 1 out of 4 times.


Seems to be a timing thing. KP trace flies by really quickly but seems to involve AppleSMC.kext.


I am running the very latest FakeSMC, FakePCIID, Lilu, etc.

Share this post

Link to post
Share on other sites

Hervé explained it best here


Your internal monitor is on port #6 FB@1, while HDMI is on port #5 FB@0, hence why I patched port #5, changing the priority from 09 to 12 (known issue on some Haswell when external monitors are connected).

You're thinking of FB@0, port 0 like a laptop, but in your system port 0 is at FB@2, same as on the real IMac.

 Post your debug file

Share this post

Link to post
Share on other sites

I have downloaded the script, generated debug file ...


I do get the KP pretty regularly still, about 1 out of every 3 start  ups but no ill effects that I can notice once I'm up and running.


Thanks in advance !




Share this post

Link to post
Share on other sites

Get rid of FakePCIID_Intel_HD_Graphics.kext + FakePCIID.kext and add WhateverGreen.kext

Sinetek-rtsx.kext <- does it work for the SD Card Reader?

VoodooPS2Controller.kext <-not needed for Desktop

AppleShippingDrive.kext <- not sure what's it for

FaceTime.kext <- not sure what's it for

SSDT.aml <-- not needed for Desktop

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now