Skip to content

Releases: Keralots/SmallOLED-PCMonitor

v1.5.3

04 Apr 14:10
053a964

Choose a tag to compare

Download Instructions

Make sure you download the correct version for your screen size!

Use Case File to Download
New device (first time flashing) firmware-v1.5.3-OLED_0.96inch.bin or firmware-v1.5.3-OLED_1.3inch.bin
Existing device (OTA update via web interface) OTA_ONLY_firmware-v1.5.3-OLED_0.96inch.bin or OTA_ONLY_firmware-v1.5.3-OLED_1.3inch.bin

v1.5.3 - Changelog

New Features

Full 12-Hour Format Support for Offline Clocks

  • Fixed the 12-hour / 24-hour setting so it now works consistently across all offline/manual clock styles
  • Animated clock styles now respect the selected time format:
    • Mario Animation
    • Space Invaders
    • Arkanoid / Pong
    • Pac-Man Clock
  • Added AM/PM indicators for animated clock styles when 12-hour format is enabled
  • Large Clock keeps its existing layout, with the AM/PM indicator moved to avoid overlapping the large minute digits
  • Shared time formatting logic was unified so midnight/noon transitions behave correctly across styles:
    • 00:xx -> 12:xx AM
    • 11:59 -> 12:00 PM
    • 12:59 -> 01:00 PM
    • 23:59 -> 12:00 AM

Touch-Gated OLED Off + Temporary Wake

  • Display brightness 0 now means true OLED off, but only on builds with TOUCH_BUTTON_ENABLED
  • Added temporary tap-to-wake when the display is off:
    • short press wakes the OLED for 10 seconds
    • after timeout, brightness returns to the scheduled/current target level
  • This behavior is limited to devices that actually have the touch/button hardware enabled

Bug Fixes

Brightness Safety for No-Button Builds

  • Devices built without touch button support can no longer set display brightness to 0
  • The same safety rule now applies to scheduled dim brightness
  • Protection is enforced in multiple places:
    • Web UI sliders
    • form save handling
    • persisted settings loaded from NVS
  • Prevents users from configuring a fully dark screen on hardware that has no input method to wake it

Mario Clock - Koopa Facing Direction

  • Fixed Koopa Troopa in Mario idle encounters walking with its head on the wrong side
  • Koopa sprite now faces the actual movement direction during encounters

UI Improvements

Display Settings Page

  • Brightness help text now changes depending on whether the build supports the touch button
  • Builds with touch/button explain that 0% can be used with tap-to-wake
  • Builds without touch/button explain that the minimum brightness is 1%

Internal Changes

  • Unified offline clock time formatting and rendered-time state handling for 12h/24h mode
  • Added shared brightness sanitization helpers in settings persistence
  • Refactored display brightness handling to work correctly across supported OLED driver types
  • Added temporary wake handling inside the display module instead of relying on display-type-specific shortcuts

v1.5.2

05 Mar 17:36
ed3d952

Choose a tag to compare

Download Instructions

Make sure you download the correct version for your screen size!

Use Case File to Download
New device (first time flashing) firmware-v1.5.2-OLED_0.96inch.bin or firmware-v1.5.2-OLED_1.3inch.bin
Existing device (OTA update via web interface) OTA_ONLY_firmware-v1.5.2-OLED_0.96inch.bin or OTA_ONLY_firmware-v1.5.2-OLED_1.3inch.bin

v1.5.2 - Changelog

New Features

Mario Clock - Idle Enemy Encounters

  • Between minute changes, Mario encounters enemies during the ~56-second idle gap
  • All encounters auto-abort at second :56 to ensure minute-change animation always has priority
  • Disabled by default — enable via web interface: Mario Clock Settings > Idle Encounters

Encounter Configuration (Web Interface)

  • Idle Encounters checkbox to enable/disable
  • Encounter Frequency dropdown:
    • Rare (25-35s)
    • Normal (15-25s)
    • Frequent (8-15s)
    • Chaotic (2-5s)
  • Encounter Speed dropdown: Slow / Normal / Fast

Timezone Database Additions

  • Added Pakistan (Karachi, Islamabad) timezone (UTC+5, no DST)
  • Added Central Asia (Tashkent, Uzbekistan) timezone (UTC+5, no DST)
  • Added UTC+5 default mapping for automatic migration from old GMT offset format

v1.5.1

23 Feb 19:37
d811c60

Choose a tag to compare

Download Instructions

Make sure you download the correct version for your screen size!

Use Case File to Download
New device (first time flashing) firmware-v1.5.1-OLED_0.96inch.bin or firmware-v1.5.1-OLED_1.3inch.bin
Existing device (OTA update via web interface) OTA_ONLY_firmware-v1.5.1-OLED_0.96inch.bin or OTA_ONLY_firmware-v1.5.1-OLED_1.3inch.bin

v1.5.1 - Changelog

New Features

mDNS Discovery

  • Device is now discoverable on local network via http://smalloled.local
  • No more memorizing IP addresses - just type the hostname in your browser
  • Configurable device name (default: smalloled) via web interface Settings > Device Name
  • mDNS name updates automatically when device name is changed

BLE WiFi Provisioning (Experimental)

  • New Bluetooth Low Energy setup option for the upcoming SmallOLED Android app
  • On first boot (no saved WiFi), device advertises as BLE GATT server
  • Android app connects, sends WiFi credentials, device connects and saves them
  • Falls back to AP mode automatically if BLE times out (2 min) or fails
  • Disabled by default (BLE_SETUP_ENABLED 0 in user_config.h)
  • Requires min_spiffs.csv partition table (already configured in platformio.ini)

Android App API Endpoints

  • Added new REST API endpoints to support the upcoming SmallOLED Android companion app
  • Device discovery and configuration management from mobile

Configurable AP Password

  • WiFi setup Access Point is now open (no password) by default for easier first-time setup
  • Password can be set via AP_PASSWORD in user_config.h if security is needed

Factory Reset

  • "Reset WiFi Settings" button replaced with full Factory Reset
  • Erases all settings (WiFi, display, metrics, animations, network) and restarts in AP setup mode
  • Two-step confirmation with backup reminder before proceeding

Bug Fixes

  • Fixed mDNS UDP socket error on startup
  • Fixed LED initialization timing issue
  • Fixed LED PWM brightness jump at 100% duty cycle, gamma output capped at 254 to keep LED drivers in PWM dimming mode (avoids visible jump when using constant-current driver boards)

Documentation

README.md Updates

  • Added new Advanced / Optional Features section covering:
    • SPI display interface (alternative to I2C, faster refresh)
    • LED PWM night light with TTP223 touch gestures
    • QR code WiFi setup display
    • BLE provisioning (experimental)
    • Scheduled dimming / night mode
    • OTA firmware updates

Dependencies

  • Added h2zero/NimBLE-Arduino@^1.4.2 (BLE provisioning library, dead-stripped when disabled)
  • Changed partition table to min_spiffs.csv (supports OTA + BLE)

New Files

  • src/network/ble_setup.cpp - BLE GATT server for WiFi provisioning
  • src/network/ble_setup.h - BLE setup header and declarations

Configuration Changes

  • user_config.h: Added BLE_SETUP_ENABLED, BLE_DEVICE_NAME, AP_PASSWORD options
  • config.h: Added deviceName[32] field to Settings struct
  • settings.cpp: Added device name persistence (NVS key: deviceName)

v1.5.0

14 Feb 09:37
f0cc52b

Choose a tag to compare

Download Instructions

Make sure you download the correct version for your screen size!

Use Case File to Download
New device (first time flashing) firmware-v1.4.3-OLED_0.96inch.bin or firmware-v1.4.3-OLED_1.3inch.bin
Existing device (OTA update via web interface) OTA_ONLY_firmware-v1.4.3-OLED_0.96inch.bin or OTA_ONLY_firmware-v1.4.3-OLED_1.3inch.bin

v1.5.0 Release Notes

