# Microstrain 3DM-GX3-25 (serial) Write Error

I've got a MicroStrain 3DM-GX3-25 (serial) connected to my computer's USB port, via a Keyspan port adapter. dmesg mentions no errors and says that the converter (and thus the IMU) are attached to ttyUSB0. When connected, the lights on the Keyspan and the MicroStrain blink as expected.

[603041.844116] usb 2-1: new full-speed USB device number 3 using uhci_hcd
[603042.048218] keyspan 2-1:1.0: Keyspan 1 port adapter converter detected
[603042.048428] usb 2-1: Keyspan 1 port adapter converter now attached to ttyUSB0


When I install and run the imu_node executable in the microstrain_3dmgx2_imu package, I get the following error:

$rosrun microstrain_3dmgx2_imu imu_node [ERROR] [1349383368.102022439]: error writing to IMU [Resource temporarily unavailable] (in microstrain_3dmgx2_imu::IMU:send) You may find further details at http://www.ros.org/wiki/microstrain_3dmgx2_imu/Troubleshooting  Increasing the log verbosity, setting the level to DEBUG for this component gives no better information: $ ROSCONSOLE_CONFIG_FILE=./roslog.conf rosrun microstrain_3dmgx2_imu imu_node
[ERROR] [1349794504.562833148]: error writing to IMU [Resource temporarily unavailable] (in microstrain_3dmgx2_imu::IMU:send) You may find further details at http://www.ros.org/wiki/microstrain_3dmgx2_imu/Troubleshooting
[DEBUG] [1349794505.675825241]: error writing to IMU [Resource temporarily unavailable] (in microstrain_3dmgx2_imu::IMU:send) You may find further details at http://www.ros.org/wiki/microstrain_3dmgx2_imu/Troubleshooting


Now, I know permissions are set somewhat correctly, because I otherwise get the "Unable to open serial port [/dev/ttyUSB0]. Permission denied." error prior to chown/chmod-ing /dev/ttyUSB0. After that, apparently the device can be opened, but can't be properly accessed.

I've got a USB version of the device ordered and on it's way, but it's a shame this one doesn't work. Do you think the problem is with the serial<->USB converter? Have any suggestions to try?

edit retag close merge delete

Sort by » oldest newest most voted

I think the problem is that the sample code that you appear to be using is for the MicroStrain 3DM-GX2 product. The header information that you show (microstrain_3dmgx2_imu imu_node) leads me to believe that. The 3DM-GX3-25 which you have has a different data communications protocol. That protocol can be found on the Documentation tab of the product's web page at: http://www.microstrain.com/inertial/3DM-GX3-25. If the serial number of the unit is less than 9000, use the Single Byte Protocol; if the serial number is 9000 or greater, use the MIP protocol. Sample code may also be found for both the Single Byte and MIP protocols. Please contact me at bjtrutor@microstrain.com if I can provide you with direct support.

more

For Mac OS X, apparently one solution to this problem is to use /dev/cu.xxx instead of /dev/tty.xxx as the device name. Here is a link explaining the difference between the two.

more

Thanks bjtrutor.

I received the USB version (which is really the exact same device with a different detachable cable), and using the same microstrain_3dmgx2_imu package, everything works as advertised. I'm pretty confident that this package has support for both the gx2- and gx3-series, based on a) it works, b) other posts on the internet say so and c) the code has special provisions for devices that identify as gx3-series.

So the question is then... how can I get the serial version (via USB adaptor) to work? (And I know the adaptor works, because it's being used successfully with other devices.) Or, should I just not bother, and go with buying a USB connector cable from Microstrain and move on with my life?

more