How to enable USB console

Many ARM boards have USB console implemented for uboot and/or kernel. Although adapters can be used for serial console of TX1, it’s more convenient to have USB console working.

I’m sure USB console will be very useful for many developers. Will Nvidia add USB console support for future releases? Has anyone tried to implement USB console for uboot/kernel?

Thanks in advance.

I use the USB serial console on a Toradex Tegra product, and agree that it is useful. The hardware on that particular board though has been wired specifically for serial UART over USB…the Jetson USB connectors are wired as root HUB or OTG device without the needed UART.

I have been in the process of working on a serial UART USB expansion for the J21 connector but have not finished (project temporarily on hold).

I was thinking of USBTTY console without UART, like this one:

Basically what you’d need to do is add support in both u-boot and the kernel. If you had support only in u-boot, you could still do things like select an optional kernel entry.

As soon as u-boot loaded the kernel, you’d lose serial console if you did not also configure the kernel to support this. I’m not sure how difficult it would be to configure the micro-USB port to be device mode emulating a serial UART without an actual serial UART being behind it (this also assumes you don’t care about losing the micro-USB port for use as a regular USB device or other custom device). If you could do that, then things would be fine. There would be a weakness though that the serial port over USB via the existing USB connector would have more dependencies which may not be as reliable under failure circumstances versus a serial UART which does not need the extra software.

The reason I’ve been working on a J21 serial USB adapter is that it is entirely independent of software (this is mostly a done project, but temporarily on hold for other reasons). This adapter mounts to the existing 40-pin (20x2) header, and offers a pass-through to another 40-pin (20x2) male header to avoid losing access to anything else wanting to use the header. The device is USB bus powered, so there is no requirement about turning on the Jetson first for proper USB chip initialization. Plus the bus powered approach means that no power is drawn from the Jetson, with or without a USB cable. Just plug in USB and it works (no special drivers required on host, no knowledge of the device required on Jetson).

The main use is for selecting kernel entry during kernel/driver development. Some devices such as Nvidia Shield TV do not have accessible UART pins.

To enable usb serial console in kernel, please

  1. bring-up a usb-serial device in Linux kernel. (e.g. PL2303 is supported by current Linux kernel.)
  2. kernel configuration: enable CONFIG_USB_SERIAL_CONSOLE
  3. edit /boot/extlinux/extlinux.conf: console=ttyUSB0,115200n8.

Then USB console will work.

As to u-boot, I do not find usb serial support. It may need port the driver and add usb-console support.


So does Nvidia Shield TV have accessible UART pins? I like to use usb serial console to unbrick my Shield TV Pro 2015. Now it has no any output.

I don’t know what the shield has, but serial UART pins would be for console access…you couldn’t flash via UART. If there were some command you could give on a console, then it would be of use.

This is still working on Jetpack 3.3? I haven’t be able to login through usb port.

Do you mean a USB serial UART? This should allow login (settings 115200 8N1, no CTS/RTS flow control), but USB connectors (using ordinary USB ports) do not have a console attached.