Requirements
- The arm must run DexArm firmware V2.1.4 or later. Rotrics swapped the X and Y axes in V2.1.4. On older firmware,
moveandmove-byfail with an error that tells you to update the firmware.position,go-homeand the motor commands still work. Rotrics Studio updates the firmware. - After the arm powers on, run
go-homebefore a move. The firmware refuses motion until the arm is homed, and a move fails with an error that says so.
Syntax
Global Options
Arguments
Commands
Command Reference
position
Get the current arm position in millimeters.
--box TEXT- Lager Box name or IP
move
Move the arm to an absolute XYZ position in millimeters.
--x FLOAT- Target X position (mm). Required--y FLOAT- Target Y position (mm). Required--z FLOAT- Target Z position (mm). Required--box TEXT- Lager Box name or IP--timeout FLOAT- Move timeout in seconds (default: 15.0, minimum: 0.1, maximum: 25.0)--yes- Confirm the action without prompting
move needs all three axes. To move along one axis, use move-by with an
offset on that axis only.
The box refuses a target outside the workspace of the arm. See Workspace Bounds.
The maximum timeout is 25 seconds. The hardware service on the box stops a device call after 30 seconds and restarts, so the box refuses a longer move timeout.
A long move can take more than the 15-second default. If a long move times out, run it again with a larger --timeout.
Examples:
move-by
Move the arm by relative offsets (delta movement) in millimeters.
--dx FLOAT- Delta X offset (mm)--dy FLOAT- Delta Y offset (mm)--dz FLOAT- Delta Z offset (mm)--box TEXT- Lager Box name or IP--timeout FLOAT- Move timeout in seconds (default: 15.0, minimum: 0.1, maximum: 25.0)--yes- Confirm the action without prompting
go-home
Move the arm to its home position (X0 Y300 Z0). The command returns when the arm is at home, which can take a few seconds. Run it first after the arm powers on.
--box TEXT- Lager Box name or IP--yes- Confirm the action without prompting
enable-motor
Enable the arm’s motor drivers.
--box TEXT- Lager Box name or IP
disable-motor
Disable the arm’s motor drivers. Use this before manual manipulation of the arm.
--box TEXT- Lager Box name or IP--yes- Confirm without prompting
--yes, the command asks for confirmation. If you do not confirm, it sends nothing to the arm.
Example:
read-and-save-position
Recalibrate the arm. The box reads the current position, then sends M889. M889 replaces the stored calibration of the arm with its current pose, and the arm calculates every later move from that calibration.
--box TEXT- Lager Box name or IP--yes- Confirm the recalibration without prompting
--yes, the command asks for confirmation. If you do not confirm, it sends nothing to the arm.
Example:
get-acceleration
Print the arm’s print, travel and retract acceleration in mm/s^2. The box reads them from the arm’s settings report (M503), which changes nothing on the arm.
--box TEXT- Lager Box name or IP
set-acceleration
Set arm acceleration parameters for movement control.
--acceleration INTEGER- Print acceleration in mm/s^2 (minimum: 1)--travel INTEGER- Travel acceleration in mm/s^2 (minimum: 1)--retract INTEGER- Retract acceleration in mm/s^2 (minimum: 1). If you do not give it, the arm keeps its current retract value.--box TEXT- Lager Box name or IP
M204 P<acceleration> T<travel> R<retract> to the arm, then reads the values back. It prints the values that the arm reports. If they are different from the values you set, the command fails.
Example:
Listing Arm Nets
When invoked with only--box and no subcommand, lists all arm nets on the box:
Workspace Bounds
The box refuses amove or move-by target outside these approximate bounds for the Rotrics Dexarm:
For
move, the CLI checks these bounds before it sends the command. It prints These coordinates are out of bounds: and one line for each axis that is out of range. For
move-by, the box checks the target. Its error starts with Coordinates out of bounds
and names each axis that is out of range.
Detection
The box finds an arm when it scans for instruments.lager instruments, lager nets add and lager nets add-all all start that scan.
- The box probes only a serial port whose USB ID is
0483:5740. - The box sends the G-code
M105to that port and waits up to 1 second for a reply that containsok. - The box never probes a port that belongs to another instrument or to a saved UART net. It also skips a port that another process holds.
- The box does not probe an arm that a saved arm net already uses. It lists that arm from its USB serial number, because the box keeps the port of that arm open between arm commands.
- The arm must report a USB serial number. The box drops an arm that has none.
LAGER_ARM_PROBE in the box container:
Examples
Supported Hardware
Notes
- All positions are in millimeters (mm)
- Home position is X0 Y300 Z0
- Use
--yesflag for non-interactive scripts and CI pipelines - Always re-enable motors after disabling them to resume normal operation
- The
--timeoutoption prevents commands from hanging if the arm fails to reach position. It cannot be more than 25 seconds. - If the USB connection to the arm drops, the current command fails. The next command opens the port again.
- Default net can be set with
lager defaults add --arm-net - If the arm does not appear in
lager instruments, see Detection and the troubleshooting page

