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.

Difference between revisions of "RDM with OLA"

From wiki.openlighting.org

Jump to: navigation, search
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
RDM devices can be configured through the web interface (only partially complete) or from the command line.
+
[[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  ==
 
== Device Discovery  ==
  
The ''ola_rdm_discovery'' tool displays the UIDs found for each universe.  
+
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.
 +
 
<pre>
 
<pre>
 
$ ola_rdm_discover  -u 1
 
$ ola_rdm_discover  -u 1
414c:010014b3
+
7a70:ffffff00
 
</pre>
 
</pre>
  
Passing the -f options will force the discovery algorithm to be run for the particular universe. This won't produce any output unless and error occurs.
+
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.
  
 
<pre>
 
<pre>
Line 17: Line 22:
 
== Device Configuration ==
 
== Device Configuration ==
  
The  ''ola_rdm_get'' and ''ola_rdm_get'' commands allow attributes of the devices to be controlled. The first thing to do is to view a list of all known attributes:
+
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:
  
 
<pre>
 
<pre>
Line 32: Line 37:
 
</pre>
 
</pre>
  
To fetch the value of a PID from a device use:
+
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:
 +
 
 +
<pre>
 +
$ 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)
 +
</pre>
 +
 
 +
One of the most useful parameters is device_info:
 +
 
 +
<pre>
 +
$ 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
 +
</pre>
 +
 
 +
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:
  
 
<pre>
 
<pre>
$ ola_rdm_get  --universe 1 --uid 414c:010014b3 device_info
+
$ ola_rdm_get  --universe 1 --uid 7a70:ffffff00 dmx_start_address
 +
DMX Start Address: 1
 
</pre>
 
</pre>
  
Changing the value works in a similar way:
+
To set the start address, the  ''ola_rdm_set'' program is used:
  
 
<pre>
 
<pre>
$ ola_rdm_set  --universe 1 --uid 414c:010014b3 comms_status # clear the communication counters
+
$ ola_rdm_set  --universe 1 --uid 7a70:ffffff00 dmx_start_address 10
 
</pre>
 
</pre>
  
The full list of options can be found by running with --help:
+
No output is displayed unless the request failed. Now we can check that the set worked:
 +
 
 +
<pre>
 +
$ ola_rdm_get  --universe 1 --uid 7a70:ffffff00 dmx_start_address
 +
DMX Start Address: 10
 +
</pre>
 +
 
 +
 
 +
Finally, the full list of options for ''ola_rdm_get'' and ''ola_rdm_set'' can be found by running with --help:
  
 
<pre>
 
<pre>
Line 53: Line 97:
 
   --uid <uid>                            the UID of the device to control.
 
   --uid <uid>                            the UID of the device to control.
 
</pre>
 
</pre>
 +
 +
==Manufacturer Specific PIDs==
 +
The dummy devices also support one [[Open Lighting PIDs|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 ==
 
== Useful Tricks ==
Line 62: Line 115:
 
$ complete -W "$(ola_rdm_get -l | xargs)" ola_rdm_set
 
$ complete -W "$(ola_rdm_get -l | xargs)" ola_rdm_set
 
</pre>
 
</pre>
 +
 +
 +
== RDM Sniffing with Saleae Logic ==
 +
 +
OLA can now sniff RDM traffic with a [http://www.saleae.com/logic Saleae Logic].
 +
 +
Check it out: [[Logic RDM Sniffer ]]!

Latest revision as of 07:17, 16 September 2013

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 !