Stop the Unplug-Plug Dance: com-com Identifies Your Boards Instantly

I got tired of the "Device Manager hunt." Every time I have multiple boards plugged in, I’m stuck looking at a list of generic ports like COM3, COM4, and COM7 with no clue which is which.

The only way to identify them is to open Device Manager or do the "unplug-plug dance" to see which one disappears. It’s a constant friction point, so I built a tool to kill that workflow: com-com.

It’s a lightweight, cross-platform CLI utility written in Rust that identifies your microcontrollers instantly.

Key Features:

  • Instant Board ID: It doesn't just say "Serial Port"—it identifies if the device is an Arduino (Uno, Nano, etc.), ESP32, or STM32.

  • Watch Mode: Run com-com --watch and see the port name and board type pop up the second you plug the cable in. No manual refreshing required.

  • Metadata at a Glance: Instantly see USB VID/PID, Manufacturer info, and connection uptime.

  • Custom Nicknames: You can label COM5 as gateway-node so you never have to guess again.

Link:
https://crates.io/crates/com-com

1 Like

Contributions are welcome! Feel free to open issues or submit pull requests.

I don't have that problem ever. I use an Apple.

2 Likes

What happens when you plug in a device on an Apple PC compared to a Windows PC that avoids the problem ?

I don't know the technical details, but there is no concept of device manager, it just works. Remember BSD Unix and Windows are very different.

1 Like

What I meant was, when you plug an Arduino board into the PC how do you know which port it appears on in the IDE ?

Not sure I understand what you want to know, but here are all the places the port shows up plus a before port list and after I plug it in port list with the UNO selected.
Before


after
![Screenshot 2026-03-16 at 17.30.47|488x104]

Drop down
(upload://mwaFrCqRh7eAq3ErwQdpjSdu5TP.png)

bottom right

@dvsv is trying to solve the problem whereby in Windows, when you plug in an Arduino board you cannot tell which COM port it has been allocated when you look in the list shown in the IDE

One way to identify the port is to unplug the Arduino so that the COM port disappears from the list offered and then to plug it back in again and see which port appears, ie the "unplug-plug dance"

The same problem seems to occur on your Apple device judging by your screenshots

2 Likes

It is fairly straightforward to identify the port in the scenario @sonofcy presented, once you understand that /dev/cu.Bluetooth-Incoming-Port and /dev/cu.wlan-debug are ports produced by your computer, and not Arduino boards. The more verbose port names provided by macOS does improve the situation compared to Windows, where the internal port will have the fairly generic name COM1.

The situation becomes less clear when you have multiple additional ports. Some consumer computer peripherals produce a serial port, or we may have DIY Arduino-based peripherals connected. And we also may sometimes connect multiple Arduino boards to our computer during the course of development or experimentation (e.g., if you are working on a system where multiple boards are networked).

Arduino IDE has a port identification system, where it can automatically associate a board model with a port. This identification makes it easy to determine which of multiple ports present on your system is an Arduino board, except in the case where you have multiple boards of the same model connected. However, that identification requires that the port has properties that are unique to a given board model. The properties used for this purpose is typically the USB VID/PID pair. However, the VID/PID will not be unique to a board model in the case where the board's USB chip uses the VID/PID pair provided by the chip manufacturer, which is not unique to the board model.

For example, the WCH CH340 USB to serial bridge chip used on many clone/derivative/3rd party boards has the VID/PID pair 1A86:7523, so all boards that use that chip will have the same port properties. Thus, there is no way for Arduino IDE to automatically identify the port as being a specific Arduino board model, nor even to definitively to identify it as an Arduino board.

The board selector menu on the Arduino IDE 2.x toolbar does remember which model you selected previously for a given port. So this feature does make it so that you don't need to perform the "unplug-plug dance" quite so often as was the case with Arduino IDE 1.x (which doesn't have that manual association feature).

1 Like

Can you explain what you see in my screenshots that indicates a problem? I have never had a problem like the windows community has on an almost daily basis.

1 Like

There is no problem in your screenshot, because it happens that there is only one candidate port on your machine. If you never have any peripherals connected to your computer that produce a port, and you only ever connect a single board to your computer, then you won't have ever encountered the difficulty of determining which port is your board.

But some of us do have that situation. It can occur on any operating system. For example, which one of these ports is my ESP32 dev board?:

1 Like

Thanks @ptillisch
I am not a Mac user but what you describe is very much what I expected

1 Like

There are several portable apps that run under windows and will identify your USB devices and ports.
I've given a few examples on my page here

I like USBLOgView

@johnerrington
How do you know what is what? In the below screenshot COM11 is Nano clone with CH340 and COM13 is a Lolin D1 Mini which also uses the CH340.

FYI, COM5 is a SparkFun Pro Micro.

gosh - I dont have that many plugged in at the same time!

Strange, I have a SSD plugged into my Mac and it does not show up on the Arduino ports list.

I have never seen that.

Have you ever plugged in two clone boards that use the CH340 as in the screenshots from @sterretje and @ptillisch ?

Not that I recall, but I will give that a try later as soon as I can find some boards. I donated almost all my clone boards to a local high school, will a pair of esp32-s3 suffice?

As long as they are not genuine Arduino boards then they will probably show up the problem. How do you anticipate that you will be able to tell them apart in the list of ports ?