Skip to content

Primary Display

Spec hygiene (canonical-spec.md rule 1). This document does not restate canonical values (resolution, framebuffer dims, cell size, color palette). Those live in the Canonical Hardware Specification. Any value inline is a bug — fix it.


The Elecrow 7” IPS is the primary visible surface — a 1024×600 RGB565 framebuffer the operator looks at, rendered by the KN-86 native renderer per ADR-0036. Cell density is per-region via integer-scaled 8×8 glyphs: 128×75 is the 1× cell ceiling (8 px per cell on a 1024×600 panel — 1024 = 128×8, 600 = 75×8), with 2×, 3×, and larger scales available for headlines and dense overlays. The 128×150 half-block pseudo-pixel canvas (sub-cell vertical resolution via U+2580 / U+2584) is preserved from ADR-0027. The default phosphor is AMBER #E6A020 on black, with WHITE #F0F0F0 and GREEN #33F033 selectable via the SYS-tab aesthetic-mode picker per ADR-0034.

Row layout is non-negotiable:

  • Row 0 — firmware status bar (top). nOSh-runtime-owned.
  • Rows 1–73 — cartridge content area. 73 rows of usable surface.
  • Row 74 — firmware action bar (bottom). nOSh-runtime-owned.

Cartridges never draw on Row 0 or Row 74. CIPHER glyphs never render on the primary grid (one sanctioned exception: the Null cartridge, per canonical-spec.md Spec Hygiene Rule 6 + ADR-0015 §3a). All other CIPHER content goes to the auxiliary-display.md.

For the panel model, resolution, text grid dimensions, font cell, color, and display modes, see Canonical Hardware Specification.


⚠ LEGACY (superseded twice — by ADR-0027 on 2026-06-07, then by ADR-0036 on 2026-06-13). The 960×600 logical framebuffer / 12×24 cell / 32 px letterbox / SDL composition model below is retired. Canonical geometry is now a 1024×600 RGB565 framebuffer with per-region cell density via integer-scaled 8×8 glyphs (128×75 = 1× cell ceiling: 1024 = 128×8, 600 = 75×8), rendered by the KN-86 native framebuffer renderer into an SDL3 RGB565 surface — no logical framebuffer, no Linux console PSF, no setfont, no tty1 handoff, no letterbox. (Updated 2026-07-27: the /dev/fb0 kiosk bring-up this note used to promise never shipped. The device runs the same SDL3 host as the desktop, over KMSDRM — see ADR-0036 Amendment Log 2026-07-27.) The detailed rewrite of this section is tracked in the nOSh re-flow task. Retained here as design history until that lands.

Per ADR-0014 (Accepted 2026-04-21 — superseded):

  • Logical framebuffer: 960×600 pixels. KN86_FRAMEBUFFER_WIDTH = 960; KN86_FRAMEBUFFER_HEIGHT = 600 in runtime/src/types.h.
  • Physical cell: 12×24 px on the Elecrow. KN86_CELL_WIDTH = 12; KN86_CELL_HEIGHT = 24.
  • Source font: 8×8 Press Start 2P bitmap (KN86_FONT_WIDTH = 8, KN86_FONT_HEIGHT = 8), rendered at 1× horizontal / 2× vertical scale, centered in the 12×24 cell with 2 px horizontal / 4 px vertical padding. Glyph origin: (col × 12 + 2, row × 24 + 4).
  • Composition onto the 1024×600 panel: scale = 1, 32 px horizontal letterbox per side, 0 px vertical letterbox. Integer scale throughout the pipeline. The 32 px bands read as intentional bezel.
  • BITMAP mode canvas: the full 960×600 logical framebuffer. The 32 px horizontal letterbox is invisible to cartridges.

The font asset stays at 8×8; a native 12×24 cut is queued as quality-upgrade follow-up (ADR-0014 §F1).


SignalFromToNotes
mini-HDMIPi Zero 2 W mini-HDMI portElecrow HDMI inputUse a mini-HDMI to full-HDMI adapter or short cable (BOM line 4).
PowerKN-86 main 5 V rail (Waveshare UPS Module 3S, ADR-0038)Display 5 V inputThe display runs off the device’s main 5 V / 5 A rail — the dominant load on it (~1.5–2 A typical with the panel on). See power.md.

The Pi drives HDMI from /boot/config.txt overrides (see Bring-up below). SDL3 on Linux composes the 960×600 logical framebuffer onto the 1024×600 panel surface with the 32 px letterbox baked in.


AMBER #E6A020 foreground on #000000 background by default — selectable between three phosphor schemes (AMBER / WHITE / GREEN) via the SYS-tab aesthetic-mode picker per ADR-0034 (as amended 2026-06-13 per ADR-0036). The grid is single-foreground at any given moment; inversion (fg/bg swap) provides the semantic “second color.” The font is Press Start 2P 8×8 plus a CP437 box-drawing subset for layout work. See software/api-reference/grammars/character-set.md for the full glyph set, the KN-86 Code Page (extended for ADR-0036), and the planned ~2,000-glyph Unicode subset (Layer 2).

Native framebuffer rendering means there is no 12×24 logical cell, no 8×8-with-padding step, and no letterbox — glyphs blit directly into the RGB565 surface at the per-region integer scale per ADR-0036.


The Elecrow runs off the KN-86 main 5 V rail from the Waveshare UPS Module 3S (ADR-0038) — it is the dominant load on that rail. Power topology lives in power.md. Because the display is now on the battery, backlight dim/blank during nOSh soft-idle is the highest-leverage runtime saving; it is a Pi-driven HDMI command, not a hardware switch.


The display module mounts behind a 3D-printed bezel cutout in the lid panel of the Pelican 1170 inset. Foam in the lid is cut to seat the display; the Pelican shell itself is unmodified. See enclosure.md. A clear acrylic / polycarbonate sheet sits behind the bezel as a display window.


Stage 1 in build-specification.md §4:

  1. Power the Elecrow from the KN-86 main 5 V rail (Waveshare UPS Module 3S; see power.md).
  2. Connect mini-HDMI from the Pi to the Elecrow input.
  3. Edit /boot/config.txt to force HDMI at 1024×600 native and disable HDMI compensation modes.
  4. Boot, verify SDL3 renders at 960×600 logical with 32/0 letterbox onto 1024×600 physical.
  5. Verify the 80×25 grid lays out correctly with Row 0 / Rows 1–23 / Row 24 partitioning.

The bitmap-rendering perf pass on Pi Zero 2 W (ADR-0014 §F2) measures the 960×600 render path under typical cartridge load. File a perf-optimisation task only on a real budget miss.


BOM line 2 in sourcing-guide.md. Single supplier: Elecrow direct. Locked to this specific panel — discontinuation forces a display-swap ADR and CAD respin. Buy a spare panel early; this is one of the high-risk sourcing items.

The mini-HDMI adapter / cable is BOM line 4 (Adafruit / Amazon).