I have a new Jetson AGX Orin 64 GB dev kit, and I just flashed it with the latest a couple of weeks ago using the SDK Manager so I have Jetpack 6.2.1. I’m running off of an NVMe.
I’m running into an issue trying to get 30 fps from 4 webcams (Logitech C920). I’m using ROS2 Humble with the ‘usb_cam’ driver. For some reason I am only getting 15 fps, though sometimes I’ll get 30 fps on one of the cameras. Rebooting doesn’t fix it. I am even only asking for 640x360 resolution. I realize it could be a number of things but I am confused about the USB. When I do ‘lsusb -t’ with no cameras plugged in (only a keyboard and mouse plugged into the USB A ports by the video output), I get:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 3: Dev 2, If 0, Class=Wireless, Driver=rtk_btusb, 12M
|__ Port 3: Dev 2, If 1, Class=Wireless, Driver=rtk_btusb, 12M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 13, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 1: Dev 13, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 14, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
I’m new at this but I interpret this to say that there are 2 root hubs, one is 10 Gbps (USB3) and the other is 480Mbps (USB2). There are 6 USB ports exposed on the dev kit (4 A, 2 C), and it doesn’t seem to matter what I plug in where, everything is going under Bus 01, the USB 2 one. What gives? Here’s what i see when I unplug all USB devices (including the keyboard and mouse – I’ll use a sleep to give me time to unplug) with cameras plugged into the USB A ports:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 3: Dev 2, If 0, Class=Wireless, Driver=rtk_btusb, 12M
|__ Port 3: Dev 2, If 1, Class=Wireless, Driver=rtk_btusb, 12M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 15, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 15, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 3: Dev 15, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 15, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 1: Dev 21, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 1: Dev 21, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 1: Dev 21, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 1: Dev 21, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 16, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 16, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 16, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 16, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 22, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 22, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 2: Dev 22, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 22, If 1, Class=Video, Driver=uvcvideo, 480M
Here’s what I get when I plug 3 of the cameras into a USB3 type C hub that also breaks out HDMI (which I understand does not work on the dev kit), ethernet, and a microSD and SD card reader (keyboard and mouse are plugged into two of the USB A ports):
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 2: Dev 8, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 10, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 9, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 11, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 1: Dev 25, If 0, Class=Hub, Driver=hub/5p, 480M
|__ Port 5: Dev 27, If 0, Class=, Driver=, 480M
|__ Port 2: Dev 26, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 29, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 29, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 3: Dev 29, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 29, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 28, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 28, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 28, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 28, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 30, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 2: Dev 30, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 30, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 2: Dev 30, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 2, If 0, Class=Wireless, Driver=rtk_btusb, 12M
|__ Port 3: Dev 2, If 1, Class=Wireless, Driver=rtk_btusb, 12M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 31, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 31, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 3: Dev 31, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 31, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 1: Dev 23, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 24, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 24, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
I have also tried plugging one camera into a USBA / USBC adapter and using both of the USBC ports, and I never get a camera showing up anywhere besides Bus 01, stuck at 480 Mbps.
Any ideas? I am most likely just misunderstanding something, but I had the same issue on a Jetson Orin Nano dev kit recently, and after spending a bunch of time basically just swapping ports I eventually got it to log all 4 cameras at 30 fps… but when I went back and tried to replicate that I couldn’t. (And when it was working I didn’t think to check lsusb to see if it was any different.) So confused. I don’t have a powered USB hub I could try atm. Anyway. Thanks for any suggestions / insight!