Skip to main content

Commands and Sequences

LA4 accepts lighting instructions as a sequence of CSV rows written to ~/la4_sequence.csv on the node. Each row is a command: the register name followed by its parameters, comma-separated.

Load and execute a sequence using the boardio program in the device with the following commands:

  • boardiocli uSeq — loads the sequence file into the firmware
  • boardiocli runSeq — starts execution

All commands return BOARDIO_READY on success or BOARDIO_ERROR on failure which are sent over your listener as message events.

Command reference

MODEL_LIGHT

Controls the constant model light (continuous, non-flash illumination).

ParameterValuesMinMax
Power levelPercent %0 (OFF)100

Example — turn on the model light at 50% power:

MODEL_LIGHT,50

FOCUS_LIGHT

Controls the constant focus light (continuous illumination with a configurable on-duration, useful for autofocus before a shot).

ParameterValuesMinMax
Power levelPercent %0100
Focus timeMilliseconds09999

Example — turn on the focus light at 80% power for 500 ms:

FOCUS_LIGHT,80,500

ALL_NIKON

Shoots one picture with all four LED lights. Use with Nikon cameras.

ParameterValuesMinMax
Power levelPercent %0100

Example — fire all four LEDs at 80% power:

ALL_NIKON,80

OLAT_NIKON

Shoots four pictures, one per LED, firing each in sequence. Use with Nikon cameras.

ParameterValuesMinMax
Power levelPercent %0100
Drive Mode0 = Single Frame, 1 = Continuous (use with all continuous modes: High+, High, Mid, etc.)--

Example — shoot one-light-at-a-time at 75% power in continuous mode:

OLAT_NIKON,75,1

N_LIGHTS_NIKON

Shoots one picture with a chosen subset of the four LEDs. Use with Nikon cameras.

ParameterValuesMinMax
Power levelPercent %0100
LED10 = OFF, 1 = ON--
LED20 = OFF, 1 = ON--
LED30 = OFF, 1 = ON--
LED40 = OFF, 1 = ON--

Example — fire LEDs 1 and 3 at 60% power (LEDs 2 and 4 OFF):

N_LIGHTS_NIKON,60,1,0,1,0

ALL_CANON

Shoots one picture with all four LED lights. Use with Canon cameras and when using other camera manufacturers (e.g. Fujifilm, Panasonic).

ParameterValuesMinMax
Power levelPercent %0 (OFF)100
Shutter speedMilliseconds0 (OFF)109

Example — fire all four LEDs at 80% power with a 105 ms on-duration:

ALL_CANON,80,105

OLAT_CANON

Shoots four pictures, one per LED, firing each in sequence. Use with Canon cameras and when using other camera manufacturers (e.g. Fujifilm, Panasonic).

ParameterValuesMinMax
Power levelPercent %0 (OFF)100
Drive Mode0 = Single Frame, 1 = Continuous (use with all continuous modes: High+, High, Mid, etc.)--
Shutter speedMilliseconds0 (OFF)109

Example — shoot one-light-at-a-time at 75% power in continuous mode with a 105 ms on-duration:

OLAT_CANON,75,1,105

N_LIGHTS_CANON

Shoots one picture with a chosen subset of the four LEDs. Use with Canon cameras and when using other camera manufacturers (e.g. Fujifilm, Panasonic).

ParameterValuesMinMax
Power levelPercent %0100
LED10 = OFF, 1 = ON--
LED20 = OFF, 1 = ON--
LED30 = OFF, 1 = ON--
LED40 = OFF, 1 = ON--
Shutter speedMilliseconds0 (OFF)109

Example — fire LEDs 1 and 3 at 60% power with a 105 ms on-duration:

N_LIGHTS_CANON,60,1,0,1,0,105

ALL_SONY

Shoots one picture with all four LED lights. Use with Sony cameras.

ParameterValuesMinMax
Power levelPercent %0100

Example — fire all four LEDs at 80% power:

ALL_SONY,80

OLAT_SONY

Shoots four pictures, one per LED, firing each in sequence. Use with Sony cameras.

ParameterValuesMinMax
Power levelPercent %0100
Drive Mode0 = Single Frame, 1 = Continuous (use with all continuous modes: High+, High, Mid, etc.)--

Example — shoot one-light-at-a-time at 75% power in continuous mode:

OLAT_SONY,75,1

N_LIGHTS_SONY

Shoots one picture with a chosen subset of the four LEDs. Use with Sony cameras.

ParameterValuesMinMax
Power levelPercent %0100
LED10 = OFF, 1 = ON--
LED20 = OFF, 1 = ON--
LED30 = OFF, 1 = ON--
LED40 = OFF, 1 = ON--

Example — fire LEDs 1 and 3 at 60% power (LEDs 2 and 4 OFF):

N_LIGHTS_SONY,60,1,0,1,0

ALL_E

Shoots one picture with all four LED lights using the camera's electronic shutter instead of a physical shutter trigger. Camera-agnostic — use with any camera in electronic shutter mode.

ParameterValuesMinMax
Power levelPercent %0 (OFF)100
Shutter press durationMilliseconds — time the shoot button is held down (10 ms is a good start)09999
Shutter lagMilliseconds — time from button release until the shutter curtain opens09999
Light durationMilliseconds — time the LEDs stay on, starting after the shutter lag has passed0109
Post shot delayMilliseconds — wait time between pictures (800 ms is a good start; lower for faster cameras)09999

Example — fire all four LEDs at 50% power, 10 ms press, 50 ms lag, 5 ms light, 800 ms post-shot delay:

ALL_E,50,10,50,5,800

OLAT_E

Shoots four pictures, one per LED, firing each in sequence, using the camera's electronic shutter instead of a physical shutter trigger. Camera-agnostic — use with any camera in electronic shutter mode.

