Releases: Keralots/SmallOLED-PCMonitor
v1.5.3
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-hoursetting 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/PMindicators for animated clock styles when 12-hour format is enabled - Large Clock keeps its existing layout, with the
AM/PMindicator 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 AM11:59 -> 12:00 PM12:59 -> 01:00 PM23:59 -> 12:00 AM
Touch-Gated OLED Off + Temporary Wake
- Display brightness
0now means true OLED off, but only on builds withTOUCH_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
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
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 0inuser_config.h) - Requires
min_spiffs.csvpartition table (already configured inplatformio.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_PASSWORDinuser_config.hif 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 provisioningsrc/network/ble_setup.h- BLE setup header and declarations
Configuration Changes
user_config.h: AddedBLE_SETUP_ENABLED,BLE_DEVICE_NAME,AP_PASSWORDoptionsconfig.h: AddeddeviceName[32]field to Settings structsettings.cpp: Added device name persistence (NVS key:deviceName)
v1.5.0
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_INTERFACEswitch to use SPI instead of I2C. Configurable SPI pins inuser_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- Usesstrncpywith 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
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
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
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
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.cppinto smaller, modular files. - Easier maintenance and navigation.
- Better code organization.
- Split monolithic
v1.3.3
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.