Firmware v2.2.1. This manual covers every feature in the shipped firmware, how to use it, and why it works the way it does.
CinderClock is a desk alarm clock with a wide monochrome display, a real-time clock backed by a battery, a speaker, and a microSD card for your own alarm sounds.
Beyond telling the time it does five things:
Everything runs on the device. There is no app, no account, and no internet connection. The only network feature is a temporary local WiFi hotspot used to copy sound files onto the card, and it turns itself off.
| Part | What it is | Why it is there |
|---|---|---|
| Display | 256 × 64 monochrome OLED (SSD1322), 3.12" | Wide aspect fits a large clock and a side panel at once. OLED means unlit pixels are genuinely off, so a dark room stays dark. |
| Processor | ESP32-S3, 16 MB flash, 8 MB PSRAM | Two cores. Audio runs on one, the interface on the other, so playback never stutters when you press a button. |
| Clock chip | DS3231 with coin cell | Keeps time when unplugged, and is temperature-compensated, so it drifts far less than a bare microcontroller. |
| Audio | MAX98357A amplifier + speaker | Plays real WAV files off the card, not just beeps. |
| Storage | microSD, SPI | Your sound files. |
| Light sensor | BH1750 | Automatic brightness and night dimming. |
| Environment | BME280 | Temperature, humidity, air pressure. |
| Input | Analog joystick with push, plus four buttons | See below. |
Both sensors are optional. If either is absent the clock detects that at power-on and simply hides the features that depend on it — nothing errors out.
Four buttons and a joystick. The joystick pushes in as a fifth button.
| Control | Usual meaning |
|---|---|
| Joystick up / down | Move through a list, or change the value under the cursor |
| Joystick left / right | Move between fields, or step a value up/down |
| Joystick click | Same as C in most places; opens the main menu from standby |
| A | Do the thing — start, dismiss, confirm the primary action |
| B | Back / cancel. Never destructive. |
| C | Confirm, save, or toggle the highlighted item |
| D | Menu from standby; snooze while an alarm rings; lap on the stopwatch |
The rule to remember: B always goes back and never loses more than the current edit. Anything that deletes asks first.
Any menu or editor left untouched for 2 minutes returns to standby. This prevents screen burn-in and lets the clock go back to sleep.
Screens that are doing something are exempt and stay up indefinitely: a ringing alarm, a running game, a running timer or Pomodoro, the stopwatch, Ambient, the SD portal, and the display calibration screen.
Standby is the clock face. From it:
| Input | Result |
|---|---|
| D or joystick click | Main menu |
| Up | Quick Access (see §22) |
| Down | Next watch face |
| Right | Jumps to whatever is currently running — a snoozed alarm, Pomodoro, stopwatch, or timer, in that order |
Faces are arranged as a vertical strip, like a smartwatch:
-1 Quick Access
0 Home face
+1 Alternate face
+2 (future faces)
Up walks toward Quick Access and only opens it from position 0. Down walks deeper into the face list and stops at the last one. This is why Up does not always open Quick Access — the strip has one consistent direction of travel rather than a mode-dependent shortcut.
Two faces ship: Center (large centred clock) and Left (clock on the left, alarm and status panel on the right). The face you leave it on is remembered across a power cycle.
The face switch is written to storage 3 seconds after you stop changing it, not on every press, so flicking through faces does not wear the memory.
Depending on your settings: time, seconds, date, next alarm summary, temperature and humidity, battery indicator, and a callout row reminding you which joystick direction does what. Each of these can be turned off in Settings — the display is small, and a clock you actually want on your desk is one that shows only what you use.
On standby the clock sleeps between seconds. It wakes once per second, updates the time, and goes back to sleep. This is why the device is cool and quiet.
To wake it, press any button — including the joystick click. After that the joystick responds immediately.
This matters because the joystick's direction axes are analog. The processor cannot be woken by an analog signal, only by a button. So a joystick nudge on a sleeping clock is not seen until the next one-second wake-up, which feels laggy and inconsistent. Pressing any button first wakes the loop, and from then on directions are read at full speed.
The clock will not sleep while: an alarm is active or snoozed, audio is playing, a file upload is in progress, the web portal is on, a Pomodoro is running, or the thermal screensaver is drawing.
Main menu → Set New Alarm, then pick a type. View Alarms lists what you have; select one to edit, delete, or toggle it on/off.
| Type | Fires |
|---|---|
| Simple | Once, at a set time, then stops |
| Repeating | On a recurring pattern (below) |
| On/Off | A duty cycle — some units armed, then some units silent, repeating forever |
| Sunrise | At local sunrise, recalculated daily |
| Sunset | At local sunset, recalculated daily |
Sunrise and Sunset are set up under Sun Follow (§11), not here.
Repeating and On/Off alarms each have a Cycle setting with two values, and it changes what everything below it means:
| Cycle: Weeks | Cycle: Days | |
|---|---|---|
| Repeating | Fires on the days you tick, every Nth week | Fires every N days counting from the start date. Day of week is ignored. |
| On/Off | N weeks armed, M weeks silent, on the days you tick | N days armed, M days silent, counting from the start date |
When you set Cycle to Days the day-of-week row disappears, because it no longer applies.
Worked examples:
The alarm list writes these back in plain language — "Daily", "Weekdays", "Weekends", "Every 3 days", "3d on/2d off" — rather than showing a raw pattern, because the single biggest source of confusion with this kind of clock is not knowing what you actually set.
Every recurring alarm has a Starts date. It is the anchor the cycle counts from, and it is the only thing that shifts the cycle's phase.
It is stamped once when you first save the alarm. Editing anything else — volume, sound, the game toggle — leaves it alone. (An earlier firmware re-stamped it on every save, which silently reset an On/Off alarm's phase whenever you touched its volume.)
The row slides within a one-week window, today through today + 6. That covers every practical re-phasing without needing a full date picker.
Both editors show a live preview at the bottom: -> Mon 3 Aug.
It is computed by the same code the scheduler uses to decide whether to fire. They cannot disagree. If the preview looks wrong, the alarm genuinely is wrong — so use it as your check before saving, rather than waiting a week to find out.
Each alarm carries its own sound file and its own volume (1–10). Set the sound by selecting the Sound row, which opens the card browser: pick a folder, then a file.
Volume is linear and absolute: 1 is 10% amplitude, 10 is 100%. The per-alarm slider is capped at the master volume when you edit it, so an alarm can never be louder than the master setting.
Alarms are never silent. If the file is missing, unreadable, or there is no card, the clock falls back to a built-in siren. Muting sound effects does not mute alarms — those are two separate settings, deliberately.
A ringing alarm gives up after 5 minutes, logs itself as MISSED, and returns to standby. The missed time is shown on the clock face until you acknowledge it.
Settings → Pre-Alarm. One global setting, not per-alarm.
When enabled it plays a quieter, separate sound a set number of minutes before any alarm fires. It has its own sound file and its own volume.
The point is a gentle heads-up — surfacing you out of deep sleep a few minutes early so the real alarm is less of a shock. Press A to dismiss it; the main alarm still fires on time.
Settings → Snooze Opts. Three settings: on/off, mode, and length in minutes.
Snooze is capped at 3 per alarm. After that, D dismisses instead. The cap exists because an uncapped snooze is just a slower missed alarm.
| Mode | What you do |
|---|---|
| Single | Press D once |
| Triple | Press D three times, at least 0.5 s apart |
| Joystick | Follow a sequence of randomly chosen joystick directions shown on screen |
Triple and Joystick exist to make snoozing require enough attention that you cannot do it half-asleep, without making it impossible.
In Joystick mode each move must be fully released before the next one counts, and a new random direction is drawn every time. Holding the stick in one direction does nothing.
A snoozed alarm is reachable from standby by pushing the joystick right — you can dismiss it early or snooze again from there.
Any alarm can have Game: ON. When it rings, A starts a game instead of dismissing. You have to win to stop the alarm.
Game losses have their own budget of 3, separate from the snooze budget. The third loss dismisses the alarm outright. This is a mercy rule: being trapped by a game you cannot beat at 6 a.m. is a worse outcome than getting up late.
The wake streak counts consecutive alarm games won, and the best streak is kept.
Which game and which difficulty is set in Games → Game Settings. Setting it to Random picks a different one each time, which stops you from learning to beat one game on autopilot.
Main menu → History. The last 10 alarm events, newest first, each showing the time, the alarm type, and what happened: DONE, SNOOZED, MISSED, CANCELLED, or a failure reason (SD_OFF, NO_FILE, MUTED).
It exists to answer "did it actually go off?" — the most common question after oversleeping, and one you otherwise cannot answer. Timers log here too.
Main menu → Sun Follow. Calculates sunrise and sunset from your coordinates and lets you set alarms that track them through the year.
| Row | Meaning |
|---|---|
| Sunrise alarm | On/off |
| Sunset alarm | On/off |
| Location | Your latitude and longitude, in degrees / minutes / seconds |
| Date | Today's date (needed for the calculation) |
| Sunrise Offset | Minutes before or after sunrise to fire |
| Sunset Offset | Minutes before or after sunset to fire |
| UTC Offset | Your time zone, auto-derived from longitude but editable |
Times are recalculated every day, so the alarm drifts with the season exactly as the sun does — the point being that "wake at first light" is a different clock time in January than in June.
In the Location editor, left/right moves between degrees, minutes, seconds, and the hemisphere sign; clicking switches between latitude and longitude while staying on the same sub-field, so editing seconds and clicking lands on seconds.
Accuracy note: the calculation degrades above roughly 65° latitude, where the sun may not rise or set at all on a given day.
Main menu → Calendar. A month at a glance: grid on the left, summary on the right.
The alarm marks come from the same code that decides whether an alarm fires, so the calendar is a visual check on your recurrence settings. Set "every 3 days" and the marks should march across the month in threes. If they do not, the alarm is misconfigured.
There are no gridlines — at 27 pixels per column the row and column rhythm is enough, and lines would cost legibility.
Main menu → Set Timer, or Quick Access. Set hours, minutes and seconds; A starts it.
The timer runs in the background. Leave the screen and use the clock normally; it keeps counting. Push the joystick right from standby to jump back to it.
The full-screen timer also runs the checker saver on your screensaver interval, since it can be on screen for a long time.
Main menu → Saved Timers. Durations you use often, plus the Pomodoro editor at the top.
Saving a timer that you loaded from a slot overwrites that slot rather than creating a duplicate.
A repeating work/rest cycle. Set Work and Rest in minutes (1–999); left/right switches field, up/down changes the value. Durations of 60 minutes or more display as H:MM.
While running: the phase name is at the top, the countdown in the middle, and a tomato (work) or cup (rest) on each side.
At each phase change there is a 4-second window with a countdown and a tone before the next phase starts, so you get a warning rather than being switched silently.
Phase changes are handled centrally, so they happen on time even if you are somewhere else in the menus. C stops the cycle; left or right returns to standby without stopping it. Push right from standby to get back.
The clock will not enter sleep while a Pomodoro is running, because the phase timing needs to be accurate.
Main menu → Stopwatch, or Quick Access.
| Button | Action |
|---|---|
| A | Start / stop |
| D | Lap while running (up to 4); reset when stopped |
| C | Show/hide centiseconds |
| B | Back |
Like the timer, it keeps running in the background and laps survive until you reset. Right from standby returns to it.
Centiseconds can be turned off because a fast-changing display is distracting when the stopwatch is just sitting on your desk.
Main menu → Ambient. Loops a sound with a slow full-screen animation. Intended for falling asleep, focusing, or just leaving on.
| Row | Options | Notes |
|---|---|---|
| Sound | Any file on the card | Opens the card browser. Any folder, not a fixed one. |
| Animation | None, Fire, Rain, Blobs, Life, Waves | See below |
| Reactive | On / Off | Ties the animation to the audio |
| Time | 15 / 30 / 45 / 60 / 90 min, or Endless | |
| Volume | 1–10 | Independent of alarm volume |
| Fade out | On / Off | Fades audio over the final minutes |
| Auto-dim | On / Off | Dims the screen while running |
| Start | Also A from anywhere in this menu |
Rows change with left/right, or click to cycle forward.
All of them run at a deliberately slow ~10 frames per second. Anything faster reads as busy rather than calm, which defeats the purpose.
With Reactive on, the animation is driven by the sound:
| Animation | Sustained level | Sudden sound |
|---|---|---|
| Fire | Ember temperature and flame height | Seeds a bright spark — a crackle you can see |
| Rain | Drop count and fall speed | A splash |
| Blobs | Morph speed and brightness | A surge |
| Life | Birth rate | Injects a glider |
| Waves | Wave amplitude | A new wavefront |
Reactive is optional and off by default; every animation is designed to look right without it.
When the timer expires the audio stops and the screen goes nearly dark. Any key brings it back. With Auto-dim on, the light sensor is tracked so the screen calms down as the room does.
Main menu → Games. Eight games, playable any time, plus Game Settings at the bottom for the alarm game type and difficulty.
| Game | Goal | Lose by |
|---|---|---|
| Ping Pong | Reach the rally target (7 / 12 / 20 by difficulty) | Running out of lives (5 / 3 / 1) |
| Maze | Reach the goal before time runs out (90 / 60 / 30 s) | Timeout |
| Fly Bird | Pass 5 / 10 / 15 pipe pairs | Hitting a pipe or the floor |
| Space Dudes | Clear the formation (1 / 2 / 3 rows) | Losing all lives, or letting them reach you |
| Frank | Grow to length 8 / 12 / 16 | Hitting yourself or a wall |
| Bricked Out | Clear 10 / 16 / 24 bricks | Dropping the ball |
| Wild Runner | Survive 25 / 35 / 45 seconds | Hitting an obstacle |
| Meltdown | Hold the reactor in band for 30 / 60 / 90 seconds | 3 s continuously out of band, or 1.5 s pegged |
Difficulty is a single global setting and changes both the challenge and, for the survival games, the duration.
High scores are kept per game and per difficulty, so an easy-mode score never overwrites a hard-mode one.
B pauses. From the pause screen, A resumes and B quits.
Worth calling out because it works differently. A reactor gauge drifts; you push the joystick up to heat and down to cool, keeping the needle inside a moving safe band for the full countdown. The stick direction matches the needle direction on screen.
It is scored by survival time, and the clicking is a Geiger counter — short dry impulses, irregularly spaced, whose rate climbs steeply as you approach the edges of the band. The irregular spacing is deliberate: real radiation counts are random in time, and evenly spaced clicks read as a buzzer instead.
If a BME280 is fitted, the clock reads temperature, humidity and air pressure.
Pressure trend is measured over about 3 hours (logged every 10 minutes into an 18-slot history). More than 1.5 hPa of change reads as rising or falling; less reads as steady. Falling pressure generally precedes worse weather, which is the practical use.
Daily highs and lows reset at midnight.
Sensors are read once per second (light) and once every 5 seconds (temperature, humidity, pressure) in the clock's normal 1 Hz tick, never inside drawing code — so adding sensors does not slow the display down. The 5-second interval also avoids the sensor heating itself and reading high.
Settings → Brightness sets levels 1–6 manually.
Settings → AutoBright hands it to the light sensor instead. Six levels map to measured brightness thresholds (roughly: under 2, 10, 50, 150, 400 lux and above). A change has to hold for 3 seconds before it is applied, so a passing shadow or a hand over the sensor does not make the screen pulse.
Night dim: below 1 lux for 10 continuous seconds, the screen drops below the manual minimum. A clock bright enough to read in daylight is far too bright in a dark bedroom.
While auto-brightness is on, the Brightness row reads AUTO.
Settings → Saver sets the idle interval (off, 1, 5, or 10 minutes); SaveMode picks the method.
| Method | What it does |
|---|---|
| Checker | Cycles plain → checkerboard → opposite checkerboard |
| Distribute | Shifts which pixels carry the image |
| Jump | Moves the clock between three horizontal positions |
| Thermal | Replaces the face with the animated thermal field and a small clock |
OLED pixels age with use, so a clock face left in one position for years leaves a permanent ghost. All four methods address that; they differ in how noticeable they are.
Checker replaced a plain whole-frame invert. Inversion lit nearly every background pixel at once, which was both a hard brightness step and the worst case for the row-uniformity effect described below. Checker instead knocks the text out of a 50% checkerboard, and runs the two complementary halves on successive steps. Over a full plain/A/B cycle every pixel on the panel spends one step in three lit — more even than inversion's one in two, at roughly half the instantaneous load. The text keeps a one-pixel dark outline so it reads as a hole in the pattern rather than part of it.
This panel lights one row at a time, and all the lit pixels in a row share a supply rail that sags under load. A row with many lit pixels is therefore dimmer than a sparse one. On an inverted screen the blank areas are fully lit and the text rows are not, which shows up as horizontal banding.
The firmware corrects this by giving each row its own grayscale level, so sparser rows are driven down to match the densest one. That needs one number calibrated for your panel.
Settings → Display Test shows four solid blocks, each lighting a different number of pixels per row. They are left-aligned, so all four overlap in a column down the left edge — compare them there.
| Key | Action |
|---|---|
| Left / Right | Adjust D — the correction strength |
| Up / Down | Overall brightness |
| Click | Change the panel refresh rate (affects flicker, not banding) |
| A | Save |
| C | Compensation on/off |
| D | Invert (test pattern only) |
| B | Exit |
Press C to turn compensation off and confirm the blocks look unequal — that is the uncorrected panel, and it shows you roughly how many times dimmer the solid block is. Turn it back on, raise D until all four look equally bright, and press A. On the prototype panel the answer is D = 1.
Only 16 brightness levels exist, so the correction lands on whole steps and a few percent of mismatch remains. Aim for "nothing stands out", not a perfect match.
Because correction works by dimming down to the worst row, a fully inverted screen ends up noticeably dimmer than a normal one. That is unavoidable — there is no headroom to raise the dense row into.
Full technical detail is in docs/display-and-scheduling.md.
Theme switches between two font sets: A is BoldPixels, B is Gumball. Time switches 12/24 hour. Secs, Date, Env, Battery and Callout each toggle an element of the clock face.
Settings → Master Vol (0–10) is the ceiling for everything. Settings → Sound FX toggles button clicks and menu tones.
These are separate on purpose: Sound FX off does not silence alarms. A clock that can be accidentally muted is not an alarm clock.
Adjusting master volume plays a sample click at exactly the level an alarm would use, so you can set it by ear rather than by number.
WAV only: PCM, 16-bit, mono, 44100 Hz. Convert with:
ffmpeg -i input.wav -ar 44100 -ac 1 -acodec pcm_s16le output.wav
Files live in folders on the card. The browser shows folders first, then files.
A folder called Built-in always appears at the top of the browser, whether or not a card is present. It contains four synthesised tones — Chime, Pulse, Climb, Siren — and they work on a clock that has never had a card in it.
They behave like any other sound: selectable for alarms, the pre-alarm, and Ambient.
Each melody ends with a deliberate pause. That gap is what makes a repeating melody read as an alert rather than a continuous drone.
Main menu → SD Card opens the card for listening rather than for picking. Folders first, then files. Moving the highlight previews the file under it; C stops the current file or replays it; B steps back out. Nothing you do here is assigned to an alarm — it is the same browser the sound pickers use, opened in listen-only mode, so you can audition what is on the card without editing anything. Playback uses the master volume.
Main menu → SD Portal turns on a temporary WiFi hotspot for copying files.
CinderClock, password 12345678.http://192.168.4.1 in a browser.This manual is on the clock itself. With the portal on, open http://192.168.4.1/manual — or click MANUAL at the bottom of the portal page. It is stored in the firmware, so it works with no card, no internet, and no app.
The portal turns itself off after 5 minutes of not being on the portal screen. It is a transfer tool, not a service — leaving a hotspot running costs power and is one more thing to secure. Uploads in progress are not interrupted by the timeout.
If an upload dies halfway (browser closed, card pulled), the clock notices after 5 seconds and cleans up on its own rather than staying stuck.
You can also just take the card out and copy files to it directly.
CinderClock updates over WiFi. There is no USB port on the outside of the case, and that is deliberate — the update path is designed so the enclosure never has to be opened.
The clock is offline by default. It does not phone home, does not check for updates on its own, and has no internet connection unless you give it one. New releases are announced by email; updating is something you decide to do, not something that happens to you at 3am.
This is the normal path. It needs no internet connection on the clock.
.pcu firmware file from endothermalsystems.com on your phone.CinderClock WiFi network and open 192.168.4.1..pcu file, press INSTALL.Firmware files end in .pcu. They are not .wav files and do not go in the sound folders. If you hand the clock the wrong file it refuses it immediately rather than half-installing it — the file is checked before anything is written.
Optional, and only worth setting up if you would rather not move files around by hand. Enter your home network name and password in the portal's ONLINE UPDATE box, then press CHECK NOW (or use Settings > Update > Online on the clock).
Two things to know. Your WiFi password is stored unencrypted on the device, so anyone who can physically open the clock can read it; there is a Forget button for when you are done. And the clock's radio cannot serve its own network and join yours at the same time, so the moment a check starts, the portal page disconnects. That is expected — the clock's own display takes over as the status readout.
It is designed to be survivable, because a clock in a sealed case cannot be recovered with a cable.
If an update fails, the message on the screen says why. Press B to dismiss it. Your alarms, settings, history and saved timers are not touched by an update.
Updates cannot start while an alarm is ringing — dismiss it first. An update does not erase your SD card, and it does not reset your settings.
Two separate things that both make the clock feel mechanical. The chime is always-on and lives in Settings; the ticking is a session you start from Ambient.
Settings > Chime. A bell strike on the turn of the hour, like a clock tower.
There is one setting with five values, not a pile of overlapping switches:
| Mode | When it strikes |
|---|---|
| Off | never |
| Every hour | every hour, all night included |
| Daytime | only between the From and To hours you set |
| Sun Follow | only between sunrise and sunset, from your location |
| Custom | only the hours you tick in Choose Hours |
It ships on Daytime, 08:00 to 22:00, because a clock that strikes twelve times at midnight the day you unbox it is not a charming clock.
Both ends of the window are included, so To: 22 does strike at 22:00. The window is also allowed to run backwards: From: 22 / To: 06 means chimes overnight only, which is a perfectly reasonable thing to want.
Sun Follow uses the sunrise and sunset it already calculates from your coordinates. If you have never set a location — or you live somewhere the sun does not set that week — it quietly falls back to the From/To window and the menu shows Window: no location so you are not left guessing.
Strike: Count rings the hour the way a tower does: three at three o'clock, three again at 15:00. That means noon and midnight ring twelve times and take about eighteen seconds. That is correct, not a bug. If you would rather have a marker than a performance, set Strike: Single.
Press A to stop a chime at any point. You will not have to sit through all twelve.
The chime always gives way. It will not start, and it stops immediately, if an alarm or pre-alarm is ringing, if you are snoozed, if you are in a wake-up game, or if a firmware update is running. A skipped hour is skipped — it is never replayed late.
Test plays one strike so you can set the volume without waiting for the hour.
Ambient > Sound > Pendulum. A tick and a tock on alternate seconds, like a grandfather clock.
Set it with LEFT or RIGHT on the Sound row. It uses a built-in sound, so unlike every other ambient sound it needs no SD card. It is locked to the same second the clock displays, so it will never drift out of step no matter how long you leave it running.
Two animations are built for it, on the Animation row. Both show the time large and centred, the same size as the standby face — these are clock faces first and effects second.
Either can be paired with any other sound if you like the look.
Ticking is a session like any other ambient session: it runs for the duration you set, then dims and stops. Set Time: Endless if you want it to keep going.
Push the joystick up from standby. Four items, chosen with left/right, opened with C or click:
| Item | Goes to |
|---|---|
| New Alarm | The alarm type picker |
| Timer | The running Pomodoro or timer if one exists, otherwise the timer editor |
| Stopwatch | The stopwatch |
| Environment | The sensor detail screen |
B or down returns to standby.
These four are the things you reach for without wanting to navigate a menu. B from an item opened here returns here, not to the main menu, so the shortcut stays a shortcut.
Main menu → Settings. Twenty items.
| # | Item | Values | Purpose |
|---|---|---|---|
| 1 | Sound FX | ON / OFF | Button and menu tones. Does not affect alarms. |
| 2 | Master Vol | 0–10 | Ceiling for all audio; previews on change |
| 3 | Pre-Alarm | submenu | Enable, minutes before, sound, volume |
| 4 | Snooze Opts | submenu | Enable, mode, minutes |
| 5 | Set Time | editor | Manual clock set |
| 6 | Set Date | editor | Manual date set |
| 7 | Face | Center / Left | Home clock face |
| 8 | Secs | ON / OFF | Seconds on the face |
| 9 | Date | ON / OFF | Date on the face |
| 10 | Theme | A / B | Font set — A: BoldPixels, B: Gumball |
| 11 | Time | 12H / 24H | Time format |
| 12 | Saver | OFF / 1m / 5m / 10m | Screensaver idle delay |
| 13 | SaveMode | Checker / Distribute / Jump / Thermal | Screensaver method |
| 14 | Brightness | 1–6 (or AUTO) | Manual brightness |
| 15 | AutoBright | ON / OFF | Light-sensor brightness + night dim |
| 16 | Env | ON / OFF | Temperature and humidity on the face |
| 17 | Battery | ON / OFF | Battery indicator |
| 18 | Callout | ON / OFF | Joystick hint row on the face |
| 19 | Display Test | screen | Row-uniformity calibration (§19) |
| 20 | About | screen | Version, brand info and font credits |
Main menu → How to use is a short manual on the clock's own screen — 17 sections covering every feature, five lines at a time, scrolled with up/down. It teaches; it does not go into the depth this document does. Sections: Buttons, Clock Face, Alarms, Repeat Cycles, Snooze, Wake Games, Sun Follow, Calendar, Timer, Pomodoro, Stopwatch, Ambient, Games, Sensors, Screen, Sound & SD, History.
The full manual — this document — is also in the firmware. Turn on the SD Portal and open http://192.168.4.1/manual. No card and no internet required.
Kept across power loss (in the processor's internal storage, not the card):
Kept by the clock chip's battery: the time and date.
Kept on the card: your sound files. Nothing else. The card is not required to boot, keep time, or ring an alarm.
Not kept: stopwatch laps and a running timer or Pomodoro do not survive a power cut, since a countdown that resumes hours later is not useful.
An alarm did not ring. Check History — it distinguishes MISSED (it rang and you ignored it for 5 minutes) from failures. Then check the alarm is toggled on, and that its Next ring line says what you expect.
An alarm rang on the wrong day. Open it and read the Next ring line and the Calendar. The most common cause is a Repeating alarm in Cycle: Weeks with the wrong days ticked, or Cycle: Days with a Starts date that is not what you assumed.
No sound, or a siren instead of my file. The card is missing or unreadable, the file is not where the alarm expects, or it is not the right WAV format (PCM, 16-bit, mono, 44100 Hz). The siren is the deliberate fallback. Built-in sounds always work.
Buttons feel slow on the clock face. That is sleep. Press any button first, then use the joystick (§5).
Horizontal banding, especially on a dense screen. Run Display Test (§19). If it bothers you regardless, switch SaveMode from Checker to Jump or Thermal.
Screen too bright at night. Turn on AutoBright, which includes night dimming below the manual minimum.
Cannot find the WiFi hotspot. It shuts off 5 minutes after you leave the SD Portal screen. Go back and turn it on again.
A menu jumped back to the clock. The 2-minute idle timeout. Screens that are actively doing something are exempt.
Time is wrong after unplugging. The clock chip's coin cell is dead or missing. Replace it and set the time again.
192.168.4.1/manual, published here for reading before you own one.