Connecting Jetson TX2 to Roboteq MDC2460

Hello all,

I am trying to connect my Jetson TX2 to a Roboteq MDC2460.

So far I am able to run my robot using the USB connection provided on the Roboteq to my Jetson’s USB connection. I used their linux api to control the motors.

However, the company recommends that we use the RS232 connector. I do not have an RS232-ttl adapter. I am trying to connect the rx, tx, and gnd from the motor controller to the Jetson’s J17 serial pins.

I know for a fact that it is receiving data because dmesg |grep tty gives me a ttyS0: 1 input overrun(s) message. So something is coming through but I am unable to access or control the information.

I tried opening up /dev/ttyTHS2 as my port for the linux api. I successfully open the port and initializes it but it cannot read the information coming through.

I would like to be able to programmatically open my serial port and send commands to the motor controller to control my robot through my Jetson TX2.

I would appreciate some example code that can help me at least read the information and give commands to the motor controller. A lot of it is written in c++ but I am willing to take python code as well.

I have scoured the internet for remedies been through a ton of Jetsonhacks tutorials and a lot of this forums fixes and all of github to no avail.


An actual RS232 connector (usually) uses much higher voltages than the 3.3V of J17. The protocol is the same, but if your RS232 runs 12V or more, then I’d expect the port to be destroyed. Some RS232 connectors are run at lower voltages, but you need to be very careful about what you connect.

Do you have information on the port settings which are being used by the device? The default setting would likely be 115200 8N1 without flow control. Also, does your device use CTS/RTS flow control? An overrun might imply flow control was expected, but not used, or that the flow control was expecting a different number of stop bits, so on. Basically we need to first know everything possible about what settings (including flow control) the device is using or expecting.

Thanks for getting back. Let me give you all of the information.

So the RS232 outlet from the Roboteq motor controller outputs 5V. The baud rate is 115200 for both the motor controller and I was able to communicate with the motor controller using my USB at that rate.

Here is the port connection information from the manual of the motor controller -

I used pin 2 (Tx),3 (Rx),& 5 (GND) from the Roboteq motor controller and connected it to my Jetson’s J17 port pin 4 (Rx), pin 5 (Tx), and Pin1 (GND). I setserial baud rate to 115200 just to make sure.

The Jetson comes equipped with cts/rts. I believe it is pin 2 and 6 on J17 header.

The rs232 outlet from the Roboteq does not have cts/rts coming out. However, I did find the rs232-ttl adapter from roboteq that does come with cts/rts output-

I hope that is enough information to go by. I can purchase the adapter if that will be the only solution to get this connection working.

5V would be incorrect, you need 3.3V (the signal itself is 3.3V). Are you measuring the signal voltage or the power supply? If it is 5V perhaps it wasn’t damaged, but it would still be an invalid signal level and there is no way I would trust it. The original RS232 is tolerant of a wide range of voltages, but the headers which go directly to logic are not tolerant and need a specific voltage.

So we know baud rate, but we need to know is how many stop bits, if parity is used, and if flow control is used (and if it is, then CTS of one side needs to connect to RTS of the other side).

You are correct. I just got off the phone with Roboteq and they confirmed that the voltage at the rs232 is ±10v.

I will need an rs232-ttl converter to go from 10V to 3.3V of the Jetson which is closer to ttl voltage. CTS/RTS are not required for this serial connection. My errors seem to be that of the voltage conversion issue like you first pointed out.

Thanks a lot for the help!