vulgo / prime-b460i-plus-hackintosh

macOS 14 Sonoma on B460i-PLUS + OpenCore
21 stars 3 forks source link

iGPU: Booting with DP + HDMI multi-monitor results in graphics failure at login window #5

Closed vulgo closed 11 months ago

vulgo commented 3 years ago

HDMI (FB1) shows garbage after EFI, DisplayPort (FB0, boot display) shows login window but goes offline after a short time. After reconnecting either monitor both displays seem to work correctly.

iGPU/WEG device properties

Hopefully these match the hardware and have clean effects.

Connectors

Platform ID: 0x3E9B007

Index Bus ID Pipe Type Flags
1 0x05 9 DP 0x000003C7
2 0x04 10 HDMI 0x000003C7

Device Properties

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
    <key>AAPL,ig-platform-id</key>
    <data>BwCbPg==</data>
    <key>AAPL,GfxYTile</key>
    <data>AQAAAA==</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-memorycount</key>
    <data>AgAAAA==</data>
    <key>framebuffer-unifiedmem</key>
    <data>AAAAgA==</data>
    <key>framebuffer-con1-enable</key>
    <data>AQAAAA==</data>
    <key>framebuffer-con1-type</key>
    <data>AAgAAA==</data>
    <key>force-online</key>
    <data>AQAAAA==</data>
    <key>force-online-framebuffers</key>
    <data>AgAAAA==</data>
</dict>
lazosweb commented 3 years ago

@vulgo Hi Vulgo, I think I made it work. Can you confirm also?

I copied what you have above with one small difference when I saw that force-online. On the connectors of the HackinTool they have this "CNConnectorAlwaysConnected" and it will change the flag value to 0x000003CF from 0x000003C7

If you do not mind can you give it a go if indeed works for you. I tried it on my end and it works on reboot and shutdown.

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
    <dict>
        <key>AAPL,GfxYTile</key>
        <data>AQAAAA==</data>
        <key>AAPL,ig-platform-id</key>
        <data>BwCbPg==</data>
        <key>force-online</key>
        <data>AQAAAA==</data>
        <key>force-online-framebuffers</key>
        <data>AgAAAA==</data>
        <key>framebuffer-con1-enable</key>
        <data>AQAAAA==</data>
        <key>framebuffer-con1-flags</key>
        <data>zwMAAA==</data>
        <key>framebuffer-con1-type</key>
        <data>AAgAAA==</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>
    </dict>

Update 1: After further investigation I have a feeling the reason it works is different or in combination with the above. This is what I realised... When the monitor with the HDMI, the resolution is set to default for display the artifacts appear. Screen Shot 2021-09-14 at 00 47 21

Then, because of the changes above, 2 refresh rates appear and if you click scaled and you pick one of the 2 refresh rates which is the same anyway it forces the screen to save the display information to scaled instead of default for the display and that what fixes this issue. The next time you reboot the scaled will be selected. If you go back to default for display with the above combination it wont work unless you change it back to scaled. Screen Shot 2021-09-14 at 00 51 24

vulgo commented 3 years ago

Yes @lazosweb! HDMI working here with your framebuffer-con1-flags 🥇

With CNConnectorAlwaysConnected bit set...

0x000003C7 0x000003CF
av-signal-type <08 00 00 00> <00 00 00 00>
connector-type <00 08 00 00> <00 08 00 00>
port-number 0x6 0x0

...the HDMI framebuffer connector-type remains as HDMI but the port-number and av-signal-type have changed. The connected monitor is now presented as Built-in Display or iMac. The Hackintool Displays tab might be able to harmonise things.

Before CNConnectorAlwaysConnected the framebuffer driver was getting confused

EDIT: but with WhateverGreen force-online workaround the display status that gets returned is actually 1

kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][DISPLAY   ] FB1 Getting display status
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][POWER     ] FB1 Setting DP power state = 1
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB1: WriteAUX Timeout for addr 600 with Status = 0xe00002d6
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB1: ReadAUX Timeout for addr 600 with Status = 0xe00002d6
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB1: WriteAUX Timeout for addr 600 with Status = 0xe00002d6
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB1: ReadAUX Timeout for addr 600 with Status = 0xe00002d6
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB1: WriteAUX Timeout for addr 600 with Status = 0xe00002d6
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][ERROR  ] FB1: ReadAUX Timeout for addr 600 with Status = 0xe00002d6
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][POWER     ] Set DP power state failed. Returned state 0
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][DISPLAY   ] Setting DP power failed (0xe00002bc), ignoring empty dongle handling (likely HDMI/TMDS case)
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][DISPLAY   ] FB1 Display status is = 0

now

kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][DISPLAY   ] FB1 Getting display status
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][DISPLAY   ] FB1 Display status is = 1

and the driver still detects HDMI/DVI correctly

kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][DISPLAY   ] [Getonline_info] Setting up HDMI based on EDID
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][DISPLAY   ] [Getonline_info] (idx:1) (update:1) [adapter]3:0 / [online]1:0 / [porttype]1:1 / [EDID]Diff?:255
kernel: (AppleIntelCFLGraphicsFramebuffer) [IGFB][LOG  ][DISPLAY   ] [Getonline_info] fIsHDMI=1, fEnableAudio=1, newOnline=1, fOnline=0, newPortType=1, fMaxPixelClock=300000000

Now I do not think we still need force-online and force-online-framebuffers, maybe you can confirm this?

Excellent work lazosweb :smiley:

lazosweb commented 3 years ago

If I remember correctly the force-online had to do with waking up the monitor during sleep. All I can confirm is that after I removed those two (force-online and force-online-framebuffers) during sleep the HDMI monitor wakes up normally I do not have any issue. But looking what you are posting above you are more savy than me :D. When the HDMI monitor woke up it immediately displayed the login screen and when I logged in the monitor again went black for a sec and then came back online. I am not sure if force-online helps with that, at the end the monitor came back without any issue.

...the HDMI framebuffer connector-type remains as HDMI but the port-number and av-signal-type have changed. The connected monitor is now presented as Built-in Display or iMac. The Hackintool Displays tab might be able to harmonise things.

This part I did not understand it...

Something that I forgot to mention is that using the above configuration the monitor's audio disappears from the audio list. Can you confirm also? Is this normal behaviour?

Also I want to ask you why the memory on the patch is set to 2048Mb? What is the correct one? The 2048 or the 1536Mb on the system report? Because I removed those patches...

Mine looks like that now:

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,GfxYTile</key>
                <data>AQAAAA==</data>
                <key>AAPL,ig-platform-id</key>
                <data>BwCbPg==</data>
                <key>framebuffer-con1-enable</key>
                <data>AQAAAA==</data>
                <key>framebuffer-con1-flags</key>
                <data>zwMAAA==</data>
                <key>framebuffer-con1-type</key>
                <data>AAgAAA==</data>
                <key>framebuffer-patch-enable</key>
                <data>AQAAAA==</data>
                <key>framebuffer-pipecount</key>
                <data>AgAAAA==</data>
                <key>framebuffer-portcount</key>
                <data>AgAAAA==</data>
            </dict>
vulgo commented 3 years ago

the monitor again went black for a sec and then came back online. I am not sure if force-online helps with that, at the end the monitor came back without any issue

I'm briefly seeing excessive flickering and fading when logging in and out, during power state transitions etc, force-online seems not to help.

This part I did not understand it...

Your artefacts and strange refresh rate options in comment 2 might be helped by a Hackintool display override.

Something that I forgot to mention is that using the above configuration the monitor's audio disappears from the audio list. Can you confirm also? Is this normal behaviour?

Well I noticed that audio-codec-info was cleared with these patches, but here i am using only USB audio. I will look into it though, are you using AppleALC.kext?

