Repository navigation
feat(panel): a status-only screen build for a board with no touch - #131
Open
Zhongren233 wants to merge 1 commit into
Open
Zhongren233 wants to merge 1 commit into
Zhongren233 wants to merge 1 commit into
Conversation
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.
Author
|
The code for this PR was written entirely by an agent, and I have no knowledge of the subject matter myself; i already test on my borad. 6f26e99aa040be222abb1512917adab0.mp4 |
Zhongren233
marked this pull request as ready for review
October 5, 2026 11:10
Author
|
It might be a duplicate of #123 |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
panelfeature 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'sConfirm, andshows_confirmkeeps its false default, so CTAP semantics — including theauthenticatorResetpower-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.displaycannot 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 withdisplay,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 withLED_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.

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.shpasses locallyChecklist
config.device_release(bcdDevice) bumped by one (hex)in
firmware/src/main.rs— host-only (CLI / docs / CI / build) does not (CONTRIBUTING.md)rollback epoch (
docs/production.md, stage 3) — a seal-time--rollbackcall, not a code bumpunsafe→ justified indocs/unsafe.mddocs/updatedAGPL-3.0-only)fido:,piv:,rsk:,docs:, …)