How to use A603's USB-B port in device mode?

I have a Jetson Orin Nano on the Seeed Studios A603 board. The specs indicate that the USB type B port on the board supports debugging and “device mode.” I would like to use this to communicate between the Jetson and a mobile device.

I have spent some time searching for documentation on how to enable device mode for this port and make it appear as any kind of accessory, but so far I have come up empty.

I have found the directory “/sys/kernel/config/usb_gadget/l4t”, but it’s not clear to me that this is referring to the USB-B port. This indicates that there are multiple functions one would expect for a USB device. Listing the “functions” directory shows “acm.GS0 mass_storage.0 ncm.usb0 rndis.usb0”.

IIUC, there should be kernel modules for supporting different kinds of USB devices, but anything like “modprobe g_asm” gives me an error such as “modprobe: FATAL: Module g_acm not found in directory /lib/modules/5.10.104-tegra”

I have an Android smart phone on which I have installed an app that lists connected USB devices. When I connect other devices, such as mass storage, it is able to find them. But when I connect to the Jetson, it finds nothing.

I discovered some scripts and some system services in “/opt/nvidia/l4t-usb-device-mode”, and systemctl says that they’re active, so I’d expect something to show up.

If anyone can give me some tips on getting started, that would be most appreciated. Thanks!

P.S. The USB cable I’m using is the same one I use for reprogramming my Raspberry Pi Pico, so the cable isn’t the problem. It’s a real data cable.

  1. We are not sure about A603 board design, so what I said might be not compatible with your board but only with devkit

  2. When you connect the flash port, which should also be your type B port to a host PC, your host PC shall see jetson as a NVIDIA device in host pc lsusb list.

  3. When the service in l4t-usb-device-mode is launched, there would be a rndis interface generated between your host PC and jetson. Which means there would be a virtual ethernet interface coming out. Default IP with on Jetson and on host PC.

  4. Other kind of usb device mode interfaces depend on your own development.

I also tried connecting the USB type B port to my Mac. I have lsusb installed through homebrew. It does not see any new devices appear when I plug it in.

According to the A603 docs, if I jumper pins 1 and 2 of the 14-pin header, I can put it in recovery mode, but I don’t think that’s what I want. I want device mode.

ifconfig does show a rndis device:

rndis0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether ca:4a:12:13:69:21  txqueuelen 1000  (Ethernet)

Is there anything else I could possibly have to do to enable this port?

BTW, I have two A603’s, and both have this same problem, so it’s not a broken board.


Just a reminder, please go back to my first point in previous comment.

We are not the vendor of this board. We don’t know their hardware design.
From my point of view, I guess the software running on this board didn’t configure the usb port correctly. This needs to be answered by them because it is hardware related.

You could share the dmesg from jetson for us to check. That is the only thing I can help check.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.