Also I want to ask you why the memory on the patch is set to 2048Mb? What is the correct one?

It just increases the maximum shared memory for iGPU, it is optional.

Because I removed those patches...

Agreed, i think the patches you kept are the required ones at this point.

lazosweb commented 3 years ago

Well I noticed that audio-codec-info was cleared with these patches, but here i am using only USB audio. I will look into it though, are you using AppleALC.kext?

Yes, I am using AppleALC. I have bluetooth earbuds, and I also have audio on the other monitor just in case. Is just a comment for the next person that all this might be helpful.

Your artefacts and strange refresh rate options in comment 2 might be helped by a Hackintool display override.

Understood, I just need to read the documentation because I have no idea where I need to place the exported files from the Hackintool.

It just increases the maximum shared memory for iGPU, it is optional.

Any advantages of that?

vulgo commented 3 years ago

Any advantages of that?

Graphics will stutter if the gpu runs out of shared system RAM. If not, then it probably makes no difference. OS isn't going to allow 2G if it's not getting utilised.

vulgo commented 2 years ago

Device Properties

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
    <key>AAPL,ig-platform-id</key>
    <data>BwCbPg==</data>
    <key>AAPL,GfxYTile</key>
    <data>AQAAAA==</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>framebuffer-con1-enable</key>
    <data>AQAAAA==</data>
    <key>framebuffer-con1-type</key>
    <data>AAgAAA==</data>
    <key>force-online</key>
    <data>AQAAAA==</data>
    <key>force-online-framebuffers</key>
    <data>AgAAAA==</data>
</dict>

Files

files.zip

Load launchd job

$ launchctl load "$HOME/Library/LaunchAgents/local.displayset.plist"

System Preferences -> Displays

Enable mirroring optimised for DP port

Source

main.cpp.zip

lazosweb commented 2 years ago

Hi,

I understood what to do with the files.zip but not with the source main.cpp.zip...

vulgo commented 2 years ago

Hi @lazosweb, it is the source of the displayset binary containing methods of interest. The question is with the above loaded and after logging in, do both displays function (with audio)?

A second question is are both displays in Default for display resolution?

lazosweb commented 2 years ago

The above, I do not know where they defer...

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,GfxYTile</key>
                <data>AQAAAA==</data>
                <key>AAPL,ig-platform-id</key>
                <data>BwCbPg==</data>
                <key>force-online</key>
                <data>AQAAAA==</data>
                <key>force-online-framebuffers</key>
                <data>AgAAAA==</data>
                <key>framebuffer-con1-enable</key>
                <data>AQAAAA==</data>
                <key>framebuffer-con1-flags</key>
                <data>zwMAAA==</data>
                <key>framebuffer-con1-type</key>
                <data>AAgAAA==</data>
                <key>framebuffer-patch-enable</key>
                <data>AQAAAA==</data>
                <key>framebuffer-pipecount</key>
                <data>AgAAAA==</data>
                <key>framebuffer-portcount</key>
                <data>AgAAAA==</data>
            </dict>

But all I get is a blue screen and again I need to turn off the monitor but I have audio on both monitors... Added those files too but I did not see any difference.

vulgo commented 2 years ago

But all I get is a blue screen and again I need to turn off the monitor but I have audio on both monitors... Added those files too but I did not see any difference.

You enabled screen mirroring, optimised for the display connected to the DisplayPort? And execute launchctl load "$HOME/Library/LaunchAgents/local.displayset.plist" without errors?

Also, your device props differ. And don't leave it at the login window or you will get a blue screen.

Edit: you have framebuffer-con1-flags property, please try without, thanks.

lazosweb commented 2 years ago

There is not an option to "Enable mirroring optimised for DP port"

I executed the command without an issue but every time I login there is security pop up for "launchd"...

image

vulgo commented 2 years ago

