- purpose: stop lg ultragear gaming monitors from dimming under static or semi-static content by constraining the panel's effective luminance range.
- method: apply and set a custom icc/icm color profile that limits the tone response so the monitor's firmware auto-dimming heuristic doesn't trigger.
- platform: windows 10/11 using windows color system (wcs).
- many ultragear models dim when average picture level stays high or content looks static.
- a tailored color profile reduces the effective range windows drives the display through, preventing the firmware condition that triggers dimming.
- software-only mitigation: nothing on the monitor is flashed or permanently changed; you can revert at any time.
limitations of other approaches
- disabling power-saving, abl or similar osd options often does not fully disable dimming on ultragear models.
- changing windows/gpu settings (disabling adaptive brightness, cabc, toggling hdr, etc.) commonly fails to stop the firmware-level behavior.
- firmware updates would be ideal, but many screens either have no user-feasible updates or the update tools are not publicly available. the profile-based approach works immediately without firmware changes.
lg-ultragear-full-cal.icm— custom icc/icm profile that constrains luminance.install-lg-ultragear-no-dimming.ps1— installer that finds "lg ultragear" displays, installs the profile, associates it, and sets it as default.install-full-auto.bat— one‑click bridge: auto‑elevates, uses a temporary execution policy bypass, and runs the installer end‑to‑end.- release artifacts — packaged zip and a single‑file executable built from the installer for easy distribution.
scripts/— helper scripts:scripts/local-ci.ps1— run format, lint, test, build locally (skips steps if tools not installed)scripts/clean.ps1— clean common build/test artifacts (dist, logs, coverage, etc.)scripts/embedder.ps1— regenerate and embed the profile (Base64 + SHA256) into the installer
option a - one-click batch (recommended)
- double-click
install-full-auto.bat(or run from command prompt). it will:- request admin (uac),
- run powershell with
-executionpolicy bypass(no permanent policy change), - call the installer with defaults.
- at the end, it will prompt: "press enter to exit...".
option b - powershell (manual)
-
open powershell in the repo folder, then run:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force ./install-lg-ultragear-no-dimming.ps1
- the installer auto‑elevates if needed and, by default, prompts: "press enter to exit...". add
-NoPromptto skip. - tip: you can probe first with:
./install-lg-ultragear-no-dimming.ps1 -Probe
- the installer auto‑elevates if needed and, by default, prompts: "press enter to exit...". add
option c - single executable (no powershell needed)
-
download
install-lg-ultragear-no-dimming.exefrom the releases page and run it (uac prompt will appear). it behaves like the powershell script and will prompt to press enter at the end.note: when using the executable, open powershell as administrator and run it from your downloads folder so elevation works reliably:
# start powershell as administrator, then: cd $env:USERPROFILE\Downloads .\install-lg-ultragear-no-dimming.exe
what happens
- the profile is copied (or refreshed in‑place) into
%WINDIR%\System32\spool\drivers\color. - displays with friendly name containing "lg ultragear" are discovered via wmi.
- the profile is associated with each matched display and set as default.
- the sdr pipeline receives an explicit default association (hdr/advanced-color is also updated unless
-SkipHdrAssociation). - system color settings are refreshed.
if you prefer not to run any scripts, you can apply the profile manually using the built‑in color management tool.
pre‑requisites
- get the
lg-ultragear-full-cal.icmfile from this repo (clone or download the zip).
optional: copy to the system color store (admin)
- open file explorer as administrator.
- navigate to
%windir%\system32\spool\drivers\color. - copy
lg-ultragear-full-cal.icminto that folder. (you can also keep the file anywhere; the ui lets you browse.)
associate the profile with your lg ultragear
- press
win + r, typecolorcpl, press enter. - go to the “devices” tab.
- from the display dropdown, select your lg ultragear monitor. if you have multiple displays, ensure you select the correct one (use windows settings → system → display → “identify” to confirm which is which).
- check “use my settings for this device”.
- if
lg-ultragear-full-cal.icmis not listed, click “add…”, then:- if you placed the file in the system store, pick it from the list; or
- click “browse…” and select the
.icmfile from wherever you saved it.
- select
lg-ultragear-full-cal.icmand click “set as default profile”. - repeat for any other lg ultragear displays you want to fix.
optional: set system‑wide default (all users)
- in
colorcpl, click “change system defaults…”. - repeat the same steps under the “devices” tab for the target display(s).
finish and verify
- close the dialogs. some apps pick up changes immediately; others may need a restart or sign‑out/in.
- to verify, open
colorcplagain and confirm the profile is the default for your lg ultragear.
- default:
./install-lg-ultragear-no-dimming.ps1 - match different text:
./install-lg-ultragear-no-dimming.ps1 -monitornamematch "lg" - use a specific file:
./install-lg-ultragear-no-dimming.ps1 -profilepath ./lg-ultragear-full-cal.icm - also associate per-user:
./install-lg-ultragear-no-dimming.ps1 -peruser - do not set as default:
./install-lg-ultragear-no-dimming.ps1 -nosetdefault - skip hdr association:
./install-lg-ultragear-no-dimming.ps1 -skiphdrassociation - install only (no device association):
./install-lg-ultragear-no-dimming.ps1 -installonly - probe only (no changes, list monitors and matches):
./install-lg-ultragear-no-dimming.ps1 -probe - dry run (simulate actions; same as -WhatIf):
./install-lg-ultragear-no-dimming.ps1 -dryrun
console output
- the installer prints clear, colored progress with console-safe labels (e.g., [STEP], [INFO], [OK]), lists all detected monitors, and highlights which ones match the friendly-name filter (default: "lg ultragear").
-ProfilePath <path>: path to ICC/ICM file. Default:./lg-ultragear-full-cal.icm.- note: the installer uses the embedded profile at runtime; the
-ProfilePathargument is kept for compatibility but is ignored during install/association. -MonitorNameMatch <string>: substring to match monitor friendly names. Default:LG ULTRAGEAR.-PerUser: also associate the profile in current-user scope.-NoSetDefault: associate only; do not set as default.-SkipHdrAssociation: skip the HDR/advanced-color association API.-InstallOnly: install/copy the profile into the system store without associating.-Probe: list detected and matched monitors; no changes.-DryRun: simulate operations (equivalent to WhatIf for actions).-NoPrompt: do not wait for Enter before exiting.-SkipElevation: do not auto-elevate (useful for CI/testing).-Help(aliases:-h,-?): show usage and exit.
local dev helpers
# run all (format, lint, test, build)
pwsh -File scripts/local-ci.ps1
# treat linter warnings as errors
pwsh -File scripts/local-ci.ps1 -Strict
# clean artifacts
pwsh -File scripts/clean.ps1
# update embedded profile (base64 + sha256) inside the installer
pwsh -File scripts/embedder.ps1 -ProfilePath .\lg-ultragear-full-cal.icm
# or specify a different main script path
pwsh -File scripts/embedder.ps1 -ProfilePath C:\path\to\your.icm -MainScriptPath .\install-lg-ultragear-no-dimming.ps1idempotency
- if the profile file is already present in the system color store, the installer compares hashes and overwrites only when content differs; no duplicate files are created.
- associations and "set default" operations are safe to repeat; the script aims to leave a single effective default profile per device.
- classic ui: press
win+r, runcolorcpl-> devices tab -> select your lg ultragear -> ensurelg-ultragear-full-cal.icmis present and set as default. - settings: system -> display -> advanced display -> pick the lg; verify behavior under hdr if applicable.
- visual check: leave a bright, mostly static window; dimming should be gone or greatly reduced.
- switch back:
colorcpl-> devices -> select display -> choose another default or uncheck "use my settings for this device". - remove association: in
colorcpl, select the profile and click remove. - remove file: delete it from
%windir%\system32\spool\drivers\color(admin required).
- uses wcs (
mscms.dll) via p/invoke:installcolorprofileto install the icc/icm (or we overwrite if already present),wcsassociatecolorprofilewithdeviceto bind it to the display's device key,wcssetdefaultcolorprofileto make it default,colorprofileadddisplayassociationbest-effort for hdr/advanced-color displays.
- monitors are discovered via
wmimonitoridto match user-friendly names like "lg ultragear 27gn950". - a
wm_settingchangebroadcast prompts windows to refresh color.
- installing into the system color store and setting defaults requires administrator. both the batch and the powershell installer auto-elevate (uac prompt shown if needed).
-
see
license.mdfor licensing details. -
downloads & releases
-
automated ci produces versioned releases named
yyyy.n(example:2025.1).nincrements for each release within the year. -
each release includes:
lg-ultragear-dimming-fix.zip(scripts, exe, profile, readme, license)install-lg-ultragear-no-dimming.exe(standalone executable)