XIAO ESP32 S3 Sense - Quality Control?

I’m having an AWFUL time with the ESP32S3 Sense boards and getting them to work with the Arduino IDE.

For a project, I’d been testing / developing with a FREENOVE ESP32-S3 WROOM (w Camera & SD card) board, and it’s been a BREEZE. Now, I’m trying to shrink the size, and opted for the SeeedStudio board (I bought 5 of them). Basic programs (blink even…) are inconsistently running on the board, and half the time it doesn’t even register as a COM port when I plug it in. Each board seems to malfunction in a different way…

I get the same issue Dave is having (sometimes)… half the time the serial port cuts halfway through uploading. Beyond that, the IDE identifies the board as an ESP32-S3-Box (or Wifiduino V2 sometimes?) by default, and reverts to that every time I unplug/ replug or press the reset button.

I’m no expert with microcontrollers in general… but the difference in working with the FREENOVE board vs the XAIO ones feels absurd? Especially relative to the straightforward experience I’m seeing in other tutorials. This is my first experience with any SeeedStudio products and… I’m ready to return / refund these…

Some related info:

  • For one of the boards I plugged in Windows prompted that it recognized it as a XAIO board, but that hasn’t happened since, other new boards, when plugged in show: Setting up USB/Jtag Serial Debug Device
  • Under Arduino IDE > Tools > Get Board Info > BN: ESP32-S3-Box (All boards…)
  • When I’m able to upload, photos taken with the take_photos.ino, are inconsistent and often corrupted. (might have been SD issue, seem… okay after reformatting a few times?)
  • After uploading this same sketch on both the FREENOVE and one of my XIAO boards, the XIAO board is completely unresponsive and the FREENOVE board works exactly as expected:
void setup() {
  Serial.begin(9600);
}
void loop() {
  if (Serial.available()) {
    char receivedChar = Serial.read();
    Serial.print(receivedChar);
  }
}

Upload Errors:

  • A fatal error occurred: No serial data received
  • A fatal error occurred: Could not open COM9, the port doesn’t exist
  • Port monitor error: command ‘open’ failed: Serial port busy. Could not connect to COM9 serial port.

I’m using Windows 10, Arduino IDE 2.1.1. Went through all of their recommended setup (board manager, esp32 library, etc.) I’ve restarted my computer a few times, and tested all different USB ports on my desktop.

Bottom line… why would the XIAO Sense boards be giving me so many more technical issues than the FREENOVE ESP32-S3 WROOM? / Is anyone else having this bad of an experience trying to get them to work consistently?

We are sorry to have caused you an unpleasant experience.

  1. For no serial port or upload failure, have you tried to enter bootloader mode to find the port again?
    Getting Started with Seeed Studio XIAO ESP32S3 (Sense) | Seeed Studio Wiki

  2. For the case where the IDE identifies the board as an ESP32-S3-Box (or sometimes as Wifiduino V2) by default, this is because the official ESP does not provide an open-source bootloader to specifically identify the development board. Therefore, during the identification process, it is common for it to be recognized as other boards.

… yes the arduino ide is the problem one problem with arduino is that people want you to load all these libraries and boards instead of teaching you how to program a microcontroller

As a result you will quickly build up a lot of junk in your arduino ide

One thing for certain… if you use the wrong board you will get errors… Internet is imperative you use the correct board and settings to troubleshoot

As a result… I recommend setting up a dedicated computer for troubleshooting each device… and if necessary copy over code from one machine to the other and only load libraries after they have been tested and verified

Hi I would offer this,
I have loaded 2.11 and had wacky issues with the BLE working and compiling. Sketches that would compile under 2.10 wouldn’t now without some weird errors
I ended up REMOVING all the BLE libs there were 3 from previous projects, Once I did that It compiled and even reset the ESP32C3.
Also Initially it wants to call it something else, re-Selecting each time is required.(XIAO ESP32C3)
HTH
YMMV
GL :slight_smile: PJ

I’ve tried this many times, and it maybe makes it… 25% more likely to upload successfully? Really inconsistent results!

I’ll try an earlier version of the Arduino IDE, but @cgwaltney, what development environment would you suggest? I started looking into PlatformIO / VSCode integration ~

Right now I have a desktop computer and a laptop… not really following what you’re suggesting?


Beyond all of those suggestions, for a couple of the boards, I can’t even get them to reliably connect to the computer long enough to try to get blink on there… Sometimes I see some output on serial:

15:37:40.688 -> Core  1 register dump:
15:37:40.688 -> PC      : 0x42037021  PS      : 0x00060430  A0      : 0x820301c4  A1      : 0x3fcebdb0  
15:37:40.688 -> A2      : 0x3fcefef8  A3      : 0x3fcebe88  A4      : 0xffff8fff  A5      : 0x3c12fd04  
15:37:40.688 -> A6      : 0x0000005c  A7      : 0x00000000  A8      : 0x00000000  A9      : 0x3fcebdd0  
15:37:40.688 -> A10     : 0x3fcefef8  A11     : 0x00000000  A12     : 0x0000005c  A13     : 0x3fceff54  
15:37:40.688 -> A14     : 0x0000080b  A15     : 0x00000005  SAR     : 0x0000001f  EXCCAUSE: 0x0000001c  
15:37:40.688 -> EXCVADDR: 0x00000000  LBEG    : 0x400570e8  LEND    : 0x400570f3  LCOUNT  : 0x00000000  
15:37:40.688 -> 
15:37:40.688 -> 
15:37:40.688 -> Backtrace: 0x4203701e:0x3fcebdb0 0x420301c1:0x3fcebe00 0x4202fd12:0x3fcebe30 0x42003609:0x3fcebe80 0x420070ea:0x3fcebf10

Along with some messages about rebooting…

If the bootloader mode isn’t working… what options do I have for trying to reach the board?

Due to the size constraints of the Xiao ESP32S3 development board, it does not integrate a USB-TTL conversion chip. This may cause some inconvenience, and we deeply apologize for any trouble this may cause.
Here is a tutorial on using Xiao and Platform Io that you can have a look: