Flash AnimatedPixelClock to your ESP32-S3 straight from your browser.
Plug the board in over USB and hit install. Then point it at your WiFi - and get an animated retro-arcade clock on a 128×64 RGB LED matrix, with optional live PC stats.
00
Before you start
Desktop Chrome or Edge. Web Serial doesn't run on Firefox, Safari, or mobile.
A real data USB cable. Power-only cables are silent killers - the port simply won't show up.
An ESP32-S3 board. A compact 4MB board (Waveshare ESP32-S3-Zero or an ESP32-S3 Super Mini, run off one USB-C charger) or the full-size WROOM devkit - pick yours in step 01. The firmware drives 2× 64×64 HUB75E panels chained into one 128×64 matrix - see the wiring guide for the pin map and power notes.
Stuck in a connect / disconnect loop? Hold BOOT, plug in USB while holding, then release. Or hold BOOT, tap RESET, then let go of both.
Nothing else on the serial port. Close Arduino IDE, PlatformIO Monitor, and the serial monitor below before flashing.
01
Flash your board
chip
ESP32-S3
board
…
display
HUB75 · 128×64 RGB
firmware
…
flash
0x0 · full image (bootloader + app)
A dialog will ask which serial port to use - pick the one that appears when you plug the board in. The installer erases and writes the full image at offset 0x0; it takes ~30 seconds.
02
Connect to WiFi
Right after flashing, the installer can hand your WiFi straight to the device in this tab - no phone needed. If you miss that window, the device also broadcasts its own setup hotspot you can join from anything. Either way it reboots onto your WiFi and shows its IP address on the matrix.
recommended
Configure WiFi in this tab
When the flash finishes, the install dialog opens a Configure WiFi step. Pick your home network, type the password, and hit Connect. The credentials travel to the device over USB using Improv Serial - no captive portal, no app switching. It appears only on a freshly flashed device and stays open for about 3 minutes.
Wait for “Installation complete”, then keep the dialog open.
Pick your WiFi network and enter the password.
The device joins your WiFi, reboots, and prints its IP address on the matrix. Note it down - you'll need it in the next step.
fallback
Or join the setup hotspot
Missed the Configure WiFi dialog, or flashed from a phone? The device falls back to an open setup hotspot you can join from any device and finish in a browser.
No password - it's an open setup network. It disappears once the device joins your WiFi.
On your phone or laptop, join the PixelClock-Setup WiFi network.
Open 192.168.4.1 - a captive portal should pop up automatically.
Pick your home network, enter the password, and save.
The device reboots, joins your WiFi, and prints its IP address on the matrix. Note it down - you'll need it in the next step.
After this you can reach the full config portal any time at the device's IP or at http://pixelclock.local - clock styles, sprite colours, layout, timezone, brightness and OTA updates all live there.
03
Connect your PC optional
A companion app reads your hardware sensors and streams CPU / RAM / GPU / disk stats to the device over your network. When it's running, the matrix switches from clock to live stats; when your PC sleeps, it falls back to the animated clock.
Install LibreHardwareMonitor from GitHub and run it as Administrator. On 0.9.5+, enable Options → Remote Web Server → Run.
Download the companion app - the prebuilt pc_stats_monitor_v4.exe needs no Python. Double-click to run; it lives in the system tray.
In the config window, enter the device IP (from the matrix), pick the sensors you want, arrange them on the live preview, then Save & push.
tip
Windows SmartScreen may warn on first run - click More info → Run anyway (normal for unsigned tools). The Autostart toggle in the app launches it on boot.
Grab the companion from the repo and install its dependencies:
In the config window, enter the device IP (from the matrix), pick your sensors, arrange the layout, then Save & push.
tip
The app's Autostart toggle installs a systemd user unit. Check it with systemctl --user status pcstatsmonitor.
Stats travel over UDP on port 4210 and refresh every few seconds - both configurable in the app. Get it from the project repo.
04
View serial logs
Reading the board's serial output is the fastest way to capture a boot loop, a WiFi error, or a crash for a bug report. Plug the board in over USB, click Connect, and pick the same serial port you'd use for flashing.
Only one program can hold the serial port at a time - close PlatformIO / Arduino monitors first, and don't click Install during a monitor session. Baud rate is 115200 to match the firmware.