I’m working on a project using a Jetson Xavier AGX (Jetpack 4.6.4) which requires some usb devices connected to it, like a stereo camera Zed2, a GPS, 3 Arduino and a WiFi 4G dongle usb.
I use ROS1 as middleware to collect data from these devices.
Every device is a ROS1 node, which runs immediately (through a systemd service) on startup and it looks like it’s working.
I’ve attached the Arduino and the GPS to the Xavier through a 4 ports dongle and the Zed is connected to the eSATA-usb port.
However, when I attach a new usb device (logitech F710 gamepad), it appears that the Xavier is not able to manage the new device; sometimes it detach the GPS (or the Zed) to let the joystick works.
You can reduce the number of USB devices. The arduinos use serial ports for communication. Many Arduino boards have USB-Serial onboard, but ultimately it’s serial. GPS uses also a serial connection. There are GPS modules with internal USB-Serial converters, but ultimately it is only an ASCII data stream over serial.
The solution is to use an FTDI FT4232H based USB-to-4-serial adapter. This is only a single USB device, but with four ports. GPS and arduinos connect to the four serial ports. You may need to use different Arduinos and GPS module with TTL serial interface, though. With this change you only have one USB device instead of four (or 5 including the hub).
This ist the usb-serial chip. I’ve used it with Jetson systems, and it works just fine.
Wifi: use it if you have a free M.2 Key E slot for this.
LTE 4G: The NVidia Devkit does not have an M.2 Key B slot, so a M.2 LTE modem won’t fit. Besides: most LTE modems are USB devices, even the M.2 cards.