Linux Home

(Updated: Wednesday August 29, 2007)

Linux HA Generic USB driver


I seem to have done a good job of causing a lot of confusing a lot of people with my drivers being simply called by the devices name and the daemon being called by the devices name with a letter "d" at the end. An example of this being my cm15a driver and the cm15d daemon. Yes it's that I lack imagination and couldn't come up with a better name. :-)

I seemed to have caused further confusion with the devices drivers themselves. As it stands you only need one of the device drivers include in the iplc-driver package (it contains all four drivers, the Insteon USB PLC driver, the X10 CM15A driver, the X10 CM19A driver and the Labjack driver). Follow the directions below on how to make the device driver for the native OS. I don't have any instructions yet for cross-compiling the device drivers.

The provided device drivers are taken from the Labjack device drive, which in turn was taken from the Lego USB Tower driver. Really all I did was to take the driver and switch a few things around such as the name of the device that gets created, the VENDOR and USB ids. I'm currently working on support for sysfs since usbfs has been deprecated (or is about to be deprecated).

USB driver for the CM15A, CM19A, Insteon USB PLC and Labjack

This section will describe how to download the correct driver, compile it and use it under Linux. There is also a useful utility call detach that can help you to detach a driver from a particular device (such as the Insteon USB PLC). See the detach page for further information.

  • Current USB driver for the CM15A, CM19A, Insteon USB PLC and Labjack - all in one place. The main driver is pretty much the same for all these devices. The big difference is that each had different USB IDs.
  • detach - a program to detach the driver from a USB device. See the detach page for more details.
  • Sjinn - S-Jinn is a free, lightweight, open-source Linux application written in C. It is a simple command-line tool designed for sending & receiving data from PC controlled TIA/EIA-232 (RS-232) test, measurement, and control devices.

The quick and dirt steps to make use of my iplc driver. Adjust accordingly to use the CM15A (cm15a), CM19A (cm19a) or Labjack (lj). Here's the step for the iplc:

  1. tar zxvf iplc-driver.tgz
  2. cd iplc/driver/linux2.6 # or Linux 2.4 if you need support for 2.4
  3. ls -R # so you can see where everything is
  4. make all
  5. sudo insmod iplc.d/iplc.ko # You need to be root
  6. ls -l /dev/iplc*

If all went well then the driver module and device should be accessible. The device should automatically be created but you may need to correct the permissions. I have heard word that there are some changes to be make for Ubuntu 7.10. I'll try to get those details worked into this document.


mount -t usbfs usbfs /proc/bus/usb

The X10 CM15A

The CM15A is a USB to X10 power line and RF interface that comes with the Active Home Pro software. It looks like it's meant to replace the CM11A (serial to X10 power line transceiver) and CM19A (USB to RF transceiver). X10 says it can send and receive all 256 house/unit codes and even take the place of the PC Transceiver (CM19A) for controlling X10 Cameras. It can keep the state of all 256 house/unit codes and has extra memory for timers and macros. Like the CM11A it has battery backup for when the power fails. It appears not be able to send commands to just the RF but when monitoring a selected house code (you can have more than 1) it can send and receive that house code via the RF and Power Line. Macros can be downloaded to the CM15A which allows it to run without a PC. It appears not to have the problem that the CM11A did of a dangling communication cable sending arbitrary X10 codes.

The CM19A

The CM19A is an X10 RF transceiver. It can send and receive most X10 RF commands.


The Insteon USB PLC is a power line transceiver that can hanlde both X10 and Insteon protocol power line communication.


This is a derivative of Bruce Perens Ion code for the Insteon USB PLC.

The Labjack

LabJack - is a USB-based measurement and automation devices which provide analog inputs/outputs, digital inputs/outputs, and more. Eric Sorton wrote the original drivers but Labjack seems to be maintaining them now: Linux driver (Linux 2.4 and 2.6 kernels) for the Labjack. Here are some of the features:

  • 8 Single-Ended, 4 Differential 12-Bit Analog Inputs
  • ±10 Volt Analog Input Range
  • PGA with Gains of 1, 2, 4, 5, 8, 10, 16, or 20 V/V
  • Up to 8 kSamples/Sec (Burst) or 1.2 kSamples/Second (Stream)
  • Supports Software or Hardware Timed Acquisition
  • Supports Triggered Acquisition
  • 2 Analog Outputs
  • 20 Digital I/O (Up to 50 Hz per I/O)
  • 32-Bit Counter
  • Watchdog Timer Function
  • Easy to Use Plug-and-Play USB Device
  • Connect Up to 80 LabJacks to One USB Port (We're not that far with Linux)
  • Complete Software Control, No Jumpers or Switches
  • No Power Supply Needed
  • Includes Cable and Screwdriver
  • Approximately 4" x 6" x 1"

In addition I'm going to post my version (a tar'd and bzip2 file, hmm I think I need to get my update version) of the Labjack Perl libraries. Chris has a more up to date version in CPAN (see the previous link above.

ZWave - ZWave controllers.

I picked up an HA22 from Smarthome, looks like it's not support (grrr!). Seems Pluto Home only has the device driver for the HomePro ZWave USB interface (ZCU000/ZCU010). After a lot of searching it seems there are a bunch of ZWave interface (some discontinued) but very little on how to interface with these devices. Controlthink has a .Net based SDK that may work with Linux and Mono.

Another interface, that works well with Mr. House is the Leviton RZC0P-1LW - Vizia-RF Plug-In RS-232 interface.

For further info email me at: