• roro9stack v0.11.0
    CI / build (push) Successful in 14m4s
    Stable

    twisla released this 2026-10-06 14:39:59 +00:00 | 11 commits to main since this release

    v0.11.0: updates from Gitea (Settings > Firmware checks the project's server, lists the last ten releases and installs one straight into the inactive slot; a daily check announces a newer one; IRC steps aside while the device talks to the server); the Check for updates setting; CI that tests every push to main, builds both firmwares on every pull request and signs and publishes a release for every tag, with coverage and badges

    Files

    • roro9stack-v0.11.0.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.11.0-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.11.0.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.10.0

    • CI: a branch's pushes run nothing, its pull request runs once
    • Updates from Gitea, step 5: the daily check's announcement, the docs, ADR 0009
    • Updates from Gitea, step 4: the Firmware page shows the project's releases
    • Updates from Gitea, step 3: install from Gitea, and IRC steps aside for it
    • Updates from Gitea, step 2: the connection (check and list work on the device)
    • Updates from Gitea, step 1: the model (host-tested)
    • R1 plan: updates from Gitea, the design round (Q162-Q174)
    • R1 plan: pull requests, merged by rebase then a merge commit (Q161)
    • CI: the badges are published from main only
    • CI: a push runs the tests, a pull request also builds the firmware
    • Coverage of lib/ by the host tests, and badges in the README
    • R1 plan: CI and releases are in place
    • R1 plan: CI as built on the container runner
    • CI: jobs run in a container, PlatformIO directly in it, the toolchains in a volume
    • Release build: tags from before Firmware Updates carry no public key to check against
    • R1 plan and ADR 0008: CI signs releases; README section on CI
    • CI: tests and builds on every push, a signed release on a tag (#5)
    • CI: try the runner's label as it is registered
    • CI: a first workflow, to see what the runner gives a job (#5)
    Downloads
  • twisla released this 2026-10-06 08:11:31 +00:00 | 33 commits to main since this release

    v0.10.0: the Notes App (plain text notes in /notes, an editor that saves by itself, up to 16 KB); e in the Storage App's text viewer; keys sent through the Debug Console are no longer swallowed now and then

    Files

    • roro9stack-v0.10.0.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.10.0-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.10.0.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.9.0

    • F1 plan: Notes ships as v0.10.0
    • Notes: plain text notes on the SD card, with an editor that saves by itself (#19)
    • A key sent through the Debug Console could turn the screen "off" for a tick
    • F1 plan: the Notes design round (Q141-Q150)
    Downloads
  • v0.9.0 50fcf6b7a3

    twisla released this 2026-10-06 07:03:50 +00:00 | 38 commits to main since this release

    v0.9.0: the Storage App (browse, copy, move, rename, delete, viewers for text, hex, pcap, gpx and ota; Maintenance replaces Settings > Storage); files dated by the Clock whatever its source; a panic at Wi-Fi join fixed (#46)

    Files

    • roro9stack-v0.9.0.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.9.0-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.9.0.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.8.1

    • F1 plan: the Storage App ships as v0.9.0; the SNTP panic is #46
    • Wi-Fi: SNTP could be started twice at a join, and ESP-IDF asserts on that
    • F1 steps 2-6: the Storage App, its viewers, and Maintenance moved in (#3)
    • F1 step 1: names, read-only rules and the packed listing (host-tested)
    • F1 plan: the Storage App's design round (Q128-Q140)
    Downloads
  • v0.8.1 77ace09c64

    twisla released this 2026-10-06 04:42:33 +00:00 | 44 commits to main since this release

    v0.8.1: the main loop rests between passes (core 1 from 100 % to 1 %); Pause GNSS for LoRa (the receiver costs the radio 8 dB); lora noise test

    Files

    • roro9stack-v0.8.1.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.8.1-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.8.1.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.8.0

    • S1 plan: the resting loop and the GNSS pause ship in v0.8.1
    • The radio's noise: the GNSS receiver costs 8 dB; a setting pauses it (#20)
    • The main loop rests between passes (#40)
    Downloads
  • v0.8.0 9078ab9c39

    twisla released this 2026-10-05 23:32:01 +00:00 | 48 commits to main since this release

    v0.8.0: S1, the System App (tasks, memory, network per service, system); tasks and net on the console

    Files

    • roro9stack-v0.8.0.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.8.0-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.8.0.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.7.0

    • S1 plan: the System App ships in v0.8.0
    • S1 #11: the System App: tasks, memory, network and system, live
    • S1 #11: bytes read and written, counted per network service
    • S1 #11: the System Monitor's design round (Q117-Q127)
    • S1 plan: fixed IPv4 shipped in v0.7.0
    Downloads
  • v0.7.0 f834095ee3

    twisla released this 2026-10-05 22:48:41 +00:00 | 54 commits to main since this release

    v0.7.0: S1, fixed IPv4 per Saved Network, DNS and NTP servers in Settings, connection details

    Files

    • roro9stack-v0.7.0.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.7.0-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.7.0.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.6.1

    • S1 #7 step 4: fixed IPv4, DNS and NTP in Settings
    • S1 #7 step 3: the Wi-Fi Service applies IP, DNS and NTP settings
    • S1 #7 steps 1-2: IPv4 checks, the IP setting per Saved Network, DNS and NTP settings
    Downloads
  • v0.6.1 7e8882d9cb

    twisla released this 2026-10-05 21:25:55 +00:00 | 58 commits to main since this release

    v0.6.1: the SD card no longer 'refuses' writes (our copy of the SD driver, ADR 0007); sd card; write faults in info

    Files

    • roro9stack-v0.6.1.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.6.1-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.6.1.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.6.0

    • ADR 0007: link the upstream report and the issue that follows it
    • sd card: what the card says it is, from its CID register
    • SD driver: a dummy byte before the ready test; say why a write failed (#21)
    • lib/SD: Arduino-ESP32 3.3.12's SD library, as it comes
    Downloads
  • v0.6.0 60cec80fa4

    twisla released this 2026-10-05 19:40:43 +00:00 | 63 commits to main since this release

    v0.6.0: M3, the LoRa radio receive only (Radio Service, LoRa Scanner with Sniffer, Captures and Sweep); put verifies the card; Gemini page budget

    Files

    • roro9stack-v0.6.0.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.6.0-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.6.0.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.5.0

    • M3 done: the listening hour heard nothing; a reference node is needed for M4
    • M3 step 5: Sweep, the band's signal strength as bars and a waterfall
    • M3 step 4: the LoRa Scanner App, Sniffer and Captures
    • M3 step 3: the Radio Service, receive only
    • Gemini: count the App's per-line tables in the page budget
    • Debug Console put: verify the card's copy, never zero-fill after a failed write
    • M3 step 2: Meshtastic header and presets, pcap with LoRaTap (host-tested)
    • M3 step 1: RadioLib and lora probe
    • M3 plan: radio bring-up, receive only (Q89-Q104)
    Downloads
  • v0.5.0 0a2f46b428

    twisla released this 2026-10-04 23:49:13 +00:00 | 73 commits to main since this release

    v0.5.0: G1, a Gemini client (TOFU, redirects, input, bookmarks, Saved Pages offline, big pages read from the card)

    Files

    • roro9stack-v0.5.0.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.5.0-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.5.0.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.4.0

    • G1 done: Saved Pages read offline, checked by hand
    • G1: accept a ~12 KB heap dip during a fetch with IRC connected (Q86 revised)
    • Gemini: read big pages from the card as you scroll (Q88)
    • G1 steps 5-6: input prompts, bookmarks, downloads, Saved Pages
    • G1 step 4: the Gemini App (rendering, links, history, address line)
    • G1 step 3: the Gemini fetcher (TOFU, redirects, floors, pages via the card)
    • G1 step 2: Gemini parsers (host-tested), and the memory decision (Q86)
    • G1 step 1: gemini get, and two TLS connections measured
    • G1 design: Gemini client plan, glossary (Capsule, Saved Page)
    Downloads
  • v0.4.0 dc4b49755a

    twisla released this 2026-10-04 21:42:41 +00:00 | 83 commits to main since this release

    v0.4.0: M2, GNSS (Position and Sky views, Tracks, clock from satellites); IRC stop; mDNS removed; smaller TLS buffers

    Files

    • roro9stack-v0.4.0.ota: the signed Update File. Copy it to /updates on the SD card and install it from Settings > Firmware or the Storage App, or push it over Wi-Fi with scripts/ota_push.py.
    • roro9stack-v0.4.0-factory.bin: the whole flash image, for a first install over USB at offset 0.
    • roro9stack-v0.4.0.elf.gz: the symbols, to decode a crash report from this build.
    • SHA256SUMS: checksums of the three.

    Changes since v0.3.0

    • Rebuild the framework with smaller TLS buffers (ADR 0006)
    • Stop IRC by hand; remove mDNS
    • Trim task stacks and buffers by measurement: +15 KB with IRC up
    • M2: record cold-start time to first fix and the heap measurement
    • M2 step 6: Tracks, recorded to GPX in the background
    • M2 step 5: GNSS App, with the Position and Sky views
    • M2 step 4: GNSS mark in the Status Bar; the clock follows the Fix
    • M2 step 3: GNSS Service, with standby and the clock from a Fix
    • M2 step 2: NMEA parser (host-tested)
    • M2 step 1: gnss probe finds the receiver on RX 15 / TX 13 at 115200
    • M2 design: GNSS plan, glossary (GNSS Service, Fix, Track), ADR 0001 note
    • key command: del and tab
    Downloads