Eyestrain when switching from Windows to Linux
- Edited
Wonder if this is helpful on Intel graphics for PWM:
The problem was:
My Linux distro sets a low PWM frequency by default, that's why all the eyestrain. Luckily Intel gpu drivers can change the PWM frequency.
Linked in that forum post is this ArchLinux forum post. There is a command line tool called intel-gpu-tools
(link, source) which read/write values for Intel GPU driver. This can be used to increase PWM and (theoretically) shut off dithering (the links above are about PWM).
I also came across intelpwm-udev
, a bash script that sets the PWM frequency for Sandy Bridge chips. It uses/builds upon the intel-gpu-tools
, specifically intel_reg
, to make a nicer CLI tool around it. Here's the GitHub repo.
See also this Reddit thread where I started this research. I Googled "manjoro eystrain" to get these results.
Hope this helps someone. I might give Lubuntu a try on my Thinkpad T430s, since it looks like folks are reporting LXQT might be not bad for eyestrain.
- Edited
Yeah, these are pretty old posts, I've seen them around, but I think it's a different issue. I've had it on all distros, all GPUs and several different displays. It's not specific to Intel, although that could well spawn some additional issues, which other people had. I also no longer believe it's dithering. I recently did what Wallboy suggested earlier, that is using Nouveau with dithering off and the strain was still there. But I suspect it wasn't always the case, because Nouveau got much much better now. No glitches or artifacts, it works pretty well. Meaning, they may have improved the acceleration somewhat and that in turn may have brought the strain back. It's just a theory, though. The truth is, nothing really helps it. It's just there, period.
P. S. I'm kind of back, still not giving up.
I tried disabling dithering through xrandr
xrandr --output eDP1 --mode 3840x2160_59.97 --set "dithering mode" "off"
But I get this error
X Error of failed request: BadName (named color or font does not exist)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 11 (RRQueryOutputProperty)
Serial number of failed request: 41
Current serial number in output stream: 41
Any ideas?
Can't test right now, but first I'd input "xrandr --props" to see what's allowed, and I'd also not use --mode to see if that helps.
- Edited
I tried removing mode xrandr --output eDP1 3840x2160_59.97 --set "dithering mode" "off"
but it just spits out unrecognized option '3840x2160_59.97'
Here's the output of "xrandr --props"
Screen 0: minimum 8 x 8, current 3840 x 2160, maximum 32767 x 32767
eDP1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 350mm x 190m
m
EDID:
00ffffffffffff004d10761400000000
311a0104a52313780ed353a85435ba25
0d525800000001010101010101010101
0101010101014dd000a0f0703e803020
35005ac2100000180000000000000000
00000000000000000000000000fe0059
32584e44804c51313536443100000000
0002410328001200000b010a20200056
BACKLIGHT: 375
range: (0, 1500)
Backlight: 375
range: (0, 1500)
scaling mode: Full aspect
supported: Full, Center, Full aspect
Colorspace: Default
supported: Default, RGB_Wide_Gamut_Fixed_Point, RGB_Wide_Gamut_Floating_Poin
t, opRGB, DCI-P3_RGB_D65, BT2020_RGB, BT601_YCC, BT709_YCC, XVYCC_601, XVYCC_709, SYCC_601,
opYCC_601, BT2020_CYCC, BT2020_YCC
max bpc: 12
range: (6, 12)
Broadcast RGB: Automatic
supported: Automatic, Full, Limited 16:235
panel orientation: Normal
supported: Normal, Upside Down, Left Side Up, Right Side Up
link-status: Good
supported: Good, Bad
non-desktop: 0
range: (0, 1)
3840x2160 60.00 + 59.97*
3200x1800 59.96 60.00 59.94
2880x1620 60.00 59.96 59.97
2560x1600 59.99 59.97
2560x1440 59.96 60.00 59.95
2048x1536 60.00
1920x1440 60.00
1856x1392 60.01
1792x1344 60.01
2048x1152 60.00 59.90 59.91
1920x1200 59.88 59.95
1920x1080 59.96 60.00 59.93
1600x1200 60.00
1680x1050 59.95 59.88
1400x1050 59.98
1600x900 60.00 59.95 59.82
1280x1024 60.02
1400x900 59.96 59.88
1280x960 60.00
1368x768 60.00 59.88 59.85
1280x800 59.81 59.91
1280x720 59.86 60.00 59.74
1024x768 60.00
1024x576 60.00 59.90 59.82
960x540 60.00 59.63 59.82
800x600 60.32 56.25
864x486 60.00 59.92 59.57
640x480 59.94
720x405 59.51 60.00 58.99
640x360 59.84 59.32 60.00
1280x720_334.00 333.81
3840x2160_59.97 59.96
Maybe I should try lowering the BPC from 12 to 8 or 6? Haven't figured out how to do that yet on Intel
There is no dithering property showing up, so it's probably not supported by the driver.
- Edited
cizeta Haven't figured out how to do that yet on Intel
I don't know for sure -- but I think the process to disable dithering on Intel should be similar to Windows? The ditherig
source code is here: https://github.com/skawamoto0/ditherig/tree/master/ditherig. It won't compile on a *nix system because it uses Win32 libraries.
But from what I can tell, it's writing to a PCI register to disable the dithering. I think you might be able to use the intel-gpu-utils or PCIUtils to do this.
(This is not my area of expertise and this is just speculation / food for thought).
- Edited
I think I'm experiencing minor issues from dithering on Linux.
I keep seeing posts saying that, on newer versions of Windows 10, programs like Ditherig only partially turn off dithering or that the compositor still dithers some UI elements.
So, I'm just looking for a straight enough answer. If I switch to Windows 10 and use programs like Ditherig, will things at least be better?
- Edited
cizeta I take it you missed my post above. I'd used linux for a year and half maybe until I finally began to notice something was really off and it would bother me more and more. So no, you're not the only one like that. Granted though, I used CRT monitor at first, my problems came with an LCD one, but also not immediately. Strangely, the first signs came while watching some movies. I felt like my eyes were growing intolerant of certain background motion. Eventually looking at the desktop alone became painful enough for me to get off linux and go back to windows where things are fine, but my sight was never the same since.
Hi! First of all I'm happy to see there is a group of people trying to solve this problem. Most of the other threads are death leaving me without an answer.
So my situation is similar to all of yours. I can stay all the day on my Windows machine but 15 mins on any Linux distribution destroy my eyes.
Tried the pwn thing, different fonts, different desktop environments, different window servers, different hardware including graphic cards and monitors and always it's the same. From a old 2009 netbook to a gaming PC with and flicker free IPS monitor. I haven't managed to do the dithering thing on my actual PC since it's Intel graphics based.
Now there is something important that I think is neccesary to check and it is Android.
Android does not give me eyestrain on my phone and well uses Linux as a kernel!
Could it be something in the code of the Android graphic drivers that is missing in the PC Linux drivers?
I really hope we could find a solution to this. I want to come back to Linux but the eyestrain makes it an impossible task.
Azhursh Android graphics stack isn't the same as desktop Linux so making direct comparisons isn't trivial.
As I said elsewhere:
I realize some people complain about the display output on Linux, but right here. I have a workstation with a AMD Radeon Pro graphics card under Linux, and I can confirm that by default, no temporal dithering is used whatsoever, either in BIOS or the running OS.
- Edited
Pudentane
I also never had a problem with CRTs on Linux. Maybe I'll just wait till I move into a place where I can make one my primary display again. I've been using just Linux for like 5 years now (jeez I feel old). I'm fine with Windows AME, but I'd miss my setup.
sight was never the same since
This is what worries me. It seems like a lot of people, even some on this forum, write off our problems as an unfortunately uncommon, weird sensitivity like an allergy or something. That very well may be true in lots of cases.
But, I'm leaning more and more towards the idea that some of our problems may stem from a sort of eye damage from LEDs and these devices.
Has anyone confirmed that, on a laptop, dithering can be removed by switching the main GPU from the integrated GPU to the dedicated GPU? I'd like to try to get my laptop to just pipe nvidia to the display. Who needs battery life. I'd rather look at a cozy screen for 2 hours instead of lasers for 4
But we have the source code over there. Maybe there is some characteristic that the Linux graphic stack is missing. Sadly we can do the same with Windows or Macos so Android is the only option that comes in to my mind.
Now regarding the dithering I'm with you about that. I tried disabling and enabling temporal dithering on my Windows system and nothing changed, all the options are good for my eyes. So I don't think dithering is the problem here because if that were the problem I should be able to replicate the eyestrain on Windows by tweaking the temporal dithering.
I tried disabling and enabling temporal dithering on my Windows system and nothing changed, all the options are good for my eyes
It's worth noting that a) this is a desktop system, and b) I actually tested dithering (and lack of dithering) with external capture hardware
If you can't tell, part of the above statement was implying I can actually use said Linux setup (well, relative compared to other operating systems)
But we have the source code over there. Maybe there is some characteristic that the Linux graphic stack is missing
Unfortunately the concepts between the "classic" Linux graphics stack and the Android graphics stack don't map "one to one" so investigating the issue without an empirically known cause is difficult. That was also the reason to check with above mentioned external capture hardware.