Sunday, March 29, 2009

HA Server Power Supply Problem

It appears my Antec EarthWatts power supply is failing. It took a few days to diagnose the problem as the server as having some random reboots and then problems coming back up after the reboot. There was nothing in the event log, so I swapped out some drive cables and hard drives thinking it was a drive issue. It seemed stable for a day or two but then I got another random reboot. I took the power supply out of my kid's PC and the server's been up & running since Tuesday. I've got a couple 250W 80Plus power supplies coming this week (one for the HA server and one for the DVR) so my kid can have his PC back.

Saturday, March 28, 2009

HD Theater Smushed Screens

The family room TV is a 10 year old Sony 36XBR250 which has a vertical compression feature. There is a bug in the HDTheater firmware that activates that in the Sony so the menus are squished and the fonts are not very readable in things like the program guide. Supposedly, there will be a fix, but in the next beta of the server software. In the meantime, the family room unit won't be getting much play.

Friday, March 27, 2009

SageTV Coupon Code

As luck would have it, 4 days after I ordered my 2 HD Theaters and SageTV software, they are offering a coupon code for $20 off the HD Theater and $25 off the bundle. Argh. I've sent them an email and asked if they can give me an adjustment since I just dropped $500 on their stuff. We'll see...

The code for their online store @ is MMAD09 and expires April 1st.

Update: I received this email from them:

Unfortunately this coupon is for orders from 3-26-09 to 4-1-09.

Had I not ordered until today, I would have gotten one more HD Theater. SageTV is definitely no SlimDevices.

Tuesday, March 24, 2009

Sage, SqueezeCenter, SliMP3 and xPL

With 2 HDTheaters on the way, I've been working on ways to use our new SageTV DVR server as a third client for playback. I don't have an IR receiver for the PC and since I'm keeping costs low, I'm not going to buy one. However, it just so happens there's a SliMP3 by the TV that the DVR is connected to and they work great as IR receivers. But how do I get the IR from the SliMP3? That's easy! I already have SqueezeCenter & its xPL plugin running. Plus the xPL plugin's "Infra-red Processing" option is configured to "Both". This gets me xPL messages issued when any remote buttons are pressed.

I also had installed EventGhost on the DVR and added my xPL Plugin to it. The next step was to capture the EventGhost events that result from xPL messages that result from remote control button presses. With that, I created macros triggered by those events and had EventGhost issue keystrokes in response. As a test, I used an old TiVo remote and mapped the navigation and select buttons to keystrokes for up, down, left, right and enter. The result is this video that shows both the EG and SageTV windows while I use the TiVo remote to navigate around the SageTV interface:

Monday, March 23, 2009

DVR Server Update

The E5200 based DVR server is looking really good. With the 2 hard drives, it idles around 50 watts and gets up to about 90 watts playing a 1080i HD stream in SageTV through the onboard graphics. During playback, it used about 30% of 1 CPU. That means there's plenty of horsepower for it to do much more. I'm planning on moving SqueezeCenter and MediaNet over to it, but neither of those is CPU intensive. I need to see what other functions I can move over from the HA server. The cheap AirLink gig NIC works great. I was able to sustain 400 Mbps transfers between the DVR & HA server.

Update: I just purchased my SageTV license and 2 HD Theaters.

Friday, March 20, 2009

Slowly Piecing Together a Bargain DVR System

I just picked up an E5200 bundle from Fry's for $99. The E5200 is a 45nm processor that has low power consumption and pretty good horsepower compared to the Core2 E7300 (See review here). This goes nicely with the $85 1.5TB Seagate Drive I scored last month, the 2GB of of memory for $7 and the $3 Airlink gigabit NIC. I have a $19 MicroATX case, a spare $19 Seagate 200GB IDE drive for the boot drive (Staples Black Friday deal several years ago), and a spare $6 Antec 120mm Tricool fan. It will be running a free copy of Server 2003 courtesy of Microsoft DreamSpark and my wife who's taking a night class which qualifies her to get some free MS software. I just need an 80Plus power supply. I have a regular spare that I can use to get the system set up, but for the long-term, I'm going to find an high-efficiency power supply for this. Total cost so far is about $250 with the power supply left to buy.

Thursday, March 19, 2009

OSDBuffer Update

