[Utility/Source] Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Talk about overclocking displays at a higher refresh rate. This includes homebrew, 165Hz, QNIX, Catleap, Overlord Tempest, SEIKI displays, certain HDTVs, and other overclockable displays.
ch3x
Posts: 3
Joined: 13 Jun 2022, 05:26

[Utility/Source] Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by ch3x » 13 Jun 2022, 05:34

Hi everyone,
I have recently bought myself the monitor noted in the title, I was surprised to find the monitor was able to be overclocked from 144hz to 264hz. The only issue I encountered is the dreaded Out of Range message that appears once you surpass the recommended frequency.

Looking through multiple forums I found a program called SoftMCCS which you are able to adjust the monitor values directly from your computer. In the same forum on overclocking BenQ monitors there was also a few programs that had been written to automate the altering of these values to automatically remove the message whenever something changed.

Unfortunately these programs do not work for the LG monitor but I have found a potential fix but need help executing it. In SoftMCCS there is a manufacturer specific code 0x-F9 which when changed will remove the OOR message for a short period of time. I attempted to alter the other programs to switch this value back and forth very quickly but because I have no experience with coding it inevitably failed. If someone could help me out with a small program that automatically switches this value then there would be a fix to allow overclocking on all LG monitors that use this firmware.

Any help is appreciated.

User avatar
Chief Blur Buster
Site Admin
Posts: 11648
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by Chief Blur Buster » 13 Jun 2022, 23:44

ch3x wrote:
13 Jun 2022, 05:34
Hi everyone,
I have recently bought myself the monitor noted in the title, I was surprised to find the monitor was able to be overclocked from 144hz to 264hz. The only issue I encountered is the dreaded Out of Range message that appears once you surpass the recommended frequency.

Looking through multiple forums I found a program called SoftMCCS which you are able to adjust the monitor values directly from your computer. In the same forum on overclocking BenQ monitors there was also a few programs that had been written to automate the altering of these values to automatically remove the message whenever something changed.

Unfortunately these programs do not work for the LG monitor but I have found a potential fix but need help executing it. In SoftMCCS there is a manufacturer specific code 0x-F9 which when changed will remove the OOR message for a short period of time. I attempted to alter the other programs to switch this value back and forth very quickly but because I have no experience with coding it inevitably failed. If someone could help me out with a small program that automatically switches this value then there would be a fix to allow overclocking on all LG monitors that use this firmware.

Any help is appreciated.
Fantastic Out-Of-Range (OOR) bypass discovery -- overclocking becomes much easier when you're able to sneak past the out-of-range firmware cop.

It probably wouldn't be very difficult to write a small program to continually ping the monitor with these DDC commands at a time interval -- even as an infinite loop test in a Win32 C# console app:

Let's say, you're using C# (.NET), the favourite starter Windows language;

The only problem is the OS-level Windows API is not easily accessed from C# so this requires a slightly complex declaration (interop / pinvoke) to get access to SetVCPFeature() -- the DDC/CI commanding API. And an API to get the monitor handle.

Code: Select all

