From ZaberWiki
Jump to navigation Jump to search
X-JOY3 Programmable 3-Axis Joystick User's Manual

X-JOY3 Programmable 3-Axis Joystick


Zaber’s products are not intended for use in any critical medical, aviation, or military applications or situations where a product's use or failure could cause personal injury, death, or damage to property. Zaber disclaims any and all liability for injury or other damages resulting from the use of our products.


Zaber’s motion control devices are precision instruments and must be handled with care. In particular, moving parts must be treated with care. This manual assumes familiarity with the user manuals for whichever axes will be controlled with the X-JOY3, and that any required initial configuration is complete. A complete list of product manuals is available here.

Conventions used throughout this document

  • Fixed width type indicates communication to and from a device. The symbol indicates a carriage return, which can be achieved by pressing enter when using a terminal program.
  • An ASCII command followed by (T:xx) indicates a legacy T-Series Binary Protocol command that achieves the same result. For example,
    move abs 10000 (T:20:10000) shows that a move abs ASCII command can also be achieved with Binary command number 20.
Not all ASCII commands have an equivalent Binary counterpart.

Quick Tutorial

During operation, the joystick does not need to be connected to a computer, however connection to a computer will be required initially for proper configuration of the joystick for your application. We recommend using Zaber Console to communicate with the device(s). For other software options, see the Software page. Please refer to the ASCII Protocol Manual and/or Binary Protocol Manual for more detailed information on the available commands.

Initial Setup

X-JOY3 Setup
  1. Power up the X-JOY3 and all integrated devices and controllers to be controlled and daisy-chain them together with the X-JOY3 at the beginning of the chain. Use the RS-232 "Prev" and "Next" connectors (see Daisy-Chaining Devices for more details). Many products share power through the daisy-chain cables. The power indicator on each should light up.
  2. Download and install Zaber Console. Start Zaber Console and select the communications port the X-JOY3 is connected to. For instructions on how to find the available communication ports on your system, please refer to: Appendix A - Available Communications Ports.
  3. From the Console, issue a renumber (T:2) command to all devices (Zaber Console may prompt you to do this). The first device in the chain (closest to the computer) will become Device 1, the next will become Device 2, and so on.

Every time the motorized devices are powered up or reset, they will need to be returned to the home position in order to work properly with the X-JOY3. This is achieved by sending the home (T:1) command, or by using the joystick to move the devices to their home positions. It is possible to program a key on the X-JOY3 to home the attached devices as well. Until this is done, most devices will only allow motion in one direction, towards the sensor.

If it is not possible in your application to home the device after every power-up, see the tools parking (T:65) command. Parking allows the device to be turned off and then used at a later time without first having to home the axes. Using the X-JOY3, it is possible to program a key to park and unpark the device.

Move each axis of the joystick. The default target devices are:

  • Joystick axis 1 controls device 2, axis 1
  • Joystick axis 2 controls device 3, axis 1
  • Joystick axis 3 controls device 4, axis 1

See the Configuration section for information on how to modify joystick parameters.

By default, the keys have the following functions saved:

Key    Short Press              Long Press

1 Stop all axes Home all axes
2 Send alerts* 1, 2 Send alerts* 1, 3, 4
3 Move to saved position Save current position
4 Move to saved position Save current position
5 Move to saved position Save current position
6 Axis 1 low speed Axis 1 high speed
7 Axis 2 low speed Axis 2 high speed
8 Axis 3 low speed Axis 3 high speed
*When comm.alert is set to 1.

The X-JOY3's yellow LED will flash every time it receives or sends a command. The default high speed is 44880, and the low speed is 10000. The key commands can be modified to suit your application, as discussed in the Configuration section.


