50 m thinknode m9 · a tag · meshcore · emulated first
find your people
A handheld that shows where your crew is, over its own LoRa mesh. Built on the Elecrow ThinkNode M9, with a keyboard, a compass that calibrates itself, and an emulator that runs the real firmware in your browser. For the friend who will not carry a handheld there is the tag: a credit-card tracker with one button that shows up on everyone's radar and chirps when you ask.
200 m what is different
stock hardware
posse runs on the Elecrow ThinkNode M9: ESP32-S3, Semtech LR1110, GNSS, a magnetometer and IMU, a 2.4" colour screen and 2300 mAh, in a case that already exists. Buy one, flash posse. The board, the case and the supply chain already exist.
a keyboard
Thirty-seven keys. Six canned lines for 3 a.m., and your own words when you have them. Names and the crew passphrase are typed on the device, so the device is the whole setup.
MeshCore underneath
An open mesh that already runs on hundreds of boards. A crew is a passphrase-keyed group channel; friends relay for friends up to a hop count, and every other MeshCore node in earshot is a repeater in waiting.
simulated first
The firmware compiles to WebAssembly unchanged. The emulator runs twenty of them on a map over a LoRa channel model, with the M9 keyboard on screen. The UI, the beacon rate and the hop count got argued about before a board was flashed.
a compass that calibrates itself
The compass learns its own magnetometer offsets from the way you already move, cross-checked against GPS course and the IMU, and falls back to GPS heading while you walk.
checked, not hoped
The position-beacon protocol is model-checked in TLA+. The checker found the case where a delayed older beacon moves a friend backwards on the radar; the guard that prevents it is in the firmware, and the mutant that lacks it stays in the tree.
1 km the tag
a crew member with one button
The tag is posse on the Seeed SenseCAP T1000-E (order the E; the A and B are LoRaWAN-locked): a credit-card sized, IP65, 700 mAh tracker with the same radio as the M9. It beacons like everyone else and shows up on every radar in the crew, it just has one button and a buzzer instead of a screen. It beacons every 15 s while it is being carried and every two minutes at rest, with the GPS powered only around each beacon, which is what fits a weekend in 700 mAh. Anyone in the crew can make it chirp from their peer screen, so the friend carrying it can be found by ear. It joins a crew by invite: press the tag, then on any crew member's M9: CREW, the tag, ENTER, ENTER. The passphrase travels to the tag as a direct message encrypted to the tag's own key.
the button
- press"Come to me" to the crew, or open the join window when it has no crew
- hold 3 s"Need help, come to me"; the tag chirps at 3 s so you know when to let go
- hold 8 sforget the crew
- hold 15 spower off; a press wakes it
500 m what it runs on
the radio
- boardElecrow ThinkNode M9, ships with MeshCore
- radioLR1110, 910.525 MHz, SF7 / 62.5 kHz by default
- reachhundreds of metres through people, kilometres across open ground
- screen320 × 240 ST7789, landscape, drawn by the firmware itself
- keys37-key QWERTY on a coprocessor, plus a function bar and d-pad
- powera beacon every 15 s costs almost nothing
the screen
Four tabs: radar, crew, messages, setup. The radar puts you in the middle and everyone else on a ring by distance, heading-up when the compass is confident and north-up when it is not. Strangers running plain MeshCore show as adverts; crew show as beacons with a colour.
2 km the emulator
the firmware itself
The screen in the hero is a real instance of the posse firmware compiled to WebAssembly, drawing its own pixels. The emulator runs a field of them at once, over a LoRa channel model with airtime, path loss, shadowing, collisions and capture, so a crowded field really does drop packets.
Move anyone on the map and watch links appear and break.
Click a device and your keyboard is its keyboard.
Change SF, bandwidth or crowd density mid-run.
why bother
Hardware arrives late and there is only ever one of it. An emulator lets the interface get argued about, the radio budget get checked and the mesh get stress-tested with twenty devices before the first board is soldered.
posse lives in a private monorepo where the firmware, the world engine and this site are one tree, which is why the wasm on this page is always the current build.