I have updated OSDBuffer to correctly handle osd.basic messages with delay=0. I've also added a clear buffer function, which you can get to by right-clicking the icon in the tray. Download here.

Monday, March 16, 2009

A Watchdog Timer for Your Online Life

Death Switch (via Lifehacker) will ping you, and if you don't respond to enough pings, they'll send out emails to your friends, family, online gaming buddies, etc. informing them of your apparent demise.

Don't Forget to Vacuum Out Your Servers

This weekend, I powered down my HA server to install a new disk and do my periodic server vacuuming. I have two 120mm fans in the case to keep things cool, so it pulls in a ton of dust that ends up resting on drives, cards and in the CPU heat sink. The CPU heat sink was especially caked and I had to blow it out using a can of compressed air. The clean heat sink makes a huge difference in the CPU temps - about a 10 degree difference as you can see in the graph below:

Saturday, March 14, 2009

xEKG Monitors xPL and xAP Heartbeats

I just finished another application called xEKG. It monitors your xPL and xAP devices and informs you via osd messages that a device hasn't checked in. Read more about and download it from here.

Friday, March 13, 2009

OSDBuffer, an xPL OSD Display

Sometimes I just miss seeing an OSD message on my PC and there's no way to see what it was (unless I'm logging xPL messages). That inconvenience served as the inspiration for OSDBuffer, my second C# application. OSDBuffer is a typical OSD popup application, however, it buffers the last 10 OSD messages received. You can scroll through them when you want. You can also customize the frame around the popup to your liking. Here's a video of it in action.

Read more about it & download it from here.

Monday, March 9, 2009


Welcome! I've imported all blog posts from and updated links. Hopefully, I haven't missed anything, but if I did, leave a comment & let me know. Thanks!

Saturday, March 7, 2009

Announcing xScript

After some pains, I've completed my first C# application. It's called xScript. It's a free form scripting engine for xPL and xAP - no point and click - just a text file as input. You can use either vbscript, jscript, perl or python as your scripting language of choice. The zip file contains 4 sample scripts - xScript.js.sample is the most complete. Whichever language you decide to use, remove the .sample suffix from the script name. Valid scripting file names are xScript.js, xScript.vbs, and Make sure you have only one valid file name otherwise you may confuse yourself as xScript automatically picks a script file based on the first one it finds with a valid name. Finally, make sure you have installed the latest .NET frameworks by using Windows update or downloading directly from

Download xScript here and let me know how it works out for you.

Friday, March 6, 2009

Trying My Hand at C#

All the applications I've written so far have been in It's very structured which makes learning it really easy. Yesterday, I decided it's time to take the plunge and learn C#. So far, it's been a pain trying to relearn things I knew so well in I'm making slow progress, but it doesn't seem to be very intuitive to me right now. Hopefully that changes...

Thursday, March 5, 2009

Adobe Acrobat Reader Vulnerability

In case you're unaware, there is a major problem with Adobe Acrobat which doesn't even require you to open a PDF file. The best thing to do? Uninstall Acrobat Reader and install Foxit Reader. Foxit Reader is much lighter on resources as well.

Update: Foxit Reader has a problem as well, but they released a new version on 3/9/09

Tuesday, March 3, 2009

xPL Gameport Enhanced & Released

This weekend, I was trying to add a CDS sensor in the family room to more accurately sense darkness. It works great with a DS10A, but I wanted to hardwire it to make it more reliable. I tried connecting it to an input on my gameport device that I use for contact closure detection, but the resistance of the CDS sensor with the light on is apparently too high for the gameport to detect a closed condition. What else can I use? What about using the X and Y axis inputs on the gameport as analog inputs? So that's what I did. I updated my gameport app to read the axis values and send out sensor.basic messages on changes. I had to add a larger debounce delay when sampling since the CDS input bounces a little when changing. In any case, it's up & running for a couple days now and works well.

This is probably one of my most favorite apps I've written and I know I haven't released it yet, so here it is. You'll need a config.txt file in the same directory. For each gameport you have hooked up, you'll need to label the inputs - 4 button inputs and 2 axis inputs. The final parameter will be the polling time in ms. The polling interval for the axis inputs in derived from the polling time specified in the file.

