27th January 2010 (10 years ago)

I've connected my PC to my HD TV via HDMI. There were some problems with the picture quality that I came across, so I thought I'd explain how I've managed to fix them.

The TV is a 22" 1680x1050px LG M2294D and is labelled as a 'Digital TV Monitor'. The PC is an Acer Aspire Revo 3600 which has a dual core Intel Atom 330 processor with Nvidia Ion graphics.

Auto-adjusting backlight

Firstly was the problem with auto-contrast/auto-brightness. If this is enabled, the TV's processor will look at the picture signal--If it is mainly dark (black) the back-light turns down and if the signal is light (white) the back-light gets brighter. This could be a good feature when watching films or TV (though I'm not convinced) but it is very distracting when using your computer.

With this TV, you configure the picture by first selecting from some pre-defined modes (such as 'Standard', 'Vivid', 'Cinema') and then adjusting brightness contrast etc. to your taste. Apparently, some of these modes have the auto-contrast enabled and some to not. You can try different modes and also the picture reset function if you have this problem. I'm sure it varies from set to set but I set mine to 'Standard', then did a 'picture reset' which did the job.

Signal post-processing

Secondly the TV was trying to do some sort of processing to the video signal which made it quite blurred. I should clarify that I had the PC set to the exact same resolution as the TV's native resolution (1680x1050). It is very important to set this as you will never get a good picture otherwise.

The kind of problem I had was that the bright colours appeared to bleed horizontally for maybe 3-4 pixels. I didn't notice this in text, but did when I saw the Firefox icon against the light grey of my task bar panel. This is also supposed to be something desirable when watching TV or Films as I guess it blurs over the artifacts in video compression. If I had a high-def player I would probably still want to turn this off as I'd want to see the real signal. It was quite hard to turn this off actually on my TV. I had to go into the general settings and then 'Label inputs'. I had seen this feature before but never thought it would make a difference to the picture quality. There were a pre-defined list of labels for HDMI1, (such as 'Set-top box, Games console and PC) I chose PC. I then changed to a different input, then back to my newly labeled HDMI1-PC and it was good.

Nvidia drivers

Finally I found the Proprietary Nvidia graphics card drivers were trying to be clever. There is a protocol called EDID which allows the TV to tell the graphics cards about itself. This is useful as the graphics card can then set the correct resolution among other things. Another thing the TV says is that it is a TV and not a monitor. The problem is how the proprietary Nvidia drivers for Linux use this. A kind of unsharp mask is applied to this signal from then on which has the effect of showing small halo type marks around high contrast shapes such as text. This is a bug in my opinion as I don't see why a high definition television should require extra sharpening. Someone has thankfully come up with a work-around, which involves taking the description data from the TV, saving it, removing the part about the device being a TV, then telling the driver to use this customised EDID file. You can get a further description of how to do this from the project website along with tiny programs that capture and modify the data. After you have your modified EDID file, you need to add a reference to it in your /etc/X11/xorg.conf configuration file as an override.

Final result

The picture still has minor imperfections where it appears to be slightly sharpened. This is apparrent sometimes if you look closely at the edges of text. However, the picture is very much improved from what it was. I reconnected the PC through the TV's DVI socket and the picture has the same slight sharpening. If I find out any further improvements, I'll post them here.