The X Files - Do you want to Believe?


That X10 originated in Scotland? Well apparently it did in 1975.

For those who don't know X10 of a power line and radio protocol that is used for controlling home lighting and appliances.

For power line transmission a parasitic signalling regime that is sent over domestic electrical wiring. The radio protocol was introduced later to support wireless remote control and operates on the 433MHz band (310MHz in the USA).

The powerline method is an ancient ancestor of the Ethernet powerline adapters but very much simpler for simple and slow transfers (that doesn't need the use of orthogonal frequency-division multiplexing (OFDM)).

X10 uses the zero crossing point of the host single to synchronise communications and sends bits of information in 1ms bursts of 120kHz. The presence of a 120kHz signal at a zero crossing represents a '1' and its absence represents a '0'

These bits are built up into datagrams that are easily decipherable to represent HOUSE network address, DEVICE address, desired function and so on and so forth.

X10 signals are easily generated by microprocessors and microcontrollers but to make interfacing simpler dedicated X10 gateway products such as the CM11A and CM12 are used to present a simple RS232 interface.


I can think of at least three ways to connect up X10 to the Raspberry Pi and OpenHAB especially if you have an CM11A or CM12.

The hardware consideration is using a RS232 interface driver to get the signalling levels correct.

There are at least three methods of software integration. One method is to use a dedicated binding, another is to use the Serial Binding with some associated CM12 driving control and thirdly is to make use of a PSoC to act as an CM12 gateway.

I don't consider getting the Raspberry Pi to bit bash as a feasible method because of the overhead involved (especially if you also want to bit bash a 1-wire interface as well).


The Raspberry Pi only has one available serial port /dev/ttyAMA0 and this normally used as a console port.

By simple system reconfiguration its use as a console port can be easily disabled.

However if you wish to use an EnOcean PI you'll have to dream up of some way to make both systems co-exist on the same serial bus in a multi host fashion or provide another serial port for the X10 gateway.


I've taking an alternative approach by using a separate Raspberry Pis for Remote X10 and EnOcean Gateways. This means that I can have as many as I want without having to worry about Serial port contention or adding more serial ports to a Raspberry Pi.