Great work identifying the cause of the problem @chazlarduous !
Thanks for taking the time to post an update with your findings.
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.
However, there hasn't been a new release of the platform since the time of the fix, so users who installed the latest release version 3.3.1 via the Arduino IDE Boards Manager still suffer from the bug. At least we know it will be solved in the next release. Until then, the affected users can utilize the workaround you shared.
I also see that some improvements have been made to the platform's system 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.