In order to customize the joystick, it needs to be connected to a computer. The X-JOY3 ships with the ASCII Protocol enabled, but the Binary Protocol is supported as well. If all devices in the daisy chain are X- or A- Series, we recommend using the ASCII Protocol as it has more features and is more intuitive to use. Note that when using the ASCII Protocol, each device that the joystick controls must have firmware version 6.14 or greater. If any devices are T-Series devices or have firmware version 6.13 or below, then you will need to use the Binary Protocol.


  • Using the ASCII Protocol allows integration with ASCII-only features such as triggers, streams, and lockstep.
  • The target device and axis, maximum speed, speed profile, axis inversion, and resolution can all be adjusted. See the joystick commands for further details.
  • The keys can be reprogrammed with different functions using the key commands. The ASCII Protocol allows more than one command to be saved per key event.
  • The keys can also be configured to send alert messages to the computer, allowing the keys to be used to trigger actions in custom computer scripts. This is explained in the key command documentation.


  • The Binary Protocol allows the target device, maximum speed, speed profile, and inversion of each joystick axis to be configured. See Binary commands T:25, T:26, T:27, T:28, and T:29 for more details.
  • The keys can be reprogrammed using command T:30. Note that the Binary Protocol only allows one command to be saved per key event.

Built-In Help

Zaber X-Series devices feature a built-in help guide, providing a quick and easy reference for all Commands and Settings that the device has. To access the help, send: /1 help (for help with Device 1). The device number must be specified in the help command. This feature is only available in the ASCII Protocol.

The device will respond with a detailed description on how to access specific information about commands and replies, as shown below:

@01 0 OK IDLE WR 0
#01 0  '/stop'     stop all devices
#01 0  '/1 stop'   stop device number 1
#01 0  '/1 2 stop'   stop device number 1 axis number 2
#01 0
#01 0 Type '/help commands' for a list of all top-level commands.
#01 0 Type '/help reply' for a quick reference on reply messages.
#01 0 Visit for complete instruction manuals.

To access help for a specific command, for example the joystick commands, send:

/1 help joystick
@01 0 OK IDLE -- 0
#01 0  joystick JAXIS speedprofile PROFILE
#01 0                           Set axis speed profile
#01 0  joystick JAXIS maxspeed MAX
#01 0                           Set axis maximum speed
#01 0  joystick JAXIS invert X  Set axis inversion
#01 0  joystick JAXIS info      Display axis configuration
#01 0  joystick JAXIS target DEVICE MODE AXIS
#01 0                           Set special motion mode (e.g. lockstep)
#01 0  joystick JAXIS target DEVICE AXIS
#01 0                           Set target device and axis
#01 0  joystick JAXIS resolution STEPS
#01 0                           Set axis resolution
#01 0  joystick calibrate CALIBMODE CALIBACTION
#01 0                           Calibrate joystick limits or deadbands]

Device Overview


All diagrams are shown in their standard configuration. On the X-JOY3, connectors are mounted upside-down to what is shown.


Terminal Connector Pin Description
1 24 - 48 V
2 Device GND

Note: As of February 2022, the power supplies Zaber provides for X-Series devices are isolated and thus the device is not connected to Earth ground.

Note: Prior to 2022, most power supplies provided for X-Series devices were non-isolated. Isolated units can be distinguished by the "S" suffix in their Zaber part number (eg. PS14S), which is marked on the label on the bottom of the power supply.

RS-232 Communications

M8 4-pin Connector Pin Previous Next
1 Power Power
2 Ground Ground
3 Receive Transmit
4 Transmit Receive

Default Settings:

  • Baud Rate: 115200
  • Protocol: Zaber ASCII


  • Supported Protocols: Zaber ASCII, Zaber Binary
  • Supported Baudrates: 9600, 19200, 38400, 57600, 115200
  • Bits: 8
  • Parity: None
  • Stop Bits: 1
  • Flow Control: None


Green - Power
  • On: Controller is operational.
  • Blinking at 2Hz: The power supply voltage or device temperature is out of range.
Red - Error
Yellow - Communication/Busy
  • On: Data is being transferred.
  • Blinking at fixed rate: Packet corruption has occurred for ASCII commands sent with a checksum.


The X-JOY3 can be connected to a computer as follows:

  1. Either plug the M8 to D-SUB serial adaptor (X-SDC) into the computer's serial port, or the M8 to USB adaptor (X-USBDC) into one of your computer's USB ports, then attach the device to the adaptor. For the USB adaptor, new computers will often be able to install the necessary drivers automatically when the cable is plugged in for the first time. If the computer reports that the driver installation was unsuccessful, you can download the drivers for Windows, Mac, or Linux here. Installation instructions and troubleshooting information are available for each operating system here. You may need to use a cable extension to reach your computer. There is no need to power-down or reboot the computer.
  2. Connect the power plug of your power supply to the power connector of the unit. The green LED should light up indicating the unit has power.
  3. Additional devices can simply be daisy-chained to the first. See Daisy-Chaining Devices below.
  4. Install software from the Software page. For the initial setup, using Zaber Console is recommended.

