Docs menu

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

KeyMeaning
nameProfile name, reported in hello and selected in /etc/slowd/slowd.toml (profile = "…")
backendPanel driver in sb-hw (epd10in85g, sim)
wifi_setupWhether slowd watches wlan0 and starts slownet. slowd.toml may only disable it
glass_reportFrame reporting: full (upload the whole frame), hash or none
store_kbSpace for card pictures that slowd reports to the hub
blob_formatsCard picture formats slowd accepts: png, packed2
featuresWhich sb-core modules slowd runs: compose, policy, deck
stripsThe strip glyph atlas version (atlas-1)
wakealways_on for a mains-powered screen

[display]

KeyMeaning
w, hPanel size in pixels
bppBits per pixel in the packed frame
inksInk set: k4 is black, white, yellow, red as codes 0–3; g16 is 16-level grey
align_xHorizontal window alignment. On the 1085, windows start at x % 4 == 0 and end at x % 4 == 3
windowsHow partial windows map onto controllers: per_ic_box (a row- and column-limited box per controller) or per_ic_columns (column bands)
controllersThe column range each controller IC drives

[refresh]

KeyMeaning
cooldown_floor_sMinimum seconds between refreshes of any pixel area
max_gap_hLongest allowed gap without a refresh (triggers a heal)
busy_timeout_sHow long to wait for the panel’s BUSY line before giving up and sleeping it
daily_ceilingMaximum refreshes per day, globally and per slowapp (per_app on the wire)
modesWaveforms and their measured durations: normal (full quality) and fast (used for presses)

[keys]

KeyMeaning
namesKey names, left to right
linesGPIO line per key; empty means keys are injected over the ctl socket
active_lowLine polarity
debounce_msKernel debounce
hold_msA press held this long is a hold; shorter is a tap on release
poll_msPoll interval if edge events aren’t available

[bus]

KeyMeaning
spidevSPI device
spi_hzSPI clock
chunkSPI transfer chunk size in bytes
gpiochipGPIO chip for the control lines
pinsControl 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.

Updates, now and then

A short note when there is a new board, a new slowapp, or kit news. Rarely more than one a month.