ParameterValuesMinMax
Power levelPercent %0 (OFF)100
Shutter press durationMilliseconds — time the shoot button is held down (10 ms is a good start)09999
Shutter lagMilliseconds — time from button release until the shutter curtain opens09999
Light durationMilliseconds — time the LEDs stay on, starting after the shutter lag has passed0109
Post shot delayMilliseconds — wait time between pictures (800 ms is a good start; lower for faster cameras)09999

Example — shoot 4 OLAT images at 50% power, 10 ms press, 50 ms lag, 5 ms light, 800 ms post-shot delay:

OLAT_E,50,10,50,5,800

N_LIGHTS_E

Shoots one picture with a chosen subset of the four LEDs, using the camera's electronic shutter instead of a physical shutter trigger. Camera-agnostic — use with any camera in electronic shutter mode.

ParameterValuesMinMax
Power levelPercent %0100
LED10 = OFF, 1 = ON--
LED20 = OFF, 1 = ON--
LED30 = OFF, 1 = ON--
LED40 = OFF, 1 = ON--
Shutter press durationMilliseconds — time the shoot button is held down (10 ms is a good start)09999
Shutter lagMilliseconds — time from button release until the shutter curtain opens09999
Light durationMilliseconds — time the LEDs stay on, starting after the shutter lag has passed0109
Post shot delayMilliseconds — wait time between pictures (800 ms is a good start; lower for faster cameras)09999

Example — fire LEDs 1 and 3 at 50% power, 10 ms press, 50 ms lag, 5 ms light, 800 ms post-shot delay:

N_LIGHTS_E,50,1,0,1,0,10,50,5,800

SHOOT_BLANK

Performs a single DSLR shot with no lights. The duration controls how long the shoot pin is physically pressed.

Different cameras require different durations to reliably actuate the shutter:

  • Normal range: 20–50 ms
  • Fast-shooting cameras: 5–10 ms
  • Slow-shooting cameras: 50–200 ms

If the duration is too short the camera will not trigger. If it is too long the camera may fire two shots instead of one.

ParameterMinMax
Duration01000

Example — trigger a single shot with the shoot pin held for 30 ms (normal-range camera):

SHOOT_BLANK,30

LED_FAN

Controls the LED cooling fans.

ParameterValues
Enable0 = OFF, 1 = ON

Example — turn the fans on:

LED_FAN,1

DIGITAL_POLARIZER

Enables or disables the digital polarizer.

ParameterValues
Enable0 = OFF, 1 = ON

Example — enable the polarizer:

DIGITAL_POLARIZER,1

REMOTE_IN

Enables or disables the LA4 remote input state machine.

ParameterValues
Enable0 = OFF, 1 = ON

Example — enable remote input:

REMOTE_IN,1

When building a sequence, put REMOTE_IN,0 as the first command to hand off control from the remote input state machine before the sequence runs, and REMOTE_IN,1 after the sequence to hand control back to remote input.

REMOTE_IN,0
DIGITAL_POLARIZER,0
ALL_NIKON,100
REMOTE_IN,1
MODEL_LIGHT,100

Example sequence CSV file

LED_FAN,1
REMOTE_IN,0
ALL_CANON,80,105
REMOTE_IN,1
MODEL_LIGHT,30

This sequence does five things in order:

  1. LED_FAN,1 — turns on the cooling fans before the flash LEDs fire.
  2. REMOTE_IN,0 — disables remote input so the state machine hands off control before the sequence runs.
  3. ALL_CANON,80,105 — fires all four LEDs simultaneously at 80% power with a 105 ms on-duration, triggering one shot on a Canon camera.
  4. REMOTE_IN,1 — re-enables remote input, handing control back after the sequence completes.
  5. MODEL_LIGHT,30 — turns on the constant model light at 30% power, providing continuous illumination for framing.

Sending a sequence to LA⁴. Example cross-polarization

The sequence file is written and executed by sending a cmd request to the pycom networking software running on the device. You need to compose a shell command to write the CSV content to ~/la4_sequence.csv, then call boardiocli uSeq to load it and boardiocli runSeq to run it.

The example below captures two shots with a Nikon camera: one without the digital polarizer and one with it. This is a common cross-polarization technique — the first shot captures both diffuse and specular light, the second suppresses specular reflections, leaving only diffuse.

{
"type_": "cmd",
"command": "echo \"REMOTE_IN,0\\nDIGITAL_POLARIZER,0\\nALL_NIKON,10\\nDIGITAL_POLARIZER,1\\nALL_NIKON,1\\nREMOTE_IN,1\" > /home/rigsters/la4_sequence.csv && boardiocli uSeq && boardiocli runSeq",
"id": "31548ca2",
"name": "My PC App",
"ip": "192.168.0.100",
"port": 5000,
"version": "0.1.0",
"coordinator": true
}

The sequence file this writes to the node:

REMOTE_IN,0
DIGITAL_POLARIZER,0
ALL_NIKON,10
DIGITAL_POLARIZER,1
ALL_NIKON,1
REMOTE_IN,1
  1. REMOTE_IN,0 — disables remote input so the state machine hands off control before the sequence runs.
  2. DIGITAL_POLARIZER,0 — disables the polarizer so the first shot captures both diffuse and specular light.
  3. ALL_NIKON,10 — fires all four LEDs at 10% power and triggers one shot.
  4. DIGITAL_POLARIZER,1 — enables the polarizer to suppress specular reflections.
  5. ALL_NIKON,1 — fires all four LEDs at minimum power and triggers a second shot, now capturing only diffuse light.
  6. REMOTE_IN,1 — re-enables remote input, handing control back after the sequence completes.