User Tools

Site Tools


product:usb2ax:faq

USB2AX: FAQ

Q: USB2AX: What's that and why would I need one?

R: All is explained in What is the USB2AX :-)

Q: Servos: which ones are compatible with the USB2AX?

Q: I'm using Labview and sometimes have problems, like computer crashes and BSOD, what's going on?

R: Please use the VISA driver in Labview in Synchronous mode only.

Q: USB2Dynamixel: how does it compare to the USB2AX?

R: The USB2Dynamixel is Robotis' version of an USB interface to talk with the Dynamixels. In most cases, you can replace it with the USB2AX without changing anything to the rest of your setup (hardware and software).

The USB2AX is a lot smaller (16x36mm instead of 35x90mm), less expensive, has lower USB latency, and does not need proprietary drivers. The USB2AX also has advanced functionalities: the sync_read instruction to read a lot of information very fast, and extension ports (GPIO/SPI). It can also survive a short-circuit between the 12V and DATA wires indefinitely while this would damage the USB2Dynamixel. As an added bonus, the USB2AX is open source so you can learn, modify, remake and even sell your own version.

On the other hand, the USB2AX can only talk to AX and MX-T servos, not to the RX, EX or MX-R ones. Since the release of the MX line of Dynamixel, it is no longer a big problem as you can get all servo sizes with the same 3 pin connector.
The USB2AX does not have the RS232 port and therefore can not be used to program the older CM-5 and CM-510 controllers. This problem is no longer relevant since the newer controllers (CM-530, CM-900) use an USB cable instead of the old custom “DB9 to Jack 3.5mm” cable.

Q: Dynamixel SDK: how do I use it with the USB2AX?

R: WARNING : The following answer is about the old Dynamixel SDK v1. Newer revisions have different implementations that make it easier to use the USB2AX (just open the serial port) for regular packets, but also do not work with the USB2AX SYNC_READ advanced command (which is NOT the same as the newer, official SYNC_READ command in Dynamixel Protocol v2.0). The following answer is left here for historical reasons.

The Dynamixel SDK provided by Robotis is a software library that makes it easy to control Dynamixel servos from a C++ application. A modified version adding support for sync_read and sync_write is available in the GitHub Repository. While the Windows version should work out of the box, the Linux version does not.

Gotchas with the Dynamixel SDK for Linux:

  • You have to replace the dxl_hal.c file with this one before you compile the library.
  • Your user account needs to be added to the dialout group for the serial port to be accessible.
  • If you have frequent timeout errors, you might try to change l.154 of dxl_hal.c from gfRcvWaitTime = (float)(gfByteTransTime*(float)NumRcvByte + 5.0f); to gfRcvWaitTime = (float)(gfByteTransTime*(float)NumRcvByte + 34.0f);
  • If you need to switch back to the USB2Dynamixel, you will have to change back the file to the original one, and recompile the library, then your application.

What's going on? The Dynamixel SDK assumes the interface is FTDI-based, and thus searches a device named ttyUSBx, while the USB2AX uses the integrated CDC/ACM driver - which names the device ttyACMx. The second problem is that after opening the device, the Dynamixel SDK tries to set parameters which do not exist in the CDC/ACM driver.

Q: How to power the servos?

R: To power the Dynamixel servos that the USB2AX will control, you now have a variety of possibilities:

How do I build my power adapter?

WARNING: check the pin assignment in the Dynamixel connector before anything else! Be extremely careful not to mess up the cables, otherwise you could damage your whole installation!!! We won't accept any liability.

Simple Power cable (must be used at the end of the bus):
Cut a Dynamixel cable and solder a battery connector or battery cable to the GND(-) and VDD(+) lines. Protect the solder joints with heat-shrink tubing or electrical tape. You can forget or remove the DATA line altogether.

Y power cable (can be used in place of any other cable):
Cut the GND and VDD lines of a Dynamixel cable around the middle, be careful not to damage the DATA line. Solder both halves of each cable to your battery connector or cable, GND on - (black), and VDD, the middle one, on + (red). Protect the solder joints with heat-shrink tubing or electrical tape.

Q: How open is the project?

R: Nearly as open as can be! You can get the sources for the firmware, the Eagle Files for the PCB, the Bill of Material, and all possible information on the project. The license used allow you to do nearly anything as long as you give proper credit. Software is similar to a BSD (open a source file for details), hardware is OSHW 1.0 and documentation is CC-BY-SA-3.0.
I learned a lot thanks to other's people Open Source projects, so this is my little contribution :-).
If you spot anything missing, this is an error and I'd like to correct it ASAP! Please send an email to admin {at} xevelabs.com to let us know!

Q: My USB2AX stopped working! What do I do?

R: As you can see, the USB2AX is pretty small and uses components hard to service without specialized tools… You can try contact support {at} xevelabs.com, we're interested to know how it happened, and we'll see what we can do. :-/

product/usb2ax/faq.txt · Last modified: 2018/04/02 22:21 by xevel