Get NVidia GeForce 8400 GS working with Sharp Aquos LC-C3242U on Ubuntu

I recently plugged my 4 (5? 6?) year old desktop computer running Ubuntu 10.10 (Maverick Meerkat) into my Sharp Aquos TV. I have either an LC-C3242U or LC-C3742U, I can’t access the back of my TV to check due to how it’s mounted — the manual shows both model numbers. The Aquos has VGA input which makes it easy to hook up a PC. The PC has an NVidia GeForce 8400 GS.

The TV supports 720p (1360×768), 1024×768, 800×600 and 640×480. I was able to output the standard VGA resolutions easily but 720p was elusive.

Issues I was having

As I worked towards a functional solution the main problem I ended up facing was that the image would be displayed off of the screen when shown at1360x768. One solution to the problem is to use the NVidia overscanning options, but it makes the image fit at the cost of making it fuzzy. The real solution to getting the GeForce 8400 output to not be too loud is to configure it correctly, not do scaling afterwards. It also didn’t end up having to do with panning either, although I did run into cases where the screen would be panned to show the users whole thing

Install The Right NVidia Driver

My computer was still using Ubuntu 9.10, so I started doing a full upgrade to 10.10. Once the upgrade was complete, I followed these steps:

  1. I first downloaded the NVidia binary driver. I am using version 260.19.21.
  2. I then removed the default Nouveau driver with “sudo apt-get purge xserver-xorg-video-nouveau”
  3. After stopping GDM, I ran the NVIDIA binary driver installer with “sudo sh NVIDIA-Linux-x86-260.19.21.run”
  4. After a successful install, I rebooted

Configuring Xorg

If you are just setting up the NVidia for the first time, you will need to run “nvidia-xconfig” to initialize your xorg.conf file.

Next, use the gtf command to generate a modeline for your TV. You will use the resolution and refresh rate as parameters:

user@host:~$ gtf 1360 768 60

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

Gather a list of resolutions your TV supports. Edit your xorg.conf file (/etc/X11/xorg.conf) and add the Modeline to the “Monitor” section. Add

 Option         "UseEDID" "FALSE"

to the “Screen” section. EDID is a way that monitors and video cards are supposed to be able to talk to each other. Unfortunately the fact that you’re seeing this web page tells you that this doesn’t always work, at least on older machines.

Also add

Modes       "1368x768_60.00"

to the “Displays” sub-section, where that shown value is the resolution and refresh rate listed in the mode line.

Other Changes I Made

I dropped my default color depth from 24 to 16 – this computer isn’t that fast and I want to give it every advantage as it tries to play videos without skipping or tearing.

I also listed

 Modes       "1368x768_60.00" "1024x768" "800x600" "640x480"

in the “Display” sub-section. I got the 1368x768_60.00 from the Modeline listing, and decided to just hard code the other resolutions.

Your final xorg.conf file will look similar to this:

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 260.19.21  (buildmeister@builder103.nvidia.com)  Thu Nov  4 20:57:05 PDT 2010

Section "ServerLayout"
 Identifier     "Layout0"
 Screen      0  "Screen0" 0 0
 InputDevice    "Keyboard0" "CoreKeyboard"
 InputDevice    "Mouse0" "CorePointer"
 Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"
 # generated from default
 Identifier     "Mouse0"
 Driver         "mouse"
 Option         "Protocol" "auto"
 Option         "Device" "/dev/psaux"
 Option         "Emulate3Buttons" "no"
 Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
 # generated from default
 Identifier     "Keyboard0"
 Driver         "kbd"
EndSection

Section "Monitor"
 # HorizSync source: xconfig, VertRefresh source: xconfig
 Identifier     "Monitor0"
 VendorName     "Unknown"
 ModelName      "CRT-1"
 HorizSync       30.0 - 82.0
 VertRefresh     56.0 - 75.0
 Option         "DPMS"
 Modeline "1368x768_60.00"  85.86  1368 1440 1584 1800  768 769 772 795  -HSync +Vsync
EndSection

Section "Device"
 Identifier     "Device0"
 Driver         "nvidia"
 VendorName     "NVIDIA Corporation"
 BoardName      "GeForce 8400 GS"
 Option "NoLogo" "True"
EndSection

Section "Screen"
 Identifier     "Screen0"
 Device         "Device0"
 Monitor        "Monitor0"
 DefaultDepth    16
 Option         "UseEDID" "FALSE"
 SubSection     "Display"
 Depth       16
 Modes       "1368x768_60.00" "1024x768" "800x600" "640x480"
 EndSubSection
EndSection

End Result

One more reboot for good luck and we were finally running right. With the above configuration I was able to play Hulu videos full screen. Whee!

This entry was posted in Something Interesting. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *