I own an old flatscreen TV from the manufacturer Telefunken, which is probably seven years old already. There’s basically no reason to replace devices as long as they’re still functioning and not horribly obsolete – and a device with a resolution of 1360×768 is definitely not.
One week ago, I experienced a strange behaviour, though. On Linux, I was only able to drive the screen with a resolution of 1024×768 or even lower standard resolutions. Even those looked bad, with pixel rows completely missing, so my eyes started to hurt a lot.
The good, old Telefunken simply stopped transmitting EDID information. The Extended Display Identification Data makes sure that the operating system knows which resolution or refresh rate should be used for connected screens. When using analog connections like VGA there’s even more relevant information needed, like the horizontal frequency in kHz.
“No problem”, I thought – because the internet provided me with a Modeline Calculator, that enabled me to calculate the now missing EDID data by myself.
The calculator worked pretty okay-ish. At the end, I came up with these command, to set the resolution manually on-the-fly on the commandline:
xrandr --newmode "1360x768_60.00" 84.75 1360 1432 1568 1776 768 771 781 798 -hsync +vsync xrandr --addmode VGA1 1360x768_60.00 xrandr -s 1360x768_60.00
It wasn’t as good as before, though. Some pixel rows looked like they were dragged through the mud – probably because some of them were duplicated, left out or even interpolated by the panel technology. I noticed, that this wasn’t happening on Windows – everything looked perfect there.
But why exactly? When I connected the monitor on Windows ages ago, it automatically created an entry (or “driver”) for it in its device manager, that stores all of the EDID data and applies it on every boot of the system.
This data can be read out and converted to a modeline with the tool moninfo.exe. Now everything looks perfect on Linux (again), too.
xrandr --newmode "1360x768_60.00" 85.500 1360 1424 1536 1792 768 771 777 795 +hsync +vsync xrandr --addmode VGA1 1360x768_60.00 xrandr -s 1360x768_60.00
The moral of this story: Sometimes, Windows isn’t as bad as I thought it was.