-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Built-in screen wake blackscreen with a surface logo on it #1
Comments
From this screenshot of the ACPI debug log. You can see when the system wake, the function _WAK is called with the Arg0 0x3, which means wake from S03 I think. In this _WAK function of the DSDT of surface go2. It will notify 0x80 event to LIDD (which is the lid or lid0 in some other devices), and also it will notify all the USB devices to wake up, and also many other codes that I didn't understand. Here is the entire body of this function.
I tried to disable some lines or enabled some false condition codes, no effect. Also, one thing is very strange, unlike other Hackintosh devices. When I pushed the power or volume up/down button. Both Q25 and Q26 will be called. You can see the ACPI debug log above. I can't determine which DSDT function is bind to which button. It's very wired. |
If you read the article here: https://github.com/linux-surface/linux-surface/wiki/Surface-Go-2
Maybe this will give some clue. |
Have you tried the patches in here? |
Post moved from #3 (comment) @kingo132 This is the same account as @astro-lee-k I'm only using these BIOS settings to get sleep/wake: (Others, including Hibernation, Fast Boot, etc are all default)
Surface Pro 7 also have display issue when setting to some resolutions but works well in other resolution. (source: https://www.tonymacx86.com/threads/surface-pro-7-hidpi-not-working.307078/) I assume you might be using 1280x854 resolution. If you want to keep that resolution for sleep, a workaround might be writing a script to change the resolution to 1920x1280, and then set it back when it's waked. I'm hoping to get HiDPI working with the 1280x854 resolution and assume it might solve the sleep/wake issue at this resolution. I saw tonymac and pcbeta have some info on how to get lower HiDPI resolutions. I haven't got time to do it; let me know if you can get this work. You can also try the app, SwitchResX. I'm guessing to get 1280x854 resolution work would need a WhateverGreen.kext update. Also, the WiFi is pretty slow on my device with AirportItlwm.kext. Are you having the same issue? Have you tested the HDMI or DP through USB-C? One cosmetic thing: You may want to change the name of Intel UHD Graphics 617 to Intel UHD Graphics 615. |
Post moved from: #3 (comment) Update 1: I found out I still have the same issue with sleep/wake after the above implementation. Also, the option, "Slightly dim the display while on battery power", in Battery (Big Sur) or Energy Saver (Catalina) in System Preferences is missing. However, the display seems to dim itself at the set "Display sleep" time in System Preferences. I tried with all the possible framebuffer patches with LVDS and DP connector with two sets of pips (00001200 and 00000800) and two sets of flags (98000000 for internal screen and C7030000 for fake external screen) but in vain. The index and bus-id both have to be 0x0 in order for the internal screen to be possibly lighted on. I still see the windows logo / Microsoft logo when the screen was attempting to wake. I can confirm the system is awaked by checking with the volume control buttons with sounds play out. With the flag being C7030000 (external monitor), the internal screen will always be a black screen (no signal). I am guessing that changing the hibernation mode in macOS might solve the problem. Also, try to check with the "DVMT Total Gfx Mem" Bios setting and set it to MAX. One interesting find is that for the frambuffer-con0-alldata to be 00000800 00040000 C7030000, the screen would be black screen because of C7030000; however, when the tablet is put into sleep and wake, the windows logo / Microsoft logo will still appear and hang at here. Since the black screen from the flag C7030000 means there is no signal to be put onto the screen, I suspect the problem may have nothing to do with the kext (WhateverGreen.kext and macOS's Intel graphics kext). It almost likely to be cause by the hardware issues of the internal screen itself. I will check the ADIA64 report from Windows to see what connector is used by the internal monitor. (most likely would be either LVDS or eDP) However, it seems unless we find the correct way to call the internal screen (maybe through DSDT to check for _PTS and _WAK methods), it will almost likely not be fixed by the hacked kexts or bootloader. We can still ask if WhateverGreen.kext developers have any ideas how to fix this issue. Meanwhile, I am trying to find more ways to save battery. Since shutdown and restart the tablet can consume around 3-5% of battery life, I found another kext can disable/enable TurboBoost when the power adapter is unplugged/plug to save battery. And an app as an alternative that might help switching TurboBoost on/off which I haven't tested: And an app to disable sleep: Update 2: I tried pmset displaysleepnow, and the display was able to wake successfully without the windows logo, which makes me suspect the problem is on the Intel HD 615. Maybe a WhateverGreen update can fix this problem. Waiting to submit an issue on https://github.com/acidanthera/WhateverGreen |
@kingo132 How do you turn on the HiDPI? |
I can't remember very well, may be using this command: |
Quote to #1 (comment) Original ACPI tables obtained by Clover EFI Bootloader: Surface Pro 7 have this _PTS method instead: (Will test if sleep and wake works on Surface Pro 7)
Original _WAK method from Surface Pro 7:
|
Related issue: Looking into the INIT (Initialize) method in DSDT and/or IGPU/GFX0/PEG SSDT might be a good direction. |
I can get around 50 Mbps/s using wifi connection. Also, I just tested your implementation, still got black screen, it's the same. |
Yes, you can also turn off display by close the lid and wake the screen without any problem, if you disabled sleep. When I'm using an external display through USB-C, after wake up, the built-in display will disappear or become the second monitor (the external will become the first one) in IOReg, I don't know if this is a clue. I also suspect that it is a HD615 problem. |
I'm using VoltageShift to disable TurboBoost or adjust PL1/PL2.
I disabled/enable sleep by using this command: -> disable sleep -> enable sleep
The battery life seem good using your kexts. It gets 5~6 hours of caculated battery life when idle, CPU running at around 600Mhz.
Yes, you are right. I traced the code of macOS's intel graphics kext, it has already sent the display wake-up signal to the built-in display, which is called "the wake-up pin" in DP connection. |
@kingo132 Try to add these two args and remove edid in your config for Big Sur. I found out these work well on my ZenBook Pro Duo UX582. |
FWIW, I can hibernate and wake up from hibernate just fine, and it only takes 13-16 seconds from power off to go back to the desktop. However, when I upgraded from Big Sur to Monterey, though hibernate still works, it instantly wakes up from hibernate... I'm still investigating, but some of this is due to Bluetooth, some is due to it thinking the lid is open, and some is due to "user" activity... |
After sleep and wake, it will just show a black screen with a surface logo on it. And the type cover can't wake the computer, also the USB mouse can't wake it too. It has to push the power button to wake it. And I can certain the system is waked up already, except the screen. And also if I connect an external monitor, the external monitor will show the login screen. No matter by sleep menu of left-top cornor or by close the type cover, the result is the same.
I have researched this problem for several days. Nearly tried all the methods about the wake black screen fix of Hackintosh. No luck.
I can somewhat certain it is related to iGPU, built-in display or maybe the power button, other components seems fine after the wake.
What I have tried:
Here is what I'm planning to do next:
The text was updated successfully, but these errors were encountered: