Nobody likes bugs, but all nontrivial software and hardware has some. The master list of problems is the Issues list on github.

Adafruit considers CircuitPython for the ESP32-S2 to be beta quality software.
Cannot reinitialize certain peripherals (especially busio.I2C)

If you create a busio.I2C object, call .deinit() on it, and then create another one, CircuitPython will lock up.

Workaround: Do not deinitialize I2C objects, except by soft reload or entering deep sleep.

No DAC-based audio output

Current versions of esp-idf do not have the required APIs for DAC-based audio output.  Once a future version of esp-idf that adds it, it will be possible to implement DAC-based AudioOut in CircuitPython.

Workaround: PWMOut can create tones and buzzes.

Workaround: I2SOut audio is currently being developed and will work with boards such as the Adafruit I2S Stereo Decoder - UDA1334A Breakout.

Deep Sleep & Wake-up sources

ESP32-S2 has hardware limitations on what kind of "pin alarms" can wake it. The following combinations are possible:

  • EITHER one or two pins that wake from deep sleep when they are pulled LOW
  • OR an arbitrary number of pins that wake from deep sleep when they are pulled HIGH, and optionally one pin that wakes from deep sleep when pulled LOW

This means that "wake" buttons should be wired so that pressing them pulls HIGH and a pull DOWN resistor is used with the pin. However, in some hardware designs including the original MagTag, the integrated buttons are pulled LOW when pressed and so only 1 or 2 buttons can be selected to wake the MagTag.

This guide was first published on Apr 20, 2021. It was last updated on 2021-05-04 15:26:05 -0400.

This page (ESP32-S2 Bugs & Limitations) was last updated on Nov 20, 2021.

Text editor powered by tinymce.