New Features

  • Automatic Timezone & DST - Replaced manual GMT offset + DST checkbox with a region-based timezone selector (~50 regions). DST transitions happen automatically using POSIX timezone strings. Old settings are auto-migrated.
  • Large Text Display Modes - Two new row modes: Large 2-Row and Large 3-Row with double-size text in single-column layout for better readability at a distance.
  • SPI Display Interface - Compile-time DISPLAY_INTERFACE switch to use SPI instead of I2C. Configurable SPI pins in user_config.h.
  • LED Gesture Control - Redesigned TTP223 touch gestures: quick tap (< 500ms) toggles mode/cycles clocks, medium press (500ms-1s) toggles LED on/off, long hold (> 1s) ramps LED brightness with gamma correction.
  • Show IP at Boot - New setting to show/hide the IP address on OLED at startup (configurable via web interface).
  • QR Code WiFi Setup - Optional compile-time feature (QR_SETUP_ENABLED) that shows a scannable QR code on the OLED during WiFi AP setup.

Bug Fixes

  • Fixed clock drifting ~3 hours after days of uptime - WiFi reconnection now restarts the SNTP client and reapplies timezone. Added periodic hourly NTP re-sync as safety net.
  • Fixed animated clock digit revert - Animation trigger changed from :55 to :56 seconds in Mario, Space Invaders, and Pac-Man clocks, preventing digits from briefly showing the old value.
  • Fixed Pong ball diagonal speed - Balls moving diagonally no longer exceed maximum speed (clamped by magnitude instead of per-axis).
  • Fixed timezone dropdown showing wrong region - Multiple regions sharing the same timezone rules (Central European, Scandinavian, Central Balkan) now correctly display the user's actual selection.
  • Fixed UDP oversized packet handling - Packet size is validated before reading, preventing processing of truncated data.
  • Fixed Pac-Man eaten pellets initialization - Prevents visual glitches from uninitialized memory on first display.
  • Fixed scheduled dimming edge case - Same start/end hour now correctly treated as "no dim period".
  • Fixed progress bar off-screen drawing - Bars outside display bounds are now skipped.
  • Fixed SH1106 initialization - Now properly checks return value of display.begin().
  • Fixed WiFi disconnect not marking PC offline - Display correctly shows offline status when WiFi drops.
  • Fixed buffer overflow in safeCopyString - Uses strncpy with explicit null termination.

Improvements

  • Smoother animations - Auto-boost refresh rate increased from 40 Hz to 60 Hz.
  • Faster touch response - Button debounce reduced from 200ms to 50ms.
  • More reliable NTP sync - Retry attempts increased from 10 to 30; SNTP client restarted on failure.
  • Metrics API uses ArduinoJson - Proper JSON escaping for metric names/labels.
  • Code cleanup - ~50 lines of redundant forward declarations removed.

Breaking Changes

  • Timezone setting format - Old GMT offset dropdown replaced by region selector. Existing configs auto-migrate.
  • Touch gesture timing - Short press threshold reduced from 1000ms to 500ms. Medium press (500ms-1s) now toggles LED.

v1.4.3

07 Feb 11:55
52890f9

Choose a tag to compare

Download Instructions

Make sure you download the correct version for your screen size!

Use Case File to Download
New device (first time flashing) firmware-v1.4.3-OLED_0.96inch.bin or firmware-v1.4.3-OLED_1.3inch.bin
Existing device (OTA update via web interface) OTA_ONLY_firmware-v1.4.3-OLED_0.96inch.bin or OTA_ONLY_firmware-v1.4.3-OLED_1.3inch.bin

Changelog

  • fixed DST time, make sure you pick right one on WEB interface
  • some minor web interface fixes
  • option "disable IP show at boot" available in network configuration settings.

2.42" OLED works with 0.96" oled firmware. Check Readme for more info.

v1.4.2

02 Feb 19:44

Choose a tag to compare

What's New in v1.4.2

Display Enhancements

  • Manual Brightness Control: Slider (0-100%) in web interface,
  • Scheduled Night Mode: Auto-dim during scheduled hours (saves power, extends OLED life)
  • 2.42" OLED Support: Added SSD1309 driver support for larger displays (use the same 0.96" firmware for 2.42" OLED)

LED Night Light Optional Feature

  • Filament LED control via GPIO 1 PWM
  • Gesture Control: Long press (1 sec) to toggle on/off
  • Web interface brightness slider

