Skip to content

feat(panel): a status-only screen build for a board with no touch - #131

Open
Zhongren233 wants to merge 1 commit into
TheMaxMur:mainfrom
Zhongren233:panel-status-screen
Open

Zhongren233 wants to merge 1 commit into
TheMaxMur:mainfrom
Zhongren233:panel-status-screen

Conversation

@Zhongren233

@Zhongren233 Zhongren233 commented Oct 5, 2026 •

Copy link
Copy Markdown

The panel feature drives a plain 4-wire SPI ST7789 (240x135, landscape) as a status screen: the build counter, the chip serial, whether USB is attached, and uptime — plus a PRESS THE KEY banner for as long as a user-presence wait is pending.

It is not the trusted display. Presence stays on the BOOTSEL button (or a PRESENCE_PIN), the banner renders nothing from the applet's Confirm, and shows_confirm keeps its false default, so CTAP semantics — including the authenticatorReset power-up window exemption — are a button key's. The banner is drawn from inside the wait rather than from the status task because the wait blocks the thread executor.

display cannot host this panel: 240x135 rather than 240x320, no touch controller, no PWM backlight, and its backlight pin is outside the display build's PWM allowlist. It is therefore a second screen feature, mutually exclusive with display, dep:-gated so a screenless key compiles none of it, and off the default image's dependency tree.

The reference board is ALIENTEK's RP2350A small-system board: CS=9, DC=8, and a backlight on GPIO25 that is active-LOW through a PNP high-side switch, over SPI1 with SCK/MOSI on the hard-wired GPIO10/11. Pins come from a board file's [panel] section and default to that board. Build with LED_KIND=none ... --features panel.

bcdDevice -> 0x09DB.

What

I found this development board “ALIENTEK RaspberryPi-RP2350A” on a Chinese online shopping site that costs only 24 RMB and comes with a screen.
image

and works well with standard firmware, but this borad dont have rgb light, so i think make use of this screen is a good idea.

How it was tested

  • nix develop -c ./scripts/check.sh passes locally
  • On hardware: board = …, what was exercised = …

Checklist

  • Device behavior / image changed → config.device_release (bcdDevice) bumped by one (hex)
    in firmware/src/main.rs — host-only (CLI / docs / CI / build) does not (CONTRIBUTING.md)
  • Fixes something a downgrade would reopen → flag whether the next release should advance the
    rollback epoch (docs/production.md, stage 3) — a seal-time --rollback call, not a code bump
  • New or changed unsafe → justified in docs/unsafe.md
  • User-visible behavior → the matching guide under docs/ updated
  • New files carry the SPDX header (AGPL-3.0-only)
  • Commit messages use the zone prefix style (fido:, piv:, rsk:, docs:, …)

The `panel` feature drives a plain 4-wire SPI ST7789 (240x135, landscape) as a
status screen: the build counter, the chip serial, whether USB is attached, and
uptime — plus a PRESS THE KEY banner for as long as a user-presence wait is
pending.

It is not the trusted display. Presence stays on the BOOTSEL button (or a
`PRESENCE_PIN`), the banner renders nothing from the applet's `Confirm`, and
`shows_confirm` keeps its false default, so CTAP semantics — including the
`authenticatorReset` power-up window exemption — are a button key's. The banner
is drawn from inside the wait rather than from the status task because the wait
blocks the thread executor.

`display` cannot host this panel: 240x135 rather than 240x320, no touch
controller, no PWM backlight, and its backlight pin is outside the display
build's PWM allowlist. It is therefore a second screen feature, mutually
exclusive with `display`, `dep:`-gated so a screenless key compiles none of it,
and off the default image's dependency tree.

The reference board is ALIENTEK's RP2350A small-system board: CS=9, DC=8, and a
backlight on GPIO25 that is active-LOW through a PNP high-side switch, over SPI1
with SCK/MOSI on the hard-wired GPIO10/11. Pins come from a board file's
`[panel]` section and default to that board. Build with
`LED_KIND=none ... --features panel`.

bcdDevice -> 0x09DB.
@Zhongren233

Copy link
Copy Markdown
Author

The code for this PR was written entirely by an agent, and I have no knowledge of the subject matter myself;
if somebody feel the quality is too poor, feel free to close this PR.

i already test on my borad.

6f26e99aa040be222abb1512917adab0.mp4

@Zhongren233
Zhongren233 marked this pull request as ready for review October 5, 2026 11:10
@Zhongren233

Copy link
Copy Markdown
Author

It might be a duplicate of #123

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant