{% extends "base.html" %} {% block main %} {% set latest = load_data(url=config.extra.api ~ "/releases/latest", format="json", required=false) %} {% set apps = load_data(path="data/apps.toml", format="toml") %} {% set screens = load_data(path="data/screens.toml", format="toml") %} {% set px = [0,1,1,1,0, 1,0,0,0,1, 1,0,0,0,1, 0,1,1,1,1, 0,0,0,0,1, 0,0,0,0,1, 0,1,1,1,0] %}
Open firmware · GPL-3.0{% if latest %} · {{ latest.tag_name }}{% endif %}

Open firmware for a pocket computer.

roro9stack is firmware for the M5Stack Cardputer ADV with the Cap LoRa-1262: a LoRa scanner that reads Meshtastic traffic, GNSS, IRC, a Gemini browser, Wi-Fi tools, notes and more.

  • GPL-3.0
  • Docker-only build
  • Signed updates
{% include "illustrations/sweep.html" %}
{% include "illustrations/sky.html" %}

Drawings of the LoRa Scanner's Sweep view and the GNSS sky view, not screenshots: the real screens are further down.

Where it stands

Early software{% if latest %}, {{ latest.tag_name }}{% endif %}. The radio listens; it doesn't transmit yet. Sending and reading mesh messages is planned and waits for a second node to test with. The milestones show what's done and what's next.

Before you start

What you need.

What's inside

Apps for the radio, the web and the card.

{% for a in apps.app %}
{{ a.tag }}{{ a.num }}

{{ a.title }}

{{ a.text }}

{{ a.fact }}
{% endfor %}

Plus Settings, with its Wi-Fi and Firmware pages. Every App has a page in the user guide.

On the device

The real screens.

{% for s in screens.screen %}
{{ s.alt }}
{{ s.caption }}
{% endfor %}
Updates

Update over Wi-Fi. It rolls back if it fails.

Install a new release from the project's server in Settings, from the SD card, or push one from your computer. Every update is signed: the device checks the signature before it writes anything, restarts, and runs the new firmware on Probation. If it crashes, or can't reconnect Wi-Fi, it goes back to the previous firmware and says so.

$ scripts/flash.sh --ota 10.39.39.12
60 s

The longest the device waits for you to stop typing before it restarts into an update.

3 min

How long new firmware has to reconnect Wi-Fi on Probation before it rolls back.

3

Crash restarts in a row, and it starts in Safe Mode: only Wi-Fi, updates and the Debug Console, so a fix can still be pushed.

Build and flash

Only Docker needed.

PlatformIO and the ESP32 toolchain run in a container. The first build downloads about 1 GB; after that, builds take under a minute.

If the upload can't connect, hold G0, the button next to the screen, while plugging in USB, then retry.

Prefer a ready-made build? Install it from your browser, or take the factory image and the signed update file from the downloads.

# run the tests, then build
$ scripts/ci.sh
# flash over USB-C
$ scripts/flash.sh
# or update over Wi-Fi
$ scripts/flash.sh --ota 10.39.39.12

Open source, GPL-3.0.

Read the code, flash it, send a patch.

{% endblock main %}