config.txt format:
<gameport0_button0>,<gameport0_button1>,<gameport0_button2>,<gameport0_button3>,<gameport0_xaxis>,<gameport0_yaxis>,<polling interval>


If you have more than one gameport connected, then specify all the inputs first, then the polling interval (all on a single line):
garagedoor,doorbell,backdoor,garagemotion,FRDark,yaxis0, amppower,dvdpower,tvpower,blank13,xaxis1,yaxis1,50

Finally, don't forget to install the DirectX redistributable runtime from here.

I have only tested the app with the Super Joy Box 8 USB to gameport adapter, which has 4 gameports and gives you 16 digital and 8 analog inputs for about $20.

Monday, March 2, 2009

Sample EventGhost Python Script for Parsing xPL Messages

To make my EventGhost xPL plugin really useful, you really need to be able to pick apart an xPL message to extract data from it. Luckily, EG allows you to associate a script with a macro. This makes it pretty simple to create complex interactions based on xPL messages. Just create an event to trigger on 'xPL.*' and add an action to it that's a Python script. Here's a sample script that sends an acknowledgment message when Blabber receives the word 'test' from a user. This script can easily be extended to handle all your xPL interactions.

import re

# split up the event components
xPLSplit = eg.event.suffix.split(':')

# make the pieces easy to remember
xPLType = xPLSplit[0]
xPLSchema = xPLSplit[1]
xPLSource = xPLSplit[2]
xPLTarget = xPLSplit[3]
xPLBody = xPLSplit[4]

# we only want xpl-trig messages
if xPLType == "xpl-trig":
# only want messages from blabber
bodySplit = xPLBody.split(',')
# extract the components of the message body
for i in range(3):
senderSplit = bodySplit[i].split('=')
typeSplit = bodySplit[i].split('=')
currentSplit = bodySplit[i].split('=')
# we only want the message type and messages that
# contain the word 'test'
if typeSplit[1] == "message" and currentSplit[1]=="test":
# if we get 'test' we'll reply back to the sender
# that we got his message

returnMsg = "device="+senderSplit[1]+"\n"+"current=EG got your test"
eg.plugins.xPL.sendxPL(u'xpl-cmnd', u'control.basic', xPLSource, \

xPLGCal Update

Here is a quick update to xPLGCal to handle connection errors.

Don't Pay Regular Price for Your Monthly Services

I just got off the phone with DirecTV who offered me $10 off per month for the next 12 months, free HBO for 3 months and Starz for 6 months. They had even offered free HD for a year with a free HD DVR, but I declined as I'm still considering the SageTV route. It's an annual ritual for me, calling them when my current promo ends, and getting a lower price with some extras. If you have DirecTV and are out of contract, call them and say 'cancel' when the robot asks what you are calling about. When you get to a CSR, tell them about the great deal DISH or Comcast is offering you and that you'd really like to stay with them but the other deals are so much less. You should never pay regular price for cable or satellite service - especially in this economy. I also do the same thing every 6 months with my Internet provider, Comcast. Cellphone bills may also be up for negotiation if you're out of contract. Our is as good as it can get. We're on the Sprint SERO plan until they go under for $30/month, 500 minutes, unlimited data & SMS, 7-7 N&W.

HAL Thinks the Piano is a Person

I was messing around with HAL microphone VR last week and ran a mic from the HA server to the living room. It worked decently when I was the only one home. However, when my kids started practicing piano, HAL went crazy. Every 10 seconds, it would think its attention word was called - despite attempts to adjust the selectivity higher. Not only that, but once the piano had HAL's attention, it was able to tell it to "set the mode to normal" and "turn on nook light" and "good bye." Needless to say, the microphone has been disconnected.

Sunday, March 1, 2009

Zephyr Bluetooth Heart Rate Monitor

I just received a Zephyr HRM - a heart rate monitor that sends its data to a PC or smartphone via Bluetooth. It was a reasonable $99 + $30 for FedEx Priority shipping from New Zealand to the States. It shows up as a Bluetooth serial port after pairing with a PC so it makes it very easy to development a .NET application for it. I've currently got code running to talk to the device, verify the integrity of the data packet (CRC) and update new heartbeat timestamps. I'll be using it to track my workouts at home. I may even get adventurous and try to write an app for my WinMo HTC Touch Pro phone, but that will be some time in the future.