Just getting the TX2 one week ago and I’m trying to setting up some sensors for a project. I’m particularly interested to plug an IMU (xsens mti) on the micro usb A port using the micro usb / usb adapter provided with the Jetson.
However, when I plugged the IMU into the adapter I’m not able to see a /dev/ttyUSBX . So here are my questions :
1- Is it a reasonable idea to plug such a device through the micro usb / usb adapter ?
2- What should I do in order to make appear a /dev/ttyUSBX needed by the xsens driver ?
My revision of the Jetson :
nvidia@tegra-ubuntu:~$ head -n 1 /etc/nv_tegra_release
# R27 (release), REVISION: 1.0, GCID: 8566447, BOARD: t186ref, EABI: aarch64, DATE: Thu Mar 2 05:14:54 UTC 2017
My ubuntu is able to see the device (result of dmesg cmd) :
[ 5844.256158] tegra-xudc-new 3550000.xudc: device mode on
[ 5844.261422] tegra-xudc-new 3550000.xudc: device mode off
[ 5844.266919] tegra-usb-cd usb_cd: notification status (0x1, 0x0)
[ 5844.272916] tegra-usb-cd usb_cd: disconnected USB cable/charger
[ 5844.278884] tegra-usb-cd usb_cd: set current 0ma
[ 5844.283537] tegra-xudc-new 3550000.xudc: entering ELPG
[ 5844.289910] tegra-xudc-new 3550000.xudc: entering ELPG done
[ 5845.676700] extcon-gpio-states external-connection:extcon@1: Cable state 2
[ 5845.792755] extcon-gpio-states external-connection:extcon@1: Cable state 2
[ 5847.100448] usb 1-1: new full-speed USB device number 21 using xhci-tegra
[ 5847.234238] usb 1-1: New USB device found, idVendor=2639, idProduct=0003
[ 5847.241004] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5847.248240] usb 1-1: Product: MTi-30 AHRS
[ 5847.252311] usb 1-1: Manufacturer: Xsens
[ 5847.256271] usb 1-1: SerialNumber: 036006B6
[ 5847.261481] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work mailbox command 6
Thanks for your help !
Note: My other USB (3.0) is already in use by a high frame rate camera on the system.
There is no difference between the micro connector and the full-sized connector unless USB3 matters…the micro connector will be configured only for USB2. I doubt this will matter (this does matter on some devices which can’t function at slower bandwidth…those devices do not provide a USB2 compatibility mode). You could of course try it on the full-sized USB connector to temporarily test if it matters.
The log tends to indicate USB is doing what it should and making the device available for any driver which wants to claim it. I don’t see any message that says a driver claimed the device. If the device is a generic/standard device class, then you wouldn’t need any extra drivers; for the case of a device using its own drivers you would need to provide the driver before the ttyUSB# shows up. Even if the driver does take ownership sometimes the device special file name is not what is expected because of udev rules (this probably is not the case for this instance…a driver would still need to take ownership before any device special file would show up).
If you run “lsusb” your device should show up. On the line showing that device there will be an “ID”, it’s format something like “1234:5678”. To verbosely list information about that device (adjust the ID to your case):
First, sorry for the late reply. Ok so indeed ubuntu seems to recognize the device correctly.
Bus 001 Device 007: ID 2639:0003 Xsens MTi-30 AHRS
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 2 Communications
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x2639 Xsens
idProduct 0x0003 MTi-30 AHRS
bcdDevice 0.00
iManufacturer 1 Xsens
iProduct 2 MTi-30 AHRS
iSerial 3 036006B6
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 48
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 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
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Status: 0x0000
(Bus Powered)
Looking at the output of the lsusb and dmesg command I know my jetson is recognizing the IMU. I only miss the mounting point in /dev. I tried to add the following line in a /etc/udev/rules.d/99-custom.rules file :
But without success. I’m pretty sure it’s a minor things cause’ when I plug it on Ubuntu of my laptop it gets mounted in /dev/ttyUSB0 and makes it possible to communicate with. On the driver side, I use a ROS package : GitHub - ethz-asl/ethzasl_xsens_driver: Driver for xsens IMUs
The driver is a python script that implement the MT Protocol of Xsens imus.
I keep digging…