Flash SmallOLED to your ESP32-C3 straight from your browser.
Pick your OLED, plug the board in over USB, hit install. Then point it at your WiFi and your PC - and watch your CPU, RAM, GPU and disk stats land on a tiny pixel screen.
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.
Know your OLED. 0.96″ (SSD1306), 1.3″ (SH1106) and 2.42″ (SSD1309) need the matching firmware. The wrong one may flash fine, then go black on reconnect.
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-C3
display
SSD1306 · 128×64
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 OLED.
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 OLED. 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 PCMonitor-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 OLED. 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://smalloled.local - clock styles, layout, timezone, brightness, labels and OTA updates all live there.
03
Connect your PC
A small companion script reads your hardware sensors and streams CPU / RAM / GPU / disk stats to the device over your network. When it's running, the OLED switches from clock to live stats; when your PC sleeps, it falls back to an animated pixel clock.
Install Python 3.7+ from python.org - tick “Add python.exe to PATH” during setup.
Install LibreHardwareMonitor from GitHub and run it as Administrator. On 0.9.5+, enable Options → Remote Web Server → Run.
Install the Python dependencies:
cmd · powershell
> pip install psutil pywin32 wmi pystray pillow
Run the monitor - the config window opens automatically the first time:
cmd · powershell
> python pc_stats_monitor_v2.py
In the GUI, enter the ESP32 IP (from the OLED), tick the sensors you want, then Save & Start Monitoring.
Open the device's IP in a browser and drag each metric to where you want it on the display. Start with 1-2 and build up.
tip
Want it to launch on boot? python pc_stats_monitor_v2.py --autostart enable runs it minimized to the system tray.
Install Python 3.7+ and Tkinter, then the dependencies:
bash
$ pip install psutil tk
# if that fails on Debian/Ubuntu:$ sudo apt install python3-pip python3-tk -y
Run the Linux build of the monitor:
bash
$ python3 pc_stats_monitor_v2_linux.py
In the GUI, enter the ESP32 IP (from the OLED), pick your sensors, then Save & Start Monitoring.
Open the device's IP in a browser and arrange the metrics on the display preview.
tip
For a boot service: python3 pc_stats_monitor_v2_linux.py --autostart enable installs a systemd user unit. Check it with systemctl --user status pc-monitor.
Stats travel over UDP on port 4210 and refresh every ~3 seconds - both configurable in the GUI. Get the script and the latest GUI 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.