X-JOY3 PC Connection Setup

Daisy-Chaining Devices

Multiple devices can be connected together in a chain through the Prev and Next connectors. This allows any number of devices to be controlled from a single connection to a computer, reducing cabling demands. In addition, X-Series devices carry power through the daisy chain, so in most cases a power supply only needs to be connected to one device in the chain. Whether operating with or without a computer, the X-JOY3 needs to be placed upstream of any devices it controls. Whenever a device is added or removed from a chain, a renumber (T:2) command should be sent to prevent device-address conflicts.

Daisy Chain Setup

To daisy-chain X-Series devices with T-Series and A-Series devices:

  • Ensure all devices are set to the same communication protocol and baud rate before connecting them. If any T-Series devices will be in the chain, then the communication protocol must be Binary at 9600 baud rate.
  • Connect any X-Series devices at the start of the chain (closest to the computer). This configuration will reduce the number of adaptor cables required.
  • Connect a T-XDC (or S-XDC for daisy-chaining an A-MCB2) adaptor cable to the Next port of the last X-Series device in the chain, and to the Prev port of the T-Series or A-Series device.
  • Power supplied to an X-Series device will not be transmitted to any T-Series or A-Series devices in the chain.
  • Contact Zaber Technical Support for assistance selecting connecting cables when daisy-chaining multiple series.

Quick Command Reference

All X-Series devices ship with the ASCII Protocol enabled by default but the Binary Protocol is also supported.

ASCII Protocol

The following table offers a quick command and setting reference for the X-JOY3. Follow the links to view a detailed description of each instruction or refer to the ASCII Protocol Manual.

Quick Commands

Parameters in square brackets, e.g. [clr], indicate that the parameter is optional.
Parameters in italics, e.g. value, indicate that data, typically a number, needs to be provided.
Parameters separated by a pipe, e.g. abs|rel, indicate that one of the parameters in the set need to be provided.

Command Scope Parameter(s) Returns Firmware Versions Description
get Device setting value 6.06+ Retrieves the current value of the device or axis setting.
help Device commands
command ...
0 6.06+ Displays the help information for the system.
joystick Device Refer to the documentation Refer to the documentation 6.16+ Configures joystick axes.
key Device Refer to the documentation Refer to the documentation 6.16+ Configures joystick keys.
renumber Device value 0 6.06+ Renumbers all devices in the chain.
set Device setting value 0 6.06+ Sets the device or axis setting setting to the value.
system reset Device 0 6.06+ Resets the device, as it would appear after power up.
system restore Device 0 6.06+ Restores common device settings to their default values.
tools echo Device (message)
0 6.06+ Echoes the provided message (if any) back to the user.
tools setcomm Device rs232baud protocol 0 6.06+ Sets RS232 baud rate and communication protocol for RS232 and USB.
warnings Device [clear]
0 6.06+ Displays the active device and axis warnings, optionally clearing them if applicable.

Quick Device Settings

The settings listed below can be inspected and modified with the get and set commands described above.

Setting Scope Writable Firmware Versions Description
comm.address Device Yes 6.06+ The device address.
comm.alert Device Yes 6.06+ The device will send alert messages when this setting is 1.
comm.checksum Device Yes 6.06+ The device includes checksums in its messages if this setting is set to 1.
comm.protocol Device Yes 6.06+ The communications protocol used by the device on the current interface.
comm.rs232.baud Device Yes 6.06+ The baud rate used by RS232 Prev and Next interfaces.
comm.rs232.protocol Device Yes 6.09+ The protocol used by RS232 Prev and Next interfaces.
deviceid Device No 6.06+ The device ID for the unit.
joy.debug Device Yes 6.16+ Joystick debugging mode.
system.access Device Yes 6.06+ Sets the access level of the user.
system.axiscount Device No 6.06+ The number of axes in the device.
system.led.enable Device Yes 6.06+ Enables the front panel LEDs.
system.serial Device No 6.15+ The serial number of the device.
system.voltage Device No 6.06+ The voltage being applied to the device.
version Device No 6.06+ The firmware version of the device. Device No 6.17+ The build number of the device’s firmware.

