Difference between revisions of "Nvidia-cards and no picture when box is on before the TV"

From MythTV Official Wiki
Jump to: navigation, search
(cleanup, remove first person, add analog information)
Line 1: Line 1:
 +
The current generation of nVidia cards (8000+) can cause problems with not enabling outputs if it does not detect a device on the port.  This can be particularly troublesome if you frequently restart the X server, for instance when shutting down your machine at night and using ACPI-Wakeup to wake it as needed.
  
I had following Problem:
+
=DIGITAL=
My new tv which i attached to my mythtv-box using hdmi showed a perfect picture, only if the screen was turned on BEFORE i switched on the mythtv-computer.
 
This was particularly annoying because i was using ACPI-Wakeup to wake up the machine automatically whenever a recording was to be done. So whenever i came home, and the machine had woken up, i had no picture on my telly...
 
This seems to be a quite common problem with some nvidia-cards and some tv-sets not talking to each other in exactly the same language. At least this is what i understood...:-)
 
  
Here's a short description of how i managed to fix the problem (with great help from #mythtv-de):
+
Digital interfaces (DVI/HDMI) can be fixed by forcing an archived copy of the TV's EDID into the driver on startup.  There are two methods of getting a copy of this data block.
  
 +
==Using 'nvidia-settings'==
 +
This method requires you have a mouse and keyboard attached to your frontend.
 +
# Run 'nvidia-settings' on the local X-Server
 +
# Click the entry corresponding to your TV (e.g. DFP-0)
 +
# Click 'Acquire EDID' and save the 'edid.bin' file someplace safe, for instance '/etc/X11/tv-edid.bin'
  
while seeing the desktop on your mythtv-box, start 'nvidia-settings'
+
==Using 'nvidia-xconfig'==
 +
This method can be run entirely from the command line, locally or remotely.
 +
# Run an X server with enough verbosity to print out the EDID block<br><code>startx -- -logverbose 6</code>
 +
# After the X-Server has finished initializing, close it
 +
# Find your log file, it will probably be in /var/log/Xorg.0.log
 +
# Extract the EDID block using nvidia-xconfig<br><code>nvidia-xconfig --extract-edids-from-log=/var/log/Xorg.0.log --extract-edids-output-file=/etc/X11/tv-edid.bin </code>
  
Go to the entry on the left representing your TV under 'GPU 0'. In my case this was 'DFP-0'.
+
==Applying EDID to config file==
 +
# Open your existing config file, usually in /etc/X11/xorg.conf
 +
# Find the 'Device' section for your video card.
 +
# Add a line to force the stored EDID<br><code>Option      "CustomEDID" "DFP-0:/etc/X11/edid.bin"</code>
 +
# Save and close the config file, and restart your X-Server
  
Here now you click on 'Acquire EDID', and save the edid.bin file to some safe place. I just copied it to /etc/X11/.
+
==Troubleshooting==
 +
If the above changes didn't work, below are some other lines you can try to put in the 'Device' section in your config file.<br>
 +
<code>
 +
Option        "ModeValidation" "NoDFPNativeResolutionCheck"<br>
 +
Option        "ExactModeTimingsDVI" "True"<br>
 +
Option        "UseDisplayDevice" "DFP-0"<br>
 +
Option        "ConnectedMonitor" "DFP-0"
 +
</code>
  
After closing 'nvidia-settings' again you open your /etc/X11/xorg.conf with your favourite editor and add this line to the 'device'-section:
+
=ANALOG=
  
    ''Option        "CustomEDID" "DFP-0:/etc/X11/edid.bin"''
+
Newer nVidia cards may show the console properly on a TV connected by S-Video or Composite, but will not output on those ports unless the TV is connected and on while X is started. EDID data is not sent over analog, so the above fix is not possible in this scenario.  Rebooting the machine will work on a frontend-only box, but is inconvenient.  Other options would be to SSH in to restart the X-Server, or running 'irexec', and making a script bound to a key on your remote to terminate the X-Server and restart it.
 
 
(Please edit this line to your needs!)
 
 
 
After a reboot things should again work as expected!
 
 
 
If not, here's some other things you could try and put into your device section:
 
 
 
    ''Option        "ModeValidation" "NoDFPNativeResolutionCheck"''
 
    ''Option        "ExactModeTimingsDVI" "True"''
 
    ''Option        "UseDisplayDevice" "DFP-0"''
 
    ''Option        "ConnectedMonitor" "DFP-0"''''
 

Revision as of 18:04, 23 May 2009

The current generation of nVidia cards (8000+) can cause problems with not enabling outputs if it does not detect a device on the port. This can be particularly troublesome if you frequently restart the X server, for instance when shutting down your machine at night and using ACPI-Wakeup to wake it as needed.

DIGITAL

Digital interfaces (DVI/HDMI) can be fixed by forcing an archived copy of the TV's EDID into the driver on startup. There are two methods of getting a copy of this data block.

Using 'nvidia-settings'

This method requires you have a mouse and keyboard attached to your frontend.

  1. Run 'nvidia-settings' on the local X-Server
  2. Click the entry corresponding to your TV (e.g. DFP-0)
  3. Click 'Acquire EDID' and save the 'edid.bin' file someplace safe, for instance '/etc/X11/tv-edid.bin'

Using 'nvidia-xconfig'

This method can be run entirely from the command line, locally or remotely.

  1. Run an X server with enough verbosity to print out the EDID block
    startx -- -logverbose 6
  2. After the X-Server has finished initializing, close it
  3. Find your log file, it will probably be in /var/log/Xorg.0.log
  4. Extract the EDID block using nvidia-xconfig
    nvidia-xconfig --extract-edids-from-log=/var/log/Xorg.0.log --extract-edids-output-file=/etc/X11/tv-edid.bin

Applying EDID to config file

  1. Open your existing config file, usually in /etc/X11/xorg.conf
  2. Find the 'Device' section for your video card.
  3. Add a line to force the stored EDID
    Option "CustomEDID" "DFP-0:/etc/X11/edid.bin"
  4. Save and close the config file, and restart your X-Server

Troubleshooting

If the above changes didn't work, below are some other lines you can try to put in the 'Device' section in your config file.
Option "ModeValidation" "NoDFPNativeResolutionCheck"
Option "ExactModeTimingsDVI" "True"
Option "UseDisplayDevice" "DFP-0"
Option "ConnectedMonitor" "DFP-0"

ANALOG

Newer nVidia cards may show the console properly on a TV connected by S-Video or Composite, but will not output on those ports unless the TV is connected and on while X is started. EDID data is not sent over analog, so the above fix is not possible in this scenario. Rebooting the machine will work on a frontend-only box, but is inconvenient. Other options would be to SSH in to restart the X-Server, or running 'irexec', and making a script bound to a key on your remote to terminate the X-Server and restart it.