Skip to content
Ruby library for interfacing with the IXM platform from Liquidware
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


LibXML for Ruby

LibXML is a communications layer for the Illuminato X Machina and the Ruby programming language. It splits communication into two parts:

  • Adapters hardware compatibility layers
  • Interfaces software behavior models

If neither is specified to, the adapter SFBProg and interface Simple will be assumed.


Currently, the only adapter available is SFBProg.

SFBProg Adapter

The SFBProg adapter is a wrapper around the binary sfbprog or sfbprog.exe that ships with the Illuminato X Machina IDE. The adapter assumes sfbprog is installed in the PATH, but the binary path can be specified easily:

ixm =
  :sfbprog_path => '/usr/bin/sfbprog', # path for sfbprog or sfbprog.exe
  :sfbprog_args => '', # additional arguments
  :sfbprog_device => '/dev/ttyUSB0', # device for serial-over-usb
  :sfbprog_sketch => 'mysketch.hex', # sketch

:sfbprog_path and :sfbprog_sketch are most likely to be customized in your particular implementation. :sfbprog_sketch is the packet_echo.hex sketch by default. The normal newest-timestamp-propigates rules apply, but setting :sfbprog_sketch to the correct sketch is a reasonable safety measure to ensure you don't wipe your IXM.


Currently, the only interface for LibIXM is Simple.

Simple Interface

The Simple interface provides a reflex mechanism similar to the IXM's native Body.reflex call.

ixm.attach_reflex( /respondtome/ ) do |packet|
  puts "Hey! I found a respondstome in '#{packet}'"

This uses Ruby regex instead of first character comparison. As documented in examples/yodel_with_echo_packet.rb a script should wait for a given response, or implement a simple timeout. The SFBProg adapter uses a thread to read incoming packets, so scripts need to provide an appropriate time for task completion.

More Information

The IXM and this library are discussed at:

Something went wrong with that request. Please try again.