Using Windows As A Signage Platform
Guest Contributor, Bryan Crotaz
I was chief architect of a Windows based signage player platform (Inspired Signage) from the late 1990’s until 2010. I’ve learned a lot in that time, and I wanted to write something to help all those companies doing it today who perhaps don’t have 12+ years of painful experience behind them.
I see too many examples on my travels of BSODs (Blue Screens of Death), pop up windows, windows desktops, taskbars and mouse cursors, when what I should be seeing is beautiful content. Windows is derided as a platform for exactly these issues, none of which are usually the fault of Windows itself.
So here are some easy things you can do to avoid them.
- Test your hardware and OS image, ship it, don’t change it. Apart from physical hardware failure, every BSOD I’ve ever seen is a driver bug. Errors in application software cannot cause a BSOD. Test your players on the shelf for at least a week before shipping. If you have time to test for a month, do so. Set up a mains timer to switch the power on and off several times an hour so that you know it copes with power failure on site. This also puts it through a frequent boot sequence. Once it’s shipped, DON’T upgrade the drivers in the field except to fix a bug that you’re experiencing IN THE FIELD. If they worked last year, then they’ll work next year
- Windows Update. Turn it off. Yes, it’s there for security updates, to stop you getting worms etc. We had several thousand Inspired Signage players in the field and not a single one got a virus. Why? We had a firewall to stop unsolicited stuff getting in, and there wasn’t a user opening dodgy emails or webpages. If you really have to have it turned on, minimise what it can do to only take security updates and not software updates like service packs
- Windows Firewall. Turn it on. Set it up to ONLY allow traffic on the ports you use to update content and remotely manage the player. Minimise the incoming ports. If you can put your players on a VPN or VLAN so that only the management system can get an IP route to them, even better. If not, restrict incoming ports by IP address so that only your NOC can access them
- Anti Virus. Choose carefully. If possible, don’t install anti virus software – it just gets in the way. Use your firewalling (see above) to stop anything getting to your machine in the first place. 99% of the Inspired players in the field had no anti virus, and never needed it. If you do have to put one on (corporate IT rules are the usual reason), then make sure you choose an enterprise one which notifies you by email etc if it has a problem (like its license has expired), and DOES NOT pop up a window for a user. Remember, there isn’t a keyboard and mouse on this box
- The biggie. Don’t use Windows Explorer. I don’t mean Internet Explorer, I mean Explorer. To the uninitiated, that’s your desktop and Start Bar. Too many installations use the auto run functions of Explorer to start their software. What’s wrong with this? Well… it’s all too easy to have the Windows task bar pop up on top of your content, and if your software ever crashes, you see the Windows desktop, rather than a black screen
- Set your software to run as the shell. Google it – all you have to do is set a registry key – you can do this with any software. That means you’re responsible for launching all your apps. So don’t have multiple applications: Launch your graphics renderer application as the shell, and have any other apps (e.g. watchdog, or reporting) run as services. This way they have no GUI and *cannot* appear on screen
- Turn off the mouse cursor. Please! Most of the time, if you have no mouse plugged in, you won’t get a mouse cursor. Sometimes, Windows forgets and plops it up. So just set the cursor on your main form to null. Then you can’t get caught out. Especially if you have an LED screen – I’ve seen too many 8” mouse cursors!
- Software crashes. There’s really only one reason why Windows applications crash and are shut down by Windows. It’s due to an unhandled exception in a thread. This is one that only the developers can fix. Whenever you start a thread, wrap the inside of the main loop in an exception handler. I mean when you first write it. Before you do anything else! Have that exception handler log the error and call stack over the internet to your development bug tracking system (you do have an automated in the field bug tracking system?). Aspect Oriented programming can really help here (e.g. PostSharp) – if you need help setting up such a system, Silver Curve can advise you or help you build one, Ed
Hope that helps – everyone from resellers to integrators to manufacturers should be able to get something useful from this (if they didn’t know it already!).
Have a good and BSOD free 2012!
December 29th, 2011 at 11:41 @528
Well, I always make this comment when I do an introduction to a client:
The “cousin factor” will not be tolerated if we are to be involved in the project.
Note that “not tolerated” is quite a “big word” when doing a presentation or an introduction to a client, but I want to make sure the client understands the gravity and stupidity of using their “cousin” to build the PCs OS.
Now, to all the “cousins” of the world, READ carefuly above.
February 1st, 2012 at 14:15 @635
Good sound advice there Bryan. I thought Luis’s comment “cousin factor” was a fun way of describing this issue! Regards from ICE AV Global
February 8th, 2012 at 17:15 @760
Or – alternatively – use a Mac.
Sure, you should still turn off automatic system updates, but the driver base is phenomenally stable because the platform isn’t afflicted by “the tyranny of choice” of a thousand and one different drivers and you tend not to get issues in which one vendor’s H.264 is incompatible with another manufacturers’ H.264.
There’s also the fact that even corporate Windows PCs can vary their “parts bin” over the lifecycle of a rollout: it’s all very well creating a stable image, but not if HP, Dell or whoever arbitrarily replace an audio chipset or some other “commoditised” component which is why corporates that roll out 20,000 to 50,000 seats of a given manufacturer’s hardware can get into mind-numbing levels of detail in terms of “stable specifications” (experience of a previous life in a galaxy far, far away).
In that respect, products at the premium end of the market – like HP’s workstation class machines, Macs in general or niche manufacturers – tend to be better: they’re not so obsessed with shaving tenths of a cent of a given component because they’re not making twenty million mainstream units every quarter.
And the “cousin factor” is real and phenomenally annoying: just because you know how to screw some bits into a beige case, it doesn’t make you Steve Wozniak. There’s a whole load of “hardening” that goes into building reliable infrastructures which can include having a real understanding of the Windows Registry (one of the most misbegotten concepts in the history of computing).
That’s another reason to pick a Mac-based digital signage solution or a Mac to run WIndows via Boot Camp (I know several companies who do this to run things like CoolSign): a “cousin” can’t build a Mac.
April 26th, 2012 at 15:38 @693
The above advice is all very sound, and I fully agree that you can build a Windows based signage platfrom with much higher reliability if you follow the good practice.
There is an even better way!
Take a look at Winodws Embedded Standard. This is a componentised version of Winodws (XP and 7 versions available), which is designed to be locked down and has “Embedded Enabling Features” not available in the desktop product.
Follow this link, and if you like what you see please get in touch.
Oh – and it’s typically 30% cheaper than the desktop version of Winodws 🙂
April 7th, 2014 at 10:13 @467
I agree with the above post. An I have one thing to add. As a customer put it to me, the benefit of using a windows platform is that if your signage software is crap, we can replace it without having to reinvest in player hardware.
Windows has its quirks, but with a little discipline and attention to the rules, some of which are listed above, it works perfectly.