[DllImport("dxva2.dll", EntryPoint = "SetVCPFeature", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool SetVCPFeature(
        [In] IntPtr hMonitor, uint dwVCPCode, uint dwNewValue);

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        private static extern UInt32 MonitorFromPoint(Point pt, UInt32 dwFlags);
One this is done, the rest becomes reasonably easy: the crudest test program would be the main() of a win32 C# console app that one can just minimize.

Code: Select all

const UInt32 MONITOR_DEFAULTTOPRIMARY = 0x00000001;

IntPtr GetPrimaryMonitorHandle()
{
    const Point ptZero = { 0, 0 };
    return MonitorFromPoint(ptZero, MONITOR_DEFAULTTOPRIMARY);
}

void OutOfRangeKiller()
{
  IntPtr hMonitor = GetPrimaryMonitorHandle();
  while (true)
  {
    SetVCPFeature(hMonitor, 0xF9, 1);
    Thread.Sleep(1000);  // Sleep 1000 milliseconds
    SetVCPFeature(hMonitor, 0xF9, 2);
    Thread.Sleep(1000);  // Sleep 1000 milliseconds
  }
}
Obviously, this is mental test code only, may have errors, not compile tested.

This assumes your LG monitor is the primary. In your tiny Hello World C# shoestring app (console or windowed), call OutOfRangeKiller() and there you go.

You will have to do more homework for things like a system tray app or some windowed app with an exit function or other configurability, preferably as a separate thread. But hopefully you can grab that code from elsewhere, and this should be enough to allow you to do more tests.

If someone (with more time than I) could help complete a Visual Studio Project (either in C++ or C#) to help this user out, much would be appreicated!
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

ch3x
Posts: 3
Joined: 13 Jun 2022, 05:26

Re: Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by ch3x » 14 Jun 2022, 06:16

Chief Blur Buster wrote:
13 Jun 2022, 23:44
ch3x wrote:
13 Jun 2022, 05:34
Hi everyone,
I have recently bought myself the monitor noted in the title, I was surprised to find the monitor was able to be overclocked from 144hz to 264hz. The only issue I encountered is the dreaded Out of Range message that appears once you surpass the recommended frequency.

Looking through multiple forums I found a program called SoftMCCS which you are able to adjust the monitor values directly from your computer. In the same forum on overclocking BenQ monitors there was also a few programs that had been written to automate the altering of these values to automatically remove the message whenever something changed.

Unfortunately these programs do not work for the LG monitor but I have found a potential fix but need help executing it. In SoftMCCS there is a manufacturer specific code 0x-F9 which when changed will remove the OOR message for a short period of time. I attempted to alter the other programs to switch this value back and forth very quickly but because I have no experience with coding it inevitably failed. If someone could help me out with a small program that automatically switches this value then there would be a fix to allow overclocking on all LG monitors that use this firmware.

Any help is appreciated.
Fantastic Out-Of-Range (OOR) bypass discovery -- overclocking becomes much easier when you're able to sneak past the out-of-range firmware cop.

It probably wouldn't be very difficult to write a small program to continually ping the monitor with these DDC commands at a time interval -- even as an infinite loop test in a Win32 C# console app:

Let's say, you're using C# (.NET), the favourite starter Windows language;

The only problem is the OS-level Windows API is not easily accessed from C# so this requires a slightly complex declaration (interop / pinvoke) to get access to SetVCPFeature() -- the DDC/CI commanding API. And an API to get the monitor handle.

Code: Select all

[DllImport("dxva2.dll", EntryPoint = "SetVCPFeature", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool SetVCPFeature(
        [In] IntPtr hMonitor, uint dwVCPCode, uint dwNewValue);

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        private static extern UInt32 MonitorFromPoint(Point pt, UInt32 dwFlags);
One this is done, the rest becomes reasonably easy: the crudest test program would be the main() of a win32 C# console app that one can just minimize.

Code: Select all

const UInt32 MONITOR_DEFAULTTOPRIMARY = 0x00000001;

IntPtr GetPrimaryMonitorHandle()
{
    const Point ptZero = { 0, 0 };
    return MonitorFromPoint(ptZero, MONITOR_DEFAULTTOPRIMARY);
}

void OutOfRangeKiller()
{
  IntPtr hMonitor = GetPrimaryMonitorHandle();
  while (true)
  {
    SetVCPFeature(hMonitor, 0xF9, 1);
    Thread.Sleep(1000);  // Sleep 1000 milliseconds
    SetVCPFeature(hMonitor, 0xF9, 2);
    Thread.Sleep(1000);  // Sleep 1000 milliseconds
  }
}
Obviously, this is mental test code only, may have errors, not compile tested.

This assumes your LG monitor is the primary. In your tiny Hello World C# shoestring app (console or windowed), call OutOfRangeKiller() and there you go.

You will have to do more homework for things like a system tray app or some windowed app with an exit function or other configurability, preferably as a separate thread. But hopefully you can grab that code from elsewhere, and this should be enough to allow you to do more tests.

If someone (with more time than I) could help complete a Visual Studio Project (either in C++ or C#) to help this user out, much would be appreicated!
This is an awesome start and great for someone like me who has very little to no experience with coding! Thank you very much for outlining the basics that I can build upon. I have exams running at the moment for university but after they are completed ill spend some time over the break looking into some C# and C++ to see if I can manage to scrap together a program.

If I end up figuring it all out ill make sure to make a separate thread with the program available for other people to improve upon or just to use with their own monitors.

Again thanks a lot for your help, it will be indispensable.

User avatar
Chief Blur Buster
Site Admin
Posts: 11648
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by Chief Blur Buster » 14 Jun 2022, 13:29

Oh, I forgot to mention. To make the C# code snippets more likely to compile (Point(), Thread.Sleep() and access to SetVCPFeature), you need to append the following to the top of the C# file.

Code: Select all

using System.Drawing;
using System.Threading;
using System.Runtime.InteropServices;
You can use C++ too, which is sometimes easier to call Win32 API from, but harder to do other things that are already in a more beginner friendly language such as C#. That being said, start with some barebones code (Hello World type app) and insert the bare minimum functionality.

So it might kind of a wash, choose your preferred programming language.
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

elexor
Posts: 169
Joined: 07 Jan 2020, 04:53

Re: Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by elexor » 17 Jun 2022, 09:53

For a quick test you can make a simple batfile and use winddcutil

https://github.com/scottaxcell/winddcut ... 64/Release

Code: Select all

:loop
winddcutil.exe setvcp 0 F9 1 	
timeout /t 3			
winddcutil.exe setvcp 0 F9 2
timeout /t 3			
goto loop
3 is seconds between commands
0 is the monitor id which is usually 0 for single monitor setups
you can use winddcutil.exe detect to list monitor ids

User avatar
Chief Blur Buster
Site Admin
Posts: 11648
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by Chief Blur Buster » 17 Jun 2022, 16:54

elexor wrote:
17 Jun 2022, 09:53
For a quick test you can make a simple batfile and use winddcutil

https://github.com/scottaxcell/winddcut ... 64/Release

Code: Select all

:loop
winddcutil.exe setvcp 0 F9 1 	
timeout /t 3			
winddcutil.exe setvcp 0 F9 2
timeout /t 3			
goto loop
3 is seconds between commands
0 is the monitor id which is usually 0 for single monitor setups
you can use winddcutil.exe detect to list monitor ids
Fantastic -- a batch file with winddcutil.exe is even simpler.

Consumes more CPU, but this is a useful proof of concept and can be configured to a low background priority in a pinch (Task Manager -> Go to Details -> Set Priority ..... or just use a wmic.exe command line to self-set low CPU priority)

264 Hz is quite the nice overclock of a 144Hz panel.
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

User avatar
Chief Blur Buster
Site Admin
Posts: 11648
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: [Utility/Source] Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by Chief Blur Buster » 18 Jun 2022, 20:39

[AOC-related post moved to thread Is there an AOC overclock hack?...]
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

mirh
Posts: 4
Joined: 29 Dec 2022, 17:01

Re: [Utility/Source] Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by mirh » 30 Dec 2022, 08:51

I cannot vouch for the 27GL650F, but on its bigger brother 27GN850 (and many older LG monitors too) 0xF9 is just the black stabilizer.
Are you sure the trick isn't rather just any interaction?

Also, I just discovered another thing: I cannot for the life of me to get freesync working properly (every odd frame is skipped in the relative test, probably because the built-in OSD counter is telling me I'm running at 77Hz rather than 155Hz.. and god forbid making sense of the data in the debug/service menu).
Nevertheless, once it is enabled in the GPU control panel the OOR warning is no more (and the "Information" option in the menu is technically showing "155Hz").

sharriy
Posts: 2
Joined: 27 Oct 2023, 11:02

Re: Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by sharriy » 29 Oct 2023, 03:28

Chief Blur Buster wrote:
17 Jun 2022, 16:54
elexor wrote:
17 Jun 2022, 09:53
For a quick test you can make a simple batfile and use winddcutil

https://github.com/scottaxcell/winddcut ... 64/Release

Code: Select all

:loop
winddcutil.exe setvcp 0 F9 1 	
timeout /t 3			
winddcutil.exe setvcp 0 F9 2
timeout /t 3			
goto loop
3 is seconds between commands
0 is the monitor id which is usually 0 for single monitor setups
you can use winddcutil.exe detect to list monitor ids
Fantastic -- a batch file with winddcutil.exe is even simpler.

Consumes more CPU, but this is a useful proof of concept and can be configured to a low background priority in a pinch (Task Manager -> Go to Details -> Set Priority ..... or just use a wmic.exe command line to self-set low CPU priority)

264 Hz is quite the nice overclock of a 144Hz panel.
Can you please explain this process im not able to remove oor its annoying

ch3x
Posts: 3
Joined: 13 Jun 2022, 05:26

Re: [Utility/Source] Successful LG overclock 144Hz to 264Hz! [LG 27GL650F Overclock Out of Range Fix]

Post by ch3x » 14 Jan 2024, 06:56

Hey guys, I know this thread is old but just came back to the overclock after I remembered it recently.

I now use python for my job so was able to quickly write up some python code to alter the monitor values through the same API that winddcutil uses. I found that there is effectively no time interval that you can use that will correctly remove the OOR message. It seems that if you try and ping the value just before the OOR returns, it notices and shows itself anyway. Of course if you ping it after its already come back then it will show briefly before being put away again.

Additionally, though hard to confirm as I've never seen a 240hz monitor with my eyes, I don't believe the monitor is actually being overclocked to 240hz. With the scrappy program I wrote I tested overwatch running at around 300fps with the overclock at 240hz and the game was not appreciably smoother. Despite UFO test and the monitor itself in the OSD showing 240hz I find it hard to believe that I wouldn't be able to tell it was smoother.

Sad end to the thread but on to better things.

Post Reply