Controls and Screens
Safi is controlled with two physical inputs, a rotary encoder and a touch pad, plus NFC cards. This page covers the physical controls and every screen the display shows.
The touch pad
- Tap: play or pause.
- Long press: stop playback.
Tap is the control you reach for most, so it stays predictable; a long press is the deliberate way to stop entirely.
The rotary encoder
The encoder has two modes. Normally it is a volume knob; press it and it becomes a library browser.
Volume mode (default)
| Action | Effect |
|---|---|
| Rotate right | Volume up |
| Rotate left | Volume down |
| Short press | Enter browse mode |
| Long press | Stop playback |
Turning the knob pops up a volume overlay with the current level; it fades after two seconds. Volume follows a logarithmic curve, so each step feels evenly spaced to the ear rather than jumping at the top and crawling at the bottom (the reasoning is in the audio internals).
Browse mode
| Action | Effect |
|---|---|
| Rotate | Move through reciters, then surahs |
| Short press | Descend into the selection, or play the selected surah |
| Long press | Back out, and exit browse mode from the top level |
Browse mode reads the library that was scanned from the SD card. Surah names are shown in Arabic script with the surah number.
NFC cards
Tap a registered card against the reader area and its assigned playback starts immediately: a specific surah, a reciter (continues from the first surah), or a radio station. What happens when you lift the card off is configurable (keep playing, pause, or stop), see NFC cards.
The screens
The 1.8 inch display is output only. Screens switch automatically based on what the device is doing:
| Screen | When | What it shows |
|---|---|---|
| Splash | Boot | The Safi mark, firmware version, and the boot report (any peripheral that failed to start, in red) |
| Idle clock | Nothing playing | Time, date, battery, and the device IP address once WiFi connects. The clock shows --:-- until the first time sync. The digits use a dedicated 40 px gold font, and the date beneath is the Hijri date |
| Now playing | During playback | Surah name in Arabic, reciter, elapsed time and progress bar, play state, plus the stream title for radio |
| Browse | Encoder browse mode | Reciter and surah lists |
| Volume overlay | While turning the knob | Large volume indicator, auto-dismisses |
| NFC toast | Card tapped | Card name confirmation, auto-dismisses |
| WiFi status | Connection changes | Connected with IP, or disconnected. The screen returns to the idle clock on its own after 10 seconds, and a press-and-hold on the encoder button (about 1.5 s) reveals the API token for 5 seconds |
| OTA progress | Firmware update | Progress bar and a warning not to power off |
| Error | Faults | A short description, for example battery empty before shutdown |
A status bar at the top persists across most screens: WiFi state, battery level with a charging indicator, and volume.
The idle clock
The date under the clock is the Hijri date computed from the official Umm al-Qura (Saudi) calendar, so it matches the Saudi civil calendar rather than an approximation. The calendar table covers AH 1318 to AH 1500 (civil 1900 to 2077); outside that range the date holds at the nearest table edge.
Backlight behavior
To save power, the backlight dims after 30 seconds without interaction and turns off after 5 minutes. Any input wakes it: turning or pressing the encoder, tapping the touch pad, or tapping an NFC card. Playback continues regardless of backlight state.
What the device cannot do from its own controls
Deliberately, some things are dashboard-only: registering NFC cards, editing radio stations, managing schedules and favorites, changing settings, and firmware updates. The device controls cover listening; management happens in the web dashboard.