Main > Software Forum
[Discontinued][17-09-22] RatRefresh - refresh rate switcher, stops LCD tearing
trevorp:
Will do the registry exports tomorrow. Every time I promise to do it in a few hours, something comes up. I'm going with "under promise, over deliver" at this point.
I wasn't planning on blowing away my cab, I just have an 11th gen NUC that is currently not being used. Right now it's got Linux on it, but I don't mind blowing that away and dropping win10 on it temporarily, as I'm just curious.
[edit]
Still owe you more testing on the problem system, but I wanted to report that on the NUC 11 on a different Dell U3014 monitor, everything works as expected with 0.15b5. I also don't see 1&8713bca&0&UID0 showing up under DELL4083. I do still see two entries in CRU, and one of them is the 59.972 (59.971 in CRU) that's been stalking me. This must just be the default rate of the monitor.
I used a different monitor as it was next to the NUC, but since they're the exact same model, I wanted to run a test. Will move the NUC to test with the other monitor, but I expect no difference.
[edit2]
So as not to reply to myself, here are the results as promised
First off some images of the differences between the PC with the issues and nvidia GPU and the NUC.
Here's the original PC after running ratrefresh
Here's the NUC after running ratrefresh
Notice how the 1&8713bca&0&UID0 monitor is under the DELL4083 key on the problem PC, but it's under Default Monitor on the one that works.
I also see that on the NUC, it does create a new entry ending in UID0 but the first part of the key matches the Dell monitor, whereas on the problem PC it does not.
Rather than the registry exports, I used process monitor to monitor cru.exe and see what it did.
Here's CRU for the active monitor:
--- Code: ---Operation Path Result Detail
RegCreateKey HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE REPARSE Desired Access: Set Value
RegCreateKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE SUCCESS Desired Access: Set Value, Disposition: REG_OPENED_EXISTING_KEY
RegSetInfoKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE SUCCESS KeySetInformationClass: KeySetHandleTagsInformation, Length: 0
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\0 SUCCESS Type: REG_BINARY, Length: 128, Data: 00 FF FF FF FF FF FF 00 10 AC 83 40 4C 4E 34 41
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\(Default) NAME NOT FOUND
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\CRU_Name SUCCESS Type: REG_BINARY, Length: 11, Data: 01 44 45 4C 4C 20 55 33 30 31 34
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\CRU_Serial_Number SUCCESS Type: REG_BINARY, Length: 13, Data: 01 52 46 35 37 50 34 34 45 41 34 4E 4C
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\CRU_Range_Limits SUCCESS Type: REG_BINARY, Length: 11, Data: 01 00 31 00 56 00 1D 00 71 01 18
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\CRU_Extensions SUCCESS Type: REG_BINARY, Length: 1, Data: 01
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\1 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\2 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\3 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\4 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\5 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\6 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE\7 NAME NOT FOUND
RegCloseKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID_OVERRIDE SUCCESS
RegOpenKey HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters REPARSE Desired Access: Set Value
RegOpenKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters SUCCESS Desired Access: Set Value
RegSetInfoKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters SUCCESS KeySetInformationClass: KeySetHandleTagsInformation, Length: 0
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID SUCCESS Type: REG_BINARY, Length: 256, Data: 00 FF FF FF FF FF FF 00 10 AC 83 40 4C 4E 34 41
RegCloseKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters SUCCESS
--- End code ---
Here's CRU for the inactive monitor:
--- Code: ---Operation Path Result Detail
RegCreateKey HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE REPARSE Desired Access: Set Value
RegCreateKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE SUCCESS Desired Access: Set Value, Disposition: REG_CREATED_NEW_KEY
RegSetInfoKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE SUCCESS KeySetInformationClass: KeySetHandleTagsInformation, Length: 0
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\0 SUCCESS Type: REG_BINARY, Length: 128, Data: 00 FF FF FF FF FF FF 00 10 AC 83 40 4C 4E 34 41
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\(Default) NAME NOT FOUND
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\CRU_Name SUCCESS Type: REG_BINARY, Length: 11, Data: 01 44 45 4C 4C 20 55 33 30 31 34
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\CRU_Serial_Number SUCCESS Type: REG_BINARY, Length: 13, Data: 00 52 46 35 37 50 34 34 45 41 34 4E 4C
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\CRU_Range_Limits SUCCESS Type: REG_BINARY, Length: 11, Data: 00 00 31 00 56 00 1D 00 71 01 18
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\CRU_Extensions SUCCESS Type: REG_BINARY, Length: 1, Data: 01
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\1 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\2 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\3 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\4 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\5 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\6 NAME NOT FOUND
RegDeleteValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE\7 NAME NOT FOUND
RegCloseKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\1&8713bca&0&UID0\Device Parameters\EDID_OVERRIDE SUCCESS
RegOpenKey HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters REPARSE Desired Access: Set Value
RegOpenKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters SUCCESS Desired Access: Set Value
RegSetInfoKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters SUCCESS KeySetInformationClass: KeySetHandleTagsInformation, Length: 0
RegSetValue HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters\EDID SUCCESS Type: REG_BINARY, Length: 256, Data: 00 FF FF FF FF FF FF 00 10 AC 83 40 4C 4E 34 41
RegCloseKey HKLM\System\CurrentControlSet\Enum\DISPLAY\DEL4083\5&67fc0b1&a&UID4353\Device Parameters SUCCESS
--- End code ---
Interesting that on the inactive display it still writes to the active display as well.
Also of note, that 59.972 Hz rate that I keep ending up at is what's in the inactive monitor before I set a custom rate.
After I've set the custom rate and run ratrefresh, the custom rate I set for inactive stays, the rate for active updates to what ratrefresh calls for, but I still end up at 59.972 Hz rate, which now no longer shows in CRU at all.
I do have the registry exports, but they show the same, and this is pretty easy to digest.
TitanGorilla:
It seems like .015b5 is giving me the same issue as before. The min and max refresh rate also might be a bit off from what was set with the -usecustomedid parameter.
Each time -refresh is run, the default extension block is reset.
After deleting the default extension block and restarting my machine, the refresh rate value I set is now being used and shows in Advanced display properties.
.11 doesn’t reset the extension blocks after -refresh is used. After running -refresh with a new value, after the drivers reset, it immediately changes to the new value in Advanced display settings.
-refresh alone doesn’t refresh the value in CRU, there are no resolutions and refresh rates present.
-usecustomedid with -refresh does set the new refresh rate value each time it's used.
Is there any possible way to have the -refresh command delete the default blocks, or can you create a separate parameter that allows you to delete these default blocks? Is it necessary to have default extension blocks? Maybe another parameter could be created to reset the default extension blocks if these are needed for some reason. .11 didn’t reset this in CRU and it seemed to work if you deleted the default extension blocks manually. If it's possible to have a command to delete these extension blocks and prevent them from being reset after -refresh is run, it might allow the new refresh rate to show and be used. It seems when the default blocks are reset to the default, the new refresh rate isn’t showing as available. If later versions deleted the extension blocks(or gave the option to delete these with a separate command) and prevented the Extension blocks from being reset when -refresh is used, it might allow the refresh rate to be used without having to restart the machine. The only other issue I noticed that might be preventing versions after .11 from working is the -refresh command doesn’t set the refresh rate value in CRU, but the -usecustomedid command coupled with -refresh does seem to reset the value, it’s just not usable because of the Extension blocks being reset to the default values.
Rataplan626:
@trevorp Thanks again for the input.
--- Quote ---but I wanted to report that on the NUC 11 on a different Dell U3014 monitor, everything works as expected with 0.15b5.
--- End quote ---
Hurray! :cheers: at least SOME success :-)
--- Quote from: trevorp on March 11, 2023, 07:04:11 pm ---I also see that on the NUC, it does create a new entry ending in UID0 but the first part of the key matches the Dell monitor, whereas on the problem PC it does not.
e the registry exports, but they show the same, and this is pretty easy to digest.
--- End quote ---
Now that's what I saw as well when monitoring CRU, but it also does a RegSetValue on the monitors 'own' EDID value (ie. not in the EDID_OVERRIDE key).
@TitanGorilla, thanks for that eleborate post as well :applaud:
--- Quote ---Each time -refresh is run, the default extension block is reset.
--- End quote ---
That could be. Reason: when you start from scratch (ie. never ran CRU, or remove monitors / drivers and restart) you will probably not have a default extension block. But when you run CRU, it generates some stuff in the EDID_OVERRIDE key that's not there by default. At least on my systems, CRU 'generates' that default extension block, it's not there by default. This is on my laptop which never had any resolution set by either RatRefresh or CRU:
And using RatRefresh 0.15 without -usecustomedid, it will always use the EDID value in 'HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY\SDC424A\4&25831cb2&0&UID265988\Device Parameters' and then the EDID value, which I keep calling the monitors' own EDID, as that's were the 'default' EDID ends up. And again, when you DO use -usecustomedid, it uses the 0 value in EDID_OVERRIDE, and it should behave 100% identical to 0.11, which it does on my systems.
--- Quote ----usecustomedid with -refresh does set the new refresh rate value each time it's used.
--- End quote ---
You mean when you use -usecustomedid it actually works for you? If so, please report, as that would clear a lot of confusion for me. In your screenshot, I see the default extension block is actually there, so you probably had CRU to set a custom resolution to set 0.11 up, OR 0.15 with -usecustomedid? I would actually be happy if that worked, as, and sorry to repeat myself, 0.15 with -usecustomedid should functionally be the same as 0.11 with regards to the resulting regsitry, but that also means for now you need to setup thing by using CRU to setup one custom resolution, so a custom EDID value to reuse actually exists. If you use -usecustomedid but no custom EDID exists, it just uses the monitors original EDID value.
My goal is still to have RatRefresh work without the need for CRU, as I think that -setup parameter greatly improves usability for people that aren't as technical as you two. I have the sourcecode for CRU, but that's quite the thing in it's own :) But worst case I could use that to create the same 'Default extension block' as CRU does. Or at least understand WHAT it creates that for maybe.
I've not been feeling too well the last couple of days, the kids don't grant us a lot of sleep :-\ but I want to work on it again in a couple of days.
TitanGorilla:
I’m happy to help test to make RatRefresh the best it can be 😊 I know what you mean, I completely understand. There is definitely a lot going on with life that makes it hard to test and respond as often as I’d like. I’m satisfied with the way .11 works but it would be great to get the later versions working too. Definitely, no need to rush the development of it if you have limited free time. I can only imagine having kids would be to balance work and other demands of life and debugging RatRefresh in your free time. That would be great if there was a way for you to add a command to reset the default extension blocks, it seems to be what’s keeping later versions from working on my machine. It’s interesting your laptop doesn’t have any default extension blocks. I wonder if you were to use RatRefresh if it would set default extension blocks. It does seem like using -usecustomedid works to reset the refresh rate. Below are the steps I took to reset it and showing it refreshing the refresh rate after using -usecustomedid.
This is after first running -refresh with -usecustomedid. 57.777 is now showing in CRU.
The refresh rate is showing in CRU but still not selectable in Advanced display properties.
I deleted the default extension blocks before restarting my machine. If I don't delete the default extension blocks it seems to prevent it from showing the new refresh rate.
I restarted my machine, the new refresh rate from -usecustomedid is now selectable in Advanced display settings.
Rataplan626:
Well, there's a few things again. What I see from your CRU screenshots is that you have multiple Detailed Resolutions setup, which is not where the tool is actually intended for - when you have only one and you reset the driver, that one resolution becomes your 'default' and hence your screen should be in the desired refresh rate without manually having to select it. Having said that, it should still work, but it probably won't automatically switch to the resolution set by RatRefresh.
Now, when you delete the Extension Block, what I see on my system is that in the EDID_OVERRIDE key, a value 1 is written, with only value 02 03 at the start, and at the end just the checksum. So if that's what's needed, it's easy to add. You can try v15 debug build 6 with parameter -removeextensionblock.
To be sure of everything, and rule other things out, I'd want to ask you again to remove monitors and video drivers from device manager and have them redetected. Then use ratrefresh -setup (ID's might have changed) and then
--- Code: ---ratrefresh -refresh 59.150 -removeextensionblock
--- End code ---
and then check with https://testufo.com/refreshrate
In other words, how I want a new user to be able to use it :) Of course you can run CRU to see if the extension block is actually not available anymore now. If that works you're free to check with your multiple custom resolutions setup, and to see whether it's reflected in your NVidia panel as well.
[edit]
If it doesn't you can always try the 'old' way, create a custom resolution with CRU and use -usecustomedid and -removeextensionblock to try. But obviously I want it to work without the need of CRU.
[/edit]
By the way, I expect you need a restart of the video driver with either CRU or RatRefresh 0.11, in order for the new resolutions to show up in the NVidia panel?
If it still doesn't work, I'd like to see the difference in your registry when you remove the Extension Block from CRU. As said, on my systems I get a value 1 with data "02 03 00 00 00 ...... 00 00 FB". That's what I hardcoded now in order to remove the ExtensionBlock (which feels a bit weird to be honest, adding something to remove something).
Anyway, try and report :-)
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version