Binary Protocol

The following table offers a quick command reference for the X-JOY3. For convenience, you may sort the table below by instruction name, command number, or reply number. Follow the links to view a detailed description of each instruction or refer to the Binary Protocol Manual.

Instruction Name Command# Command Data Command Type Reply Data
Reset 0 Ignored Command None
Renumber* 2 Ignored Command Device ID
Read Register 5 Register Address Command Data
Set Active Register 6 Register Address Setting Register Address
Write Register 7 Data Command Data
Set Active Axis* 25 Axis Setting Axis
Set Axis Device Number* 26 Device Number Setting Device Number
Set Axis Inversion* 27 Invert Status Setting Invert Status
Set Axis Velocity Profile* 28 Profile Number Setting Profile Number
Set Axis Velocity Scale* 29 Maximum Velocity Setting Maximum Velocity
Load Event Instruction* 30 Key Event Command Key Event
Return Event Instruction 31 Key Event Command n/a
Set Joystick Calibration Mode 33 Calibration Mode Setting Calibration Mode
Restore Settings* 36 Peripheral ID Command Peripheral ID
Set Device Mode* 40 Mode Setting Mode
Set Alias Number* 48 Alias Number Setting Alias Number
Return Device ID 50 Ignored Read-Only Setting Device ID
Return Firmware Version 51 Ignored Read-Only Setting Version
Return Power Supply Voltage 52 Ignored Read-Only Setting Voltage
Return Setting 53 Setting Number Command Setting Value
Echo Data 55 Data Command Data
Return Firmware Build 56 Ignored Read-Only Setting Build Number
Return Serial Number 63 Ignored Read-Only Setting Serial Number
Return Digital Input Count 67 Ignored Read-Only Setting Pin Count
Return Digital Output Count 70 Ignored Read-Only Setting Pin Count
Return Analog Input Count 75 Ignored Read-Only Setting Pin Count
Return Analog Output Count 77 Ignored Read-Only Setting Pin Count
Set Auto-Reply Disabled Mode* 101 Auto-Reply Mode Setting Auto-Reply Mode
Set Message ID Mode* 102 Message ID Mode Setting Message ID Mode
Set Baud Rate* 122 Baud Rate Setting Baud Rate
Set Protocol* 123 Protocol Setting Protocol
Convert To Ascii* 124 Baud Rate Command Baud Rate
Error 255 n/a Reply Error Code

* The settings for these commands are saved in non-volatile memory, i.e. the setting persists even if the device is powered down. To restore all settings to factory default, use command 36.


The following sections contain tips for troubleshooting common problems. If the device is unable to communicate, and it is operating erratically, a manual factory reset can be performed through the following steps. Note that this will reset most settings.

  1. Power Off the device
  2. Press and hold keys 1 and 8
  3. Power On the device
  4. Continue to hold keys 1 and 8 until the yellow LED is lit (~5 seconds), then release.

The device has been returned to its factory defaults and can be configured as per the steps in Initial Setup.

Joystick errors

The X-JOY3 sends commands to downstream devices when in the neutral position.
The device's deadbands need to be recalibrated. See the joystick calibrate deadbands (T:33) command.
The X-JOY3 sends the maximum speed well before reaching the maximum deflection.
The device's limits may need to be recalibrated. See the joystick calibrate limits (T:33) command.
The joystick axis resolution may need to be increased. See the joystick resolution (T:27) command.
After upgrading the firmware, the X-JOY3 doesn't send any commands to downstream axes when the joystick axis is moved.
The device's limits and deadbands need to be recalibrated. See the joystick calibrate limits (T:33) command.
The X-JOY3 is not controlling the downstream devices as expected.
In ASCII, use the joystick info command to verify the joystick is set up as intended.
Set joy.debug to 1 to turn debugging mode on and observe from a computer what commands the joystick is sending and how the target devices are replying.

