I found myself in a conversation about ESP32 boot times. Specifically the time it takes from boot until user code can do something useful with an IO.

As this was something relevant to Richmote but I didn’t have any actual data I decided to do a simple setup to measure the results. My test setup consisted of two probes one connected to the RST line and the other to a random GPIO. The firmware would immediately setup the GPIO as an output and pull it HIGH. Nothing else.

The Result

326ms!

Rigol oscilloscope screenshot, shows blue trace at -326.0ms and yellow trace at 0ms

At first this seems pretty so, but as I’d said in the early parts of our conversation when ask, how fast is it?

Fast? At least humon scale fast.

And this is true, when I was still attempting the soft power switch on the Richmote I couldn’t press the button fast enough to prevent the power switch from latching. So I would consider this ‘fast enough’ for most human facing devices.

But Wait! There’s More!

As it does, the conversation went on to discussing the likelihood of wake to usefulness being ‘much faster’ from a deep sleep. This makes sense as a lot of the CPU bootstripping will have already been taken care of but what does the data show?

Rigol oscilloscope screenshot, shows blue trace at -52.0ms and yellow trace at 0ms

52ms is quite the improvement!

Conclusion

If your device needs to be as responsive as possible, do your best to get it into a sleep state.