Digistump Oak-Based System Monitor

Enterprise grade servers tend to have an embedded computer that keeps track of the server’s status even when it’s turned off. This sort of thing is called “out of band management”. Now that we’re fully in the “internet of things” era, there’s really no reason why we can’t all have the benefits of such a system. In this article, I’ll document my “system monitor” that keeps track of my primary PC, even when I’m not around.

The Problem

My primary PC sits under my desk in my office. I’m often elsewhere in the house, streaming games to my laptop with Steam’s In-Home Streaming. Sometimes, my PC goes to sleep, or it gets on the wrong app and just needs a quick Alt-Tab. Also, since I’m not near it, I rarely know what the state of the CPU and RAM is. Can I turn the settings up in my game? Or is my rig tapped out?

Alternate Solutions

I could go with an “in band” management tool, like RDP or VNC. However, these don’t work well with games. If there’s a full screen, high frame rate app running, they tend to run super slow. RDP also locks the screen when I disconnect unless I jump through some hoops.

Some of these things I could take care of with a keyboard/mouse sharing app like Synergy. However, I often can’t see the screen directly, which makes it hard to control with my local keyboard and mouse. Also, I’ve had some stability problems in the past with it.

Wake on LAN solves the “my machine’s asleep” problem, although it doesn’t do anything else. It also is kind of sketchy on wireless networks, although I have had it work on certain devices before.

If this box ran Linux, I could SSH in and get at least some of these things done. However, it doesn’t, and can’t because it’s a gaming rig and has to handle a bajillion different games. Maybe someday SteamOS or similar will catch up to Windows and I can finally ditch the OS… but that future’s kind of a ways off at this point.

My Solution

What I want to build is a device that connects over USB to my PC, and is capable of monitoring the system and doing some basic interactions with it. I want it to work as independently of the PC as possible, and I’d like it to have its own IP and UI separate from my PC’s OS. That way, I can wake the machine and put it to sleep.

I designed this project around the Digistump Oak, which is a ESP8266-based board. That means it’s got a fair amount of processing power plus a WiFi radio. The only downside to the Oak is that although it has a USB port, it’s for power only. So, I’ll need some sort of interface to connect it to the computer. For this, I’m going to use a Sparkfun Pro Micro.

The hardware side of the equation ought to be pretty straightforward, but there’s going to be quite a lot of software to work on here. I’ll need to write a full stack – from low-level firmware all the way up to front-end UI in Javascript and HTML5.