Roger Mendoza

First power-on: my board bring-up checklist for custom ESP32 boards

The step-by-step routine I follow when a fresh PCB arrives — from a current-limited first power-up to a known-good firmware baseline.

There is a specific feeling when a box of fresh PCBs arrives: excitement, mixed with the quiet fear of smoke. Bring-up is how you turn that fear into data. Here's the routine I follow for every new ESP32 board, SolveBlock included.

0. Before you plug anything in

  • Look at it. Under magnification, check for solder bridges, tombstoned passives and rotated ICs. Pin 1 markers exist for a reason.
  • Measure resistance between 3.3 V and ground. A near-zero reading means a short. Find it now, not after you've applied power.
  • Compare against the BOM. Wrong capacitor values look identical to right ones.

1. Current-limited first power

Use a bench supply with a current limit, set just above what the board should draw idle. Bring the voltage up and watch the current, not the LEDs. If the current pins at the limit, power off and look for heat with your finger or a thermal camera.

If you only have USB, a USB power meter in line is still far better than nothing.

2. Check the rails

With the board powered:

  • Measure 3.3 V at the module's power pin, not just at the regulator output.
  • Check ripple with a scope if you have one, especially once the radio is active later.
  • Confirm EN is high, so the chip isn't held in reset.

This is where test points pay for themselves. Every rail and key signal should have one.

3. Talk to the chip

Connect the USB-serial path and open a terminal at 115200 baud. Press reset. The ESP32's ROM bootloader prints a boot message, even with blank flash. That message tells you a lot:

  • If you see it, the chip is alive, the clock is running and serial works.
  • If you see garbage, check your baud rate and the crystal.
  • If you see nothing, check EN, power and the TX/RX lines (yes, swapped TX/RX is a rite of passage).

Then confirm you can enter download mode, either through the auto-reset circuit or by holding GPIO0 low during reset.

4. Flash a known-good baseline

Don't flash your real firmware first. Flash the simplest thing that can prove each subsystem:

  1. Blink an LED and print a heartbeat over serial.
  2. Read every button and print its state.
  3. Drive the display with a test pattern.
  4. Bring up Wi-Fi and log the RSSI.
  5. Exercise the external interfaces — for SolveBlock, read and print raw frames from the timer port.

Each step should be a separate, tiny test. When something fails, you know which subsystem to look at.

5. Stress it a little

  • Run the radio continuously while watching the 3.3 V rail for dips. Wi-Fi transmit current spikes are a classic source of brownout resets.
  • Leave it running overnight and check the logs for resets in the morning.
  • Touch the regulator after an hour. Warm is fine. Painful is not.

6. Write it down

Every bring-up gets a short log: what passed, what failed, what was reworked by hand, and what must change in the next revision. That log becomes the change list for Rev B. Without it, you'll repeat the same mistakes, because a month later you won't remember which jumper wire fixed what.

Why this matters

In enterprise IT, we never put a new server into production without a burn-in and a checklist. A custom PCB deserves the same respect. Bring-up isn't the boring part between design and firmware — it's the part that tells you whether your design is real.

Some links in these notes are affiliate links. If you buy through one, I may earn a commission at no extra cost to you. I only link to tools I use or would recommend.