“xcrhom WLED Type-C” is a tiny ESP32 board designed to run WLED open-source firmware that supports WS2812(B) RGB LED strips. It also supports audio-reactive effects using an “external microphone”, which appears to mean the microphone on the smartphone running the WLED app, more on that later.
We had already written about other small ESP32/ESP32-S3-based WLED controllers with the likes of Adafruit Sparkle Motion Stick and ANAVI Miracle Emitter, and the xchhom board’s main selling point is its price, as it goes for about $12 before taxes (AliExpress even shows me a $6.14 “Welcome offer” including shipping).
xchome WLED Type-C board specifications:
- Wireless module – ESP32-WROOM-32D
- SoC – Espressif ESP32-D0WD dual-core Tensilica LX6 processor @ 240 MHz
- Storage – 32Mbit SPI flash
- Connectivity – Wi-Fi 802.11 b/g/n up to 150 Mbps, Bluetooth 4.2/5.x LE
- IPEX antenna connector (antenna provided)
- RGB LED support
- 3-pin connector with GND, DA (Data), and 5V signals
- Supports WS2812X 5V RGB LED strips, but not 12V models
- Up to 3-meter-long strips, max 144 LEDs/meter (but power limitations may only allow for shorter strips in that case)
- USB – 1x USB Type-C port with WCH343 USB to serial chip
- Power Supply – 5V/5A via USB-C port
- Dimensions – 20.95 x 7.96mm
The xcrhome.tech website does not seem to be maintained, and has no information about the board itself, let alone firmware support. So you’d have to follow the instructions on the WLED website instead. What I found curious is that the Adafruit Sparkle Motion Stick features a built-in I2S microphone for audio-reactive effects, while we are told the xcrhom WLED Type-C board supports an external microphone.
I initially thought the user may have to connect an actual microphone to the board, but there isn’t any connector or footprint for one, and connecting a microphone directly to the ESP32 module would be awkward. Instead, the video below shows a demo with one phone running the WLED app and selecting the “2D CenterBars” sound reactive (SR) effect, and another phone playing music. You can learn about various audio input methods in the WLED audio reactive documentation.

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.






Very weird using an “external” microphone, but i guess you might just add well use the phone for more than configuration when you’re already using it..?
Utilizing an external usb-c controller would have enabled 12V (and almost 24V) strips. Could also be implemented quite cheaply using voltage multiplying
The specs are rather incomplete. Does it have suitable (i.e. fast enough) level shifters? Is it protected against short circuits? No GPIOs exposed.
Level-shifters? Data line is 3.3 volt straight from the regulated rail from the v-reg to the esp32 module and the 5V comes directly from the usb line, judging by the pcb.
The WS2812B specs expect 5V logic levels on the data line, although many strips tolerate 3.3V levels in practice.
(argh, hit edit, and it ate my bulleted list. sorry for the unreadability.)
I don’t see much uniquely good about this board.
That phone as external microphone thing is not unique to this board AFAICT. It’s a WLED feature that should work just as well on those other boards.
I don’t love the choice of an ESP32.
ESP32-S3 would be better. On ESP32*, I think WLED uses the RMT peripheral to drive the strip. (I don’t see it in their docs, but esphome does at least.) The original ESP32 doesn’t support DMA to it, which means checking in at least every 512 symbols to have a clean transmission, and I think it uses 2 symbols per bit. At 800kbps, that’s once every 32 µs, or more often if driving multiple strips. The ESP32-S3 supports setting up a larger DMA request, so I think you can just check in once per frame (every 16 ms or whatever, 3 orders of magnitude difference). WLED says ESP32-S3 is experimental (“as of summer 2023”) but I think it works fine today.The RP2040/RP2350 are even better hardware-wise btw—you can DMA bytes to a PIO state machine rather than structs with timings of each symbol. But WLED doesn’t support them.It only supports one strip, but one microcontroller should be able to handle many.
The 5V on that 3-pin connector is powered from the USB port. But many setups use long strips that can draw several amps (and/or require 12V). A USB port isn’t the best way to do that, especially if you’re plugging it into your computer for debugging/flashing. So other boards use a separate larger power supply, fuses per strip, and big capacitors.
As Jens mentioned, unsure if they’re using a level shifter for the data output as they should. Might be the big 4-pin IC near the USB port?
Big 4 pin IC near the USB port is voltage regulator. Probably AMS1117 which should not be used in ESP32 designs