TX2 jetpack3.1 USB device

Hello everyone,
I know that Jetpack3.3 mirco usb can be used as Ethernet/Serial/USB Mass Storage at the same time.

I want the same usb function on TX2 Jetpack3.1.

Is there any Docs or suggestions?


Do you see it is listed as a supported feature in any document? If yes, please share which document lists it.
Also for using Ethernet/Serial/USB Mass Storage at the same time, do you mean TX2 works as device mode and the host can use ethernet port on TX2 board to access network?


Linux for Tegra
USB Device Mode

The USB device mode configuration script configures the Tegra USB flashing port
to act as a USB device and implement various protocols. The script allows a USB
host system to interact with the Tegra device using a USB cable. The following
implemented protocols can be used at the same time:

  • Ethernet: allows system login using SSH and high-bandwidth file copying using
  • UART/Serial: allows system login using a terminal application.
  • USB Mass Storage: Similar in concept to a USB memory stick.

Could you share where the README is? I don’t see the features are listed in

If either function works on r28.2.1 and doe snot work on r28.1, please share full steps so that we can reproduce and do further check. Thanks.

Thank you, @DaneLLL

Use TX2 with Jetpack3.3 Mirco USB connect to host PC,you will see the README.txt file on L4T folder.

Now I already make it work with Jetpack3.1 by using nv-l4t-usb-device-mode.service, but still have one question:

Can TX2 SD card be browsed to host PC through Mirco USB?

This is referring to the “gadget” interface. That port can be in host mode (and thus can use a keyboard, mouse, so on like a normal port), or the port can be put in device mode. Usually device mode involves connecting a type-B connector, while going to host mode involves connecting a type-A connector. The ID detect pin tells the system what is connected.

USB itself allows multiple devices on a single wire. For example, a programmable mouse will show up as both a mouse and a keyboard, plus it will show up as a device needing a custom driver…which is used to program the mouse.

The “gadget” framework is a convenience to shorten the work required to make that port appear as a device. Even in device mode the port is useless until you set it up with details to actually become the type of device you want. Not all device types are possible, but of the types allowed, all can be used at the same time.

If you are running R28.2 or R28.2.1, then you can go here and see the examples set up to do exactly this:


The “nv-l4t-usb-device-mode.sh” script starts several devices, and the “nv-l4t-usb-device-mode-stop.sh” stops device mode emulations. Read the scripts to see what they do.

Note that this port cannot use isochronous mode when acting as a device. Mass storage is already there as an example where it uses the file “filesystem.img” as the source of the drive in read-only mode (you’d basically be naming the SD card instead without loopback…and perhaps keeping or removing read-only mode…not sure if there is extra setup for when no SD is present). The script also adds an ethernet device.

Beware that this is only USB2 and you’ll share bandwidth among all of the devices on that OTG port.

Incidentally, when the Jetson is in recovery mode it is a special case of that OTG port becoming a custom device (it isn’t using Linux though, so it isn’t the “gadget” framework…but what it does is similar).

@linuxdev Many thanks.