Comment 0 for bug 1308105

Revision history for this message
Mario Limonciello (superm1) wrote : HDMI Handshake fails after TV powered off

I had an HTPC with Mythbuntu 12.04 installed and all included NVIDIA 185 driver package. Connected to the HTPC is an audio receiver and from the audio receiver a TV.

I had no problems on NVIDIA 185.

Since upgrading to 14.04 I have tried both the 304.117 driver as well as the 331.38 driver. Both have a new behavior that if the TV is power cycled it no longer detects a link.

When this happens I can find in the xorg log that there is an accompanying log item:

[ 39829.509] (II) NVIDIA(0): Setting mode "NULL"

Upon recommendations from the internet i've captured the EDID, tried to hardcode the metamodes in the xorg conf, and regenerated the xorg conf using nvxconfig to no avail. The problem persists.

Here is my original functional xorg.conf from 12.04 w/ NVIDIA 185:
==============================
Section "Screen"
 Identifier "Default Screen"
 DefaultDepth 24
EndSection

Section "Device"
 Identifier "Default Device"
 Driver "nvidia"
 Option "DPI" "100x100"
 Option "NoLogo" "1"
EndSection

Section "Extensions"
 Option "Composite" "Disable"
EndSection
==============================

Here is the xorg conf I've cluttered all the workarounds on the internet that still doesn't fix the problem:
==============================
Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier "Monitor0"
    VendorName "Unknown"
    ModelName "SONY AVAMP"
    HorizSync 31.0 - 82.0
    VertRefresh 57.0 - 63.0
    Option "DPMS"
EndSection

Section "Device"
    Identifier "Device0"
    Driver "nvidia"
    VendorName "NVIDIA Corporation"
    BoardName "GeForce 9500 GT"
        Option "DPI" "100x100"
        Option "NoLogo" "1"
        Option "ConnectedMonitor" "DFP-1"
        Option "CustomEDID" "DFP-1:/etc/X11/edid.bin"
        Option "UseEDID" "True"
EndSection

Section "Screen"
    Identifier "Screen0"
    Device "Device0"
    Monitor "Monitor0"
    DefaultDepth 24
    Option "Stereo" "0"
    Option "metamodes" "1920x1080 +0+0"
    Option "SLI" "Off"
    Option "MultiGPU" "Off"
    Option "BaseMosaic" "off"
    SubSection "Display"
        Depth 24
    EndSubSection
EndSection

Section "Extensions"
        Option "Composite" "Disable"
EndSection
==============================

I have discovered that this behavior can be worked around with a simple shell script:
==============================
#!/bin/sh
#Fix TV state when HDMI link is lost.
#By Mario Limonciello <email address hidden>

OUTPUT="HDMI-0"
BAD_MODE="1280x720"
GOOD_MODE="1920x1080"

for MODE in $BAD_MODE $GOOD_MODE; do
 DISPLAY=:0 xrandr --output $OUTPUT --mode $MODE
 sleep 2
done
==============================