The problem comes down to the specific ESP32‑C3 variant used by the manufacturer. Some versions include built‑in flash memory, while others include none at all. Without flash, the chip cannot store firmware, making the board unusable unless you add external SPI flash manually. Many sellers blur the MCU markings in their product photos, making it impossible to know what you are buying.
In this video you will learn:
The five ESP32‑C3 variants: ESP32‑C3, ESP32‑C3FN4, ESP32‑C3FH4, ESP32‑C3FH4AZ, ESP32‑C3FH4X
Which versions include flash memory and which do not
How to identify the good versions (FN4, FH4, FH4AZ, FH4X)
Why the plain ESP32‑C3 without the F marking has no flash
How sellers hide the markings and mislead buyers
How to avoid wasting money on the flash‑less version
What to check in the listing before buying any ESP32‑C3 board
If you buy development boards from AliExpress or other marketplaces, this guide will help you avoid the common trap of receiving a board that looks perfect but cannot run your code.
It’s one of the most knocked off boards out there.
Stay with the Xiao. Nothing comes close in Value and Quality.
Seeed is proven with strong WEB presence and Full featured web site for ordering and tracking and maintaining schedules orders. they have solid distribution and only a small markup if any. Shipping comes in whatever flavor or speed you need so no reason buy cheap crap that doesn’t work and now you have to spend that and more just to get back.
I could not avoid to buy some boards, because they are presented in a package of 6 pieces for 21 € at Amazon. If my programs (high speed state machines) run on that board, I will continue with Seed Xiao, not at least because of the connector for an antenna.
So my first test was very much disappointing. I found out, that they call the Arduino loop() function only every 4.7 milliseconds. What a mess for some of my state machines with 200 microseconds cycle time. (For the old ESP32 WROOM/WROVER I measured loop() cycle times of less than 10 microseconds, including the measurement program.)
I was preparing to send the boards back, but then I had an idea. I simply installed at the end of the loop() function a jump (goto) to the beginning (so I never leave the loop). And now I have the same behavior as with the ESP32 WRO…, only a bit longer cycle time, but less than 20 microseconds.
If that is the trick to eliminate the disadvantages of the RTOS, I will be happy.
OK, I will have to test the CPU-load and latency of BLE, WIFI and other Arduino libraries (USB and other unknown active procedures now and then take about 100 microseconds with the tested ESP32-C3). But so far, I’m optimistic.
Merry Christmas to all of you!
P.S.
I just did the same test with an ESP32-S3 (Dev-Kit with extra USB-OTG).
Because S3 has the Xtensa CPU with 240 MHz and C3 a RISC V with 160 MHz I expected the C3 being slower. But its just the opposite, the S3 has a cycle time of more than 40 microseconds. So the old WROOM/WROVER are the fastest. May be, with new products the RTOS brings extra features and takes more CPU time, whatever they do which I do not need/use.