Recognition trouble with USB device mode

According to the instructions for headless mode it should say which COM Port COM2, COM16 etc. that I should use for PuTTY. All I have is CDC Serial CDC NCM where the port is supposed to be.

With the serial cable connected to the right pins (earlier a02 revisions have a different layout versus b01 or newer revisions), then whatever device shows up should work for serial console. However, it is important to note that serial console is not via the micro-USB connector, it is via some header pins.

The header pins themselves do not have a brand or chipset to think about. The USB side of the cable does have a brand or chipset to worry about, but the Jetson itself is independent of this. Only the host PC needs to have a driver for this, and the driver depends on your particular USB serial UART cable.

CDC ether is just one brand, and this is probably in need of a driver on your Windows system (or on Linux if you use a Linux PC). I prefer the FTDI chipset cables since they always seem to have drivers by default. Either way the chipset is dependent upon the cable, and not the Jetson. There are some Jetson models (e.g., Xavier) which have a micro-USB port for this and don’t need a serial cable (it’s just a standard micro-B USB cable for that case), but a Nano requires that full USB serial cable since it is going to header pins instead of a micro-USB connector on the Jetson side.

I have no way to predict which COM port will show up under Windows. This is up to Windows and the order of enumeration in combination with whatever serial UART hardware might already be built in to the motherboard (there may be serial UARTs which are not used, but they probably still reserve a COM name for that integrated UART).

So your CDC port which does show up is probably correct. Just make sure it is set to speed 115200, 8 bits, no stop bits, and no hardware or RTS/CTS flow control.

@linuxdev Thank you for taking the time to help me. I’m new to this as you can probably tell.

Are you saying that I need a different usb cable than what is normally used? I’ve just been following the steps in the Getting started with Jetson Nano 2gb.

Do you have time to walk me through this?

Let me make sure I am reading your own use case correctly: I think you are trying to use the serial console, and want to log in to the command line via the COM port. Is this correct?

If this is correct, then yes, you do need a special cable. Some Jetsons (and a sprinkle of many different embedded systems) actually provide this via a micro-B USB connection, but the Nano does not have this. There are TX, RX, and ground pins on a header instead of using the micro-USB connector for console connection on a Nano.

Here is one example of a “full” serial UART cable (you don’t need all pins):
https://www.digikey.com/product-detail/en/TTL-232R-3V3/768-1015-ND/1836393

You only need a USB serial UART with three wires, and if you used the one above, then you’d have to jumper three of the pins to the correct header location in the case of serial console.

Here is an example of a three wire UART, which works for serial console:
https://www.digikey.com/en/products/detail/olimex-ltd/USB-SERIAL-CABLE-F/3471379?s=N4IgjCBcpgbLVQGMoDMCGAbAzgUwDQgD2UA2iACxgAcAzAOwCsIAuoQA4AuUIAypwCcAlgDsA5iAC%2BhOPUQgUkDDgLEylAAy0NsWqw7dIfQaInTKATj3QFaLHkIlI5KtWpX9ILj37DxUmQt3eUVlBzVnEA1PbyNfUylzBBshABMeAFowDQgDHhBCTgBPdlwedGwUSUkgA
…but the disadvantage of this cable is that I can’t tell you which chipset it uses, and so your host PC might need a driver for it. The datasheet says it works with Linux, but it doesn’t mean you might not need to add software. Any FTDI chipset will usually “just work” without any special effort.

All of the following are the most flexible and complete cables with separate wires:
https://www.digikey.com/en/products/filter/smart-cables/468?s=N4IgjCBcpgbLVQGMoDMCGAbAzgUwDQgD2UA2iACxgAcAzAOwCsIAuoQA4AuUIAypwCcAlgDsA5iAC%2BhOPUQgUkDDgLEyIWgCZGFenLYguPfsPFTCFAJy15i5XkIlI5KtWrXWHbpD6DRE6XBLd1s0LAc1ZxAABk9Db19TAMCEaBAhABMeAFowaIgvHhBCTgBPdlwedGwUSUkgA
(these include CTS and RTS flow control wires and might be useful to you at some point, but those are not used for serial console)

Those computers which use individual pins do not have the UART to USB adapter, and thus do not need or use drivers (which means the host PC is the one needing the driver). Those computers which provide serial communications over a micro-B USB cable will themselves need drivers, and all Jetsons with this style of serial console have drivers (which means the PC does not need a driver since the serial to USB chip is in the Jetson instead of the PC).

There are many systems out there which use the CDC ether chipset. Quite often these won’t need any extra drivers and will simply “work” (at least on Linux), but FTDI has them beat in this respect…I’ve not seen a Linux PC needing anything special for FTDI serial UART chipsets. In the case of Windows either CDC ether or FTDI would be something you can probably just plug in and Windows would probably find the driver without any special work, but maybe not. Other chipsets can be problematic, but it is also common for third party branded serial UART cables to have either FTDI or CDC ether chipsets with some sort of renaming (which might or might not alter how the host searches for drivers).

The important thing is you need at least 3 wires: Ground, TX, and RX. These must be 3.3V “TTL” level on the serial wires. More wires won’t hurt. I have the 6-wire with a 6-pin connector, but have to use my own separate wiring to go to the serial console pins (separate wires are more convenient in general, but the 1x6 0.1" strip connector is more convenient on a TX2 J17 header).

I was just following the instructions here Getting Started With Jetson Nano Developer Kit | NVIDIA Developer

They didn’t mention anything about what your talking about, but from what little I know your explanation makes more sense to me.

I’m just trying to get the Jetson nano up and running without buying anymore hardware.

Is Nvidia’s documentation for the getting started guide just not that great?

The above is indeed using serial console. It just happens that this is a way to log in when there is no monitor, and without need for an account to already exist (which ssh would require). So in your case it is equivalent to say you are using serial console to perform first boot setup in headless mode.

Serial console has no need for a video card, monitor, so on. Much of the o/s could be destroyed, and serial console would still work since it has no need of many libraries and drivers you’d require for a GUI, or even in comparison to a normal text mode login.

The serial console cable is mandatory to use this method since the Nano itself does not have the host PC side’s UART (some Jetson models do have this, in which case they just use an ordinary micro-B USB cable and not a USB serial UART cable). It is the UART part which becomes the COM port you are working with.

If you are unable to get such a cable, then you’ll need to either (A) use a monitor and keyboard, or (B) cheat a bit and create the first boot content on the image prior to flashing the image (or in the case of a pre-made SD card image, then you’d cheat and modify the image directly on the SD card and not perform a flash step).

There is more or less no possibility of the “cheat” part from Windows. The script for doing this typically would use loopback mount (for file content to be flashed), which even WSL does not support, plus it requires using QEMU, though you might get away with this from WSL when operating directly on an SD card. However, I’m not sure WSL would pass through the SD card partitions correctly (or at least without a lot of work).

Note that the “cheat” part could work from a VM (which WSL is not a VM in some ways). Technically you would be using Linux, and since you are not flashing (you’re just using that script on an existing image), then you could use a VM. If interested in “cheating” and performing first boot operations directly on an image, see:
https://forums.developer.nvidia.com/t/jetson-nano-all-usb-ports-suddenly-stopped-working/75784/37
(you’d use the l4t_create_default_user script from Linux, and no serial UART cable required)

FYI, I would recommend a serial UART cable to anyone who plans to spend any significant time developing on a Jetson. Uses for this pop up quite often and can stop a lot of headaches and problems before they happen.