Mirror option should be in the "arrangement" tab. For testing neither display should be iMac built-in display, maybe that is coming from patched connector flag.

lazosweb commented 2 years ago

Nope, even the arrangement tab does not have the option other than the "Mirror Displays" checkbox. Once I remove the connector flag I get a blue screen and the audio back. Turning off the DP monitor solves the issue. How do I know if the display is not "iMac built-in" is this info in the Hackintool?

vulgo commented 2 years ago

Screenshot 2021-09-22 at 01 12 52

Screenshot 2021-09-22 at 01 13 06

If the options are Default for display for each monitor then select those.

How do I know if the display is not "iMac built-in" is this info in the Hackintool?

It might be. Your screenshot shows PL2792Q and *iMac*. The IORegistry(Explorer) or System Information app Graphics/Displays section will also indicate this.

Maybe you have a display override kext loading or the patched connector flags device property being added.

For your information, to revert the launchd job from starting at login

launchctl unload -w "$HOME/Library/LaunchAgents/local.displayset.plist"
lazosweb commented 2 years ago

@vulgo Why mirror the displays? I am extending the displays...

You are correct about the built-in/iMac display... image

These are the OC Kexts that I use... image

vulgo commented 2 years ago

Why mirror the displays? I am extending the displays...

Some observations and speculative working assumptions regarding the boot process.

More general speculations.

Notes.

lazosweb commented 2 years ago

