Windows resolution to lowest when no HDMI device detected

Asked by Roel Vliegen

This isn't really a question about Xibo system but it could be answered by another Xibo user who had this problem also in the past.

We have 2 Windows Xibo clients running on 2 fitPC's (http://www.fit-pc.com).
The system has an HDMI display port on which an Panasonic (don't know the exact type right now) LCD television is connected on HDMI port 1. Resolution used on the Windows machines is 1920*1080 pixels.

Televisions will be shutdown (standby) every evening at about 9PM. TV is also standby during weekends and vacation.
For system stability and resource clean-up I scheduled an restart every week on monday night at 1AM.

When the system is restarted the resolution will return to 640*480 pixels. I guess because no output device is detected over HDMI? (TV is in standby during reboot). Only way to get the system back in normal resolution is with an restart when the TV is on.

An simple solution could be rescheduling the reboot when the TV is on. But I would like an detection of an HDMI of something so when the TV is off during the reboot on occasion the proces is also correctly handled.

I know not really an Xibo question but I guess someone here had the same troubles before. So I gave it an try.

Question information

Language:
English Edit question
Status:
Answered
For:
Xibo Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Mike H (s-mike-s) said :
#1

If you know the time. send the reboot command in the layout? Schedule a layout at that time. Just an idea?

Revision history for this message
Roel Vliegen (r-vliegen) said :
#2

Hey Mike,

as said before "An simple solution could be rescheduling the reboot when the TV is on. But I would like an detection of an HDMI of something so when the TV is off during the reboot on occasion the proces is also correctly handled."

With the above I try to catch the exceptions like holidays and such when nobody is in house to power on the TV but when the holiday is over I am left with a incorrect resolution due to the scheduled restart.

So I prefer an solution where Windows detects an HDMI device. It think it should be possible to script because Windows itself can detect an output device and when it doesn't find one it leaves me with the lowest resolution possible.

But thanks for thinking with me.

Revision history for this message
Dan Garner (dangarner) said :
#3

If you could find a shell command to set the display resolution you could schedule in a layout at the same time as your reboot that ran the shell command. Not a native windows solution, but might serve as a workaround.

Revision history for this message
Roel Vliegen (r-vliegen) said :
#4

Thanks Dan for your input.
That's exactly what I thought when I run into this.
Then I scripted it a couple of things together to come to an solution I thought would work.

It consists of 2 scripts 'check_res.vbs' and 'adjust_res.bat', a program called 'MultiRes' (Google it), 'pskill' (www.sysinternals.com) and the little Windows resource kit program 'sleep.exe'

check_res.vbs:
Set objWMIService = GetObject("Winmgmts:\\.\root\cimv2")
Set oShell = WScript.CreateObject("WScript.shell")
 Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor where DeviceID = 'DesktopMonitor1'",,0)
 For Each objItem in colItems
 intHorizontal = objItem.ScreenWidth
 intVertical = objItem.ScreenHeight
 Next

if not ((intHorizontal = 1920) and (intVertical = 1080)) then
'msgbox intHorizontal & " * " & intVertical
oShell.run "adjust_res.bat"
end if

adjust_res.bat:
multires.exe /1:1920,1080,32,60
pskill -t \\xibo-clnt01 -u srl\xibo-user -p x1B0u53R XiboClient.exe
sleep 10
"C:\Program Files\Xibo Player\XiboClient.exe"
sleep 3
exit

Scheduling the check_res.vbs script every 10 minutes should correct the resolution when wrong.
Although it was a nice idea it doesn't work because of the fact that no resolutions are available except of 640*480.
Only a reboot with the TV on makes the right resolution appear.

So I thought of changing the script so when detecting a wrong resolution triggering a reboot but this wouldn't be efficient because the PC is rebooting all the time when the TV is in standby for a couple of hours during night.

If someone has another solution I am thrilled to hear it.

Revision history for this message
Christoph Pitteloud (christoph-informapitt) said :
#5

Hello Roel,

I had a similar issue with Display Port, wich is HDMI's cousin.

The only and easier way to get this working for us was using VGA connector.

Actually, when the monitor goes sleeping or powered down was like disconnecting and disabling video controller allowing dynamic resolution....

Maybe, have a see at ATEN's products like VC080 or VC010 wich are cheap and reliable solutions.

Regards

Revision history for this message
James Rankin (jpmes) said :
#6

I have a similar problem where I have Xibo Client running on a Windows 8 PC in a Church centre. The PC has AMD integrated graphics with HDMI, VGA and DVI connections but only an HDMI display physically connected. This PC starts up every morning and starts Xibo Client. If the HDMI connected TV is not on (horizontal resolution 1920) then the PC reverts to a VGA setting (1600 horizontal resolution) and when the TV is later turned on it is only using part of the screen.

To fix it I have this simple (but effective!) Powershell script running every 5 minutes which only lets Xibo run when the right resolution display is "available". I tested this by running a similar script with a log file and could see the videoconbtroller resolution change once the TV was turned on. Once the TV is turned on the Xibo Client start up within 5 minutes and shows the correct resolution. While it is waiting to start the PC has a desktop wallpaper showing the centre name. It may be that this works for me because my graphics hardware does report a change when the HDMI is turned on and may or may not work for the system above. It may be useful for others.

$sw = Get-WmiObject win32_videocontroller
$ProcessActive = Get-Process XiboClient -ErrorAction SilentlyContinue
$XC="C:\Program Files (x86)\Xibo Player\XiboClient.exe"
if ($sw.CurrentHorizontalResolution -lt 1920 )
{
    if($ProcessActive -ne $null)
    {
     stop-process -processname XiboClient
    }
}
else
{
    if($ProcessActive -eq $null)
    {
     start-process $XC
    }
}

Can you help with this problem?

Provide an answer of your own, or ask Roel Vliegen for more information if necessary.

To post a message you must log in.