Nvidia HDTV

This document explains how to get the Nvidia binary driver working with a high-definition television. Generally speaking this doesn't work out of the box, so there will be steps outlined here to help.

There are two distinct ways to do this, dependent on your television providing EDID information. Almost all configurations require a valid Modeline for the television.

EDID-capable televisions
(Rather than duplicate this information, the following has been used from MythTV, with some changes and Nvidia-specific information.)

Most modern monitors/TVs can be probed for EDID data concerning their capabilities and requirements. EDID stands for "Extended Display Identification Data".

EDID data are recorded in PROM (programmable read-only memory) or EEPROM (electrically erasable PROM) within the monitor/TV itself. The modelines recorded in the EDID data, are those recommended by the manufacturer (and as such, usually give great results (although, occasionally, the manufacturer supplied data is incorrect)).

EDID modelines are recorded for many different monitor/TV screen resolutions.

EDID information includes manufacturer name, product type, phosphor or filter type, timings supported by the display, display size, luminance data and (for digital displays only) pixel mapping data.

On Linux the EDID modelines can be found by either using get-edid from the read-edid package, or running the command:

startx -- -logverbose 6

from the console. The EDID information is written to the file /var/log/Xorg.0.log (or /var/log/XFree86.0.log).

As an example: Some of the EDID data for a Philips 170S 17" TFT.

EDID Version                : 1.3 Manufacturer                : PHL Monitor Name                : Philips 170S Product ID                  : 2078 32-bit Serial Number        : 693129 Serial Number String        :  CF  693129 Manufacture Date            : 2003, week 32 DPMS Capabilities           : Standby Suspend Active Off Prefer first detailed timing : Yes Supports GTF                : No Maximum Image Size           : 340mm x 270mm Valid HSync Range           : 30.0 kHz - 82.0 kHz Valid VRefresh Range        : 56 Hz - 76 Hz EDID maximum pixel clock     : 140.0 MHz

Validating Mode "1280x1024": 1280 x 1024 @ 60 Hz  Mode Source: EDID Pixel Clock     : 108.00 MHz HRes, HSyncStart : 1280, 1328 HSyncEnd, HTotal : 1440, 1688 VRes, VSyncStart : 1024, 1025 VSyncEnd, VTotal : 1028, 1066 H/V Polarity    : +/+ Mode is valid. Validating Mode "1280x960": 1280 x 960 @ 60 Hz  Mode Source: EDID Pixel Clock     : 108.00 MHz HRes, HSyncStart : 1280, 1376 HSyncEnd, HTotal : 1488, 1800 VRes, VSyncStart : 960,  961 VSyncEnd, VTotal : 964, 1000 H/V Polarity    : +/+ Mode is valid. Validating Mode "1152x864": 1152 x 864 @ 70 Hz  Mode Source: EDID Pixel Clock     : 96.76 MHz HRes, HSyncStart : 1152, 1224 HSyncEnd, HTotal : 1344, 1536 VRes, VSyncStart : 864,  865 VSyncEnd, VTotal : 868,  900 H/V Polarity    : -/+ Mode is valid. and many more such.

The modelines obtained from the three results above, are:

ModeLine "1280x1024_60.00" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync

ModeLine "1280x960_60.00" 108.0  1280 1376 1488 1800 960  961  964  1000 +hsync +vsync

ModeLine "1152x864_70.00"  96.76 1152 1224 1344 1536 864  865  868  900  -hsync +vsync

The term in the quotes, e.g., 1280x1024_60.00, is just a user defined name for the mode.

Once the modeline has been obtained, you need to set up your Xorg.conf (the following is only the relevant sections, using the 1280x960 example above):

Section "Monitor" Identifier  "Monitor0" VendorName  "Make" ModelName   "Model" ModeLine "1280x960_60.00" 108.0  1280 1376 1488 1800 960  961  964  1000 +hsync +vsync EndSection Section "Device" Identifier "Card0" Driver     "nvidia" VendorName "nVidia Corporation" BoardName  "Unknown Board" BusID      "PCI:1:0:0" EndSection Section "Screen" Identifier "Screen0" Device    "Card0" Monitor   "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth  24 Modes "1280x960_60.00" EndSubSection EndSection

Non-EDID-capable televisions
If the Nvidia driver is reporting that there is no EDID information similar to below:

(WW) NVIDIA(GPU-0): Unable to read EDID for display device DFP-0

then modelines will need to be generated manually.

Method 1

First off, you'll need the manual for the TV. In the manual, it will list all modes the TV supports (a lot of manuals are available online at the manufacturers' respective website.) For example, a certain model of Toshiba TV doesn't report EDID and lists these modes in its manual:

640x480 @ 60 Hz 848x480 @ 60 Hz 800x600 @ 60 Hz 1024x768 @ 60 Hz 1280x720 @ 60 Hz 1280x768 @ 60 Hz 1360x768 @ 60 Hz

With this, we can generate new modelines using the gtf command. As an example, to generate a modeline for 1360x768 @ 60 Hz:

will yield:

Modeline "1360x768_60.00" 84.72  1360 1424 1568 1776  768 769 772 795  -HSync +Vsync
 * 1) 1360x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 84.72 MHz

Method 2

This method is if you dual-boot Windows. If you have Windows installed and have found a resolution that works correctly, you can use the timings Windows is using and generate your own Modeline. To do this, install PowerStrip to get the timings. You will need the following:


 * Horizontal Front Porch
 * Vertical Front Porch
 * Horizontal Back Porch
 * Vertical Back Porch
 * Horizontal Front Active
 * Vertical Front Active
 * Horizontal Scan Width
 * Vertical Scan Width
 * Horizontal Sync Polarity
 * Vertical Sync Polarity
 * Pixel Clock

Consult the PowerStrip documentation for the location of these timings.

Once you have this information, it's fairly simple to create your own Modeline. A Modeline's format is like this:

Modeline "identifier" &lt;Pixel Clock&gt; &lt;H1&gt; &lt;H2&gt; &lt;H3&gt; &lt;H4&gt; &lt;V1&gt; &lt;V2&gt; &lt;V3&gt; &lt;V4&gt; &lt;HorizontalPolarity&gt; &lt;VerticalPolarity&gt;

This has been put into a table for easy reference.

Using this format, generate a new Modeline for your TV.

Finishing up

With the above information from Method 1 or 2, you'll need to set up Xorg.conf slightly differently:

Section "Monitor" Identifier  "Monitor0" VendorName  "Toshiba" ModelName   "42HP66" # 1360x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 84.72 MHz Modeline "1360x768_60.00" 84.72  1360 1424 1568 1776  768 769 772 795  -HSync +Vsync EndSection Section "Device" Identifier "Card0" Driver     "nvidia" VendorName "nVidia Corporation" BoardName  "Unknown Board" BusID      "PCI:1:0:0" Option     "UseEDID" "false" Option     "ModeValidation" "NoDFPNativeResolutionCheck,NoVirtualSizeCheck,NoMaxPClkCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoWidthAlignmentCheck,NoExtendedGpuCapabilitiesCheck" EndSection Section "Screen" Identifier "Screen0" Device    "Card0" Monitor   "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth  24 Modes "1360x768_60.00" EndSubSection EndSection

Overscanning/underscanning
If you are having a problem with overscanning or underscanning, there are a few things to check.


 * Check to see if there's a way to disable overscan/underscan from the PC input on the TV. On the Toshiba and most Samsung displays there are.
 * Sometimes different resolutions yield different results: as an example, 1280x768 was perfect and 1280x720 underscanned on one particular model of TV.