Embedded Linux and Home Automation

Does home automation with Linux make sense? The leader of the Linux Home Automation Project describes his system and looks into the future.

I love home automation (HA). Ask me a question about it and you will be lucky to leave without hearing one of my lectures on the subject. So when Phil Hughes asked me to write an article on embedded Linux from an HA perspective, I jumped at the chance. There was just one catch: I had a week to write the article. I've been working on HA for 20 years. My background in computers is varied, both hardware and software, but for the last 13 years I have concentrated on networking.

My vision of HA relies on distributed processing, a realm where embedded computing is a must. The Linux OS has a great advantage here not just because it's free (as in beer) but because of its wealth of tools, the vast knowledge base of the Linux community and its light step on system resources. (Ever see NT run on a 386SX?) I'm not saying that Linux will be embedded in every processor board I use; there are cases where a small controller chip won't need an OS like Linux. But when the device needs to do complicated tasks on something less than PC hardware (i.e., no disks, no video, no keyboard), embedded Linux is a great solution.

A large HA project will most likely include a least one central server that handles the database aspect and program interface (i.e., web access to HA controls and information). The user interface can be anything from commands typed in via direct telnet access to a simple-to-understand GUI (yes, the clients could be Windows users). The project would also include a firewall/NAT router for Internet access, intelligent router/switches, intelligent appliance nodes, appliance/terminal servers (which hook up to non-intelligent or legacy devices) and wireless hand-held devices (PDAs with 802.11 or Bluetooth). Many CPU MIPS will be needed to handle HA needs of the future. You may be asking yourself: Is this guy nuts? Why do we need all this power if all we're going to do is turn lights on and off? You want me to put a PC in every room at every outlet? Well you haven't seen my vision of HA then. Turning lights on and off is a drop in the bucket! And as far as having a PC at every outlet, well it's not too far from the truth. It may not be a PC, but it may be as powerful. It also has to do with lower initial costs, expandability and redundancy.

Embedded Linux in the Home

While researching embedded Linux for use in HA, I discovered the usual suspects for hardware choices: SIMM computers, single-board computers, VME boards, PC104 boards and small form-factor PCs. One of the things I've noticed is that the costs tend to be much higher than the average desktop PC. Since my current projects are from a hobbiest' point of view, I've noticed that we often use salvaged or inexpensive PCs. If you've ever tried to run more than two PCs at once, you'll notice three things right away: the noise, the added heat and the increase in your electric bill. This is why it's best to use embedded systems in HA.


It all started when a friend of mine gave me an X10 Active Home kit. I didn't have any computers with Windows on them (I've been using UNIX since '85). All I had was Linux (maybe version 0.96) running on a 386SX/16MHz. BSD wasn't available yet because of the legal problems with AT&T and some of the code. So I jumped on the Internet and searched for software to drive the CM11A included with the X10 kit. CM11A is the X10 attempt at two-way communication: an interface with a small amount of built-in intelligence which needs to be connected to a PC. A few hours later, the CM11A was up and running controlling things automatically from cron. I then started to collect other pieces of software used to control other devices (not just X10).

Jumping forward a few years, I'd purchased a new motherboard for my main server and quickly discovered that I had run out of serial ports and ISA slots. (It came with PCI slots and all I had was ISA boards.) This showed me the value of distributed systems. My home automation software was now divided between two systems. My new 133MHz system with 64MB of RAM was running X, Netscape, and compiler and development software, while my 386SX was handling all the I/O to serially attached devices and performing print serving. With only 8MB of RAM, the old system was a bit weak in the user interface department but had plenty of power for handling my I/O needs. Distributed computing, it's a good thing.

Around this time, Circuit Cellar magazine (run by Steve Ciarcia) had a promotion for the HCS II. The promotion consisted of various boards for digital and analog I/O. It had a serial interface so it could be programmed and monitored. It was meant to basically stand alone though it could be told to issue various commands from the serial port and a program on the PC. One of the things that attracted me to the HCS II was that over the years Circuit Cellar had documented just about every step of the development in the magazine. This was pretty close to open-source philosophy, and it gave me ideas for a Linux interface. I also discovered that to get my vision of the perfect HA system off the ground I would need help. But I didn't know how to get that help.