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), 1.54″ (CH1116) 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.

  1. Wait for “Installation complete”, then keep the dialog open.
  2. Pick your WiFi network and enter the password.
  3. 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.

setup-mode access point
network PCMonitor-Setup

No password - it's an open setup network. It disappears once the device joins your WiFi.

  1. On your phone or laptop, join the PCMonitor-Setup WiFi network.
  2. Open 192.168.4.1 - a captive portal should pop up automatically.
  3. Pick your home network, enter the password, and save.
  4. 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 app 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.

  1. Download the companion app. One file, nothing to install - no Python needed.
note
The exe is unsigned, so the first launch may show “Windows protected your PC” - click More info -> Run anyway. The config window uses WebView2, preinstalled on Windows 11; on Windows 10 install Microsoft's free Evergreen runtime if the window never appears.
  1. Install LibreHardwareMonitor from GitHub, run it as Administrator, and enable Options -> Remote Web Server -> Run. Only temperatures, fan RPM, GPU and power need it - CPU, RAM and disk work without it.
  2. Double-click the exe. On the Connection page enter the device IP from the OLED and hit Test connection.
  3. On Sensors, tick the readings you want (up to 20). If you started LibreHardwareMonitor afterwards, click Rescan sensors.
  4. On Layout & preview, drag the metrics onto the 1:1 OLED preview, then Save & push to device. Start with 1-2 and build up.
  5. Close the window to tuck the app into the system tray - it keeps sending in the background. Right-click the tray icon to reopen it or quit.
tip
Want it to launch on boot? Tick Start with Windows on the Connection page. No admin rights, and it starts minimized to the tray.
  1. Grab PC-Companion-App-v4/linux-companion/ from the repo. Same app as on Windows, run straight from source - there is no build step.
  2. Install the dependencies (Python 3.10+):
bash
$ python3 -m pip install -r requirements.txt
# optional - native window instead of your browser:
$ sudo apt install gir1.2-webkit2-4.1 python3-gi -y
# optional - temperatures and fan speeds:
$ sudo apt install lm-sensors -y && sudo sensors-detect
  1. Run the app:
bash
$ python3 pc_stats_monitor_v4_linux.py
  1. The config window opens - or, without the GTK/WebKit libs, your browser at http://127.0.0.1:8737. Enter the device IP on Connection, tick your sensors on Sensors, then arrange them on Layout & preview and hit Save & push to device.
tip
For a boot service: python3 pc_stats_monitor_v4_linux.py --autostart enable installs a systemd user unit - check it with systemctl --user status smalloled-companion. NVIDIA GPUs need pip install pynvml; AMD cards are read from sysfs with no extra package.

Stats travel over UDP on port 4210 and refresh every ~3 seconds - both adjustable in the app, and the port is a setting on the device too. Source for both builds lives in PC-Companion-App-v4.

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.