Front Panel Indicators

Green LED On
The device is powered on and is operating normally.
Green LED Flashes Slowly
The operating conditions of the device are outside of the recommended range.
This will occur when the supply voltage is either over or under the recommended range, orthe internal temperature has exceeded the set limit. Check the following:
  • The input voltage is within the operational range of the device. This can be read from the device with the get system.voltage command.
  • The device temperature is within range. This can be read from the device with the get system.temperature command.
Green LED Off
The device is not powered.
Check the supply connections and power adaptor for correct operation.
Red LED On or Flashing.
A critical error has occurred.
Please contact Zaber Technical Support.
Yellow LED Always Off or Flashes but No Reply.
There are communication errors.
Please see the Communication Errors section below.

Unexpected Behaviour

The axis doesn't respond to a move command.
The axis needs to be homed before use.
Send the home (T:1) command.
The axis is moving on its own and running against the ends of travel.
The position encoder has de-synchronized.
Reset the device by power cycling it or sending the system reset (T:0) command, then re-initialize it with the home (T:1) command.
The axis is moving very slowly. It used to move faster.
The speed settings may have been changed inadvertently.
Send a system restore (T:36) command.
The axis makes louder than normal noise during travel and is frequently slipping.
This condition happens if the thrust needed is more than the thrust available from the axis.
Check the following:
  • The force on the axis is less than the maximum thrust.
  • The voltage matches the specified voltage. Read the voltage using the get system.voltage command. Voltage less than the specified voltage for the device will reduce the positioner’s maximum thrust.
Test the following:
  • Try a slower target velocity.
  • Try a lower acceleration and deceleration.
  • Clean the screw and lightly re-grease it with a grease that does not degrade plastics.
Please contact Zaber Technical Support.
The axis doesn't cover the full range of travel, or runs into the end.
A setting might have been inadvertently changed.

Communication Errors

There is no communication with the device; the Yellow LED does not come on or flash.
There are several things that should be checked:
  • Make sure the correct serial port is selected. Try selecting other serial ports in the software.
  • Check the baud rate, hand shaking, parity, stop bit, etc. when configuring the serial communications software. The required settings are listed in the RS-232 Communications section above.
  • Make sure there are no bent pins in the ends of all the data cables
  • Make sure the device is powered. The Green LED should be on.
  • If the computer is a laptop running on batteries, try plugging in the power. Some laptops disable the serial ports when running on batteries.
  • Make sure a null modem adaptor or cable is not being used.
  • Make sure the correct adaptors(if any) are being used. Refer to the pinouts in the RS-232 Communications section above.
  • If the problem was encountered when trying to control the device with custom software, try using one of the demo programs from the Zaber website to verify that the hardware is functioning properly.
Two or more devices both respond to commands sent to device 1.
Most devices are shipped with their device number set as 1. If you connect the devices through Zaber Console, you will be prompted to renumber them. If you aren't able to install and open Zaber Console, send the renumber (T:2) command in the software you are using to set all of the device numbers to different values.
The Yellow LED comes on briefly when sending a command, but the device does not reply.
Check baud rate, hand shaking, parity, stop bit, etc. are set as per the RS-232 Communications defaults.
The device numbers may not be what is expected, issue a renumber (T:2) command. Make sure that the computer does not transmit anything else while the devices renumber.
If using the Binary Protocol, check the following:
  • 6 bytes are transmitted and that the device number and command are valid.
  • The software does not transmit any control characters such as line feed and spaces.
  • That the serial port is not configured with a termination character (it often defaults to linefeed).
If problems are encountered when using custom software, try using one of the demo programs from the Zaber website to verify that the hardware works.
The device does not behave as expected when software sends it a series of commands.
The computer might be set to Unicode. This is common for languages that use non-Latin based characters. Go to Control Panel/Regional and Language Options/Advanced. Select a language for non-unicode programs. This should be English or another Latin based character language.
Check what is being sent out of the serial port. has a list of some tools to monitor serial ports.
In Binary mode, the device does not send replies but otherwise works.
Auto-reply might have been disabled via T:101.
Send a system restore (T:36) command.
If the problem is encountered when trying to control the device with custom software:
  • Use a demo program from the Zaber website to verify that the hardware is functioning properly.
  • Make sure that the receiving part of the code or commercial package is correct.
  • Check the serial port settings are correct.
  • Check connectors for bent or broken pins.
