Reference
Supported screens and profiles
The screens Slowboard runs on today and those planned, and every field of the profile that describes a screen to slowd.
Supported today
- Slowboard 1085, profile
lyra-10in85g. slowd and slowhub both run on the board. - Simulator, profile
sim. slowd with no panel attached, for development and CI.
Planned
- E-readers and notebooks, such as the reMarkable 2 and the Supernote. They can’t run containers, so a hub elsewhere on your network runs the apps, and slowd on the reader places the cards and shows them as its sleep or lock-screen image.
- Small microcontroller screens (ESP32-S3).
- Desktop wallpaper: a hub draws the deck as a desktop background image.
TODO(owner): confirm which planned screens to name publicly, and whether desktop wallpaper is still planned (it isn’t in the current design document).
Slowboard 1085
A Luckfox Lyra Zero W (Rockchip RK3506B, 3 × Cortex-A7, 476 MB RAM, Armbian trixie) and a Waveshare 10.85” e-Paper HAT+ (G), 1360 × 480 in four inks, with four keys: ▲ red, ◆ yellow, ■ black, ● white. The keys are gpiochip0 lines 13, 16, 17 and 18 (header pins 16, 35, 38 and 40), wired to 3.3 V and active high.
The panel has two controller chips: one drives x 0–679 and the other x 680–1359. A normal refresh takes 39 s and a fast one 12.1 s, for the full screen or any window. A partial refresh takes as long as a full one with the same mode, because the panel scans every row; what it gains is that the rest of the screen doesn’t flash. Windows can be any rectangle per controller, and a 36-pixel strip flashes only the strip.
The default layout is three slots side by side, at x 0–451, 452–907 and 908–1359. Any layout of slots that covers the width works (Layout and preferences).
slowd reaches the hub over unix:/run/slowhub/device.sock. Card pictures are kept in 16 MB of memory plus a stored copy on the SD card. The board has no real-time clock; it takes its time from NTP. To build one, follow Set up a Slowboard 1085.
Simulator
The sim profile runs the real panel driver against a recording bus and decodes the frame, with no hardware. It has the same size and limits as the 1085. Key presses come from the command line (slowd key red tap), and a virtual clock ([sim] time_scale, 0 = instant) lets a day run in seconds. Run it with slowd --profile sim.
Profiles
Everything slowd needs to know about a screen’s hardware lives in its profile: a TOML file compiled into slowd from crates/sb-hw/profiles/*.toml. The profile names the panel driver, the screen’s size and inks, the refresh modes and limits, the keys and the bus pins. slowd reports it to the hub when it connects, so apps always draw for the screen’s real size and limits.
The Slowboard 1085 profile, lyra-10in85g.toml:
name = "lyra-10in85g"
backend = "epd10in85g"
wifi_setup = true
glass_report = "full"
store_kb = 16384
blob_formats = ["png", "packed2"]
features = ["compose", "policy", "deck"]
strips = "atlas-1"
wake = "always_on"
[display]
w = 1360
h = 480
bpp = 2
inks = "k4" # codes 0..3 = black, white, yellow, red
align_x = 4
windows = "per_ic_box"
controllers = [{ x0 = 0, x1 = 679 }, { x0 = 680, x1 = 1359 }]
[refresh]
cooldown_floor_s = 180
max_gap_h = 24
busy_timeout_s = 150
daily_ceiling = { global = 120, per_app = 48 }
modes = { normal = { s = 39.0 }, fast = { s = 12.1 } }
[keys]
names = ["red", "yellow", "black", "white"]
lines = [13, 16, 17, 18] # gpiochip0, active high
active_low = false
debounce_ms = 20
hold_ms = 500
poll_ms = 10
[bus]
spidev = "/dev/spidev0.0"
spi_hz = 4000000
chunk = 4096
gpiochip = "/dev/gpiochip0"
pins = { rst = 3, pwr = 14, busy = 12, dc = 11, cs_m = 10, cs_s = 9 }
The refresh timings are measured on the hardware, not taken from the datasheet. The two chip selects are plain GPIO lines, because both controllers must be selected together.
Top level
| Key | Meaning |
|---|---|
name | Profile name, reported in hello and selected in /etc/slowd/slowd.toml (profile = "…") |
backend | Panel driver in sb-hw (epd10in85g, sim) |
wifi_setup | Whether slowd watches wlan0 and starts slownet. slowd.toml may only disable it |
glass_report | Frame reporting: full (upload the whole frame), hash or none |
store_kb | Space for card pictures that slowd reports to the hub |
blob_formats | Card picture formats slowd accepts: png, packed2 |
features | Which sb-core modules slowd runs: compose, policy, deck |
strips | The strip glyph atlas version (atlas-1) |
wake | always_on for a mains-powered screen |
[display]
| Key | Meaning |
|---|---|
w, h | Panel size in pixels |
bpp | Bits per pixel in the packed frame |
inks | Ink set: k4 is black, white, yellow, red as codes 0–3; g16 is 16-level grey |
align_x | Horizontal window alignment. On the 1085, windows start at x % 4 == 0 and end at x % 4 == 3 |
windows | How partial windows map onto controllers: per_ic_box (a row- and column-limited box per controller) or per_ic_columns (column bands) |
controllers | The column range each controller IC drives |
[refresh]
| Key | Meaning |
|---|---|
cooldown_floor_s | Minimum seconds between refreshes of any pixel area |
max_gap_h | Longest allowed gap without a refresh (triggers a heal) |
busy_timeout_s | How long to wait for the panel’s BUSY line before giving up and sleeping it |
daily_ceiling | Maximum refreshes per day, globally and per slowapp (per_app on the wire) |
modes | Waveforms and their measured durations: normal (full quality) and fast (used for presses) |
[keys]
| Key | Meaning |
|---|---|
names | Key names, left to right |
lines | GPIO line per key; empty means keys are injected over the ctl socket |
active_low | Line polarity |
debounce_ms | Kernel debounce |
hold_ms | A press held this long is a hold; shorter is a tap on release |
poll_ms | Poll interval if edge events aren’t available |
[bus]
| Key | Meaning |
|---|---|
spidev | SPI device |
spi_hz | SPI clock |
chunk | SPI transfer chunk size in bytes |
gpiochip | GPIO chip for the control lines |
pins | Control lines: reset, panel power, busy, data/command, and one chip select per controller |
A screen with a profile still needs a passed bring-up before it is supported. Port Slowboard to new hardware has the checklist and how to submit it.