X10MMS is a software suite that provides support for the X10 CM19A USB home automation transceiver under Linux. It allows users to both control the device directly, sending and receiving basic on/off commands, and also includes a sample application that allows XMMS to be remotely controlled using the CM19A transceiver and an X10 palmpad remote. Two main versions of the suite exist. The older version was written using libusb, and is somewhat cantankerous to use. :-) The new version is implemented as an actual kernel module and is much more reliable, although it requires an up-to-date 2.6.x kernel.
x10mms is present in both versions. It launches an instance of XMMS and allows you to control its operation using a CR12A or CR14A remote control. (Others likely are supported, but I haven't tested them) The program is completely user configurable via a straightforward text file, so you can assign any supported function to any toggle key on the remote.
The code in both driver versions is centered on a rewrite of some working sample code Neil Cherry over at the LinuxHA project kindly provided me with. He's doing some great work over there!
This package creates a Linux 2.6.x kernel module that can be installed and used like any other Linux device driver. Specifically, it creates a character device file called /dev/cm19a0 (the last number will change as more devices are added)that can be read or written to read/write from/to the transceiver. The commands are formatted like +a1, which sends the command to turn on device A1. All house and unit codes are supported.
The first program included in the libusb-based suite, cm19a allows you to specify sequences of X10 toggles like a1on a3off a4on a1off on the command line, which will then be encoded and piped through the transceiver.