In Binary mode, the device sometimes returns fewer than 6 bytes.
This typically indicates a problem with the serial port settings. Some serial ports are set to automatically recognize and remove specific control characters such as carriage returns when they appear in the RS-232 receive buffer.
Check that the settings are correct and are not removing or replacing characters.

Warranty and Repair

For Zaber's policies on warranty and repair, please refer to the Ordering Policies.

Standard products

Standard products are any part numbers that do not contain the suffix ENG followed by a 4 digit number. Most, but not all, standard products are listed for sale on our website. All standard Zaber products are backed by a one-month satisfaction guarantee. If you are not satisfied with your purchase, we will refund your payment minus any shipping charges. Goods must be in brand new saleable condition with no marks. Zaber products are guaranteed for one year. During this period Zaber will repair any products with faults due to manufacturing defects, free of charge.

Custom products

Custom products are any part numbers containing the suffix ENG followed by a 4 digit number. Each of these products has been designed for a custom application for a particular customer. Custom products are guaranteed for one year, unless explicitly stated otherwise. During this period Zaber will repair any products with faults due to manufacturing defects, free of charge.

How to return products

Customers with devices in need of return or repair should contact Zaber to obtain an RMA form which must be filled out and sent back to us to receive an RMA number. The RMA form contains instructions for packing and returning the device. The specified RMA number must be included on the shipment to ensure timely processing.

Email Updates

If you would like to receive our periodic email newsletter including product updates and promotions, please sign up online at (news section). Newsletters typically include a promotional offer worth at least $100.

Contact Information

Contact Zaber Technologies Inc by any of the following methods:

Phone 1-604-569-3780 (direct)
1-888-276-8033 (toll free in North America)
Fax 1-604-648-8033
Mail #2 - 605 West Kent Ave. N., Vancouver, British Columbia, Canada, V6P 6T7
Email Please visit our website for up to date email contact information.

The original instructions for this product are available at

Appendix A - Available Communications Ports

Finding Installed Serial Ports


  1. Open Search or Run from the Start Menu or Taskbar, type "Device Manager" and press enter.
  2. Expand the Ports (COM & LPT) category.
    • In this example there are two serial ports available (COM1 and COM15), which are both USB adaptors.


  1. Finding devices
    • Open a terminal and execute the following command:
    dmesg | grep -E ttyU\?S↵
    • The response will be similar to the following:
      [ 2.029214] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
      [ 2.432572] 00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
      [ 2.468149] 0000:00:03.3: ttyS4 at I/O 0xec98 (irq = 17) is a 16550A
      [ 13.514432] usb 7-2: FTDI USB Serial Device converter now attached to ttyUSB0
    • This shows that there are 3 serial ports available: ttyS0, ttyS4 and ttyUSB0 (a USB adaptor)
  2. Checking port permissions
    • Using the ports found above, execute the following command
    ls -l /dev/tty{S0, S4, USB0}↵
    • The permissions, given below, show that a user has to be root or a member of the dialout group to be able to access these devices
      crw-rw---- 1 root dialout 4, 64 Oct 31 06:44 /dev/ttyS0
      crw-rw---- 1 root dialout 4, 68 Oct 31 06:45 /dev/ttyS4
      crw-rw---- 1 root dialout 188, 0 Oct 31 07:58 /dev/ttyUSB0
  3. Checking group membership
    • The output will be similar to the following:
      adm cdrom sudo dip plugdev users lpadmin sambashare
      Notice that dialout is not in the list
    • A user can be added to the dialout group with the following command
    sudo adduser $USER dialout↵
    • Group membership will not take effect until the next logon.


  1. Finding devices
    • Open a terminal and execute the following command:
    ls /dev/cu.*serial*
    • The response will be similar to the following:
    • This shows that there are two serial ports available, both of which happen to be USB adaptors.
    • There may be other devices that match this query, such as keyboards or some web cameras. To determine which one corresponds to your USB serial cable, try repeating the command with and without the cable connected to the computer, to see which one appears and disappears.