Heyo,
I’m not sure where to put this, but I’ve went on a tear last night trying to figure out why I couldn’t use my LG 32GN600 in HDR mode in Linux when it worked perfectly well in Windows. Every-time I would attempt to enable it, either in KDE or Hyprland the screen would blank out, and stay blanked out, or the screen would ‘freeze’ until you reverted the change and restarted the monitor.
From steam/gamescope I would get:
vulkan: vkGetPhysicalDeviceFormatProperties2 returned zero modifiers for DRM format
From KDE I would get:
“Couldn’t apply display configuration: The driver rejected the output configuration”
Hyprland didn’t really complain, it just crashed… ![]()
I tried a variety of things, older NVIDIA drivers, older kernels, different distros, live-cd’s, I couldn’t get HDR to work anywhere but Windows. I honestly thought that HDR support was broken on Nvidia and everyone was being quiet about it for some reason. That was until I got a new Secondary monitor, another LG, and it worked fine with HDR in Linux, it was only the 32GN600 that didn’t work.
After googling for an hour or so I came across this post about hacking ‘edid’ configs, and how LG had futzed up another model. In this case it was incorrect refresh rates that was the issue. So I downloaded edid-decode and starting poking.
Looking at my result from edid-decode didn’t really help, all the refresh rates were correct unlike kj800x, so I rebooted into Windows, to see what it’s edid looked like. I first attempted to read the edid information using two programs. MonitorInfoView and EDID/DisplayID Writer. Both of these programs produce truncated edid bins, this lead to a rather wasteful few hours trying to figure out why a truncated edid file worked in Windows and the full one in Linux didn’t, stupid red herring. I did eventually manage to get a full edid out of Windows via the registry and it confirmed to me that the edid information was the same on both Windows and Linux. So a lot of running around for nothing.
DO NOT USE EITHER OF THESE TOOLS:
EDID/DisplayID
MonitorInfoView
INSTEAD CHECK THE REGISTRY:
HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY
HKLM\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration
So, at this point I was kinda stumped except for the fact that my newer Secondary monitor worked fine. So I dumped it’s edid information, and started plugging all of 32GN600’s information into it, hit a couple of things that the newer monitor had turned on, so I was just flipped those on too. Did all of this in AW EDID editor (it does the Checksum stuff automatically, had to run in Wine, but worth the trouble).
I then took my edid.bin and followed Arch wiki’s instructions to get in place and overriding the firmware one, edited mkinit.conf and bootloader, mkinit’d, rebooted, toggled on HDR, and it worked! Okay, so now I have a functional HDR monitor, but I still didn’t know exactly what was wrong with the original edid, so many edid-decodes, and vimdiff’s later I found ONE byte difference between a working HDR monitor and not, that bit toggled on, “Static metadata type 1”. Okay, not an edid expert, but if I had to guess this tells the OS to use ‘Traditional Gamma’ and ‘SMPTE ST2084’, those sound fairly important to me.
Went back to the original edid, flipped the bit, redid checksum, mkinit’d, reboot, worked!
So I’m writing this to ask, is there anywhere I can report a screwy edid information that it could be added into… I dunno, distro-patches or similar in the future? It’s one freaking wrong byte stopping people using HDR in Linux for this monitor model, and I suspect more looking at older reports of LG monitors not having HDR working in Linux.
Thanks in advance! Go find your happy!
