Deploy virtual RAK3172 nodes, configure an end-to-end LoRaWAN infrastructure and watch every PHY frame — no hardware, no interference, in real time.
Follow the complete life cycle of a LoRaWAN node — from join to frame confirmation.
LoRaWAN · EU868
Place a RAK3172 node and two gateways on the interactive map. VirtIoT computes radio coverage in real time (Log-Distance Path Loss, n = 2.7).
$ AT+DR=5
+OK
$ AT+ADR=1
+OK (ADR enabled)
from swarm_at import Node node = Node() node.join(timeout=30) # Send every 60s while True: temp = read_sensor() node.send(port=2, data=encode(temp)) node.sleep(60)
Every building block of the LoRaWAN network, faithfully reproduced
Over-The-Air join procedure (AT+JOIN) with real NwkSKey / AppSKey session-key derivation through ChirpStack.
Complete AT command set: AT+SEND, AT+CFM, AT+DR, AT+ADR, AT+PORT, AT+TXP, AT+RX1DL, AT+RX2DL…
Log-Distance Path Loss model (n=2.7). Per-gateway RSSI/SNR computation. Collisions detected on the same channel/SF.
Adaptive Data Rate: with AT+ADR=1, every received uplink recomputes the spreading factor (SF7, SF9 or SF12) from the best gateway’s RSSI. The node switches data rate and announces it (+EVT:ADR). Transmit power is not adapted.
ChirpStack PULL_RESP → JoinAccept decryption → key derivation → RX1/RX2 windows simulated in real time.
PHYPayload capture with MHDR, MACPayload and MIC decoding — a Wireshark-style view in the browser.
A dedicated ChirpStack v4 instance per student. Direct UI access for Device Profiles, Applications and OTAA keys.
Deploy several virtual gateways on the map. Automatic load balancing, coverage-area visualisation.
Sign in and start a session in seconds. Zero hardware.
Open the Lab →