OK, now let's look at "native USB" boards. They are not drastically different than the USB-to-serial converter boards discussed previously. The key feature is that the main processor has a dedicated USB peripheral and therefore can be connected directly to the host PC's USB port. Since the USB peripheral is a part of the main processor itself, it is referred to as "native", i.e. it's "native" to the processor.

As before, the main processor is where the Arduino sketch is loaded and runs. This is also still done via a COM port. However that COM port is now provided by the main processor itself. The USB peripheral on the processor is usually* general purpose - it's not "just" a COM port. So to show up as a COM port on the host PC, as needed for uploading an Arduino sketch, properly running firmware is needed on the main processor.

But the most important thing to notice is...

The same processor that runs the Arduino sketch must manage the USB connection.

The reset behavior is very different relative to a board with a USB-to-serial converter.

When the reset button on the Arduino board is pressed, this resets the main processor. Since that also resets the firmware that was presenting the native USB as a COM port, from the point of view of the host PC it looks like a USB disconnect followed by a reconnect. This is like unplugging the USB cable, waiting a second, then plugging it back in.

This happens with every new sketch upload, since the board is reset after the sketch is uploaded so the new sketch code will run.

*The ESP32-C3 is a weird exception: it has a native USB peripheral that is a COM port only. It's like a built in USB-to-serial converter, so it cannot act as an HID Keyboard/Mouse but it also does lose the serial port device when reset!

Example Boards

Here are some example boards that have processors with native USB. The host PC's USB connection goes directly to the main processor.

On the Feather ESP32-S3, the USB data lines go directly into the ESP32-S3 processor itself.

On the Feather M4, the USB data lines go directly into the M4 processor itself.


The main drawback relates to the reset behavior. Since pressing reset and/or uploading a new sketch resets the processor, it also resets the native USB peripheral and the host PC sees that as a disconnect. Different operating systems handle this in different ways. On Windows, for example, this can end up leading to alternating between two COM ports with each sketch upload.

Each new sketch upload is seen as a USB disconnect / reconnect event on the host PC.

Another drawback is the dependence on properly running firmware on the main processor for the COM port to be functional and show up on the host PC. Unfortunately, it is possible for a user sketch to interfere with this, which then prevents any new sketch uploads.

It's possible for a user sketch to "crash" the board and prevent a COM port from showing up. In fact this happens ALL THE TIME!

This guide was first published on Feb 07, 2023. It was last updated on Feb 07, 2023.

This page (Native USB Boards) was last updated on Feb 07, 2023.

Text editor powered by tinymce.