Skip to content

STEMMA

Lists detected STEMMA QT / QWIIC devices on the I2C bus. Shows device addresses, bus assignments, and presence status with periodic re-scanning.

Quick Start

cyberhudctl display set 0 stemma

How It Works

The stemma mode renders a list of I2C devices detected on configured STEMMA QT / QWIIC buses, showing each device as a row with a presence icon (green check for present, red error for absent), bus name, hexadecimal address, and a human-readable device name from a built-in lookup table of common Adafruit and SparkFun peripherals. The rows are arranged vertically in list order, with the number of visible rows adapting to the panel's available height.

The display updates on a fixed interval driven by the background scanner goroutine, which rescans all configured I2C buses periodically (interval set at daemon startup via scanner configuration). Each scan queries every known address on each bus and updates the presence flag for each device. A change in any device's presence state triggers a cache-key change, causing the display to redraw.

The data source is the Linux I2C subsystem accessed via direct bus reads on the configured bus paths. When no I2C devices are detected, the mode displays a placeholder message. When the scanner is nil (no I2C hardware available or not yet initialized), the mode gracefully returns a valid view with zero data items. Unrecognized device addresses are labeled "unknown" in the device name column.

The style option controls the visual presentation:

  • list (default) — displays each detected device as a separate row with a presence icon, bus assignment, hex address, and device name. Rows are color-coded green (present) or red (absent). The number of visible rows adapts to the panel's available vertical space.
  • compact — shows a single summary line with the count of present devices out of total detected (e.g., "3/5 present"). Useful for narrow panels or when a quick glance is all you need.

Tip

Use this mode to verify hardware connections before switching to a mode that depends on a specific I2C peripheral.

Options

Key Type Description Default Allowed Values
style string Visual layout or explicit profile name list list, compact, and the registered profile matrix

Configure options via the CLI:

cyberhudctl display stemma style=<value>

Style Variants

  • list — displays each detected device as a separate row with a presence icon, bus assignment, hex address, and device name. Rows are color-coded green (present) or red (absent). The number of visible rows adapts to the panel's available vertical space.
  • compact — shows a single summary line with the count of present devices out of total detected (e.g. 3/5 present). Useful for narrow panels or when a quick glance is all you need.
  • profile variants — the registry also exposes explicit panel profiles across mono, grayscale, and color families so the mode resolves like the other display modes instead of relying on one generic layout.

CLI Examples

Activate the stemma mode on the main region:

cyberhudctl display set 0 stemma

Query the current stemma settings:

cyberhudctl display stemma

Switch to compact summary layout:

cyberhudctl display stemma style=compact

Switch back to the full device list:

cyberhudctl display stemma style=list

Panel Compatibility

The stemma mode is non-interactive and works on all panels. It does not require input controls — no buttons or joystick pins are needed. On monochrome panels, device labels and sensor values render in the native foreground color without color differentiation. The mode adapts its layout density based on panel dimensions to show as many detected I2C devices as will fit.

Capability Description Behavior
MonoFast Fast-refresh monochrome OLED (128×32, 128×64, 128×128) Fully supported — I2C device list with addresses and values in white text
MonoSlow Slow-refresh monochrome e-ink (122×250, 176×264, 200×200, 296×128, 400×300, 480×800, 800×480) Fully supported — static device list, refreshes on scan interval
GrayscaleFast Fast-refresh grayscale (160×80, 240×135, 240×240, 320×240, 480×320, 800×480) Fully supported — grayscale text rendering of device data
GrayscaleSlow Slow-refresh grayscale e-ink (122×250, 176×264, 200×200, 400×300, 800×480) Fully supported — static grayscale device list, refreshes on scan interval
ColorFast Fast-refresh color TFT (128×128, 160×80, 240×135, 240×240, 320×240, 480×320, 800×480) Fully supported — color-coded device status with periodic scan updates
ColorSlow Slow-refresh color e-ink (122×250, 176×264, 200×200, 400×300, 800×480) Fully supported — static color device list, refreshes on scan interval

On panels with buttons, the primary button navigates back to the dashboard.

Snapshots

Color

