When making a custom board where am I supposed to see which upload_protocol I can choose?

upload_protocol is listed per board but is implemented per platform.

I was having an issue where “upload_protocol = esptool” regularly failed at the end of the upload when switching from framework “arduino” to “espidf, arduino”. But uploading during debugging worked so I wanted to try that. I eventually found out that “upload_protocol = esp-builtin” was a valid option by looking at the platform source code. I didn’t find it when looking at some boards using the framework, but I have later seen that it is listed for some.



Those are two boards, I don’t understand what you mean.

My point is, every officially support board is listed in https://docs.platformio.org/en/latest/boards/index.html#espressif-32. Clicking on a board reveals the list of allowed values for upload_protocol as a bullet point list.

The avialable upload protocols are automatically calculated based on the chip type per

So the answer to “When making a custom board where am I supposed to see which upload_protocol I can choose?” is “look at the source code for the platform”?

Again, they are also listed in the doc links I’ve sent above. You should be able to use all upload_protocol values from a different official board that has the same type of ESP32 module.


Oh it looks all(?) the boards that have the S3 module does list all(?) protocols.

But would a different official board, in general, list all upload_protocol values that apply to the same type of ESP32 module. Ex a board without JTAG-pins (for whatever reason) probably wouldn’t list esp-prog, even though the module can be programmed using esp-prog.