From one moment to the next, I went through the Tools --> Ports option.
The option doesn't show me the ports in version 1.8.19, and in versions 2.x, it lets me select them, but then gives an error as if the port doesn't exist.
In the photo, I show the situation, and the Device Manager shows that there are 3 ports available.
I previously ran a port communication check with software like Realtherm, communicating with Arduino 1, and they are functional.
I've already reinstalled, and nothing.
I appreciate your help in advance with this issue
Hi @LFCA2005 .
Do you have the "STM32 MCU based boards " platform (AKA "STM32duino") installed? There was a bug in an older version of that platform that caused it to break the Tools > Port menu of Arduino IDE 1.x:
opened 05:47PM - 03 Aug 24 UTC
closed 07:02AM - 04 Aug 24 UTC
invalid
When I upgraded to version 2.8, the COM port under the Tools menu no longer appe… ared, in fact, the serial port did exist. Version 2.71 can display normally. Do you have the same problem as me?
Providing a vague description of the error is not helpful. Please provide the full and exact text of the error in a reply here on the forum topic.
panda30
September 20, 2025, 8:05pm
5
Sometimes updating your IDE is helpful! I used to use this one and a similar error occurred with me. If you don’t want to update your entire IDE, I’d recommend trying out Arduino cloud.
Similar problem to what is discussed in this thread https://forum.arduino.cc/t/arduino-ide-1-8-19-in-tools-menu-port-grayed-out/1287639/1
Running Arduino IDE 1.8.19 from command line on linux, I get the following:
Picked up JAVA_TOOL_OPTIONS:
Exception in thread "cc.arduino.packages.discoverers.serial.SerialDiscovery" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.LinkedList.checkElementIndex(LinkedList.java:555)
at java.util.LinkedList.get(LinkedList.java:476)
at processing.app.Platform.resolveDeviceByVendorIdProductId(Platform.java:188)
at cc.arduino.packages.discoverers.serial.SerialDiscovery.forceRefresh(SerialDiscovery.java:166)
at cc.arduino.packages.discoverers.serial.SerialDiscovery$1.run(SerialDiscovery.java:96)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Problem is caused by the ESP32 board package by Expressif Systems version 3.3.1, vid with no pid for the FoBE Quill ESP32S3 Mesh FH4R2. Commenting out the two vid lines with no accompanying pid corrects the problem.
52128 ##############################################################
52129
52130 # FoBE Quill ESP32S3 Mesh FH4R2
52131
52132 fobe_quill_esp32s3_mesh.name=FoBE Quill ESP32S3 Mesh
52133 fobe_quill_esp32s3_mesh.vid.0=0x303a
52134 fobe_quill_esp32s3_mesh.pid.0=0x82f4
52135 fobe_quill_esp32s3_mesh.vid.1=0x303a
52136 fobe_quill_esp32s3_mesh.vid.1=0x82f5
52137 fobe_quill_esp32s3_mesh.vid.2=0x303a
52138 fobe_quill_esp32s3_mesh.pid.2=0x82f6
Great work identifying the cause of the problem @david_2018 !
The bug in the "esp32 " boards platform has been fixed:
master ← thegreenshark:fix-boards-txt
opened 11:16PM - 26 Sep 25 UTC
### Description of Change
This is a simple typo fix for the FoBE Quill ESP32S3 … Mesh in boards.txt. There were two identical "fobe_quill_esp32s3_mesh.vid.1" entries and the second one was obviously meant to be called "pid", not "vid".
### The problem it solves
Because of this typo in boards.txt Arduino IDE v1.8.19 was failing to detect any COM port.
I'm using Arduino IDE v1.8.19 on Windows 10. I updated ESP32 Core from v3.3.0 to v3.3.1 via the board manager. After restaring Arduino IDE it was no longer detecting any COM ports. Tools -> Port option was greyed out even though a board was connected and was detected by windows device manager. The board itself doesn't matter, the problem isn't even ESP32-related, the IDE just fails to detect any board. I tried launching the arduino_debug.exe and it showed the following error in the terminal:
```
Exception in thread "cc.arduino.packages.discoverers.serial.SerialDiscovery" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.LinkedList.checkElementIndex(LinkedList.java:555)
at java.util.LinkedList.get(LinkedList.java:476)
at processing.app.Platform.resolveDeviceByVendorIdProductId(Platform.java:188)
at cc.arduino.packages.discoverers.serial.SerialDiscovery.forceRefresh(SerialDiscovery.java:166)
at cc.arduino.packages.discoverers.serial.SerialDiscovery$1.run(SerialDiscovery.java:96)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
```
After tracking down the issue I've changed "vid" to "pid" in the boards.txt file and copied it to `c:\Users\USER\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.12` (replacing the already existing boards.txt file). The problem is now gone, arduino_debug.exe shows no errors and Arduino IDE is detecting COM ports normally.
### Test Scenario
Config:
Windows 10
Arduino IDE v1.8.19
Multiple hardware: ESP32-WROOM-32, Arduino Nano, PL2303HX-based usb-ttl converter
Before this change:
Arduino IDE fails to detect any COM port (Tools -> Port option is greyed out even when a board is connected to the PC).
Also arduino_debug.exe shows an error upon launching.
After this change:
Arduino IDE detects COM ports normally (Tools -> Port option allows to select a port).
arduino_debug.exe shows no errors.
The fix was released today in version 3.3.2 of the platform. So affected users can simply update to the latest version. If you don't see version 3.3.2 in your Boards Manager, make sure you have added the additional URL to your Arduino IDE preferences, according to the official installation instructions for the "esp32 " platform:
I also see that some improvements have been made to the system the maintainers of the "esp32 " platform set up for validating the board definitions:
master ← ci/boards-test-enhancement
opened 04:27PM - 30 Sep 25 UTC
## Description of Change
This pull request improves the board validation proces… s in the CI workflows by introducing a reusable validation script and enhancing the accuracy of board detection. The main changes focus on centralizing board validation logic, ensuring only actual boards are processed, and updating workflow steps to use the new script. PR includes also fixes for boards that are not passing the Rules 2-6.
**Board validation improvements:**
* Added `.github/scripts/validate_board.sh` and updated both `boards.yml` and `allboards.yml` workflows to use this script for validating board definitions, replacing inline validation logic. [[1]](diffhunk://#diff-7270374d48aa9522e56ecbed3d15d1f0f5da9d9a5e239ed1ae652ebe671306b2L52-R55) [[2]](diffhunk://#diff-7745d1df372846ffdb5695cb1b7e6e61597c869dd324e9068f0323b40aa2864bR75-R104)
* **6 Validation Rules for ESP32 Boards:**
- **<ins>Rule 1: Build Board Format</ins>**
build.board must be uppercase letters, numbers, and underscores only
Example: ESP32_DEV ✅ | esp32-dev ❌
- **<ins>Rule 2: Required Properties</ins>**
Must have upload.flags and upload.extra_flags defined
- **<ins>Rule 3: Partition Scheme Validation</ins>**
All partition schemes must fit within board's flash size
Checks scheme names, descriptions, and upload limits
- **<ins>Rule 4: VID/PID Consistency</ins>**
No duplicate VID/PID entries
VID and PID indices must match (vid.0 ↔ pid.0)
Prevents any board from using the reserved ESP32 family ID (0x303a/0x1001)
- **<ins>Rule 5: DebugLevel Menu</ins>**
Must have all 6 debug levels: none, error, warn, info, debug, verbose
Each with correct code_debug values (0-5)
- **<ins>Rule 6: No duplicate lines</ins>**
Looks for the same property defined twice for one board (catching copy-paste errors)
Shows exactly where the duplicates are in the file
**Board detection enhancements:**
* Refactored `.github/scripts/find_new_boards.sh` to use an `excluded_entries` array for filtering out non-board entries, making board detection more robust and maintainable.
**Workflow updates:**
* In `allboards.yml`, added steps to make the validation script executable and validate each board in the chunk, reporting failures and stopping the workflow if any board fails validation.
* In `boards.yml`, replaced the previous uppercase check for `build.board` with the new validation script for consistency and improved reliability.
**Board Definition Updates (`boards.txt`):**
* Updated the maximum upload size for the "Custom" partition scheme for multiple boards, reducing it from 16MB to either 4MB or 8MB, depending on the board. [[1]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL2070-R2064) [[2]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL2162-R2156) [[3]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL2615-R2609) [[4]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL5442-R5419) [[5]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL8453-R8432) [[6]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL12441-R12407) [[7]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL12987-R12953)
* Removed several 8MB and 16MB partition scheme options (such as `default_8MB`, `fatflash`, and `app3M_fat9M_16MB`) from various boards to streamline the available choices and possibly reflect hardware or support changes. [[1]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL2036-L2038) [[2]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL2059-L2061) [[3]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL2701-L2703) [[4]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL12252-L12254) [[5]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL12275-L12280) [[6]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL2615-R2609) [[7]](diffhunk://#diff-c3a7c63d53cdec402cf559c1707ce5ef639a7e59e575f41ac5c8f5941e806a9fL2724-L2729)
* Added or corrected partition scheme definitions for some boards, such as introducing missing `build.partitions` and `upload.maximum_size` entries for `app3M_fat9M_16MB` on `esp32s3-octal`.
* Updated flash size for `um_tinyc6` from 4MB to 8MB, reflecting a hardware change.
* Added a new debug level "Verbose" for `S_ODI_Ultra`.
These changes collectively improve the reliability of board validation in CI and keep the board definitions up-to-date with current hardware and support requirements.
## Test Scenarios
Tested locally
## Related links
This should reduce the likelihood of more regressions being introduced into the platform as board definitions are added or modified.