Intel Realsense D435i showing as connected to USB 2.1

I tried connecting the D435i to the AGX Xavier through a 3.2 USB Hub. Using realsense-viewer it just shows the device is connected to 2.1 port. I tried connecting it directly to the native port but still it shows as 2.1 port.

What could be the possible reason?

Assuming you are using the AGX’s USB-C connector, or another USB3.x connector, run command “dmesg --follow”, and report what gets added to that log message upon plugin of the camera.

The following was displayed when i plugged in the D435i:-

[ 613.515838] usb 1-4.3: new high-speed USB device number 10 using tegra-xusb
[ 613.536831] usb 1-4.3: New USB device found, idVendor=8086, idProduct=0b3a
[ 613.536841] usb 1-4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 613.536845] usb 1-4.3: Product: Intel(R) RealSense™ Depth Camera 435i
[ 613.536848] usb 1-4.3: Manufacturer: Intel(R) RealSense™ Depth Camera 435i
[ 613.538345] uvcvideo: Found UVC 1.50 device Intel(R) RealSense™ Depth Camera 435i (8086:0b3a)
[ 613.540210] uvcvideo: Unable to create debugfs 1-10 directory.
[ 613.540409] uvcvideo 1-4.3:1.0: Entity type for entity Intel(R) RealSense™ Depth Ca was not initialized!
[ 613.540615] uvcvideo 1-4.3:1.0: Entity type for entity Processing 2 was not initialized!
[ 613.540751] uvcvideo 1-4.3:1.0: Entity type for entity Camera 1 was not initialized!
[ 613.542145] input: Intel(R) RealSense™ Depth Ca as /devices/3610000.xhci/usb1/1-4/1-4.3/1-4.3:1.0/input/input11
[ 613.543147] uvcvideo: Found UVC 1.50 device Intel(R) RealSense™ Depth Camera 435i (8086:0b3a)
[ 613.544361] uvcvideo: Unable to create debugfs 1-10 directory.
[ 613.544518] uvcvideo 1-4.3:1.3: Entity type for entity Processing 7 was not initialized!
[ 613.544691] uvcvideo 1-4.3:1.3: Entity type for entity Extension 8 was not initialized!
[ 613.544824] uvcvideo 1-4.3:1.3: Entity type for entity Camera 6 was not initialized!
[ 613.607869] hid-sensor-hub 0003:8086:0B3A.0006: No report with id 0xffffffff found
[ 613.609461] hid-sensor-hub 0003:8086:0B3A.0006: No report with id 0xffffffff found
[ 613.610458] hid-sensor-hub 0003:8086:0B3A.0006: No report with id 0xffffffff found
[ 613.611373] hid-sensor-hub 0003:8086:0B3A.0006: No report with id 0xffffffff found
[ 614.087855] hid-sensor-hub 0003:8086:0B3A.0006: No report with id 0xffffffff found

it is quite common

  1. upgrade the firmware to the latest
  2. try another port
  3. try with powered usb hub / unpowered usb hub.
    not all cables/ adapters/ hubs are good for d435

Added note to what @Andrey1984 mentions: The plugin event shows a USB2 device. If you change firmware, then the device might be able to be detected as USB3 (provided the port and any HUBs in-between are also USB3).

Just a note: the camera is detected as a USB3 device when connected with another system’s usb3.0 port. The issue happens only with Xavier. In that case should I still change the firmware?

which camera firmware version are you using?
neither of the three proposed solutions have been tried yet?
what else have you tried so far to resolve the issue?

Some firmware is added to a device, and the device remembers that firmware. If that were the case, then the firmware would only have to be installed once. Other firmware uploads to a device every time the system is used, and so in that case firmware would have to be added to all systems. I have no idea what the firmware requirements are for your camera, and especially do not know if the camera would have had that firmware permanently uploaded, versus needing something from the system each boot. Don’t know, but it is always worth looking for firmware packages since it won’t hurt to have this on the system.

Btw, does any other USB3 device work on that port as USB3? Do you have some other USB3 device you can test, e.g., a USB3 external hard drive, or a different model of camera? If so, then you could monitor “dmesg --follow” as this other device is plugged in and see if that other device shows as USB3.

Note that if you are not using a dev kit, and thus are using a third party carrier board, you would then need a custom device tree. An incorrect device tree might prevent the USB3 controller from being routed to a USB3 connector.

If this is a dev kit, then flash should always provide the correct device tree. In this case (and in all function USB3 cases), if the signal quality is not high enough quality, then the port would intentionally back off on speed and reduce to USB2 speed. This would not be a bug so much as it is a case of a quirk of a particular device and cable combination.

I tried the following steps, but still not solved:-

  1. I tried updating the firmware to latest
  2. Tried a different port in USB Hub as well as the native port
  3. Tried with two unpowered USB hubs - To add more, the same hub was used with TX2 to connect the same D435i and it was detected as a USB3.1
  1. which is the version of the firmware you upgraded to?
  2. are you using only unpowered hub? with hub did you try various adapters? How many native ports did you try? Did you try only one native port ? how about other native ports? Try usb powered hub
    you have to do various trials to reach the treshold for getting the camera from 2.1 to 3

Do you have other USB3 devices you can try on different ports (something other than the camera, e.g., a USB3 external hard drive or network device)?

the reason d435i downshifts to 2.1 is caused by but is not limited to:

  1. incorrect firmware version
  2. insufficient power [ could be addressed by powered usb hub], but only in certain cases with good cables/ adaptors it would work
  3. with good adapters certain unpowered usb hubs would resolve
  4. unless all ports of the Jetson were tried with combination of the above it is not indicative enough to be a true negative for a complete failure
    Moreover, it also might take to power off the Jetson before each trial

yeah, did you make sure no any other devices are connected to the usb hub in your trials? did you deisconnect every USB device from Jetson during yotu trials? IF not - then do.

what realsense sdk version are you using? got installed? udev rules installed?

We encountered this kind of situation like >100+ times; all times resolved. How fast it gets resolved depends on level of technical knowledge of the engineer , typically and available hardware: hub/ wires