Atalaia

How the radio works

The props talk over LoRa, a long-range, low-power radio, in Atalaia's own protocol, Skirmesh-RF. These two diagrams show what LoRa can and cannot do on a field, and how one protocol runs on very different devices. None of it has been on a real field yet: range and timing will be measured in the phase 2 field test.

What LoRa can do

LoRa trades speed for reach: it gets short messages across a field on very little battery, and its signal gets through walls and trees better than Wi-Fi does, although concrete, metal and hills still block it. A box that cannot reach the controller is heard through the other boxes, and European rules limit how much of the time each device may transmit.

Five panels. Chirps: LoRa sends each symbol as a tone that sweeps across the channel, and a receiver that knows the pattern can decode it even below the background noise, so it reaches far on little power but carries only short messages. Spreading factor: each step up from SF7 about doubles the time a message spends on air, for a little more range; the boxes use SF7 today. Range: longest over open ground in line of sight, shorter through woods, people and vehicles, much shorter inside buildings, and cut off by concrete, metal or a hill, where a box in between can relay; 868 MHz gets through obstacles better than 2.4 GHz Wi-Fi or Bluetooth. The design estimate of about 0.5 to 2 km on a typical outdoor field is still to be measured in the phase 2 field test. Relays: a box out of the controller's reach is heard through the other boxes, and a message is passed on at most twice by default. Rules in Europe: one shared game channel, 869.525 MHz by default, the only part of the band that allows 500 mW and 10% of the time, 6 minutes per hour for each device; other channels allow 25 mW and 1% or less.

Which channel, and why 869.525 MHz

All of a game's traffic shares one channel. The default, 869.525 MHz, is the centre of 869.4–869.65 MHz, the only part of the European 868 MHz band where a device may transmit up to 10% of the time at up to 500 mW. Elsewhere in 868–870 MHz the rules allow 1% of the time (0.1% on 868.7–869.2 MHz) at 25 mW: about a tenth of the airtime, and much less range. 868.1, 868.3 and 868.5 MHz are LoRaWAN's default channels and often busy. The default is shared too: LoRaWAN gateways send some replies on 869.525 MHz and Meshtastic's European default uses it, so near such users the GM can let the controller listen to every legal channel for a minute and pick the quietest, draw one at random, or choose by hand. The boxes then follow the chosen channel's own limits.

One protocol on every device

Skirmesh-RF is built in layers, from the radio up to the controller's API. A Field Box runs everything up to the game modes; a Raspberry Pi controller leaves the radio work to a USB radio modem; in phase 3 an Android phone will do the same with an I/O pod. Phones on the field's Wi-Fi need no LoRa radio at all.

Left, the five layers of Skirmesh-RF from the bottom up: 1, the LoRa radio on one shared game channel; 2, the Skirmesh-RF packet, with AES-128-CCM encryption under a key for each game, epoch and sequence numbers against replays, a hop limit for relaying (two relays by default), ACKs, TIME beacons and CLAIM for controller failover; 3, the messages HELLO, EVENT, ACK, STATE, CMD, TIME, CONFIG and CLAIM in CBOR; 4, the shared C core and Lua game modes; 5, the field controller's REST, WebSocket and MQTT APIs, GM console, scoreboard and join codes (NFC cards for boxes, QR codes for a standby controller and, in phase 3, phones). Right, which layers each device runs. Built and tested in software, not yet on a field: the Field Box (layers 1 to 4), the USB radio modem (1 and 2) and the field controller on a Raspberry Pi or PC (2 to 5), and the GM console on phones over Wi-Fi, which use layer 5 with no LoRa radio. Planned: the satellite box (1 to 4) and, in phase 3, the I/O pod (1 and 2) that gives an Android phone or tablet (2 to 4) a radio, and the player app.