I had a recent memory issue where the resolution was to change the Tools > Partition setting. However this setting wasn't available in the Arduino IDE for the boards I was using (Huzzah32 and NodeMCU-32s). I changed the board setting to ESP32-Dev Module, and the addition menu items under Tools appeared. My project compiles and works fine now.

However it never occurred to me to set the Board to the "wrong" type. What's the purpose of a vendor specific board setting when the more generic one appears to work fine? What settings should you use and under what circumstance?

My guess is that the vendor specific board settings are more about the peripheral hardware on the boards (USB ports, LEDs, etc) and that the more of those you are using the more likely you'll need to use a board specific setting. In my case, since my project uses just the WiFi and Bluetooth built into the ESP32 chip itself, that I'm ok, but if I was using a bunch of GPIO and other things I'd need to use the actual Huzzah32. Is that right?

  • 1
    board-specific flavors take some of the guesswork out of burning the first image and save clicks when switching
    – dandavis
    Jul 20, 2019 at 19:15

1 Answer 1


For ESP32 boards the differences are very minor. In general an ESP32 is an ESP32. The only changes are name to pin mappings, and how to upload code.

There are a couple of different ESP32 modules, but in general all the boards use the same (cheapest) module.

If you look at the pins_arduino.h file for a variant you see that it is pretty much all in the format:

static const uint8_t SDA = 21;
static const uint8_t SCL = 22;

Just mapping names to pins. Note that some are special, like SDA and SCL above, which are used as defaults for the Wire library.

The biggest differences are in the boards.txt portion for the board. This is where any differences in the module will be defined.

In general though all the "specific" boards are just the "ESP32-Dev Module" with some options removed, and a new name give to it. So you can usually use ESP32-Dev Module for any board as long as you select the right mode for things like flash.

One big benefit of using the correct board, though, is that a #define macro is provided identifying the board. If you want the same code to run differently on different boards (such as using different pins on different boards) you can use that macro to direct the flow of your code.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.