Web Interface Improvements

  • Renamed "Display Performance" → "Display Settings"
  • Updated descriptions for clarity

Technical

  • Improved button state machine reliability
  • Better gesture conflict resolution
  • All features backward compatible
  • Hardware-safe when optional components disconnected

v1.4.1

22 Jan 18:34

Choose a tag to compare

Download Instructions

Make sure you download the correct version for your screen size!

Use Case File to Download
New device (first time flashing) firmware-v1.4.1-OLED_0.96inch.bin or firmware-v1.4.1-OLED_1.3inch.bin
Existing device (OTA update via web interface) OTA_ONLY_firmware-v1.4.1-OLED_0.96inch.bin or OTA_ONLY_firmware-v1.4.1-OLED_1.3inch.bin

Changelog

1. Mario Clock Improvements

  • 4-frame and 2-frame animation configurable via web UI
  • Walk speed now configurable (smoother on 1.3" screens)

2. Arkanoid Clock (renamed from Pong)

  • Horizontal and vertical digit bouncing
  • Various bug fixes

3. Clock Behavior When No WiFi

  • Clock stays enabled even without WiFi connection
  • Small "no WiFi" icon displayed

4. Python Monitor Script (v2.2)

  • Fix autostart issues for LHM 0.9.4 and 0.9.5+
  • Network metrics conversion fix (Bytes/s → MB/s)
  • LHM error reporting - immediate status display when LibreHardwareMonitor crashes
  • Clock drift fix when LHM web server not responding

v1.4.0

16 Jan 14:16

Choose a tag to compare

Make sure you download correct version and screen size!

For new device flashing use:
firmware-v1.3.3-OLED_x.xxinch.bin
For flashing from older version via device WEB interface use:
OTA_ONLY_firmware-v1.3.3-OLED_x.xxinch.bin

Changelog

New Features

  • Optional - TTP223 Touch Sensor Support

    • Physical touch button to toggle between PC metrics and clock modes.
    • Cycles through clock styles when the PC is offline.
    • Configurable via user_config.h (must be enabled and compiled from source).
  • LHM Error Reporting (fbf1be9)

    • ESP32 now displays an error screen when LibreHardwareMonitor encounters issues.
    • Shows status message, last OK timestamp, and device IP.
    • Provides immediate error notification.

Bug Fixes

  • Clock Drift Fix (64669a9)
    • Fixed time drifting when LHM 0.9.5 crashes or the web server stops responding.
    • TIME_OVERRIDE_MAX_MS (60s) forces NTP resync.
    • Prevents indefinite clock drift during animations.

Code Quality

  • Major Code Refactoring
    • Split monolithic PCMonitor_WifiPortal.cpp into smaller, modular files.
    • Easier maintenance and navigation.
    • Better code organization.

v1.3.3

06 Jan 19:22

Choose a tag to compare

Make sure you download correct version and screen size!

For new device flashing use:
firmware-v1.3.3-OLED_x.xxinch.bin
For flashing from older version via device WEB interface use:
OTA_ONLY_firmware-v1.3.3-OLED_x.xxinch.bin

New Features:

  • Pac-Man Clock - New animated clock style (clockStyle 6)
  • Pellet-based digit eating animation
  • Separate patrol speed and digit eating speed controls
  • Configurable pellet count, random spacing, bounce animation
  • CLI Mode for Linux - Native PC stats monitoring on Linux without helper app
  • Uses /proc/stat for CPU, /proc/meminfo for RAM
  • Network stats from /proc/net/dev
  • Half-Hour Timezone Support - GMT+5:30 (India), GMT+9:30 (Australia), etc.

Bug Fixes:

  • Refresh rate corrected during animations

Bugs in this release:

  • Network download/upload metrics not displayed properly. Need to fix python script and oled code. To be fixed in next release.

v1.3.2

25 Dec 21:16

Choose a tag to compare

  • new clock animation: pong retro game!
  • customizable clock options for every clock animation
  • removed compatibility with old python code as new one with GUI works way better
  • some cleanup and minor improvements here and there.