PHYSICAL UI

A screen and four buttons.

A ground node drives a 128 by 64 OLED and four tactile buttons when they are wired. A bench engineer is fine with SSH. A field pilot is not. This is the field-ready surface.
The link status page on the touch panel the buttons drive
4
Tactile buttons
8
Short and long actions
2s
Long-press threshold

OLED STATUS

One status page. Repainted every 0.7 seconds.

The OLED shows the node name, its LAN address, the radio link with RSSI, and one status line: a pairing countdown, the mesh role, uplink up, or ready. It runs on a 0.96 inch SSD1306 or a 1.3 inch SH1106 over I2C, beside any touch panel or HDMI screen.

OLED status page
┌──────────────────────┐
│ ados-gs-a4b2         │
│ 192.168.1.42         │
│ link up -52dBm       │
│ role: receiver       │
└──────────────────────┘
Line four shows the most urgent state: an open pairing window first, then the mesh role, then uplink reachability.
OLED hardware
Panel
SSD1306 / SH1106
Interface
I2C
Address
0x3C, 0x3D
Resolution
128 x 64 or 128 x 32
Buttons
4 tactile
Button GPIO
5, 6, 13, 19

BUTTONS

Four buttons. Two layers.

A short press navigates. A press held for two seconds fires the long action when you let go. Hold past six seconds and the press is dropped, so a change of mind costs nothing. The mapping below is the default and can be changed in the agent config.

B1 GPIO 5

Short press

Next tab on the touch panel, wrapping round the bottom bar.

Long press

Toggle the panel backlight.

B2 GPIO 6

Short press

Open the uplink page: cloud link, LTE signal, or the wired path.

Long press

Open the pair-drone page.

B3 GPIO 13

Short press

Confirm the open screen's primary action.

Long press

Open the pair-drone page.

B4 GPIO 19

Short press

Back. Closes the open detail page.

Long press

Open the More menu.

NAVIGATION

Flat on purpose.

The buttons drive the same pages a finger does on the touch panel: five tabs along the bottom, a detail page behind each dashboard tile, and a short More menu. Anything that restarts or unpairs takes two taps.

Panel pages
Tabs (B1 steps through)
 ├─ Dashboard
 │   ├─ Radio link → TX power
 │   ├─ Drone → detail
 │   ├─ Mesh → role picker
 │   └─ Uplink → detail
 ├─ Video
 ├─ Settings
 ├─ Link stats
 └─ Channel hops

More (B4 long press)
 ├─ Pair drone
 ├─ Diagnostics
 ├─ Restart agent (2 taps)
 └─ About

MESH PAIRING

A countdown you can read across the field.

When a receiver opens its accept window, the OLED status line turns into a countdown. The window lasts 60 seconds by default and can be set from 5 to 300. The invite is sealed to the relay's X25519 key with ChaCha20-Poly1305 and expires 120 seconds after it is issued.

Receiver OLED
┌──────────────────────┐
│ ados-gs-a4b2         │
│ 192.168.1.42         │
│ link up -52dBm       │
│ PAIRING 42s          │
└──────────────────────┘
The receiver's status line counts the accept window down.
Relay joins a receiver
receiver opens window60s default, 5 to 300s
relay requests to join
receiver approves
sealed inviteX25519, ChaCha20-Poly1305, 120s life
relay on the mesh
Open, request, approve. The sealed invite carries the mesh credentials to the relay.

Open the window, request the join and approve it from the Mesh tab in Mission Control or the node's local API. The OLED keeps everyone at the receiver informed while the window is open.

Distributed receive

GRACEFUL DEGRADATION

Missing hardware is not an error.

The OLED service probes 0x3C and 0x3D and exits cleanly when nothing answers. A board without a GPIO chip skips the button reader. Every setting stays reachable from the setup webapp and Mission Control.

  • Full front panel

    OLED status, Button navigation, Webapp and Mission Control

  • No OLED

    Button navigation, Webapp and Mission Control

    No oled status

  • No buttons

    OLED status, Webapp and Mission Control

    No button navigation

  • No touch panel

    OLED status, Button navigation (No pages to drive), Webapp and Mission Control

A screen and four buttons. Enough for the field.

Wiring, the button mapping, and the panel pages are covered in the public docs.

Physical UI docs
Get Early Access