Closed ModrnJosh closed 6 months ago
@ModrnJosh Hello,
I know about sRGB, but don't know exactly how it does this.
C:\Windows\System32\spool\drivers\color
? As for Standby Assistant, what Asus says - that it puts laptop into hibernation after some time of a regular sleep: https://kmpic.asus.com/images/2023/01/05/3259ce3f-bf25-48c6-b126-083d4025adc0.png
If that's the only thing it does, then it's just a setting inside windows power plan
By default (even on G14 2022) that "feature" in power plan is ON. So laptop would hibernate in 2-3 hours of sleep. I can theoretically add it as extra "checkbox" somewhere in the app, but not sure if turning it OFF will benefit people :)
Ok cool, so I'm attaching some screenshots to better assist here. I did try the standalone GameVisual app and unfortunately it did not have this feature. It looks like when you change the color profile in Armoury Crate that the ICC profile magically appears at the top of that folder, and it also appears in Windows Color Management. However when you switch to a different color profile, the old one is now gone and only the new one that you've selected is visible in that folder and in Color Management. You cannot select it within Windows display settings either, it just shows up there only after it's been selected in Armoury Crate:
The one at the top is the currently selected gamut clamp in Armoury Crate:
After selecting "P3" color gamut:
It makes it the default:
I'm also uploading the dsdt file here, let me know if that helps dsdt.zip
@ModrnJosh oke, thanks! Do you mind to share that sRGB color profile with me here ?
And it looks like it should be some hardware sRGB switch somewhere, similar to one for multizone miniled. I checked your dsdt dump, but I don't see anything that would scream to be sRGB switch out of the box.
However I have noticed 2 new endpoints (comparing to 2022 model) that I'm curios to check 0x0012007E and 0x0012007F. It's absolutely not necessarily that they are related to display at all just in case.
If ((IIA0 == 0x0012007E))
{
Local0 = (IIA1 + 0x000A0000)
^^PCI0.SBRG.MDSA = Local0
^^PCI0.SBRG.MDSE = IIA2 /* \_SB_.ATKD.WMNB.IIA2 */
Return (One)
}
If ((IIA0 == 0x0012007F))
{
^^PCI0.SBRG.MS02 (IIA0, IIA1)
Return (One)
}
If you feel adventurous, on your own risk you can try to run following in powershell as admin (try to set Device_ID to 0x0012007E or to 0x0012007F and Control_status to 0 or 1 and see if it changes something in the system)
Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB) -MethodName DEVS -Arguments @{Device_ID=0x0012007F; Control_status=1}
Generally speaking things like power limits or performance modes (that are set in similar way) reset after simple reboot, but anyway it's up to you to try or not :)
My M16 2023 also has the SRGB/P3 etc options. Please let me know if I can provide anything to help figure out how this works.
@ModrnJosh Do you have any .icm files in your esupport folder? I have a folder called "ArmouryCrate ICM Config" but it is empty.
As instructed above, here's my DSDT.DSL file:
@AudreyAP thanks, you also have those 0x0012007E + 0x0012007F endpoints. So you may also try command i linked in previous message if you want :)
@seerge Cool!
Is there any way to make a "backup" of the current endpoint setting? Brand new laptop, would like to avoid experimenting without having a backup if possible haha.
@AudreyAP most of the settings (probably except turned off/on GPU) are being reset on reboot. So they are not stored permanently :)
In a worst case - you can do a hard reset but turning laptop off, then pressing and holding power button for 30 seconds and booting normally. It doesn't touch any data, just reset all "hardware" things (just in case this helps if your wifi has hanged and disappeared as it sometimes happens with mediatek cards)
@seerge Ran command in PowerShell as admin:
PS C:\Windows\system32> Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB) -MethodName DEVS -Arguments @{Device_ID=0x0012007F; Control_status=1}
result ReturnValue PSComputerName
------ ----------- --------------
1 True
PS C:\Windows\system32> Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB) -MethodName DEVS -Arguments @{Device_ID=0x0012007F; Control_status=0}
result ReturnValue PSComputerName
------ ----------- --------------
1 True
PS C:\Windows\system32> Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB) -MethodName DEVS -Arguments @{Device_ID=0x0012007E; Control_status=1}
Invoke-CimMethod : Generic failure
At line:1 char:1
+ Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName Asus ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (AsusAtkWmi_WMNB...PNP0C14\ATK_0"):CimInstance) [Invoke-CimMethod], CimException
+ FullyQualifiedErrorId : HRESULT 0x80041001,Microsoft.Management.Infrastructure.CimCmdlets.InvokeCimMethodCommand
PS C:\Windows\system32> Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB) -MethodName DEVS -Arguments @{Device_ID=0x0012007E; Control_status=0}
Invoke-CimMethod : Generic failure
At line:1 char:1
+ Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName Asus ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (AsusAtkWmi_WMNB...PNP0C14\ATK_0"):CimInstance) [Invoke-CimMethod], CimException
+ FullyQualifiedErrorId : HRESULT 0x80041001,Microsoft.Management.Infrastructure.CimCmdlets.InvokeCimMethodCommand
```PS C:\Windows\system32> Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB) -MethodName DEVS -Arguments @{Device_ID=0x0012007F; Control_status=1}
result ReturnValue PSComputerName
------ ----------- --------------
1 True
PS C:\Windows\system32> Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB) -MethodName DEVS -Arguments @{Device_ID=0x0012007F; Control_status=0}
result ReturnValue PSComputerName
------ ----------- --------------
1 True
PS C:\Windows\system32> Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB) -MethodName DEVS -Arguments @{Device_ID=0x0012007E; Control_status=1}
Invoke-CimMethod : Generic failure
At line:1 char:1
+ Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName Asus ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (AsusAtkWmi_WMNB...PNP0C14\ATK_0"):CimInstance) [Invoke-CimMethod], CimException
+ FullyQualifiedErrorId : HRESULT 0x80041001,Microsoft.Management.Infrastructure.CimCmdlets.InvokeCimMethodCommand
PS C:\Windows\system32> Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB) -MethodName DEVS -Arguments @{Device_ID=0x0012007E; Control_status=0}
Invoke-CimMethod : Generic failure
At line:1 char:1
+ Invoke-CimMethod (Get-CimInstance -Namespace root/wmi -ClassName Asus ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (AsusAtkWmi_WMNB...PNP0C14\ATK_0"):CimInstance) [Invoke-CimMethod], CimException
+ FullyQualifiedErrorId : HRESULT 0x80041001,Microsoft.Management.Infrastructure.CimCmdlets.InvokeCimMethodCommand
There was no visible change in the display, unfortunately.
@AudreyAP oke, thanks for trying. Probably it's something else (mb new power limit ? :)
Well, then for now, it's a bit difficult for me to (remotely and blindly) figure out how does sRGB switch works to be honest.
Mb just save that sRGB color profile somewhere, and try to force / import it again in color management tool ? :/
This may not actually be necessary:
This is a new feature, currently in the "beta" or whatever channel Microsoft calls it - this should completely remove the need for profile switching.
This repo seems to have a tool to get it working:
https://github.com/dantmnf/MHC2
We should get this feature in the next big Windows update though?
EDIT: I figured it out. The second link is unrelated to the first. The second link is for MHC, a separate but useful feature that seems to be what ASUS is using here. Nothing is being done in hardware, they simply have a couple different profiles that they load and that MHC manages.
https://learn.microsoft.com/en-us/windows/win32/wcs/display-calibration-mhc
@seerge Would you be at all interested in adding a mechanism to simply load different files into windows color management? The solution here seems to be switching between display modes w/ AC, copying the profiles out, then simply re-applying them after disabling AC.
(EDIT: Profiles are stored in C:\ProgramData\ASUS\GameVisual! No need to switch in AC This profile does not work, but profiles copied from C:\Windows\System32\spool\drivers\color after AC loads them work. I just copied it to my desktop, then added the file to color management. Colors change to match SRGB or P3 when switching it in the Windows display settings. AC seems to be dynamically generating these clamped files based on the input device profile?
)
Users could also use https://github.com/dantmnf/MHC2 to generate their own profiles if they have a colorimeter.
In my opinion, the best way to do this would be to add a (default hidden?) second row of buttons below the display refresh rate settings, allow users to enter a "title" for each button, and enter a path to an .icm file for each button. G-Helper simply then needs to use the windows API to load the .ICM file when a button is clicked, just like asus does.
One thing to consider is that you might need to re-apply the profile when switching between igpu and dgpu - ie if a user has selected one profile in dgpu mode, then switched to eco, then changed profiles, when they switch back to dgpu the dgpu "display" would have the first profile selected instead of the second.
You can just do this in windows with the default profile switcher, but opening up the menus is a pain in the butt and would not account for GPU switching. Would be really cool if you could implement it :)
@AudreyAP Great work looking into all of this! I can confirm that my ArmouryCrate ICM Config folder is also empty. But yeah reading into all that it seems to be what's happening here. If it's on the software-level like that then I hope it can be something that is implemented into G-Helper! Anything would be better than switching in Windows every time. Even opening Armoury Crate and switching there can be a bit tedious, but the feature itself is super useful.
@ModrnJosh the setup process seems to erase some of the eSupport folder... I think I'm going to try to do a cloud recovery, then force shutdown the machine before it can actually unpack anything. That should give me the full esupport download with all of the raw files that Asus seems to delete after installation.
I'm just glad that Microsoft has finally done something about the atrocious color management system... It's unbelievable that it's taken this long!
@AudreyAP @ModrnJosh oke, thanks. I will look into that If I can find a way to "generate" color profiles on it's own (w/o AC)
Otherwise, I can add some option to link your own profiles and let users choose that, but I'm not sure of how many people will be able to use that scenario (i.e. edit configs / prepare profiles / etc).
@seerge personally I would be very happy with just the ability to switch between currently existing profiles - there's no need to make ghelper compute them. Don't bother IMO, huge amount of work for no gain.
User can simply switch the profiles in AC, then copy them from the color folder after Asus generates them. Only need to do it once, then AC can be removed.
Completely agree with @AudreyAP here. Maybe it can have a quick FAQ or something in the readme on how to use it, but just the switcher itself would be the coolest part.
Oops, didn’t mean to close! Misinput, haha. But yeah I wouldn’t mind saving my ICC profiles in a separate folder at all if it meant I could switch on the fly in G-Helper. The one-time setup is well worth the benefit!
@ModrnJosh can you post your sRGB profile here? I wanted to check if it will work on 2022 model
@seerge It will function (you will see some colors change) but the colors will probably be wrong. As far as I can tell the profiles are actually per-unit too?
Here's mine, but yeah @AudreyAP might be right. I wonder if it's tuned per-unit. ASUS_sRGB.zip
After thinking about it, I think that the best way to do this would be to just have the user load profiles into Windows color management as normal and have G-Helper just switch between them just as you would in the windows display settings.
This way, you can keep the profiles available for use in other programs and avoid having to store them somewhere in the user folder - windows copies them to the color folder after they are "installed". All G-helper has to do is switch between the already-loaded profiles. G-helper would just have to have some way of also applying the "matching" profile when switching GPU - maybe user can define "pairs" of profiles, one for igpu and one for dgpu and g-helper can apply them when enabling and disabling?
Long story short, I looked in how to programmatically set set ICC color profiles (from a file) to be default in windows, it's actually not easy to do :)
It uses some ancient windows API https://learn.microsoft.com/en-us/windows/win32/api/icm/nf-icm-wcssetdefaultcolorprofile , and I can't find any good examples of how to use it. Few quick attempts to do that didn't work for me.
I assume if someone works with color, and really needs sRGB, they can simply switch with 2 clicks by running windows "Color Management" app.
Therefore I'm not sure if it's worth to spend like a lot of time, to implement a feature that will be used by one and a half users, while there are still features that will benefit lots of people.
I'm putting this on "hold" for now :)
@seerge Is this example from DisplayCAL useful? You may have already found it...
https://github.com/sgulls/displaycal/blob/main/DisplayCAL/ICCProfile.py#L2268
If that's not helpful, I'm sure I can just map my aura key to open win11 settings to the color tab :)
@AudreyAP they also use that ancient windows api (And same method), but in different language (python) :) so not really useful
If you want to run color management app - just put "colorcpl" into custom command in g-helper settings
This is as close as you can get, without any programming :) I really doubt someone gonna switch between RGB and sRGB in mid-game :)
@ModrnJosh some update about second thing mentioned in this topic : "Modern Standby"
I don't know what exactly AC does by calling it "modern standby". But windows power plans have lots of hidden features (like disabling CPU boost is one of them).
Another - is to Hibernate (in sleep) after X minutes. You can either enable it for power plan manually via regedit https://www.tenforums.com/tutorials/108391-add-remove-hibernate-after-power-options-windows.html
Or just use G-Helper now ;) I have added control for that field in latest release https://github.com/seerge/g-helper/releases/tag/v0.108
Just set something like 20 or 30 minutes, and you should be good to go ;) Tested on my G14 2022/2023 works fine.
I think the 8 modes/color gamut switching in GameVisual is related to ASUS Splendid as it used to be a separate application, now a part of ASUS Optimization which is a service installed along with AC. Yea those 2 things are why I still keep AC, just to switch profiles since I always use Vivid and Display P3 as they are best for me. If these 2 features could be added I can finally remove AC completely.
@able1214 you can just save the ICC files applied by AC, load them into windows color management as normal, and just pick them from the display settings in windows. Does the exact same thing as ac.
@AudreyAP I tried, the screen color doesn't seem to change properly which AC does, did I do something wrong? Also if you want to change the 8 modes you have to download the separate GameVisual app which is ancient and buggy, it freezes few seconds even when you click anything...
@able1214
Display P3 is a separate ICC profile. You need to select it in AC (not optimization servicve, as it has nothing to do with it), and then just export / save from windows Color management somewhere . And then you can use it.
Vivid (same as all other 8 non color-space related modes) are actually just modified gamma / contrast / color setttings from windows/gpu driver. You can achieve them with Nvidia/AMD settings
@seerge Yes I loaded them in color management, but setting anyone to default doesn't seem to change the color, in AC you will see the color changes right away
@able1214 on your screenshot P3 is not default :) check what color management app shows when you set P3 in AC ?
@seerge Yes, color management changes when I switch profiles in AC, but the thing is if I switch profiles in AC, it automatically deletes all other profiles I just loaded in color management as well as the ones installed in "C:\Windows\System32\spool\drivers\color" folder... If AC was uninstalled and only using color management, as I said at the start, the screen color doesn't change.
@able1214 open windows display settings (right click on desktop) and change the profile to p3. You can't just load them, you need to apply them.
@AudreyAP Yea I did, didn't work... Don't know about others, no matter what I did, didn't work, it only works in AC.
@able1214 does SRGB make any difference ? if no - can you zip-upload it here ?
@seerge icm.zip OK, now I'm actually comparing using testing pictures, switching to sRGB does work, but all the others doesn't, switching to them will be the same as default. I uploded all the profiles icluding the default.
@seerge So while I was messing around with it, I found out in order to switch profiles, you need "GU604VI_10DE_B8511603.icm" in "C:\ProgramData\ASUS\GameVisual", without this file, AC will give you an error. Deleting all the other icm profiles doesn't seems to affect anyhing, looks like these files are not for my model? "GU604VI_10DE_B8511603_CMDEF.icm" is copied to "C:\Windows\System32\spool\drivers\color" by AC if you switch to default profile.
@able1214 because as I have mentioned, everything except color-space specific switch (sRGB in your case), is not a color profiles but just different gamma / contrast / saturation settings :)
https://github.com/seerge/g-helper#how-do-i-set-different-visual-styles
Hi Seerge. I've noticed that when you change the gamut inside the Armoury Crate app, the file is actually replaced. For example, if I switch from sRGB, C:\Windows\System32\spool\drivers\color\ASUS_sRGB.icm will turn into C:\Windows\System32\spool\drivers\color\ASUS_DisplayP3.icm
Yep. The file is switched out and the previous profile disappears from the folder. That's why windows's stock profile changer doesn't work. Hope this is helpful
@Vipxpert hello, as pretty much discussed in this topic - you can just save both files, import them (manually) into windows Color Management app and then just switch there (or via settings -> display) :)
Regarding sRGB gamut clamping, while the screen is being driven by a Nvidia dGPU, I would recommend you use this software instead of the ICC/ICM files:
https://github.com/ledoge/novideo_srgb
On my device, I use the color profile file with the iGPU, and this software with the dGPU. I do notice that darker grays tend to be a bit too warm & pinkish with the color profile, while everything looks great with novideo_srgb. Of course, that's very subjective and most likely up to individual units.
However, it also happens to be the only way I've found to bypass the issue of omnipresent black crush while the screen is driven by the Nvidia dGPU (whether it's through "Ultimate" GPU mode, or "Advanced Optimus"). I've written about it in my review of the 2023 G14 here. This issue seems to be affecting other ASUS ROG laptops, and it's there from the get-go with a completely fresh OS install (from ASUS Cloud Recovery)
@MaxLebled Have you tried "automatically manage colour for apps" in advanced display settings? It's relatively new and should result in perfect colours across the board.
@Vipxpert hello, as pretty much discussed in this topic - you can just save both files, import them (manually) into windows Color Management app and then just switch there (or via settings -> display) :)
Does this work for folks? I tried it, I copied all the profiles, but switching between them brings no change i can see, whereas doing it in AC does have an effect.
@blackgold9 As also said in previous replies , only the sRGB ICC works for me (Native is always there by default)
@nathancdy correct
Cause (by my observations) only sRGB has a seprate color profile as this is the only "real" different visual mode. Rest are just slightly shifted gamma-settings (like a bit brighter, a bit more contrasty, etc) :)
@ModrnJosh @AudreyAP @nathancdy @MaxLebled @able1214 and others
Actually as a result of doing something else, I have managed to figure out how to install and enable sRGB color profile (the only one that actually changes the way display looks like)
You can try this build with sRGB checkbox in it. If you don't have sRGB profile installed at all, app would use the one from the zip (so make sure to unzip it to the same folder with exe).
sRGB profile I used is from @ModrnJosh (i.e. form G14 2023 with MiniLED)
If this works, I will have to face another problem - where to get all those different sRGB profiles for each device. I can host them on Github and let app download them, but it can be a very difficult task tho :)
@seerge Just tried it and it works. Colors clamp to sRGB correctly. Looks to be the same as when I do it manually in Windows. Great work!
@ModrnJosh @AudreyAP @nathancdy @MaxLebled @able1214 and others
Please find a build that can set all possible gamuts (Native / sRGB / DCIP3 / DisplayP3) and all available Visual Modes
Build will work only if appropriate ICM color profiles are located under C:\ProgramData\ASUS\GameVisual
@seerge Working for me! DCI-P3 finally works the way it did in AC!
Hey there, as you might know, 2023 Asus ROG laptops now have an sRGB color gamut clamp (in GameVisual) which is extremely useful for creators not working in color-managed applications, or just people who don't like the wide-color-gamut look in Windows, so that you can more accurately reproduce sRGB.
Another new feature in 2023 Asus laptops is Modern Standby Assistant. This one I'm not sure how Asus makes it work, but basically it fixes the Modern Standby issue in which many laptops suffer from waking up, overheating, or running fans when they're supposed to be sleeping.
Would love if there were a way to implement/toggle these features in G-Helper! I would be happy to volunteer in pulling any code/ACPI stuff or whatever to assist as I have a 2023 Zephyrus G14.