Working with an ESP32-wroom-32d on MacOS

Working with an ESP32-wroom-32d on MacOS

I recently got an ESP32-wroom-32d chip working with Arduino IDE on my Macbook Air M2 (2022). I ended up going down some dead ends based on old documentation online, so I’m documenting how this worked for me in January 2025 in case it’s useful!

The important thing to know is that, unlike Windows, you don’t need drivers on MacOS to communicate to the device via USB. Apparently versions of MacOS older than Catalina did need drivers.

So:

  1. Download and install Arduino IDE

  2. Click on “Boards Manager” on the left-hand-side toolbar, search for esp32 and install the entry from Espressif Systems

    Screenshot of the Arduino IDE showing the "Boards Manager" view, where "esp32 by Espressif Systems" version 3.0.7 has evidently been installed, whilst "Arduino ESP32 Boards by Arduino" has not.

  3. Connect your board via a USB cable. Open Terminal, and run ls /dev/cu.*.
    You should see /dev/cu.usbserial-10 in the result (and it should disappear when you unplug the device)

    Example terminal output of the  command, showing  in the results.

  4. In Arduino IDE, click the device drop-down at the top-left, click Select other board and port…, then select ESP32 Dev Module and /dev/cu.usbserial-10 Serial Port (USB):

    The Arduino IDE interface with a dropdown menu listing various connected devices, and "Select other board and port..." at the foot.

    "Select Other Board and Port." dialog, with "ESP32 Dev Module" highlighted under "Boards", and "/dev/cu.usbserial-10 Serial Port (USB)" selected under "Ports".

  5. On the menu bar, click on Tools and set Upload Speed to be 115200

    Upload Speed being set to "115200" under the Tools menu.

  6. Go to Serial Monitor, and change the Baud Rate to 115200 baud:

    Baud being set to 115200 baud on the Serial Monitor.

  7. Finally, click the Upload button at the top-left, and hopefully it’ll JustWork™ first time!

If you get an error like:

A fatal error occurred: Unable to verify flash chip connection (Invalid head of packet (0xE0): Possible serial noise or corruption.).

then double-check the baud rate has been set correctly in the Tools menu.