hdmiOn – a solution to loss of DVI video EDID signal on HD TVs

The last few days I have been pulling my hair out over my new HD TV not working with my Home Theatre PC, specifically when switching from HDMI input to TV and back again. The HDMI signal is lost and can only be reset by either rebooting the PC or unplugging and replugging the HDMI cable.

This problem seems to affect ATI video cards only, with NVIDEA updating their drivers to fix this. ATI states that Catalyst drivers at version 7.3 or higher have fixed this problem, but that wasn’t the case for me. A Google search for ati hdmi edid shows a number of users with the same problem.

Hence, I present to you my solution; hdmiOn.
hdmiOn is a tiny program that turns the monitor off and on, which resends the EDID data bringing back the TV to life. Suggested usage is to assign the program to a function or hotkey.

Program was tested on my Sony BRAVIA KDL46X3100 with a ATI HD 2400 PRO.

Download hdmiOn.exe

As requested, source code is as follows.

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	// Turn off monitor
	SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2);
	// Turn on monitor
	SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) -1);

	return 0;
}

Tags: , , , , , , , , ,

  • thydzik

    hlkc,

    Windows can assign hotkeys to shortcuts, as posted above

    The easiest way to assign a shortcut key, is create a desktop shortcut to hdmiOn.exe, right click and select the shortcut’s properties. and you will see a textbox for short cut key, select it and press the shortcut key(s) you would like to assign it.

  • Finally

    Thanks for this fix. Running my signal out of the DVI on my graphics card into HDMI(46″ Sony Bravia X series), and lost the signal when changing sources. This little beuty works fine for vista64,and if you have trouble finding how to hotkey the program,drag it into your quick launch bar and use the Windows key+corresponding number ( 1 for first icon,2 for 2nd etc.)
    Also,if your using a keyboard such as a g15,make sure the switch isn’t set to “game” when trying to press your windows key, it locks it out=D

  • Pingback: Losing video output on 8500GT video card HDMI port - AVForums.com

  • Richard

    Can I suggest that everyone having this problem post their details with the

    ATI Catalyst Crew Feedback

    http://ati.supportcenteronline.com/ics/survey/survey.asp?deptID=894&surveyID=486&type=web

    then maybe we’ll get a fix in a driver release.
    Cheers.

  • Sasho

    thydzik,

    thank you very much for providing the only solution currently working for me fixing this annoying problem!
    Do you think there is a way to hook this program to somewhere in Windows to be activated every time the monitor is going from sleep to active state? Maybe something related to Windows power management…

    Thanks again!

  • thydzik

    Sasho,

    hdmiOn essentially turns the monitor off and then on.

    going from sleep to active state is exactly the same thing and should bring back the signal.

  • barbo

    Hello.

    I have the same problem as everyone here.
    I have a Ati HD3870 and Sony LCD 32w400 connected on. First I have used HDMI ON (it works, but not allways), but then i found a solution. I just switched (from left to right) my connectors on my graphic card i now it works fantastic. I don’t need no HDMI ON. When i switch on remote control HDMI input i get picture from my PC rightaway. I hope I helped.

  • illadakilla

    User Account Contol in Vista gets in the way of making this a smooth operation. The file is great I must say. To get around UAC and make this a one click and done thing….right click the file and set it to run as XP on the compatibility tab……works like a charm…..now what do i do with all of these composite cables I piled up over the years? Thanks for the fella that made the file….such a simple things to make my day better!!!! You fixed the one gripe I had with my system.

  • daryl

    This didn’t fix the problem I was having with my ATI hd3450 and losing the hdmi audio when waking. I did find a fix via the Catalyst Control Center. By flipping the display and then flipping it back, the audio returned. I was able to map this to a hotkey in CCC, but it would be great to be able to make it a program that could be scheduled to run on wakeup. Any suggestions?

  • midiman888

    Daryl:

    Try disabling the ATI external event, read below:
    http://www.avsforum.com/avs-vb/showpost.php?p=14338769&postcount=27

  • nick

    Awesome – exact same TV and AMD 780G with onboard ATI graphics with the same problem – had a hacky change resolution script as a workaround for a few days before I found this – much cleaner – solution! thanks heaps.

  • DJMM

    Fantastic – you have my admiration sir!

  • Paul

    It looks like this will be useful as I am seeing this kind of issue.
    Do you know if it is because windows has the wrong/no edid data that the display is not working?

    The reason I ask is that I am considering extending your solution. If you detect coming out of standby you could implement the fix repeatedly until you see the correct edid data (one that you register when you first run the app). This would negate the need to assign a hotkey.

    I will likely have a play around to see what is going on, but if you already know then it would save me some time :-)

    Cheers,
    Paul.

  • thydzik

    Paul,

    Not too sure, but believe that the edid data is only being sent once.

    My solution is really basic as it only sends the edid data on execution.

    I don’t know the solution, so go ahead and play around. I think we would all be happy if there was some automatic solution.

    Travis

  • sonny

    i have this problem when i try to use the hotkey that i set for hdmion… my wireless keyboard does not work when i try to wake up my computer, so i have no way to run the hdmion, is there anyway to fix this? thanks

  • SM

    Viore TVs

    I’ve had a huge issue w/my viore tv, and have found a way or two to mickey mouse it…

    1) Have your DVI connection connect up to your computer’s LCD, unhook the cable and carefully plug it directly into the TV (it appears if you even jiggle it a little bit, and don’t go straight in, it’s trying some kind of signal reset and will fail, you’ll have to start over)

    2) Get a DVI cable splitter you hook into the back of your system… bring it up w/your DVI monitor… when up, hook in your VIOREs DVI connection, you can then either have the signal on two monitors or unhook your LCD’s DVI connection

    3) Pray they come up w/a solution for this! Been trying to figure this out for years!

  • Frank

    Still not fixed by ATI 8.12 drivers

    http://forums.amd.com/game/messageview.cfm?catid=260&threadid=95721&STARTPAGE=2&FTVAR_FORUMVIEWTMP=Linear

    Thanks for the only working fix!!!

    Frank

    P.S. ATI can get off of its corporate A** and fix this simple but annoying problem.

  • Alan

    What a great fix, you are the man !!!!!!
    I am 3 months into this problem dealing with both ATI and Sanyo, each of them passing the book. ATI had changed the card for me, and I had been a picked up another 52 ” inch tv to prove the problem existed on both sets
    I had made up a dummy VGA plug on advice that it needed a primary signal to be maintained. Thanks for making the program as a download and not only providing the source code, I was able to download it, place it in the 1st position of the quick launch bar which assigns Win Key + 1 as hot key.
    Thanks Thanks Thanks

  • phreich

    Thanks so much — this had been driving me to distraction as well. Set up a hotkey using my logitech itouch keyboard driver to execute this program and all is better. Thanks for sharing this simple but elegant solution. I wish ATI had addressed it (there latest driver as of 1/1/2009 doesn’t).

  • Carlos

    Guys, what about HDMI itself? my htpc has just HDMI and VGA. If my PC in on standby modus and the tv off, and the pc comes backs at night for a schedule task, it does not receives any signal from the tv an will automatically deactivate the hdmi output, leaving just the vga as active. When I come back next day and i start my PC i have to tell the ATI Catalyst to rescan the the displays (of course turning first the tv on and whose’s showing just a blue screen), then clone the display and finally removing the vga to just leave the hdmi as primary( like it should be for a HTPC in a living room)…. quite annoying… does the HDMIon solves this issue if the tv is off and the HTPC comes up?

    Thx to all

  • Adam Goodchild

    I have got a similar solution. All i do is set a Profile selection in ATI CCC, and assign this to a Hotkey. This way when my monitor has lost the signal, i can just say press Alt+Z and i get it back

  • rapucha

    That’s really a great tool. Thanks a lot.
    Helped me with 40″ Samsung and integrated GeForce 7050

  • Nicoolas_Doe

    Gread job!

    This problem bothered me since I have installed my old ATI x800GT on my PC. I still do not understand why ATI cannot solve this bug.

    But I am still little unsatisfied, because when I use this great utility I have to wait cca 30sec. for refreshing the screen. Do you have similar experience or does it refresh in a moment?

  • thydzik

    Nicoolas,

    No I don’t have the problem of having to wait 30 seconds for refresh; generally it is about 1 seconds max. I think it may be your TV/monitor having a long start-up time after power off.

  • Nicoolas_Doe

    thydzik,

    thank you for your response. The display start-up time is normaly about 2 sec. It must be another problem.

    I think, there is something wrong with starting the hdmiOn application. I set up hotkey via CCC or via Vista build-in hotkey (created desktop shortcut and assigned hotkey via properties). When I use the hotkey when the display is on, the hdmiOn works perfectly, but when I turn the display off, tab the hotkey, I must wait cca 40 sec. until hdmiOn turn the display on. Maybe there is a problem with starting the hdmiOn with display off.

    I have new HP w2408h display.

    http://h10025.www1.hp.com/ewfrf/wc/document?lc=en&cc=us&docname=c01182751&dlc=en

  • Nicoolas_Doe

    The bottleneck is definitely with starting the application. I selected the hdmiOn icon and pressed Enter key and there is different reaction time with the display on and off.

    Any ideas?

  • thydzik

    Nicoolas,

    Sorry, no ideas.

    What hdmiOn does is turn the monitor off and on, there may be a problem trying to turn the monitor off if it is already off.

    But if the monitor is already powered off, you don’t need to use hdmiOn as you can turn the monitor on via moving the mouse/keyboard.

  • Nicoolas_Doe

    But my problem (that is the reason, why I am using hdmiOn) is, everytime I turn the display off, it wont start until the EDID signal is send again.

  • Henk

    I also have that problem, my screen went to a very low resolution, wenn i shut down my Amp.
    I tried your little programm, but it will not fix it.
    The only thing i can do is a full reboot for my MCE.

  • Lawson

    This is source code for a C# console application alternative (in case anyone is interested):
    using System;
    using System.Runtime.InteropServices;

    namespace CycleMonitor
    {
    class Program
    {
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
    private static extern IntPtr SendMessage(IntPtr hWnd, Int32 Msg, Int32 wParam, Int32 lParam);

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
    private static extern IntPtr GetForegroundWindow();

    private const int MONITOR_OFF = 2;
    private const int MONITOR_ON = -1;
    private const int WM_SYSCOMMAND = 274;
    private const int SC_MONITORPOWER = 61808;

    static void Main(string[] args)
    {
    // Turn off monitor
    SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);
    // Turn on monitor
    SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_ON);
    }
    }
    }

  • http://www.nope.nope.nope Fossicker

    hdmiOn.exe works a treat. I am very appreciative of this little app.
    I’ve got a PC running XP with a really old but working ATI FireGL DVI card. It’s connected to my Vizio VO37LF via DVI-HDMI cable (DVI out of the PC into HDMI on the LCD).
    Prior to hdmiOn, whenever I switched inputs on my Vizio VO37LF I would permanently lose signal to HDMI. I would have to try alt-f4 to restart the PC, or if that didn’t work I’d have to hard bounce the PC with the power button. The signal would come back as the PC booted.

    Now, I’ve got a hotkey set up so that whenever I’ve lost HDMI from my PC, I just press ctrl-alt-F9 to invoke hdmiOn.exe and the image comes back in less than a second.

    I had some trouble assigning a hot key to a shortcut pointing to hdmiOn.exe. I tried putting hdmiOn.exe in %systemroot% with a shorcut, I moved the shortcut around (desktop, toolbar) and finally ended up with this solution that works:

    1) plop hdmiOn.exe on the Desktop
    2) create a Shortcut
    3) set the hotkey
    4) verify the hotkey
    5) this is the /only/ way I could get the hotkey to actually work.
    6) to clean up the desktop a little bit, I was able to move hdmiOn.exe but the shortcut simply /MUST/ remain on the Desktop for my hotkey to work.
    7) how? after #4 above, move hdmiOn.exe to a location on C:
    8) take the new path to hdmiOn.exe and paste it into the shortcut on the desktop.
    9) move the shortcut to a corner so it’s out of the way
    10) the hotkey still works, but it all must be done in order.

    I have to tolerate a shortcut on my Desktop but that’s it.

    K

  • Richard

    Can anyone find a property that can be checked in the Widows or .NET API to check if the monitor is connected? Then a crude change could make the code loop and check the property every second or two to see if the screen is disconnected.

  • Ben

    I tried the suggestion of switching from one HDMI output on my graphics card to the other and that worked a treat!! Thanks for that suggestion however you were.
    I have an ATI HD3650 and SONY Bravia X 46″series.
    I guess one of the outputs is like a master or something??

  • KumbiaKid

    Great workaround! I had the problem with Vista Home Premium that every time I ran HDMION, either directly or from a shortcut, a new window was left open (minimised in the task bar if I ran from a shortcut). To get rid of that, I set up a 2 line batch file which I run from a shortcut. The first line is the full path to HDMION, the second line is “exit” (without the quotes). Now HDMION runs and completely disappears.

    I am in the process of submitting this problem to AMD/ATI. They have asked me to run a list of diags and attach the results to my submission. Everyone with this problem should do that. See Frank’s post above for the URL.

  • Alex

    This utility works like a charm with my X800XL and HP 2408 LCD via HDMI

  • daf123

    I have set up HDMION using a shortcut and hotkey. I have tested it and it works fine if I start up the TV first then the HTPC. However, if I start up the HTPC then the TV there’s no picture. If I then use the hotkey it reboots the HTPC!!!! I’ve tried different hotkeys CTRL-ALT-H, CTRL-ALT-M etc.

  • bs123

    I’m not sure if it was mentioned here….but turning off ati or amd external event utility service may solve a lot of these problems.

    it’s either ati external event utility service or amd external event utility service depending on what version driver.

    disable the service and reboot

  • http://none floepie

    Thanks for this fantastic little app. This problem has been driving me nuts and will definitely sway in favor of nVidia in the future.

    The suggestion by bs123 above to turn off that service didn’t work for me unfortunately, but may for others.

    Can anyone provide a new link for ATI feedback or support? The one above is not monitored any longer, and I can’t seem to find an equivalent feedback form on their site.

  • bs123

    Well I’m still suffering from this issue. It pretty much makes my htpc unusable. I’ve filled out form on ATI/AMDs’ site for technical support. Awaiting a reply.

    Here is the link for ati tech support.
    http://emailcustomercare.amd.com/

  • squalo

    Hello!

    Have a similar problem and that has been 2 years!

    LCD 40

    DVI – DVI no image
    VGA – VGA screen

    Unfortunately I have no HDMI input!

    Hope that soon there shooting …

    regards

    squalo

  • bs123

    Everyone with ati graphics with this problem please fill out this form.

    http://support.amd.com/us/kbarticles/Pages/CatalystCrewFeedback.aspx

    Thanx

  • Craig

    Great solution works a treat on my shuttle HTPC, but i am trying to use it without a keyboard attached and just using a Shuttle PN31 remote control which does not have ctrl + alt keys.

    Do you know if it is possible to use one of the remote keys as a hotkey without the ctrl + alt. I have tried but can’t assign one of the keys at the moment.

  • Jeff

    Works, but I cannot access shortcuts when Media Center (windows) is running. Unfortunately, rewriting this to just send the HDMI on message every few seconds doesn’t get me what I need (which is a way to always have the screen be on, but with out it turning off it is is already working fine).

  • David

    I’ve had similar problems connected a ATI Radeon 9600 series to my Toshiba 32WLT66 using a DVI cable.

    What I’ve found is that older drivers enable me to switch between my PC and my cable box, and the TV is recognised when I switch back.

    Specifically the latest drivers ver 9.3 do not work, with or without the ati external event service running.

    I’ve rolled my drivers back to ver 6.11, and everything works fine.

  • dXsL

    just got this link from Sony support in Denmark. BTW: excellent help i got from a guy called Jens at sony! I’ve been struggling with this problem for some months which *occasionally* happened with my Sony 40W3000, but being unable to reproduce it every time, I kind of gave up. Great tip! If this works, I’ll name my next son after you! :D

  • Dan

    Works a treat, thanks so much!!

  • amirn

    I’m having the same problem, using catalyst 8.11 with hd4850.
    has ATI fixed this problem with later drivers?

  • JC

    How can you make this run on the secondary monitor?

  • KumbiaKid

    I’m back again after a number of months of happy use of hdmion.exe. See my post above regarding a batch file and shortcut that allowed me to run hdmion.exe and close the cmmand window automatically. Since I installed Vista SP2, hdmion.exe doesn’t seem to return control to my batch file. When I run the batch file, either directly or from my shortcut, the cmd window sits there waiting. If I press CTRL-C, and respond “N” to the “Terminate batch job Y/N” prompt, the batch job exits like it used to. Any ideas why suddenly himion.exe seems to fail to return control to the batch job?

    The batch file consists of only 2 lines: The first is the path to hdmion.exe, the second is “exit”.

    Thanks,
    KumbiaKid

  • KumbiaKid

    P.S. I just re-read the above and realised that it might not be clear that when I run the batch job, hdmion.exe runs, then the batch job hangs before it executes the exit statement.