USB serial

Hi,

I’ve been trying to get some devices connected to the TX1 using serial over USB, but have so-far been unsuccessful. I recompiled the kernel to enable usb serial, as well as the cp210x driver.

Devices appear when querying lsusb and dmesg - including the device product name, manufacturer. I don’t, however, get any new /dev/tty devices. I can manually create a binding between the device and the driver using modprobe, by writing to the /cp210x/new_id file. This results in a ttyUSB0 device appearing when the arduino is connected, but I can’t read or write to it.

cp210x ttyUSB0: failed to set baud rate to 300
cp210x ttyUSB0: failed to set baud rate to 57600
cp210x ttyUSB0: cp210x_open - Unable to enable UART

I’ve tried different devices (uding FTDI and cp210x drivers) and cables, all of which work on my macbook with a simple ‘screen’ session, but so far I have never been able to get serial working over USB with the TX1.

I’m currently using jetpack 3.1, and will try 3.2 if there aren’t other suggestions.

Has anyone else struggled with serial over USB? Any suggestions?

Many thanks

Here is a tutorial from the wiki TK1 for connecting to an Arduino, although the procedure should be similar for TX1/TX2:

https://elinux.org/Jetson/Tutorials/Program_An_Arduino

Does that help, or do you still experience the issue?

I assume you are running this from the Jetson side…not sure, though this might apply on a host as well…

Is your user a member of group “dialout”? Check:

grep dialout /etc/group

If not, append the group via:

sudo usermod -a -G dialout whoeveritis

By default users ubuntu and nvidia are members of this on the Jetson.

Thanks for the quick replies.

@dusty_nv that is the tutorial I followed to get this far. Unfortunately the behaviour shown in the ‘verify installation’ section isn’t replicated on my TX1. The FTDI and CP210x modules seem to be installed and activated, but I need to manually bind the USB device to the correct driver, and then UART interfacing still fails to work - with the error I posted above.

@linuxdev. Thanks. This is on the Jetson side, as user nvidia. My user is a member of the group ‘dialout’.

In the past I have used FTDI devices on both the TX1 and TX2 without issue. I’m testing an FTDI device right now and it is working as expected…I am thinking perhaps it is how you are using the port which is getting in the way rather than the port itself.

So here is an experiment: Normally the RX and TX are color coded orange and yellow, and if on a 0.1" header, pins 4 and 5. See:
https://elinux.org/Jetson/TX1_Serial_Console#Color_Codes_and_Pin_Descriptions_of_the_USB_Serial_UART_Cable

I installed a jumper between pins 4 and 5 (between orange and yellow). I ran:

screen /dev/ttyUSB0 115200

…typing anything in echoes back because of the jumper. If you pull the jumper, than nothing will echo. Add the jumper back in, and typing will echo.

I tried the same thing at other speeds and this worked as well. In this case I am using R28.2 (from JetPack3.2) on a TX2, but I’ve always found TX1 and TX2 to both work with this (I’ve used this on both in the past on several releases).

Can you get echo when TX and RX are wired directly together?

On my R28.2 both FTDI and CP210X are already configured directly in the kernel and don’t even need a module to be added. What do you see from:

zcat /proc/config.gz | egrep 'CONFIG_.*(CP210X|FTDI_SIO)'