Ok, now I see what you are trying to do... Select mirroring and then upon logging in the launchd script will remove the mirroring (to put it simply.) I will give it ago when I am back home in about 9 hours :(...

vulgo commented 2 years ago

@lazosweb alright, have a good day.

lazosweb commented 2 years ago

Good morning @vulgo, apologies for the late reply... I tried mirroring the monitors. I saw the "optimised for" upon selecting mirroring but still after a reboot at login one of the screens was still blue or with artifacts. After I logged in, it did not make much difference when the launchd code was executed. (I removed the connector-flag)...

vulgo commented 2 years ago

You tried optimise for the other display @lazosweb? Here i must always choose DP or I get the same result as you describe, for your system it may be the other port.

lazosweb commented 2 years ago

I tried both, none worked.

vulgo commented 2 years ago

OK thanks!

vulgo commented 2 years ago

@lazosweb the blue screen might be caused by unsupported mode setting on that display.

Using the unplug workaround my HDMI monitor reports 10 bit color depth which is not true, as the hardware depth is only 8 bit.

Using the connector-flags workaround 8 bit is detected correctly.

Amusingly, once booted with the connector-flags workaround (no launchd job), after

...everything seems to work as expected. Until deleting the window server preferences and then you will have a blue screen again.

vulgo commented 2 years ago

Attached (display hardware specific) broken and working window server preferences.

works.zip not-working.zip

The state for the login window is restored from /Library/Preferences/com.apple.windowserver.plist which appears to get derived from user preferences in "$HOME"/Library/Preferences/ByHost upon certain changes. The user preferences are used once a user logs in. When no saved state is available the modes get picked up some other way, which is probably close to the actual source of the problem.

vulgo commented 2 years ago

@lazosweb if possible can you attach your window server preferences? Thank you.

cp "$HOME"/Library/Preferences/ByHost/com.apple.windowserver*.plist "$HOME"/Desktop
cp /Library/Preferences/com.apple.windowserver.plist "$HOME"/Desktop/windowserver-system.plist
lazosweb commented 2 years ago

Hi @vulgo , find attached...

Archive.zip

vulgo commented 2 years ago

Thanks, i can see that your HDMI attached 1440p monitor also has restore states with differing pixel formats. Assuming the configuration with the lower depth is correct, you could try replacing those files with these ones attached. Reboot without framebuffer-con1-flags but with force-online for wake fix and see what happens.

windowserver.zip

lazosweb commented 2 years ago

Will do, but right now I have to go to work. It's 7:40am here :) I will let you know later when I am back home :)

lazosweb commented 2 years ago

@vulgo , you are a magician!!!

I replaced the files and removed the con1-flags. Rebooted, monitor flickers, goes into standby mode and wakes up, I see some artifacts while on apple loading bar (normal behaviour even before I replace the files) and after a few of those the login screen appears without any issue (NO blue screen or artifacts). I have audio on the HDMI monitor also.

What did you do?

Another question. This HDMI monitor is 144/165Hz is this something that we can fix also? I am not sure if HDMI can do that because on my windows PC these monitor were connect by DP. Now on my Windows PC 1 monitor on DP and the other on HDMI and the same on the Hackintosh.

vulgo commented 2 years ago

What did you do?

I removed a display set that contained an HDMI configuration @ 10-bit mode from the window server preferences. Comparing valid to invalid, you can see the positive here is the incorrect mode that was removed.

@@ -1,5 +1,6 @@
-{  Active = 1;
-   Depth = 4;
+{  
+   Active = 1;
+   Depth = 8;
    DisplayID = 478264613;
    DisplayProductID = 1167;
    DisplaySerialNumber = 1964023527;
@@ -16,13 +17,13 @@
    Mirrored = 0;
    Mode = {
        BitsPerPixel = 32;
-       BitsPerSample = 8;
-       DepthFormat = 4;
+       BitsPerSample = 10;
+       DepthFormat = 8;
        Height = 1440;
        IODisplayModeID = -2147463168;
        IOFlags = 34603015;
-       Mode = 0;
-       PixelEncoding = "--------RRRRRRRRGGGGGGGGBBBBBBBB";
+       Mode = 1;
+       PixelEncoding = "--RRRRRRRRRRGGGGGGGGGGBBBBBBBBBB";
        RefreshRate = 60;
        SamplesPerPixel = 3;
        UsableForDesktopGUI = :true;
@@ -42,7 +43,7 @@
    };
    OriginX = 0;
    OriginY = 0;
-   PixelEncoding = "--------RRRRRRRRGGGGGGGGBBBBBBBB";
+   PixelEncoding = "--RRRRRRRRRRGGGGGGGGGGBBBBBBBBBB";
    "RefreshRate16.16" = 3932160;
    Resolution = 1;
    Unit = 1;
@@ -53,13 +54,13 @@
    UnmirroredLimitsWidth = 2560;
    UnmirroredMode = {
        BitsPerPixel = 32;
-       BitsPerSample = 8;
-       DepthFormat = 4;
+       BitsPerSample = 10;
+       DepthFormat = 8;
        Height = 1440;
        IODisplayModeID = -2147463168;
        IOFlags = 34603015;
-       Mode = 0;
-       PixelEncoding = "--------RRRRRRRRGGGGGGGGBBBBBBBB";
+       Mode = 1;
+       PixelEncoding = "--RRRRRRRRRRGGGGGGGGGGBBBBBBBBBB";
        RefreshRate = 60;
        SamplesPerPixel = 3;
        UsableForDesktopGUI = :true;

The assumption is that your HDMI monitor neither supports nor declares support in the EDID for 10-bit color. To confirm, please can you attach your display EDIDs @lazosweb, thanks.

ioreg -irlc IODisplayConnect | grep EDID | xargs > "$HOME"/Desktop/EDIDs.txt

Your first comment here I think also describes the effects of this problem. Maybe setting a scaled resolution creates the valid mode in window server preferences.

Another question. This HDMI monitor is 144/165Hz is this something that we can fix also?

ASUS claim the HDMI version is 1.4 which doesn't support that refresh rate at 1440p.

lazosweb commented 2 years ago

Thanks for the details... I was expecting that HDMI 1.4b was going to be an issue... I think the new boards from Intel like H570, Z590 support HDMI 2.0...

Your first comment here I think also describes the effects of this problem. Maybe setting a scaled resolution creates the valid mode in window server preferences.

Yes and no. I think it was a combination of the scaled + con1-flags that made it work.

Find attached the EDID.

EDIDs.txt

lazosweb commented 2 years ago

Hi @vulgo . I have an issue that I might need your help. Previously (if you look at the YouTube video) the monitors were setup as follow: The DP on the right monitor and the HDMI port on the left monitor. With the latest files you gave me everything has been working fantastic.

But, I went and bought HDMI and DP Splitters. If you do not know what they are is a piece of hardware that you connect 2 DP ports from 2 PCs and then 1 more cable on the other side to connect to the monitor. You press a button to switch between the 2 PCs. https://www.amazon.de/-/en/Displayport-Bidirectional-Converter-Projectors-gray/dp/B08T7HG6RR/ref=sr_1_3?crid=1NAVO4E5D608T&dchild=1&keywords=dp+splitter&qid=1633491604&qsid=261-1602540-9223808&sprefix=DP+splitt%2Caps%2C270&sr=8-3&sres=B08T7HG6RR%2CB074G3KJM5%2CB077SQP8KF%2CB074G3ZJGN%2CB092CF6YYH%2CB076ZKZLXT%2CB079Z89CV6%2CB093PQVK3C%2CB07V1NZ9TZ%2CB08QZCWR4F%2CB07T8BPZG2%2CB085S4HZCZ%2CB00V07XW3E%2CB097P2P44W%2CB01KRERV0U%2CB081GGNWCX

With this change now the DP is on the left monitor 165Hz one and the HDMI is on the right monitor... When I boot up I can see the boot screen on both monitors but again when the Mac OS is loaded the DP monitor goes on standby mode and only the HDMI monitor works, sometimes with artifacts sometimes not. Turning on and off the screens does nothing to the DP monitor.

If I go to system settings I can see the DP monitor there with the 165Hz and everything is just black and on standby mode, I removed the files that you sent me, I played around with the iGPU patches and nothing works...

lazosweb commented 2 years ago

I had it all wrong. It seems that the reason it does not work is that bi-directional switch. It does work without any issue when I switch to my Windows PC but when I change to the Hackintosh it detects the screen but no output no matter if I change cables etc. When I boot on the hackintosh both screen display the boot bios screen but prior of display the login screen the DP monitor goes black (but like I said is detected is there but no output)

If I directly connect a DP cable without the switch there is no issue....

vulgo commented 2 years ago

Hello @lazosweb the display port adapters i have encountered are never passive devices. Although i never used a DP switch. You might see how the monitor or switch device connected using IORegistry explorer 2.1.

lazosweb commented 2 years ago

I do not really understand what I see on the IORegistry Explorer 2.1. Connecting the DP on the DP Switch and directly to the monitor I think it displays the same stuff just there is no output when is connected to the switch. Anyway, I will stay with just changing the inputs from the monitors instead. Those switches are kind of messy. Cables here and there...

lazosweb commented 2 years ago

Hi @vulgo,

I have another favor to ask. I changed my Acer Predator monitor to an iiyama one and the issue with flickering and artifacts is back. I attached again the same files you asked me before. Is it something that you can fix easily like the other time? Thanks in advance.

Edit: I just updated the files again.

Edit2: I deleted all the host preferences and the com.apple.windowsserver.plist and system generated new files which contain what I have at the moment.

Archive.zip

vulgo commented 2 years ago
vulgo commented 2 years ago

There is no alternate mode from the startup mode in that file for either monitor

lazosweb commented 2 years ago

@vulgo thanks for your reply, give me a min to understand. The attached Archive.zip was created after I deleted the com.apple.windowserver.plist and everything inside the ByHost. Hackintosh rebooted and created new files at boot or when I did something in the display preferences which is the one in my archive.zip.

The flickering stops as before when I turn on and off the monitor.

There is something missing in these files that I need to do something else?

vulgo commented 2 years ago

Okay i'll try a different way, bear with me

On Tue, 13 Sep 2022, 12:46 lazosweb, @.***> wrote:

@vulgo https://github.com/vulgo thanks for your reply give me a min to understand. The attached Archive.zip was created after I deleted the com.apple.windowserver.plist and everything inside the ByHost. Hackintosh rebooted and created new files at boot or when I did something in the display preferences which is the one in my archive.zip.

The flickering stops as before when I turn on and off the monitor.

— Reply to this email directly, view it on GitHub https://github.com/vulgo/prime-b460i-plus-hackintosh/issues/5#issuecomment-1245296435, or unsubscribe https://github.com/notifications/unsubscribe-auth/AR2GYGPHM2SJ6VKMIL42FYTV6BSSZANCNFSM5D5P2HDA . You are receiving this because you were mentioned.Message ID: @.***>

vulgo commented 2 years ago

Try replacing this file

com.apple.windowserver.37CE7344-CE89-5E97-B206-5255A0EE2D34.plist.zip

lazosweb commented 2 years ago

Replacing the file unfortunately it did not work...

Look, the old way still works, if in the config.plist I add that "CNConnectorAlwaysConnected" (I do not know what this flag does) the monitors work as before. Both monitors go into scaled resolution and there is no flickering... I do not see any side effects. Sleep works etc...

To be honest I still prefer your original solution where you edited the windows.server.plist you modified some depths etc and it worked...

I still do not get it how all this works and what needs to be done to be fixed without the above flag.

vulgo commented 2 years ago

If you open the windowserver plist in you can see it saves the user's current mode, resolution, colour depth, format etc in excruciating detail for each monitor.

If you can find out for me the product id for each monitor and tell me which one is plugged into the HDMI port I might be able to try again.

DisplayProductID in the IORegistry on an AppleDisplay node

Screenshot 2022-09-14 at 18 20 13

Or in the property list itself.

Deleting the files then booting with only the HDMI monitor connected should tell you what you need to know.

lazosweb commented 2 years ago

@vulgo That's easy! The DisplaySerialNumber is the hex code for the last 4 digits of the serial number of the monitor 0x561 is 1377 that is the HDMI monitor. DisplayProductID 0x6630 Screen Shot 2022-09-14 at 20 56 50

This is the DP monitor and the serial number ends 1068 or 0x42c and the DiplayProductID is 0x666d image

If you need anything else let me know. Thank you so much for taking your time to assist me.

vulgo commented 2 years ago

Hi @lazosweb I altered your DP monitor preferences by mistake, I will guess again on the HDMI one

com.apple.windowserver.37CE7344-CE89-5E97-B206-5255A0EE2D34.plist.zip

I just followed the diff (which is actually in reverse) changing the fields for the monitor with 26160 or 0x6630 product id. Let me know if it helps.

lazosweb commented 2 years ago

Hi @vulgo, I tried the file but it does not work. Do not worry about it, having that flag that I mentioned on my previous posts does the trick anyway.

Thanks again for taking your time to assist.

vulgo commented 2 years ago

Hi @lazosweb one difference is your window preferences are now per login by host so the login window itself is not going to be using that file?

The driver just doesn't do multi monitor on our machine, Apple modified the old driver rather than writing a proper 600 series driver, they were busy on Apple's own graphics.

vulgo commented 2 years ago

I like the Apple studio but can only afford a more powerful Mini. I can't even afford that.

lazosweb commented 2 years ago

Hi @vulgo . I do not know what triggered that change on the window preferences. Maybe this happened when I changed the monitor and I tried to fix it by myself I deleted all windows preferences files and on reboot the OS created new one. Once more do not worry about it the "CNConnectorAlwaysConnected" flag in config.plist does the same thing. What is an extra flag? :)

I am not fan of Apple especially the hardware part... but I love the OS more clean than any Windows Version...

I do not know what we will do once Apple drops completely the Intel support. I hope it will take a lot of years.