Personal tools
The Open Lighting Project has moved!

We've launched our new site at www.openlighting.org. This wiki will remain and be updated with more technical information.

RDM with OLA

From wiki.openlighting.org

Revision as of 08:17, 16 September 2013 by Nightrune (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

RDM devices can be configured through the web interface (only partially complete) or from the command line. Even if you don't have any RDM devices you can still experiment using the fake RDM device created by the Dummy Plugin.

To follow these examples, patch the Dummy Port to universe 1.

Device Discovery

Each RDM device has a unique ID (UID) made up of a two byte manufacturer ID and a four byte device ID. The ola_rdm_discovery tool displays the UIDs found for each universe.

$ ola_rdm_discover  -u 1
7a70:ffffff00

A single device should be found with a manufacturer ID of 7a70 (Open Lighting) and a device ID of ffffff00 (the dummy device).

Passing the -f option will force the discovery algorithm to be run for the particular universe. This won't produce any output unless an error occurs.

$ ola_rdm_discover  -u 1 -f

Device Configuration

Now that a device has been found, we can query it to find the parameters it supports. Each parameter is assigned a two byte identifier known as a PID. The ola_rdm_get and ola_rdm_set commands are used to read / write the values of parameters. The first thing to do is to view a list of all known parameters:

$ ola_rdm_get  --list_pids
boot_software_version_id
boot_software_version_label
capture_preset
clear_status_id
comms_status
default_slot_value
device_hours
device_info
...

This doesn't query the RDM device at all, it simply lists out the names of standard parameters. To see which particular parameters a device supports use:

$ ola_rdm_get  --universe 1 --uid 7a70:ffffff00 supported_parameters
Supported Parameters
  0x50 (supported_parameters)
  0x60 (device_info)
  0x80 (device_model_description)
  0x81 (manufacturer_label)
  0x82 (device_label)
  0xc0 (software_version_label)
  0xf0 (dmx_start_address)

One of the most useful parameters is device_info:

$ ola_rdm_get  --universe 1 --uid 7a70:ffffff00 device_info
Device Info
RDM Protocol Version: 1.0
Device Model: 0x1
Product Category: other
Software Version: 0x1
DMX Footprint: 10
DMX Personality: 1 / 1
DMX Start Address: 1
# of Subdevices: 0
Sensor Count: 0

Here we see some general information about the device including the DMX start address and the # of DMX channels used (DMX Footprint). We can also get the DMX start address by using the dmx_start_address parameter directly:

$ ola_rdm_get  --universe 1 --uid 7a70:ffffff00 dmx_start_address 
DMX Start Address: 1

To set the start address, the ola_rdm_set program is used:

$ ola_rdm_set  --universe 1 --uid 7a70:ffffff00 dmx_start_address  10

No output is displayed unless the request failed. Now we can check that the set worked:

$ ola_rdm_get  --universe 1 --uid 7a70:ffffff00 dmx_start_address 
DMX Start Address: 10


Finally, the full list of options for ola_rdm_get and ola_rdm_set can be found by running with --help:

  -d, --sub_device <device> target a particular sub device (default is 0)
  -h, --help                               display this help message and exit.
  -l, --list_pids                         display a list of pids
  -u, --universe <universe>  universe number.
  --uid <uid>                            the UID of the device to control.

Manufacturer Specific PIDs

The dummy devices also support one manufacturer specific PID, to allow you to experiment with those features, which returns the current OLA version.

RDM With ArtNet

If you have a copy of DMXWorkshop, you can experiment with RDM over ArtNet by patching an ArtNet Input Port to the same universe as the Dummy Plugin. You can then discover the Dummy Device using DMXWorkshop and configure it's start address over the LAN.

Note that the design of the RDM-over-ArtNet protocol has a significant limitation, see ArtNet, RDM and Packet Interleaving

Useful Tricks

If you're using bash, it's worthwhile to set up tab completion of PIDs:

$ complete -W "$(ola_rdm_get -l | xargs)" ola_rdm_get
$ complete -W "$(ola_rdm_get -l | xargs)" ola_rdm_set


RDM Sniffing with Saleae Logic

OLA can now sniff RDM traffic with a Saleae Logic.

Check it out: Logic RDM Sniffer !