My wife and kids left for New York yesterday morning to visit her side of the family, leaving me alone at the house until Sunday night. That leaves me with all times to do, well, stuff!
Last night I decided to convert my last remaining Vista Media Center to Windows 7 and also to add IDE>SATA adapters to the two PATA drives in my WHS box so I could finally be rid of that flaky Promise TX2 card. The WHS project went easily…drives were properly removed and then re-added with absolutely no issues. As an added bonus, I finally got YAC working so I could resume caller-ID services on that system. There were no drivers for the old USR external serial modem I was using for 2003 Server, so I had to go back to the Conextant RTAD PCI modem I used forever ago.
The HTPC ‘upgrade’ didn’t fare so well in the beginning, but I won’t get into any details there. The end result is all that matters and it is working now as far as the OS goes…I still have to get Media Center configured, but I plan on doing that today and tomorrow over VPN while I’m at work (in spare time, of course).
There is one thing in particular that I have to do with that system that I thought would make a good post here, so I hope it reaches those that encounter the same issue. I will explain…
First, I need to outline the problematic hardware combination that results in my issue:
- I have a 5-year old 50″ Samsung plasma HDTV
- I have an ATi HD2600Pro video card using a DVI>HDMI cable
- I have an Onkyo HT-SR800 7.1 channel receiver with HDMI passthrough from HTPC to plasma
Now, when we put this hardware together, we get an interesting combination and I’ll tell you why. The receiver must be the first device to power on and initialize, followed by the plasma and then finally the HTPC with the HD2600Pro. “Why?”, you ask? Because if the HD2600Pro is allowed to initialize before either of the other two, the EDID information will not get passed to the plasma and you get the dreaded “NO SIGNAL” displayed on the TV. For the longest time, the only way I could fix it was to do a sleep cycle on the HTPC so that it could reinitialize…I even had the PowerToggle action set on the front screen of my Harmony 880 for easy access so I could quickly cycle the HTPC and nothing else. Needless to say, it was annoying.
The problem I was having was sporadic during full power on since it took a while for the HTPC to come up, but occurred almost every time I brought my HTPC out of standby. I tried tweaking the delays in my Harmony configuration, but I just could not completely avoid it. The problem mostly had to do with the length of time it takes my Sammy HDTV to actually come on…by the time it is ready to receive a signal, the receiver is on and Media Center is already running (EDID information passed at least 10 seconds prior).
After I had had enough, I decided to go in search of a resolve and I finally found one…a small application consisting of only a few lines of source code called hdmiOn. hdmiOn essentially resets your monitor which causes EDID information to get resent and that is just what I needed. The only problem with that is, how do I run this little program if I have no display? That is where the powerful Windows 7 Task Scheduler came into play.
I will do my best to make this as uncomplicated as possible…just follow these steps, one-by-one, and you should be good to go!
- Download hdmiOn and place the EXE somewhere convenient.
- Open Task Scheduler by going to Administrative Tools and clicking on the shortcut.
- Opt to create a new task.
- Under the General tab, give your task a name, select to “Run whether user is logged on or not” and then Configure the task for Windows 7, Windows Server 2008 R2 (If you’re using Vista, the default setting should be fine).
- Under the Triggers tab, we want to create two triggers, the first is on startup (just in case), so click ‘New’ and configure it like the image below.
- After clicking ‘OK’, click ‘New’ again and we will configure a trigger based on an event. Set everything as it is below.
- Click ‘OK’ and you should have two triggers listed.
- Go to the ‘Actions’ tab and click ‘New’.
- Ensure that ‘Start a program’ is in the ‘Action’ field and then click ‘Browse…’ to select your hdmiOn executable.
- After clicking ‘OK’, your should see your new action in the display box.
- Click ‘OK’ once more to save and you’re done.
This scheduled task operates in two ways. The first is obvious – whenever you startup your system from an OFF state, the task will run at which point the scheduler kicks in and refreshes your monitor’s session, resending the EDID information. In most cases, this is not necessary, but will not hurt anything and adds an extra layer of ‘protection’ against this issue. The second occurs when waking the system from standby/hibernation (sleep) mode. When you wake a system, an event is triggered in the Windows Event Manager. The Log is System, the Source is the Power-Troubleshooter and the event’s ID is 1…look familiar? Whenever this event is produced, it kick starts that scheduled task and your monitor is refreshed so that your EDID information is resent and you get your display back. Carpe visum (or something like that)!
For those instances that your display does actually come up correctly, you will still notice the reset in your TV as it will go blank and then come back up. It only lasts a couple of seconds, so I believe the trad-off to be more than worth it. Since using this solution (at least 2 years now), I have not encountered a single problem of this nature.
The directions are for Windows 7, but I don’t think things would be any different under Vista. I used a small utility under Vista that would run any executable upon startup/resume called Hibernate Trigger that is much easier to setup, but also introduced the occasional glitch that is usually evident when introducing an application to run another application. I just think the scheduled task should be much more reliable, but feel free to use either one (for Win7 or Vista).
Hopefully, those of you that have suffered with this problem will suffer no more!
A question on another forum prompted me to update this post a bit. The same principal applies, but what if you want to execute an unrelated program when the system is sent to go into standby (sleep) mode? It’s very simple. Just follow the same instructions above for creating a scheduled task, but use the following criteria when configuring your trigger on an event:
- Log: System
- Source: Kernel-Power
- Event ID: 42
Then just configure your desired action and that’s it! When you put your system into standby, that event will trigger whatever action you wish…it can be nearly anything!
There appears to be a much less archaic (yet equally effective) tool provided by one of my reader’s comments. The direct link is here. Thanks!