How to connect TX1 to Arduino via USB port?

Hi, there,

I am having difficulties getting TX1 communicating with Arduino Uno via USB Jack(port). When I plug the USB port connected with the arduino into a usb hub connected with the TX1, the newly connected usb device can be found via “lsusb” in the terminal but the device cannot be mapped to the “/dev/” folder, which means using “ls /dev/ttyUSB*” returns nothing. I solved the same problem by installing Grinch kernel for TK1 device. But the problem is there is no Grinch kernel for TX1. Is there any way to solve my problem?

Thank you in advance!

USB will recognize devices whether there is a driver for the device or not. When USB sees the device enumerate it broadcasts a hot plug event and if a driver wants to take ownership it can. In the case of some standard classes (such as Human Interface Device…keyboards, mice, joysticks) there will always be a driver available. Many devices though are not standardized, and you must make available the driver for that specific device. You might get lucky and have a specific driver for a specific device available on a desktop install even if the device is not a standard class. An example is that the very popular FTDI chipsets are available for serial USB UARTs and would provide a “/dev/ttyUSB*” without special installation.

If you have a driver for your device, and if the device is not well known, there may also be a “/dev/” file produced, but the name would not be as you expect…devfs has rules to rename certain devices (especially custom driver devices wanting to look generic) to something commonly expected.

If you monitor “dmesg --follow” as you plug in and unplug the device what does it show?

If you look at lsusb you will see an ID in the format of “1234:5678”. Use this to look at a verbose listing of just that one device…what does that show? Substitute “1234:5678” with your actual ID:

sudo lsusb -d 1234:5678 -vvv

Thank you for your reply!
When I plugin the USB device, dmesg --follow shows as below:
[ 240.713492] usb 3-1.3: new full-speed USB device number 9 using tegra-ehci
[ 240.755723] usb 3-1.3: New USB device found, idVendor=1a86, idProduct=7523
[ 240.755793] usb 3-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 240.755840] usb 3-1.3: Product: USB2.0-Serial
[ 240.765147] platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.766212] platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.767249] platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.768134] reg-fixed-sync-voltage ce.regulator: Consumer c0 does not have device name
[ 240.768331] platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.769193] platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.769993] platform d3.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.770606] reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
[ 240.770755] platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.771561] platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.772340] platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.774457] platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
[ 240.775305] platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral

When I unplug it, it shows:
[ 267.866079] usb 3-1.3: USB disconnect, device number 9

When I look up the Device ID through sudo lsusb -d 1a86:7523 -vvv, it shows:
Bus 003 Device 009: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x1a86 QinHeng Electronics
idProduct 0x7523 HL-340 USB-Serial adapter
bcdDevice 2.54
iManufacturer 0
iProduct 2 USB2.0-Serial
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 96mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 1
bInterfaceProtocol 2
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 1
Device Status: 0x0000

From the above data, do I have to use FTDI chipsets? Can I install some driver to fix the problem?

The dmesg shows USB sees the device plug in and unplug, but never mentions a driver, so the driver does not exist or otherwise failed to take ownership.

The data shows this is a device requiring a custom driver and is not a simple FTDI serial UART. You will need a specific driver running arm64/aarch64/ARMv8-A architecture.

Yes, the method is, I used the description of http://www.jetsonhacks.com/2016/09/28/build-tx1-kernel-and-modules-nvidia-jetson-tx1/ attentively you watch video to the offered link (https://youtu.be/jABmGKA-TN0) from 2:58 till 2:59, you need to make also
Also pay attention that in the files offered *.sh links to specific versions of kernel are specified, you need or to use the same kernel version on jetson tx1, or to comment out and change lines of loading of kernel to the version which is used at you on jetson TX1.