color-slow-32x128 32x128
32x128
color-slow-64x128 64x128
64x128
color-slow-80x160 80x160
80x160
color-80x160 80x160
80x160
color-slow-104x212 104x212
104x212
color-slow-122x250 122x250
122x250
color-slow-128x32 128x32
128x32
color-slow-128x64 128x64
128x64
color-128x128 128x128
128x128
color-slow-128x128 128x128
128x128
color-slow-128x160 128x160
128x160
color-128x160 128x160
128x160
color-slow-128x296 128x296
128x296
color-slow-135x240 135x240
135x240
color-slow-160x80 160x80
160x80
color-160x80 160x80
160x80
color-slow-160x128 160x128
160x128
color-160x128 160x128
160x128
color-slow-176x264 176x264
176x264
color-slow-200x200 200x200
200x200
color-slow-212x104 212x104
212x104
color-slow-240x135 240x135
240x135
color-slow-240x240 240x240
240x240
color-slow-240x320 240x320
240x320
color-slow-250x122 250x122
250x122
color-slow-264x176 264x176
264x176
color-slow-296x128 296x128
296x128
color-slow-300x400 300x400
300x400
color-slow-320x240 320x240
320x240
color-slow-320x480 320x480
320x480
color-slow-400x300 400x300
400x300
color-slow-480x320 480x320
480x320
color-slow-480x800 480x800
480x800
color-slow-800x480 800x480
800x480

Grayscale

grayscale-slow-32x128 32x128
32x128
grayscale-slow-64x128 64x128
64x128
grayscale-fast-80x160 80x160
80x160
grayscale-slow-80x160 80x160
80x160
grayscale-slow-104x212 104x212
104x212
grayscale-slow-122x250 122x250
122x250
grayscale-slow-128x32 128x32
128x32
grayscale-slow-128x64 128x64
128x64
grayscale-slow-128x128 128x128
128x128
grayscale-fast-128x128 128x128
128x128
grayscale-slow-128x160 128x160
128x160
grayscale-fast-128x160 128x160
128x160
grayscale-slow-128x296 128x296
128x296
grayscale-slow-135x240 135x240
135x240
grayscale-fast-135x240 135x240
135x240
grayscale-slow-160x80 160x80
160x80
grayscale-fast-160x80 160x80
160x80
grayscale-fast-160x128 160x128
160x128
grayscale-slow-160x128 160x128
160x128
grayscale-slow-176x264 176x264
176x264
grayscale-slow-200x200 200x200
200x200
grayscale-slow-212x104 212x104
212x104
grayscale-fast-240x135 240x135
240x135
grayscale-slow-240x135 240x135
240x135
grayscale-fast-240x240 240x240
240x240
grayscale-slow-240x240 240x240
240x240
grayscale-fast-240x320 240x320
240x320
grayscale-slow-240x320 240x320
240x320
grayscale-slow-250x122 250x122
250x122
grayscale-slow-264x176 264x176
264x176
grayscale-slow-296x128 296x128
296x128
grayscale-slow-300x400 300x400
300x400
grayscale-slow-320x240 320x240
320x240
grayscale-fast-320x240 320x240
320x240
grayscale-slow-320x480 320x480
320x480
grayscale-fast-320x480 320x480
320x480
grayscale-slow-400x300 400x300
400x300
grayscale-fast-480x320 480x320
480x320
grayscale-slow-480x320 480x320
480x320
grayscale-slow-480x800 480x800
480x800
grayscale-fast-480x800 480x800
480x800
grayscale-fast-800x480 800x480
800x480
grayscale-slow-800x480 800x480
800x480

Mono

mono-32x128 32x128
32x128
mono-slow-32x128 32x128
32x128
mono-64x128 64x128
64x128
mono-slow-64x128 64x128
64x128
mono-slow-80x160 80x160
80x160
mono-128x32 128x32
128x32
mono-slow-128x32 128x32
128x32
mono-128x64 128x64
128x64
mono-slow-128x64 128x64
128x64
mono-slow-128x128 128x128
128x128
mono-128x128 128x128
128x128
mono-slow-128x160 128x160
128x160
mono-slow-135x240 135x240
135x240
mono-slow-160x80 160x80
160x80
mono-slow-160x128 160x128
160x128
mono-slow-240x135 240x135
240x135
mono-slow-240x240 240x240
240x240
mono-slow-240x320 240x320
240x320
mono-slow-320x240 320x240
320x240
mono-slow-320x480 320x480
320x480
mono-slow-480x320 480x320
480x320
mono-slow-800x480 800x480
800x480