Getting started
sim-mesh needs no firmware tree: stations are firmware zips, added from a file or from the pre-built ones.
It needs Docker or Podman and nothing else, on Linux, a Mac or Windows:
sim builds its own image on first use (a few minutes, once) and runs
everything inside it, with port 8800 published.
1. Clone it
The directory you clone into is the one sim mounts into its image, so
a firmware tree put beside sim-mesh later can build against its radio:
mkdir mesh && cd mesh
git clone https://github.com/sim-mesh/sim-mesh.git
2. Start it
sim-mesh/sim
It builds whichever of the page, the virtual radios and the planner is not
built yet or is older than its sources (the first time, several minutes),
starts the front and opens http://localhost:8800/. The terminal is the
testbed’s: Ctrl-C there stops every simulation and everything they started.
sim run SCRIPT … starts one in the background instead when none is running,
and opens the page on the run.
3. Add firmware
On the Firmware tab, Add from pre-built… lists what this site offers for your machine’s architecture and installs one with a click; Add from zip… installs a zip of your own. From a shell:
sim-mesh/sim firmware prebuilt # what sim-mesh.net offers this machine
sim-mesh/sim firmware add <a zip, or its URL>
sim-mesh/sim firmware list
4. Ground and nodes
No geodata and no nodesets come with sim-mesh: both are your own. Make ground on the Geodata tab — Build from sources… over a rectangle of the map, or New synthetic… — and click it to choose it. On the Nodes tab place nodes on it, or Import… them in the Layers panel from a public node map, and Save nodes as nodeset…. Networks says what each of those is.
5. A first simulation
On the Scripts tab open lxmf-traffic, choose the firmware its nodes
run in Firmware for nodes not otherwise configured above the script, and
Run… it: a new simulation of the nodeset on that ground, in virtual time.
The page goes over to the simulation’s live map and its stations come up;
rings on the map are frames on the air. When it is done the simulation is
paused and its Report says how much of an hour of messages arrived.
For a simulation to work with by hand, run realtime: every node on the
chosen firmware, on the wall clock, set up and left running.
6. Play with it
- Click a station for its editor, its Console (its serial console) and Web UI (its own web interface, for a firmware that serves one).
- Right-click the map ▸ New node here puts down a station. It comes up and is set up on its own.
- Drag a station and its links change once its row of the loss table is recomputed.
- Right-click a station ▸ Run command… types one line at the selected stations, in their firmware’s own language.
- Pause on the simulation’s row of the Simulations tab stops it with its state kept; Resume (▶) starts it again as it ended, in real time, and a script run on a paused one resumes it in the script’s own time. Stop ends a simulation for good, a paused one’s state deleted.
- ⋯ ▸ Save snapshot as… keeps the network and everything its stations have become, and ⋯ ▸ Load snapshot into it… brings one back.