I am pasting the instructions in here for searchs, but they will be hard to read. I suggest downloading the attachment. It's just an openoffice file gzipped.
Most of these instructions were gathered from http://www.nvnews.net/vbulletin/showthread.php?t=118701
After tons of research on the problem, everything was pointing to the TV giving bad information to X. X will query a monitor for the available resolutions, refresh rates, and placement of the screen. From the articles I read, most TV's use over-scanning on everything but a VGA input which is the reason for the picture getting cut off.
The only thing specific to the nvidia card are a couple of options needed in xorg.conf. I am sure there are equivalent options for ATI and others, so if you know them please post them so we can have everything here.
Here are the needed nvidia options and there placements, but do not use them yet. Just write them down.
For the Monitor section:
Option "ExactModeTimingsDVI" "TRUE"
For the Device section:
Option "UseEDID" "FALSE"
We first have to start by using a command line tty and stopping gnome, so save everything that is open and hopefully you have a laptop to read the rest of this post off of. If not print it out.
Hit ctl+alt+F2 to switch to tty2. Log in and
sudo /etc/init.d/gdm stop
This will stop gnome and shutdown the GUI on tty7.
Next type
X -verbose 6 > ~/xlog.txt 2>&1
This will launch X and you will see a gray screen. All output of X will be in the file xlog.txt located in your home(~) directory. You will need information out of this file to continue, so get out of the gray screen and start gdm back up.
ctl+atl+BACKSPACE - will kill the gray screen
sudo /etc/init.d/gdm start – will start gnome again
Once you are back inside gnome open gedit and browse to your home directory to open xlog.txt
Within this file we will need the Horizontal Sync and Vertical refresh rates of your TV. Find the section of the file that looks similar to :
(II) NVIDIA(0): Frequency information for Philips FTV (DFP-0): <-- of-course this will be your TV model
(II) NVIDIA(0): HorizSync : 15.000-50.000 kHz
(II) NVIDIA(0): VertRefresh : 48.000-62.000 Hz
(II) NVIDIA(0): (HorizSync from EDID)
(II) NVIDIA(0): (VertRefresh from EDID)
Write down the HorizSync and VertRefresh values.
Now we need to find some good working resolutions to create some modelines.
Locate the section that is similar to below. Take note that this section states it is validating modes.
(II) NVIDIA(0): --- Building ModePool for Philips FTV (DFP-0) ---
(II) NVIDIA(0): Validating Mode "1920x1080":
(II) NVIDIA(0): 1920 x 1080 @ 50 Hz
(II) NVIDIA(0): For use as DFP backend.
(II) NVIDIA(0): Mode Source: EDID
(II) NVIDIA(0): Pixel Clock : 74.25 MHz
(II) NVIDIA(0): HRes, HSyncStart : 1920, 2448
(II) NVIDIA(0): HSyncEnd, HTotal : 2492, 2640
(II) NVIDIA(0): VRes, VSyncStart : 1080, 1084
(II) NVIDIA(0): VSyncEnd, VTotal : 1094, 1124
(II) NVIDIA(0): H/V Polarity : +/+
(II) NVIDIA(0): Extra : Interlace
(II) NVIDIA(0): Mode is valid.
(II) NVIDIA(0):
(II) NVIDIA(0): Validating Mode "1024x768":
(II) NVIDIA(0): 1024 x 768 @ 60 Hz
(II) NVIDIA(0): For use as DFP backend.
(II) NVIDIA(0): Mode Source: EDID
(II) NVIDIA(0): Pixel Clock : 65.00 MHz
(II) NVIDIA(0): HRes, HSyncStart : 1024, 1048
(II) NVIDIA(0): HSyncEnd, HTotal : 1184, 1344
(II) NVIDIA(0): VRes, VSyncStart : 768, 771
(II) NVIDIA(0): VSyncEnd, VTotal : 777, 806
(II) NVIDIA(0): H/V Polarity : -/-
(II) NVIDIA(0): Mode is valid.
(II) NVIDIA(0):
(II) NVIDIA(0): Validating Mode "1920x1080":
(II) NVIDIA(0): 1920 x 1080 @ 60 Hz
(II) NVIDIA(0): For use as DFP backend.
(II) NVIDIA(0): Mode Source: EDID
(II) NVIDIA(0): Pixel Clock : 74.25 MHz
(II) NVIDIA(0): HRes, HSyncStart : 1920, 2008
(II) NVIDIA(0): HSyncEnd, HTotal : 2052, 2200
(II) NVIDIA(0): VRes, VSyncStart : 1080, 1084
(II) NVIDIA(0): VSyncEnd, VTotal : 1094, 1124
(II) NVIDIA(0): H/V Polarity : +/+
(II) NVIDIA(0): Extra : Interlace
(II)NVIDIA(0): Mode is valid.
Now we need to make some modelines, so grab a low resolution one like:
(II) NVIDIA(0): Validating Mode "720x480":
(II) NVIDIA(0): 720 x 480 @ 60 Hz
(II) NVIDIA(0): For use as DFP backend.
(II) NVIDIA(0): Mode Source: EDID
(II) NVIDIA(0): Pixel Clock : 27.00 MHz
(II) NVIDIA(0): HRes, HSyncStart : 720, 736
(II) NVIDIA(0): HSyncEnd, HTotal : 798, 858
(II) NVIDIA(0): VRes, VSyncStart : 480, 483
(II) NVIDIA(0): VSyncEnd, VTotal : 489, 525
(II) NVIDIA(0): H/V Polarity : -/-
(II) NVIDIA(0): Mode is valid.
Making sure it is marked as valid, and a high resolution one like:
(II) NVIDIA(0): Validating Mode "1920x1080":
(II) NVIDIA(0): 1920 x 1080 @ 60 Hz
(II) NVIDIA(0): For use as DFP backend.
(II) NVIDIA(0): Mode Source: EDID
(II) NVIDIA(0): Pixel Clock : 74.25 MHz
(II) NVIDIA(0): HRes, HSyncStart : 1920, 2008
(II) NVIDIA(0): HSyncEnd, HTotal : 2052, 2200
(II) NVIDIA(0): VRes, VSyncStart : 1080, 1084
(II) NVIDIA(0): VSyncEnd, VTotal : 1094, 1124
(II) NVIDIA(0): H/V Polarity : +/+
(II) NVIDIA(0): Extra : Interlace
(II) NVIDIA(0): Mode is valid.
My TV had a couple of different valid 1920 x 1080 modes. I ended up choosing the one which will run at 60Hz.
Now to make the modelines just read down the mode from top to bottom starting at Pixel Clock. In the parenthesis you can really put what you want. That will be the identifier used in your Screens sections, but for now just follow below.
modeline “720x480” 27.00 720 736 798 858 480 483 489 525 -hsync -vsync
modeline “1920x1080” 74.25 1920 2008 2052 2200 1080 1084 1094 1124 +hsync +vsync Interlace
Notice the H/V polarity usage for hsync and vsync.
Now we have all the info we need to start messing with our xorg.conf file, but first make a backup of your current file. In a terminal
sudo cp -v /etc/X11/xorg.conf /etc/X11/xorg.conf.BUP
So lets put together everything we have. Open gedit with root permissions by pressing alt+F2 and typing
gksudo gedit /etc/X11/xorg.conf
Below is my very simple xorg.conf file with the added Options, HorizSync, VertRefresh, and modelines.
Section "Monitor"
Identifier "PhilipsHDTV"
Option "ExactModeTimingsDVI" "TRUE"
# Added
HorizSync 15-50
# Added
VertRefresh 48-62
# Added
# Modelines we created earlier
ModeLine "720x480" 27.00 720 736 798 858 480 483 489 525 -hsync -vsync
#KEY Modeline "MODENAME" FF H1 H2 H3 H4 V1 V2 V3 V4 FLAGS
ModeLine "1920x1080" 74.25 1920 2008 2052 2200 1080 1084 1094 1124 +hsync +vsync Interlace
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "PhilipsHDTV"
Device "gForce8600GT"
SubSection "Display"
# Added subsection
Depth 24
Modes "720x480"
# Identifier must match modeline name from above!!
EndSubSection
EndSection
Section "Module"
Load "glx"
EndSection
Section "Device"
Identifier "gForce8600GT"
Driver "nvidia"
Option "NoLogo" "FALSE"
Option "UseEDID" "FALSE"
# Added
EndSection
In the Monitor section we added:
Options “ExactModeTimingsDVI” “True”
This forces X to read the timings from the modeline, not the TV.
HorizSync with the numbers you wrote down from earlier. You do not need to include the kHz or Hz
VertRefresh again, numbers from earlier
modelines we created earlier. Be sure to copy the KEY above the “1920x1080” for later! Position the FF, H's, and V's like you see above.
In the Screen section we add the SubSection “Display” with Depth and the lowest modeline we created for Modes. Remember that the Modes must match exactly what you have in your modeline as the MODENAME!!!
In the Device section we added:
Option “UseEDID” “FALSE”
This tells the video card not to pull any information from the TV allowing us to manipulate the resolution and position of X.
Save your new xorg.conf file.
Go to tty2 again and stop gdm
ctl+alt+F2
sudo /etc/init.d/gdm stop
Now hopefully you used the lowest modeline, so you will notice poor resolution for the gray X screen by issuing the most complicated *nix command ever written
X
If you see an abnormally large X on the screen, or black bars on the side of the gray window that is a good sign. This means you video card is 1. using the modeline you enter. 2. ignoring what your TV is telling it.
So Kill X
ctl+alt+BACKSPACE
Stay in tty2 and lets change your resolution to the highest one using nano:
sudo nano -w /etc/X11/xorg.conf
Be sure to use the -w here!!
Once you are in the editor find the modelines you created by using the down arrow or page down key. Take note of what you named the highest valid resolution and continue to the Screen section. Change the Modes option in the SubSection “Display” to match the modeline “MODNAME” from above. Mine was “1920x1080”. Once that is changed:
ctl+x
answer yes to save
X
This time you should be at the correct resolution with the over-scanned gray X screen.
It's time to correct the problem if you are still with me. Kill X and go back into nano
ctl+alt+BACKSPACE
sudo nano -w /etc/X11/xorg.conf
At this point, I made the resolution as whack as I could to get the screen positioned correctly, so on your high resolution modeline change the H1 and V1 values to something crazy like:
#orig ModeLine "1920x1080" 74.25 1920 2008 2052 2200 1080 1084 1094 1124 +hsync +vsync Interlace
#KEY Modeline "MODENAME" FF H1 H2 H3 H4 V1 V2 V3 V4 FLAGS
ModeLine "1920x1080" 74.25 1800 2008 2052 2200 900 1084 1094 1124 +hsync +vsync Interlace
ctl+x
answer yes to save
X
Now you should see a shorter and very off center gray screen. All that's left to do now is adjust the screen positioning and change the H1 and V1 to the highest values we can to fill the screen.
I am no longer going to tell you how to get in and out of nano or start and kill X so take notes if you need them.
To move the screen to the right, simply reduce the H2 and H3 values using the same amount for each. For example, if you adjust H2 -50 make the same adjustment for H3:
#orig ModeLine "1920x1080" 74.25 1920 2008 2052 2200 1080 1084 1094 1124 +hsync +vsync Interlace
#KEY Modeline "MODENAME" FF H1 H2 H3 H4 V1 V2 V3 V4 FLAGS
ModeLine "1920x1080" 74.25 1800 1958 2002 2200 900 1084 1094 1124 +hsync +vsync Interlace
Basically, just keep changing the numbers, saving the config, and starting and killing X until you like where the left edge of the screen is.
To move the screen down, do the same thing for the V2 and V3 settings. Remember that a change to one means an equal change to the other.
#orig ModeLine "1920x1080" 74.25 1920 2008 2052 2200 1080 1084 1094 1124 +hsync +vsync Interlace
#KEY Modeline "MODENAME" FF H1 H2 H3 H4 V1 V2 V3 V4 FLAGS
ModeLine "1920x1080" 74.25 1800 1958 2002 2200 900 1034 1044 1124 +hsync +vsync Interlace
Once the top and left edge are in place, adjust the H1 and V1 values to fit the rest of the screen. My modeline ended up looking like this:
#orig ModeLine "1920x1080" 74.25 1920 2008 2052 2200 1080 1084 1094 1124 +hsync +vsync Interlace
ModeLine "1920x1080_mod" 74.25 1820 1953 1997 2200 1000 1045 1055 1124 +hsync +vsync Interlace
So for my TV to display correctly, I lose 100 Horizontal pixels and 80 Vertical pixels.
After you are happy with everything:
sudo /etc/init.d/gdm start
And you should be looking at the login screen and actually seeing the time on the bottom right!
Bookmarks