System architecture¶
flowchart TB
subgraph apps [Applications]
UI[Gateway dashboard]
VPN[kaonic-vpn TUN]
PTT[Audio PTT plugin]
ATAK[ATAK bridge plugin]
MAV[rns-mavlink FC or GC]
end
subgraph mesh [Mesh]
RNS[Reticulum Transport]
KR[kaonic-reticulum KaonicCtrlInterface]
end
subgraph radio [Radio service]
CTRL[kaonic-ctrl UDP 9090]
GRPC[gRPC 50051 Device and Radio]
COMMD[kaonic-commd]
end
subgraph phy [PHY]
RF215[AT86RF215 modules 0 and 1]
end
UI --> RNS
VPN --> RNS
PTT --> RNS
ATAK --> RNS
MAV --> RNS
RNS --> KR
KR --> CTRL
UI --> COMMD
GRPC --> COMMD
CTRL --> COMMD
COMMD --> RF215
Layers¶
- Applications talk Reticulum (embedded
Transport) and/or HTTP. They do not bit-bang SPI. kaonic-reticulumserializes Reticulum packets, LDPC-encodes them into up to three radio frames, and callsRadioClient::transmit.kaonic-ctrlis a UDP MessagePack protocol (CTRL_PATTERN = 0xBACE), default server0.0.0.0:9090.kaonic-commdowns the HAL (kaonic-radio→radio-rf215) and also serves gRPC on50051.- Radio channels are configured through
RadioConfig(frequency, spacing, and channel number).
Process topology on a shipped image¶
Yocto image kaonic-st-image-core installs kaonic-init, kaonic-comm (kaonic-commd, kaonic-factory, Wi-Fi mode), and kaonic-gateway (kaonic-gateway, kaonic-installer).
Typical systemd units:
kaonic-init.service— serial, hostname, SSIDkaonic-commd.service— radioskaonic-factory.service— factory APIkaonic-wifi-mode.service— AP/STAhostapd.service— APkaonic-gateway.service— dashboard + mesh + VPNkaonic-installer.service— plugin/OTA HTTP on 8682
Development vs device¶
On a host without /etc/kaonic/kaonic_serial (or non-Linux), the gateway can run webapp-only and skip radio/transport init. Dummy radio backends exist in kaonic-radio for GUI/iperf work.