I’ve had a viewsonic monitor for a few years (i believe i purchased it around 2013), but for some reason, it started to decide it wouldn’t turn on.

I was annoyed at the time, wanting to check my email, and left the computer for an hour or so waiting for my monitor to finally turn on, it was stuck in a “reboot” loop, turning off as soon as the logo appeared on the screen. After which, the monitor finally turned on an hour later. It seemed like it was waiting for a failing capacitor to charge up, before the screen would finally turn on. I don’t know much about hardware in terms of electronics, but this took longer each time i tried to turn on the monitor.

I ended up buying an emergency replacement monitor, on whim, so i could use my computer again, the monitor i chose was an Acer-GN246HL.

I decided on this, because it was a fairly cheap monitor, considering it sported 144hz refresh rate, along with 120hz / 100hz. I’ve only ever used a 60hz monitor before, so i thought it would be worth trying a higher refresh rate.

So i waited a few days for this to arrive, and plugged it in as you would. Yet i had a lot of problems at first. On my Slackware system, the monitor was only detected as 60hz initially. I installed the NVidia proprietary driver, and not much had changed.

I had noticed that selecting the NVidia lightboost settings within the monitors OSD was greyed out, and i couldn’t use it. So i took to the wonders of an internet search and came across this page, http://forums3.armagetronad.net/viewtopic.php?f=1&t=23173

Apparently, the lightboost related features exist as invalid modelines, so you need to configure these manually through an xorg config. For the most part, this guide on that webpage solved most of my issues, and allowed me to set 120hz with lightboost on linux.

I was slightly confused, as if you were to generate a modeline using `cvt` on Linux, you end up with this;

$ cvt -r 1920 1080 120
# 1920x1080 119.88 Hz (CVT) hsync: 137.14 kHz; pclk: 285.25 MHz
Modeline "1920x1080R"  285.25  1920 1968 2000 2080  1080 1083 1088 1144 +hsync -vsync

 

Which doesn’t enable lightboost, however, you have to increase the vertical trace to at least, 1149.

Modeline "1920x1080_120lb" 286.7 1920 1968 2000 2080 1080 1083 1088 1149 +HSync -VSync

 

This is an invalid modeline, hence you need to allow “non edid” modes. The reason for this, is that the last paramater for the vertical trace, should in fact be 1144. However, for the sake of enabling lightboost, this needs to be within the range of 1149-1180. I’m not fluent in the reasons for this.

As you can see, for 1920×1080 @ 120hz, this tells us the last value is 1144. When you increase this to 1149 (as to enable lightboost), the pixel clock has to also increase to reflect that. So 285.25 becomes 286.7.

This worked, but i was still not happy, so i booted a Windows machine with the monitor connected, and dumped the EDID.bin file for the monitor.

Here’s how to configure this monitor on X11 in Linux (possibly with other *nixes too).

 

You can download my EDID.bin from here, just place this at /etc/X11/EDID.bin, then use the following xorg related config to load it;

 

/etc/X11/xorg.conf.d/10-nvidia.conf

 

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "metamodes" "1920x1080_120 +0+0 { ForceFullCompositionPipeline = On }" 
    Option         "TripleBuffer" "on" 
    Option         "AllowIndirectGLXProtocol" "off" 
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    Option         "NoLogo" "1"
    Option         "CustomEDID" "DVI-D-0:/etc/X11/EDID.bin"
EndSection

 

Note the last few lines; where it states DVI-D-0, you may have to change this to whatever your monitor is labelled as, this will depend on the type of cable you are using, but should be at least a DVI name when wanting to use lightboost.

 

Make sure you don’t have any other *.conf files in /etc/X11/xorg.conf.d/ and neither an /etc/X11/xorg.conf, as this single nvidia related file is all that is needed to get lightboost working with nvidia’s proprietary driver. You should now be able to launch nvidia-settings, and see these refresh rates:

  • 60hz
  • 100hz
  • 120hz
  • 144hz

 

Note, that only 100hz and 120hz are supported by lightboost.

 

Run glxgears to confirm this is working;

 

Eg:

602 frames in 5.0 seconds = 120.384 FPS

ddcutil

 

See the problem here: http://www.ddcutil.com/nvidia/

 

Create /etc/modprobe.d/nvidia-ddcutil-fix.conf containing:

options nvidia NVreg_RegistryDwords=RMUseSwI2c=0x01;RMI2cSpeed=100

This should allow detection of the ddc capabilities

# ddcutil detect
Display 1
I2C bus: /dev/i2c-7
Supports DDC: true
EDID synopsis:
Mfg id: ACR
Model: GN246HL
Serial number: LW3EE0058533
Manufacture year: 2017
EDID version: 1.3
VCP version: 2.1

Controlling the lightboost value over ddc

 

The VCP code 0xfa is responsible for setting the lightboost value in increments of 10.

VCP code 0xfa (Manufacturer Specific ): mh=0x00, ml=0x0a, sh=0x00, sl=0x00, max value = 10, cur value = 0

  • set lightboost to maximum

$ ddcutil setvcp 0xfa 10

  • set lightboost to 50%

$ ddcutil setvcp 0xfa 5

You can extract the values for the ddc lightboost setting using these comands:

 

  • current value

$ ddcutil getvcp 0xfa -t | awk {'print $4'}

  • maximum value

$ ddcutil getvcp 0xfa -t | awk {'print $5'}

Firefox tweaking

 

Now there are some other tweaks you will have to make. One notable one is firefox. I was getting horrific blur/ghosting when scrolling any web page, and found a solution by forcing the refresh rate. Head to “about:config” in your browser. Search for “layout.frame_rate”.

 

Force this setting to whatever your chosen refresh rate is. In my case, as i wanted to use the lightboost feature with 120hz, i set this value to 120.

 

After restarting firefox, this should give you the crystal clear sharpness that is present on Windows when scrolling documents. This setting over ride should also make the ghosting/blur tests available at https://www.testufo.com/ work just as perfectly as in Windows. Despite vsync not being supported, you may get a slight stutter once in a while, but over all this should look sharp without any ghosting or blurring.

 

the default value of “-1” is supposed to represent vsync, but for some reason this does not sync to the current refresh rate under Linux, i believe this may be a bug within firefox. But for now, forcing the refresh rate on this setting seems to be acceptable for ghosting-free and blur-free scrolling.

 

KDE5

 

One thing specific to KDE5 is that you can also force the framerate to match the refresh rate, by editing ~/.config/kwinrc

 

In the [Compositing] section, add/adjust these values;

RefreshRate=120
MaxFPS=120

This will improve everything within KDE5 whilst using the plasma desktop, so that it actually uses 120hz. I typically run AwesomeWM, along with xcompmgr, but have not found a solution to this yet. I am also unaware of any other window managers/compositors that can be forced to render at anything higher than 60fps.

I hope this has helped someone with this monitor, as always, a middle finger to NVidia, for not supporting their own features in the official Linux NVidia driver…  this seems more of a hassle than it’s worth… but seeing as i’m stuck with this monitor, it now performs decent enough with these configurations, that i can forget about all of this, as the monitor works perfectly fine since making these changes to xorg configs.

 

Advertisements