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.
I2C at 100 kHz bus frequency runs slowly

The default I2C bus clock speed is 100 kHz (100000) . At that rate, the ESP32-S2 will leave 10ms gaps between I2C transactions. This can slow down your I2C interactions considerably, such as when you are controlling a stepper motor with a PCA9685 controller.

Raising the I2C bus frequency to 125 kHz (125000) or higher fixes this problem. If your I2C peripheral can handle higher frequencies, you can use 400 kHz (400000) or even in some cases 1 MHz (1000000).

Note that board.I2C() creates an I2C bus that runs at 100 kHz. The bus frequency cannot be changed.. To create an I2C bus on the default I2C pins that runs at a different frequency, you must use busio.I2C(board.SCL, board.SDA, frequency=).

No DAC-based audio output

Current versions of the ESP-IDF SDK 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 I2S 3W Class D Amplifier Breakout - MAX98357A.

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 Dec 09, 2023.

This page (ESP32-S2 Bugs & Limitations) was last updated on Dec 28, 2020.

Text editor powered by tinymce.