I’m on my way to my seat in a friends pub. Joining some locals to watch the F1 race in Mexico, but I want you to note this (updated):
AAPL,ig-platform-id Data <02002619>
AAPL,Gfx324 Data <01000000>
AAPL,GfxYTile Data <01000000> (Glitch Fix)
AAPL00,PanelPowerUp Data <30000000>
AAPL00,PanelPowerOn Data <19010000>
AAPL00,PanelPowerOff Data <11000000>
AAPL00,PanelPowerDown Data <3c000000>
AAPL00,PanelCycleDelay Data <fa000000>
I found this in the Skylake EG2 Graphics Driver (File GUID: 7AF77F94-4C38-4FF1-8CCD-3E084F2FFEC0) inside the MacBookPro13,1 firmware. You can find it yourself with the following steps:
1.) Download Build 16B2657 from the appStore
2.) Right-click on it and select Show Package Content
3.) Open InstallESD.dmg in Contents -> SharedSupport
4.) Go to Packages -> EFIPayloads
5.) Extract MBP131_0205_B02_LOCKED.fd
6.) Launch UEFITool and open the file and click on “Intel Image”.
7.) Search for “AAPL00” (Text) and click OK
8.) Double-click a result
9.) Right-click on the PE32 image section and select Hex view…
Edit: Now you know where to find them 😉
This may be the chicken with the golden egg!
Later!
Update: Data added from MacBookPro13,1 (thanks to conradolpz).
device-colors Data <00020000 a09d9d00 00000000 00000000>
board-rev Data <14>
Update-2: Turns out that the AAPL,GfxYTile property is the one that we were looking for. Set this property, either from a (tiny) SSDT (see comments) or otherwise, and the graphic glitches should be solved.
Update-3: Property AAPL,Gfx324 is no longer there in the latest drivers.
Always nice info ! But how to extract the .FD file?
Edit: Sorry got it myself… next time need to check further before asking 🙂
Hello PikerAlpha, would it be useful for you to have a dump from IORegistry of one of these new machines? I have one from a MacBook Pro 13,1. I extracted it today in the Apple Store..
Yes please! Look here for my email address.
Where exactly? I can’t find your email address 😦
Edit: Okey.. I didn’t see the hyperlink 😄
Got it. Thanks!
Edit: I was unable to open the file with IORegistryExplorer, but it was still very helpful to find the property (value) that I had set to fix the graphic glitches!
Note: I originally found the properties in the binary of AppleIntelSKLGraphicsFramebuffer.kext and experimented with it, but I did not realise that one of them actually solved (and masked) the graphics glitches on my setup, and thus I was unable to locate the problem before, since I had no graphics glitches to start with.
Thanks again!
Do you have only IORegistry? I’m looking for ACPI dump, want to investigate how is everything made around usb-c/thunderbolt port to make it working on my Dell XPS 9550 (now it works only if connected before boot, no hot-plugging). This can help me a lot preparing patch for usb-c gen2 port…
Yes, and it is a broken one. I do happen to have the device-properties and SMBIOS data.
Edit: I stand corrected. I used an old version (v2.1) of IORegistryExplorer but with v3.0.2 all is fine.
Couldn’t really get much from that file in hex, but now I know how to extract newer HFSPlus efi drivers, so thanks 🙂
I’m curious as to how you extracted them – I attempted to extract with UEFITool but it definitely did not allow Clover to load!
You can use Hopper to load the extracted efi file from the “File” menu -> “Read Executable to Disassemble…”. Then you switch from “Labels” to “Strings” and there you can find the property names.
For example. Select “AAPL,GfxYTile” and double-click on XREF=sub_XXXX+XXXX. Now check the arguments. Arg #1 points to the frame buffer and Arg #2 is the property name (AAPL,GfxYTile) that is being set, and Arg #3 is the value (1) that is set.
You can also check “AAPL,Gfx234” and see that the same value (1) is being set there.
I hope this helps.
thank you.i finally fixed hd520 glitch issue.:)
no need hex edit on skylake framebuffer. really thank you
How you fix this issue?
Can this solve the Gitches in 10.12.x?
Since the new macbook pro feature the HD 530 will we get a fix sooner for our hackintosh ?
thanks you Piker for your hard work the scene will not be where it is now without you !
thank you. good info and glitch is gone 🙂
Can anyone help me out to create a (tiny) SSDT to apply this fix? HD 530 here…Thanks in advance.
Thanks! So… someone has posted a “complete” SSDT to force HD530 to work. But I’m not seeing any changes. I still have the glitch on the left upper corner…and of course not acceleration. I’m using Clover, and I’m wondering if I’m missing something… do we have to specify ig-platform-id or inject intel? Here’s a copy of the SSDT I’m using:
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20160422-64(RM)
* Copyright (c) 2000 - 2016 Intel Corporation
*
* Disassembling to non-symbolic legacy ASL operators
*
* Disassembly of iASLOnf7So.aml, Wed Nov 2 14:33:25 2016
*
* Original Table Header:
* Signature "SSDT"
* Length 0x00000288 (648)
* Revision 0x01
* Checksum 0xC1
* OEM ID "toleda"
* OEM Table ID "100s530"
* OEM Revision 0x00003000 (12288)
* Compiler ID "INTL"
* Compiler Version 0x20160422 (538313762)
*/
DefinitionBlock ("", "SSDT", 1, "toleda", "100s530", 0x00003000)
{
External (_SB_.PCI0, DeviceObj) // (from opcode)
External (_SB_.PCI0.GFX0._ADR, UnknownObj) // (from opcode)
External (_SB_.PCI0.HECI._ADR, UnknownObj) // (from opcode)
Scope (\_SB.PCI0)
{
Name (GFX0._STA, Zero) // _STA: Status
Device (IGPU)
{
Name (_ADR, 0x00020000) // _ADR: Address
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
Store (Zero, \_SB.PCI0.GFX0._ADR)
}
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x16)
{
"AAPL,ig-platform-id",
Buffer (0x04)
{
0x00, 0x00, 0x12, 0x19
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
},
"model",
Buffer (0x16)
{
"Intel HD Graphics 530"
},
"AAPL,Gfx324",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x01
},
"AAPL,GfxYTile",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x01
},
"AAPL00,PanelPowerUp",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x30
},
"AAPL00,PanelPowerOn",
Buffer (0x04)
{
0x00, 0x00, 0x01, 0x19
},
"AAPL00,PanelPowerOff",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x11
},
"AAPL00,PanelPowerDown",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x3C
},
"AAPL00,PanelCycleDelay",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0xFA
},
"device-colors",
Buffer (0x10)
{
/* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0008 */ 0x00, 0x9D, 0x9D, 0xA0, 0x00, 0x00, 0x02, 0x00
}
})
}
}
Name (HECI._STA, Zero) // _STA: Status
Device (IMEI)
{
Name (_ADR, 0x00160000) // _ADR: Address
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
Store (Zero, \_SB.PCI0.HECI._ADR)
}
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x3A, 0xA1, 0x00, 0x00
}
})
}
}
}
Store ("ssdt-ami_100_skl-hd530_v2.0 github.com/toleda", Debug)
}
The bytes are reversed. In the wrong order. Change 0x00, 0x00, 0x00, 0x01 to 0x01, 0x00, 0x00, 0x00 and it should work.
Edit: The device-colors property should not be part of it. The correct location is IODeviceTree:/efi/platform Same as the new board-rev.
I just grabbed the acpi tables and IOJones report from one of the new MacBooks. If anyone want it you can contact me using my git commit email: https://github.com/cnrd
(Pike if you want it I’ll fire you an email).
Yes please!
Will do when I’m home 🙂
Done, message sent to the yahoo mail.
Got it. Thanks!
I am still getting glitch upper left corner.
I tired this;
ig-platform-id: 0x19120000
Intel Inject: Yes
and patch above.
I also tried full patch with same id and enable Intel inject still getting glitch?
I checked my ioreg file everything looks right.
Could you please check my files when you have time?
https://app.box.com/s/45l75jirq9alyvnn3xtl4pbe1324mcem
I am not going to punish you over the foolish (c) Apple copyright notice in your plist, but I do hope that someone has the courtesy to fix this. Thanks.
Anyway. What you should zero out Device (GFX0) and name the new one IGPU. The next thing is to remove the injected device-colors property. Like I said before, it should not be injected on the IGPU. The model and device-type properties also look broken.
More importantly. Looking at Device (GFX0) in your dump, there I see a device-id of 0x191f but your SMBIOS reports a I7-6700K processor, so one of them is wrong. Is this the result of Clover’s fakeid feature?
In case 0x191f is right, then you also need to patch the binary of AppleIntelSKLGraphics.kext Hey. I may be wrong, but I cannot recall to have seen this device-id in the kext.
Hi Pike,
I am still getting glitch. I made clean install twice. My config.plist is now much more clean. I get rid of DisplayMergeNub.kext. This is the app create an kext for third party display and fix EDID. it shows your display like a Real Apple Display because of that my device-id looks like 0x191f. More info about FixEDID.app you can look from here; http://bit.ly/2esqlW9
I just add ig-platform-id: 0x19120000 Intel Inject: Yes and used short patch; Still getting glitch. I checked ioreg AAPL,ig-platform-id= 001219 but device-id looks like that 121900. I also patched Rename GFX0 to IGPU. It didn’t help either. Still getting glitch. Could you please check my new files one more time.
https://app.box.com/s/bg7na2smt07mrpwky66a8pl0oqf8bpp7
Finally found the problem. So by this method I understand you cannot have 2 GPUS working at the same time. When I disabled my GTX660 with nv_disable=1 all black flicker glitch thing gone.
Pike: Are you also getting this “error”: [Insert Application] (AppleIntelSKLGraphicsGLDriver), Message: “Unhandled device string!” when opening Applications? (It shows in the Console when searching for intel).
I was trying to get the stuff from verbose boot, but that showed up instead. Do you know how to get the stuff shown in verbose boot on Sierra? (On El Cap I could just go back in the Console to find it).
If your device doesn’t match certain predefined devices in AppleIntelSKLGLDriver.bundle like:
Intel(R) HD Graphics 515
Intel(R) Iris(TM) Graphics 540
Intel(R) Iris(TM) Graphics 550
Intel(R) Iris(TM) Pro Graphics 580
Then you end up with this: “Unhandled device string!”
By the way. How exactly are you searching for the “intel” string?
Just using the console search box.
Ok I will give it a try later today. I am using the Intel HD 530 (0x1912) and you (device-id)?
Same (on an i5-6600K). I am however trying to use it as a secondary GPU with my Nvidia GTX 980 ti.
The error only shows up if I search for Intel and then run a new application.
Also did you know where to find the boot logs in Sierra? In el Capitan I could just go back in time in the Console.app, but I’m unable to find the stuff shown when booting with -v anywhere.
The old system.log is being phased out. It is replaced by log (see ‘man log’). Here are some examples for you:
sudo log config --mode "level:debug"
log show --info --debug --last "1h"
Example of a search for a particular type of error
log show --predicate 'senderImagePath CONTAINS "IOAcceleratorFamily2"' --last "1h"
And this one shows me the error:
log show --predicate 'senderImagePath CONTAINS "AppleIntelSKLGraphics"' --last "1h"
So yeah. I can now confirm it. I also see that message in my log. Not a ‘Fault’ though so it is pretty harmless and should only be there for people with the Intel(R) HD Graphics 520/530. We can patch it by replacing a known id with the one that we have.
I understand that the “Unhandled device string!” log message is harmless, but could you detail a little more how we could get rid of it ?
Where is the id which needs to be replaced ?
You could try to use a known device-id in Clover, instead of the factory one. Here are the ones that I have handy here (copied from AppleIntelSKLGraphicsFramebuffer.sh):
Thanks. With “Skylake Desktop GT2” for device-id, the “Unhandled device string!” messages disappear.
But then, Intel Power Gadget does not display the GT frequency anymore, only IA ! Is it normal ?
Configuration and SSDT can be seen here : https://github.com/barijaona/CLOVER_GA-Z170X-Gaming5/tree/GPU
No, I made an error. Don’t take account the previous comment.
OK. After verifying and fixing my SSDT, I confirm that injecting “Skylake Desktop GT2” as model name eliminates the “Unhandled device string!” log message, but it also makes Intel Power Gadget to not display anymore the GT frequency, only the IA frequency.
QuickSync is still running OK.
Sleep/Wake and hibernation are also OK.
Here is the SSDT I use :
That’s because you are using an inactive platformID. Look here:
Or some modified version of it.
I’m still having the glitch, and no acceleration. I think I’ve followed the guides based on your discoveries. These are my files, and I’m just hoping you can please help me pike. Is it possible that any of my SSDT (like for example the one I use to get HDMI audio from discrete graphics) is interfering? These are the files that I use (removed from config.plist sensitive data) https://mab.to/FiJcVqcuZ. I don’t understand why this method works for some users.. and not for others. The IOReg dump will show that I have the nvidia card attached right know, but it stills shows info about IGPU. Thanks in advance to anyone that takes the time to take a look at my files! 😉
Acceleration should just work. You first need to fix this problem.
Open System Information and select Extensions. Toggle the view (pick Loaded) in the upper right of the window, and check if all graphics related kexts are loaded and properly signed. If not then I’m afraid that you have to replace the kexts, or reinstall macOS Sierra once again.
Sure, one previously loaded SSDT can basically ‘block’ others from getting applied to the ACPI namespace. This is pretty simply to check. Do you see the propert(y/ies) that you set? Then it should not be a problem, but not having acceleration is certainly not good.
p.s. I have no time to check your files right now. Too busy with a new Z270 motherboard and Intel i7-7700K that I need to return later today.
I cannot have both GPUS working at the same time for some reason. I mean, they work (correct resolutions/acceleration), I can swap my HDMI cable, but if I want to have the HD 530 working without the glitch, I have to check nv_disable=1 (loosing Nvidia card) in Clover. I’ve been asking in forums wether this method is used with both working GPUS or it’s intended to IGPU users only. If I’m not mistaken, iMac 17,1 doesn’t have the HD 530 activated, right?… could that be the reason? My SMBIOS?
I did not test the patch with a discrete GPU, since I’m not using one, but I am aware of the problem.
First a question. Do you have inject intel set to enabled in Clovers config.plist?
I admit that I don’t know what inject intel does, but perhaps that is the problem?
Yes I do have intel inject cheked in clover, ig-platform-id as well. I think I can’t have accelerated HD 530 if I don’t select inject intel.
The Clover WiKi has no information about what inject intel does. I do not know why you need it and for what it does. I use RevoBoot and I don’t need to do anything else. Not even AAPL,ig-platform-id
1.) Download Build 16B2657 from the appStore
This probably means that the fix will not work with 16B2555, right?
That would explain, why I did not have any success yet.
No. I have this working since 10.12.0
Edit: I only use the IGPU and have no discrete graphics card installed. That may be the difference.
Edit-2: Verified working with Build 16A313a/GM8 that I have installed on a SSD.
I have updated to build 16C32f. That didn’t make any difference, as expected.
I only use the IGPU too, (6700K/HD530) and seems to work ok, apart from the glitches in 10.12.
I have tried, the (tiny)SSDT and Add device Properties in Clover, but both give the same result:
Clover bootlog reports success, with both methods, but IOregestryExplorer does not show the added properties.
I use a DSDT with some fixes, and your CPUPM SSDT v20.3, so there shouldn’t be to much chance on conflicting SSDT’s.
I’m clueless at the moment.
Not having the AAPL,GfxYTile property set is the problem. As you very well know.
One thing. The tiny SSDT that I provided here, in one of my earlier comments here, uses IGPU, but normally that is GFX or GFX0 in the DSDT. You should check that.
I had GFX0 renamed to IGPU in my patched DSDT, and still have a patch in Clover for SSDT-6 (SaSsdt) that originally contains GFX0.
There are no traces of GFX of GFX0 to be found. so it must be something else….
More than one _DSM method perhaps?
After looking into the matter some more, trying to understand why the SSDT method doesn’t work, I found that my DSDT does not contain an iGPU _DSM but SSDT-6 (SaSsdt) does.
I asume both SSDT _DSM methods can’t work at the same time.
The _DSM method from SaSsdt seems necessary for acceleration etc.
Ah I see. You’ve setup Clover to rename GFX to IGPU. Correct?
If you disable that feature in Clover, and inject IGPU from the same tiny SSDT as where you inject the properties then the problem is solved.
there’s one DSM method, it seems, the one in the tinySSDT.
The Glitch is Gone!
The ssdt method is not working on my machine, for some reason.
Using Clover I got it working with the device property patch:
Devices
AddProperties
Device
IntelGFX
Key
AAPL,GfxYTile
Value
AQAAAA==
But this alone does not work, I also needed:
– inject Intel: enabled
– ig-platform-id: 0x19120000
Thanks, Piker and others.
the glitch fix work for me no more glitch in left corner I’m still having glitches and black screen waking from sleep
Let’s see if I get this right. The glitches in the upper left corner are gone after the patch, but you still see some glitches elsewhere on your monitor?
About the black screen after sleep. Does the power LED blink, or is it off when it enters the sleep state?
Can you toggle the LED of the caps lock/num lock keys after it woke up?
Did you check with screen sharing if it woke up correctly?
powers up. caps is working as expected. not connecting to Teamviewer after sleep (on monday i will try with Ethernet instead of wifi, and using SSH not Teamviewer. this will be more informative test)
Any specific AAPL properties set on XHC(I/1)?
no, just simple ssdt + usbinjectall. also tried with simple inject-kext – same result
This is from my logs when screen is black – looks like system is waking up correctly, issue is somewhere with graphic part (drivers or acpi, will try to investigate). Connected usb ethernet to my laptop, and after waking up i was able to connect with SSH to my laptop – so system works, usb works, cpu works. Only graphic doesnt work
From log:
WindowServer: (CoreDisplay) [ERROR] – Driver reported mode info is out of sync with current mode info. Display 44050f80, driver’s bytePerRow = 15360, driver’s w
idth = 6720, stored width = 6720. Forcing rowbytes to be 4*modeInfo->ioModeInfo.nominalwitdh.
Is this with IGPU only or with a discrete GPU?
No, my discrete PEG0 is dissabled at all in DSDT. Looks like this is not so much sleep issue. If I’m closing laptop lid, and in 1-2 seconds opening it (before system will go to sleep mode), but scren goes to turned-off state during that – i can see black screen with enabled backlight. I think somehow system can’t restore screen resolution bcz of something. Also, this can be related to my screen – it is QHD screen so i’m using patched CoreDisplay to support higher pixel clock, and i have 4x scaling in system. Now i’m thinking – is it related to scaling itself, or to pixel-clock patch…
Interesting. bytePerRow = 15360 and that doesn’t match with QHD (2560 * 1440/16×9 aspect ratio):
1680 * 32 = 53760 and 53760 >> 3 = 6720
2560 * 32 = 81920 and 81920 >> 3 = 10240
3840 * 32 = 122880 and 122880 >> 3 = 15360
Can you check if Clover sets bootArgs->Video_V1.v_rowBytes correctly? I’m in no way blaming Clover to be the culprit, but we have to be certain about what it sets there.
Small correction. Qhd = 3840×2160
That’s UHD. Not QHD.
The main issue is; what’s that 6720 doing there?
This is CoreDisplay patch im curently uding:
sudo perl -i.bak -pe ‘$before = qr”\xB8\x01\x00\x00\x00\xF6\xC1\x01\x0F\x85\xAD\x04\x00\x00″s;s/$before/\x31\xC0\x90\x90\x90\x90\x90\x90\xE9\xAE\x04\x00\x00\x90/g’ $CoreDisplayLocation
Piker, do you have sleep working fine on Skylake with HD530? I’m not sure if it is related only to my UHD screen or to HD530 at all
No. It sleeps alright, or gives the impression that the system is sleeping, but it never wakes up correctly. Remote login/screen sharing may also be broken, but since I work remote… I can’t really test that.
Yes, i was talking about wake… I can connect with SSH to my machine after sleep, but screen is black. I’m wondering how it is working on real MB91 and MBP131… They have very close to HD530 video onboard
looks like i got my sleep/wake working. I’m not sure 100% for exact reason, but that is what i did. Reviewed all my dsdt/ssdt patches (added some new, removed unneeded, some changes on used). Also implemented native brightness control without using IntelBacklight.kext. And yes, this is second change – removed IntelBacklight kext. Now my brightness control is much more fluid, and also it saves correctly over sleep/wake/reboot/power cycle.
So, now my laptop sleeps and wakes fine, without black screen. By the way, this is laptop (XPS 9550 with UHD panel). If you want i can send you original/patched acpi and list of used kexts – if you think it may help in your researches.
That may help me so yes please.
Sorry, was just overbusy. Here are my original and patched acpi files https://drive.google.com/file/d/0B1xZ4VKT4JKZWlZZYWpwYTJkeEE/view?usp=sharing
This is laptop XPS 9550, using smbios info of MBP131 and Sierra onboard. Brightness control made working without IntelBacklight (now it works just flawlessly as it should). Let me know if you need any other information. If you want – i can share also patched that were used for that. I’m lazy guy so i made script to autopatch my acpi, and all patches are stored and structured in two folders 🙂
Hi,
Thanks. I’ll look at it tomorrow.
One other thing. Can you please check if you have a dictionary named GPUInternalSingleSlice under PCI0@0 -> IGPU@2 -> AGPM
with min-value (0x0) and max-value (0xe).
Also check if you have saved-config (Data) under PCI0@0 -> IGPU@2. They are there in the new MacBookPro13,1 and look a must have.
I have GPUInternalSingleSlice property with values as you said in AGPM node but dont have saved-config property in IGPU node at all
I don’t. Need to figure out why. Thanks.
Take a look at the EFI device-properties of the new MacBookPro13,1 and note that Apple stores saved-config from it, but why? I know very little about this data. Sure. Some values are obvious, by educated guesses, but for the rest… we have to guess. Or perhaps someone else knows more about it?
@goodwinalexs is there a way we can connect outside this comment thread? You guys might be finally getting together some fixes for one of the longest running annoyances we hackintosh thunderbolt users have been dealing with since the first thunderbolt boards shipped. I would love to collaborate on this as much as possible. I may be getting some info soon that could be helpful as well. Just want to move this discussion to a format where we can communicate more easily, rapidly and on a larger scale. If nothing else i have access to a lot of TB1/2/3 equipped hacks for testing and some passed , mostly failed hack attempts to discuss. Also this is a comment thread about skylake graphics so not exactly on topic.
Thanks,
g\
Also, i have question to you – do you have experience making kexts for IOPCIDevice/IOPCIBridge? I’m trying to bring THunderbolt 3 to macOS, but main issue – it is almost 90% working out of the box, but only if connected on system boot. Looks like macOS is not enumerating pcie bus after hotplugging something into TB port (no pcie hotplugging?). Maybe they are using some own kexts to do that, i’m not sure.
My main idea is to write kext that will forcibly probe pcie bus to add new nodes after AlpinRidge will be powered on with connected device. I think it should be possible, but currently have no experience writing device drivers for macOS, and even can’t find good example how to do that…
I have to check/verify this, but I thought that Apple dropped hot plug support.
Yes, looks like they really dropped it. For thunderbolt they are using different model that Intel writes in specs. They are not using hotplug/smm/smi. They have a lot of ACPI methods, and they looks like they are controlling TB controller directly from software (that’s why there is whole ThunderBolt famility kext bunch). But in same time TB is just pci bridge with hotplugging functionality.
Also, interesting fact – on my laptop i see that booting without anything connected to TB i have pcie node (RP15 in my case) in power state 0x02 and aspm as 0x2. It is good if you have proper software control behind this hardware. But on MBP131 ioreg i see they have controller in 0x0 power state.
So, if i can set through kext power state to D0 instead D3hot maybe this will be enough for system to enumerate nodes behind TB controller. Or, if not – add also some probe-by-event functionality. But i can’t find any example for kext working with pci bus. And apple docs are bullshit
Well I thought so, and I do see that PCIHotplugCapable is set to zero.
I also had a quick look at one of the kexts and see that methods _DSM sets “power-save” and that methods RTPC, XRST and TRPE are also called from it. Did you port any of them to your config?
p.s. There are a bunch of boot arguments: tb, tblog, tbips and tbrtpctime May come in handy. If we knew how to use them and what they do.
Interesting findings. Yeah, NHI0 in mbp131 has methods XRST, TRPE and RTPC is present in both NHI0 and XHC2 (which is usb-c part of thunderbolt port)
But still main problem is that without devices attached on boot stage chip looks suspended, so no children nodes are visible for system. And after boot connecting devices wakes up controller but as system has no hot-plug abilities – device tree is still empty. But using “setpci” i can check PCI Configuration Space and i see that after boot with no devices i have Link Status 0x5021, and after hot-plugging device i see 0x7023 (chip woke up and there is connection to next nodes after bridge), but ioreg still shows 0x5021 status and no devices behind RP15
So main target is to force system to rescan pci bus and to enumerate new devices. Let’s see if i can do that somehow…
Check your log for this line:
kernel: (kernel) pci (build 20:01:20 Nov 9 2016), flags 0xe3000, pfm64 (39 cpu) 0x7f80000000, 0x80000000
Note the value of flags, gIOPCIFlags internally. You can change it with help of the pci and npci boot arguments. The initial value that I have here is 0xe3000 and that can easily be explained by looking at the source code of IOPCIBridge.cpp and IOPCIConfigurator.h:
A little later it adds:
You might want to see if the Thunderbolt 3 EFI drivers (from MBP13,3 firmware) are useful. Make sure that you have the EFI_DEVICE_PATH_PROPERTY_PROTOCOL installed (the EFI drivers use it for device property injection).
I think I can live without both GPUS working at the same time…On the other hand, do you have any idea on how we can patch the USB 3.1 and 3.1 type C, so it really works…? I’ve tried mapping my USB ports, and all USB 3.0 and 2.0 are working just fine..But no go for the 3.1 and 3.1 type C :(. I can attach devices 2.0 and they mount/work but no 3.0 devices…they don’t mount. Drives attached to 3.1 Type A, they mount but I can’t copy anything to it, for example. Can’t we mimick via DSDT/SSDT patches.. the way it works on the new Macbook Pros somehow?
Pingback: Pike's Universum
Pingback: This is how to fix HD 530 glitches/artifacts in Mac OS Sierra - Hackintosh Guide
Just wonder two things;
1. Sleep/Wake
2. QuickSync
1. is Sleep/Wake means your Screen and Case will sleep together right? Cause my screen sleep and wake without any problem after add these fixes. All Bluetooth, USB and System wakes without any problem. When I remove these fixes, screen is sleep but never wake I am making force restart from my case. is that mean my sleep/wake working or partially working?
2. Why QuickSync doesnt work with System definition 17,1? cause when we change system definition 14,1 QuickSync starts work. is something inside of the applegraphicsdevicepolicy trigger to QuickSync?
1.) When all the fans are off then yes.
2.) QuickSync doesnt work with System definition 17,1? That is news to me. How Exactly did you check this?
Edit: Ok. I clicked on the ? in MacX Video Converter Pro and see what you mean, but this is their fault – select iMac14,1 SMBIOS and it works. I would advise people that use this tool to contact the developers and see what they can do for you.
No this tool is actually providing an accurate analysis of this. I have done these tests independently with quicktime, which will use the GPU to export video. When quicksync is enabled the same video will take ~20 mins to export. When it is not, it will take 2 hours. This is very easy to replicate and has been an issue for a long time. I would love to know why quicksync is not working with many systems definitions that it should (on real macs it does). Sounds like a job for piker 🙂
Also, just as important is finding a way to apply this fix when also using a dGPU. Obviously they are related in that having the iGPU enabled is needed for Quicksync, but for other apps we like using CUDA or a faster GPU. I have long set up my machines to have a monitor on each i/dGPU. As many have reported, the glitch remains when a dGPU is also present.
Thanks,
g\
But QuickSync in MacX Video Converter Pro does work with the iMac14,1 SMBIOS when the iMac171,1 fails. Correct?
Has anyone made progress on the 17,1 Quicksync enable? (insert widest-smile emoji possible)
correct
g\
The issue with quicksync and the 17.1 definition also appears to affect airplay mirroring (While mirroring works its really slow).
I have a Lenovo ideapad 300 15ISK, i5-6200, hd520. I am having issues with screen flickering after sleep. Laptop screen starts flickering after I wake up it from sleep. Flickering become more frequent when charger is connected. (video here: https://www.youtube.com/watch?v=l_WxnX0eCR8). Maybe you have suggestions what could I try? Clover folder and ioreg v2.1 output: http://www.mediafire.com/file/2ugxuxiv7h1mi7j/clover_and_ioreg.zip
Not a real solution perhaps, but the first thing you should do is to rename HECI to IMEI.
Edit: av-signal-type is <00 00 00 00> and here is some background information about possible values:
// CFNumber/CFData
#define kIOFBAVSignalTypeKey "av-signal-type"
enum {
kIOFBAVSignalTypeUnknown = 0x00000000,
kIOFBAVSignalTypeVGA = 0x00000001,
kIOFBAVSignalTypeDVI = 0x00000002,
kIOFBAVSignalTypeHDMI = 0x00000008,
kIOFBAVSignalTypeDP = 0x00000010,
};
Note: We can only wait for Apple to update the header files.
Renaming HECI did not give any results 😦
Dear Piker
In case DSDT or SSDT edits doesent work to solve glitches on skylake as
it is on many hd520/hd530
What about kext solution ?? how can we inject the aapl property via a kext not dsdt or ssdt
edits
Waiting any reply or kext u can make to solve this
I am facing glitches problem with enoch .. No glitches on clover
Question, I’ve been using a couple Kepler GPUs with my new Z170X-Designare and 6600K. The Kepler cards are great since they’re pretty much natively supported and don’t require a lot of modification to get running. Has anyone got their HD 530 working in conjunction with a couple discrete GPUs? The two cards I have are a GTX 660Ti and GT640. Any advice is appreciated.
Hi Piker,
this fix does not work when you have 2 GPUs(IGPU and discrete) working at the same time
The tile info is only set for the IGPU. I checked my MacBookPro13,3 and there I found:
ATY,TileInfo (Data)
With a scaled resolution I get:
ATY,TileInfo (Data)
Slightly different. Also. The following grep:
grep -r "ATY,TileInfo" .
Gives me this output:
AMD5000Controller.kext/Contents/MacOS/AMD5000Controller
AMD6000Controller.kext/Contents/MacOS/AMD6000Controller
AMD7000Controller.kext/Contents/MacOS/AMD7000Controller
AMD8000Controller.kext/Contents/MacOS/AMD8000Controller
AMD9000Controller.kext/Contents/MacOS/AMD9000Controller
AMD9510Controller.kext/Contents/MacOS/AMD9510Controller
AMDRadeonX3000.kext/Contents/MacOS/AMDRadeonX3000
AMDRadeonX4000.kext/Contents/MacOS/AMDRadeonX4000
AMDRadeonX4100.kext/Contents/MacOS/AMDRadeonX4100
ATIRadeonX2000.kext/Contents/MacOS/ATIRadeonX2000
I would also try to change: CFG_NO_MST in the Info.plist (set it to True since this is set to False by default).
But now you are going to reply to me and tell me that you have a NVidia GPU. Right. I don’t, and thus guess what. I cannot really help you with this. I suspect however that a similar property/settings can be found in the NVIdia drivers.
Hi Piker,
Thank you so much for replying me. Yes, Im using NV card. but I can’t find any thing may related to CFG_NO_MST in web driver kext.
I have uploaded the all the web drive kext loaded for me, can you help me to figure it out if you have time, thank you so much!
https://app.box.com/s/wcunxk8yrkhy34jm49ylvpmxu7x88ufc
I am also looking for a way to get IGPU and discrete working at the same time. Anyone found any updates on this particular issue?
Hi Zukan,
I am working on something to see if that helps. Will keep you posted here.
Hi! I just want to share my experiences.
I have a GA-Z170-Gaming-K3-EU Mainboard and a Intel 530 integrated CPU graphics. After I had troubles with update to macOS 10.12.3 (which caused ACPIPlatform Kernel Panics with my Clover configuration), I had to create a new config file. My machine always booted up with the Unibeast USB drive (of course with massive flickering). I managed to install Clover 4012 and it booted without USB drive (but with the flickering). Each time I tried the Multibeast Intel 530 patch the boot process stopped with a Kernel Panic in AppleIntelSKLGraphicsFramebuffer.kext and I could not get ANY manual patching to work. Then, a few hours ago I remembered that I updated my UEFI/BIOS from version F3h to F21 and I tried to change some settings and BOOM! I found out that I NEED to set the IGFX to AUTO and to set the Minimal/Initial graphic memory to 256MB (and the Maximum also to 256MB, as it is set by default). Then, without any manual patching, but of course with the Multibeast Intel 530 patch.
Hope that helps. Maybe you can investigate on that further.
BR,
drBugfinder
P.S. Can anyone tell me why system is reporting a “Intel HD Graphics 7000 1536 MB” (was also before the update)? Does that mean that I have to set my graphics memory to 1536MB – I sometimes have random freezes (same like before the whole update thing).
That sounds like a bug in the F21 BIOS for your motherboard. Selecting the IGPU as initial graphics device should always work. Besides that. I don’t understand why you would need to allocate 256MB for a 64MB frame buffer driver. That won’t match. Another BIOS bug?
The 1536 MB you see is the amount of memory allocated by the driver, Not the pre-allocated memory buffer by the BIOS.
FWIW I also have to set min graphics mem to 256MB on the z170x-ud5 TH running F20 bios to prevent flickering artifacts in 10.12.3 (not the common top-left glitch, whole screen flickering)
Interesting. Is this setting required for a 4K screen resolution or all resolutions?
Note: I am still running an older BIOS version on my Skylake setup.
You may be onto it. I’m running a 4K screen in hidpi mode 60hz via the coredisplay patcher.
After update 10.12.4 we don’t need any patch, injections and ig-platform id. HD530 now working natively without those;
– GFX to IGPU patch: removed
– 4 port patch: removed
– inject intel: uncheck
– ig_platform_id: Empty
– Sierra “glitch” patches: removed.
And looks like this;
[img]http://i.imgur.com/xV52aRa.png[/img]
But now we have massive boot glitch on startup. And kext to patch down below does not reduce the severity of boot glitch anymore. Probably this value has been changed. We need the new one.
[img]http://i.imgur.com/4oncc3K.jpg[/img]
Thanks. I didn’t even notice it.
Ok. The frame buffer data is still the same – only the version number related bytes are different and thus I still need to patch the fourth frame buffer for my VGA monitor. I stopped injecting AAPL,ig_platform_id months ago, but I was still injecting this AAPL,GfxYTile property. Lo and behold. We no longer need it. No glitches without it. Confirmed!
FWIW I just tried disabling only the GfxYTile property (Still have GFX to iGPU injected) and results in black screen for me (Z170-UD5 TH, HDMI 2.0 4K 60hz to monitor via coredisplay patcher)
Odd. That property has nothing to do with black screen patches. Just screen glitching.
Odd indeed, though I was lazy and just disabled the patch with Clover Configurator so it could be a syntax problem. I’ll try it again properly later on.
Tried it again, properly this time (xcode). removed the items and inject intel unchecked, and machine boots to black screen (at the same moment the apple logo garble would normally appear). There must be something about my config.plist that gets broken when I remove the patches. 🤔
Update 4-port patch still required with my build, everything else can be removed/disabled. You may prune my comments as needed 😅
Well, Over on Insanelymac we are trying to figure out graphics artifacts/ glitching issue I’m having with my i7 7700k. No hardware acceleration after many attempts. I uploaded IOReg files and such, maybe you can tell what we are missing? Thanks! http://www.insanelymac.com/forum/topic/321747-so-close-i7-7700k-and-z170mx-gaming-5-cant-boot-into-installer/page-2#entry2399132
I don’t know if this is on topic or not but I have been trying for a long time to get HiDpi modes above 1080p to work with HD530 graphics on my i7-6700T processor and 27 inch UHD monitor via Display Port.
Is there any solution for this? I have tried editing the Overrides files and can get the monitor to display 2560 x 1440 @ 60Hz but it is not HiDpi. It stays blurry. Without doing any edits with RDM I can select 2560 x 1440 only @ 59Hz which is just terrible. I am using iMac 17,1 running 10.12.5 inject intel and platform id 19120000. I have experimented with different platform id’s with no luck.
I have attached the same display to a 2016 MacBook Pro 13 inch with Iris 550 graphics and can display all scaled resolutions in HiDpi. The text is super clean and not fuzzy like on my HD 530 hackintosh. I did not anticipate this problem when buying the UHD monitor so it would be great if there was a solution because I can’t return the screen.
All the best