Files
roro9stack/site/content/guide/storage.md
T
twislaandClaude Opus 5.5 681f436ff4
CI / build (pull_request) Successful in 1m50s
Site / build (pull_request) Successful in 10s
Merge main (file sharing, v0.18.0) into the VPN branch
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
2026-10-08 00:40:12 +02:00

5.9 KiB

+++ title = "Storage" description = "Browse the SD card: copy, move, rename and delete with a clipboard, and open a file by its type." weight = 8 [extra] tag = "Storage" screens = ["storage.png"] +++

Storage shows what is on the SD card: each folder's entries with their size and date, folders first. Enter opens a folder, Back goes up, and s sorts by name, date or size. A folder with more than 256 entries shows the first 256 by name, and says so.

Working on one item

Key Does
c / x Copies or cuts the selected file or folder; the footer shows what is waiting to be pasted
v Pastes it into the folder shown. A copy next to its original is named name (2).txt; anything in the way is asked about first
r Renames
d Deletes, after saying what is inside: "Delete saved and its 42 files (1.2 MB)?"
n Makes a folder
i Details: type, exact size, date, and why an item is read-only if it is

A copy runs in the background of the card (about 400 KB a second), in short turns, so logs and captures keep being written. It shows its progress, Back cancels it and takes back what was copied, and each file's size is checked afterwards.

What cannot be changed

  • the top-level folders the firmware keeps its files in (what is inside them can be);
  • /gemini/cache;
  • a file being written right now: today's IRC log, a Track or a capture being recorded.

The App says why when it refuses.

Opening files

Enter on a file opens it by its type, and Tab switches the same file to a hex dump or to text:

  • Text (.txt, .log, .gmi, .csv, and anything that looks like text): only a screenful is read from the card, so a file of any size opens at once, and logs open at the end. Up and down move a line, left and right a page, t and b go to the top and the end, and e edits it, whatever its size (as in Notes).
  • Pictures (.png, .jpg, .bmp, .gif): see Pictures below.
  • Captures (.pcap): the packets as the LoRa Scanner lists them; Enter shows one with its Meshtastic header and bytes.
  • Tracks (.gpx): the number of points, the start, the duration and the distance.
  • Update files (.ota): the version, and whether the file would install: it is checked as an install checks it, signature and contents, without writing anything. Enter then installs it (see Updates).
  • Anything else: a hex dump.

Pictures

Enter on a PNG, a JPEG, a BMP or a GIF shows it. A picture bigger than the screen is shrunk to fit; Enter again shows it at its own size, and the arrow keys then move around it, half a screen at a time. i gives its size in pixels, and Tab the file as hex.

  • The screen has 256 colours. A photograph is dithered to them; a drawing or a screenshot usually has colours the screen shows exactly. The screenshots the Shell saves are shown pixel for pixel at their own size.
  • A big photograph takes time, because every pixel of the file goes through the decoder, shown or not: about 7 seconds for 12 megapixels. The picture appears as it is decoded, and the keys keep working: Back leaves at once.
  • A GIF shows its first picture only. It doesn't move.
  • What can't be shown opens as hex, with the reason: a progressive JPEG, an interlaced PNG, a BMP that is compressed or has 16 bits a pixel.
  • A PNG needs 32 KB of memory in one piece while it is decoded, and a few more (a JPEG needs 4 KB, a GIF 17 KB). With IRC connected there may not be that much: the viewer says so. The firmware's own screenshots need none.

From a phone

Press w in the Storage App to share the card with a browser on the same network. The screen shows an address, as a QR code and in letters, and a six-digit code.

  1. On the phone (or any computer on the same Wi-Fi), scan the QR code, or type the address and then the code.
  2. The page lists the card. Tap a folder to open it and a file to download it. Upload files sends files from the phone into the folder you are in; New folder and Delete do what they say.
  3. Press Back on the device to stop. Sharing also stops when you leave the Storage App.

What to know:

  • It runs only while that screen is open, and the code is new each time. Five wrong codes close the door for a minute.
  • It is not encrypted. On your own network that is the usual trade; on a network you don't trust, someone listening could read the files and the code. Through the VPN it is protected.
  • One thing at a time: while a big file is going up or down, the page waits. About 200 KB a second.
  • The same rules as on the device: the folders the firmware keeps for itself can't be deleted, and a folder has to be empty to be deleted from the page.
  • An upload is written under a temporary name and renamed when it is whole, so a transfer that is cut leaves nothing behind.

Maintenance

At the top of the card, the last row, Maintenance (or m), shows the card's usage and holds Storage clean-up and Erase SD card. They delete for good, so they sit behind a warning. Clean-up deletes old logs and captures by category and age, showing the space it would free first. Notes and Saved Pages are never offered.

The firmware warns once per start when the card passes 80% full; past 90%, logs stop being written so that the rest is kept for captures.

The keys, as the device lists them

What Fn + h shows on these screens. These tables are generated from the firmware's own lists, so they are always the current ones.

{{ keys(scopes=["storage", "storage-details", "storage-name", "storage-busy", "maintenance", "viewer-text", "viewer-hex", "viewer-pcap", "viewer-packet", "viewer-gpx", "viewer-ota", "viewer-image", "storage-share"]) }}