Skip to content

Features

This page provides a comprehensive reference for every feature in the RadioKit Flutter app, organized by screen and function.

The app discovers devices through four transport mechanisms:

TransportDiscovery MethodPlatform Support
BLEGATT service scanAndroid, iOS, Linux
SerialUSB port enumerationAndroid (USB-OTG), Linux, Web
WiFimDNS + manual IPAll platforms
CloudAccount-based relayAll platforms (requires network)

BLE scanning discovers devices advertising the RadioKit GATT service. Signal strength (RSSI) is displayed for each discovered device. Devices are shown with their advertised name and connection status.

Serial scanning enumerates available USB serial ports. Preferred ports (USB CDC, FTDI, CP210x, CH340) are shown first. Baud rate is configurable per connection (9600, 19200, 38400, 57600, 115200, 1000000).

WiFi discovery uses mDNS to find RadioKit devices on the local network. When mDNS is unavailable (e.g., Web platform), manual IP entry is provided. Default WebSocket port is 5555.

Cloud relay connects through a relay server using Ed25519 challenge-response authentication. The app maintains an account keypair stored securely on device. Devices registered with the same public key are discoverable.

When reconnecting a paired device, the app:

  1. Checks all configured transports in parallel
  2. Tries the last-used transport first
  3. Falls back to other available transports
  4. Shows connection status (scanning, connecting, connected, failed)

Availability probing runs every 10 seconds for paired devices when the Models tab is active.

Password-protected devices require authentication before the control screen is shown:

  • Auth dialog appears automatically on connection (30-second countdown)
  • Passwords can be saved securely for auto-reconnect
  • Serial connections bypass authentication
  • Admin access mode available from the device info sheet
  • Auth timeout disconnects the device if not completed

Tapping the settings icon on an active device card opens a bottom sheet with tabs:

  • INFO — Device name, description, transport details, BLE chip info (model, revision, MAC, flash size, PSRAM, cores)
  • SETTINGS — Device-level configuration options
  • FILESYSTEM — Quick access to filesystem features (shown when device has FS support and user is in admin mode)
  • FIRMWARE — Quick access to OTA firmware update (shown when device has OTA support and user is in admin mode)

The control screen renders widgets dynamically from the device’s configuration. All widgets support:

  • Real-time updates — Values sync at the transport’s native rate
  • Haptic feedback — Configurable per-widget vibration on interaction
  • Spring physics — Analog controls (sliders, knobs, joysticks) use spring animations for natural feel
  • Touch optimization — Large touch targets and gesture-based interaction
  • Debug overlay — Widget bounds and values visible in debug builds

Input Widgets:

WidgetValue RangeVariantsDescription
Push Button0 or 1Momentary press button
Toggle Button0 or 1On/off toggle switch
Slide Switch0 or 1Horizontal slide toggle
Rocker Switch0 or 1Rocker-style toggle
Linear Slider-100 to +100Unidirectional (0-100), Bidirectional (-100 to +100)Linear track control
Gas Pedal-100 to +100Unidirectional, BidirectionalVertical pedal control
Rotary Knob-100 to +100Unidirectional, BidirectionalRotary dial with configurable angle range
Steering Wheel-100 to +100Unidirectional, BidirectionalLarge rotary steering control
JoystickX: -100 to +100, Y: -100 to +1002-axis analog controller
Multi Button0 to N (single select)Row/column of mutually exclusive buttons
Multi SelectBitmaskRow/column of independently toggleable buttons

Output Widgets:

WidgetStatesDescription
LEDoff, on, blink, breatheRGB indicator with shape options (circle, square, diamond, star)
Text DisplayAny stringRead-only text output with configurable font
Serial MonitorStream of stringsScrolling console output display
TelemetryDisplay onlyMetrics display with label, icon, and unit

Analog widgets support auto-centering with configurable behavior:

  • Position: min, center, max (or disabled)
  • Spring type: smooth, elastic, linear
  • Duration: Configurable in milliseconds (100-1000ms)

Default auto-center settings vary by widget type:

  • Slider: disabled by default
  • Gas Pedal: enabled, snaps to min
  • Knob: disabled by default
  • Steering Wheel: enabled, snaps to center
  • Joystick: enabled, snaps to center

When enabled in System settings, the control screen enters immersive mode, hiding the system navigation and status bars. The orientation is automatically set to match the device’s canvas orientation (portrait or landscape).

The app ships with eight built-in themes:

ThemeSchemeCharacter
AbyssDarkDeep ocean blue tones
DragonDarkIndustrial orange and brown
MatrixDarkGreen phosphor terminal
BumblebeeLightClean white and gray
EmeraldLightProfessional green accent
MinimalLightPure monochrome
RoseLightSoft pink tones
VintageLightWarm sepia tones

Theme selection is available in System > Environment > Interface Theme. The theme applies to both the app chrome and the widget canvas.

The Designer is a full-featured visual editor for creating and modifying UI layouts. See the Designer Manual for the complete reference.

Key capabilities:

  • Drag-and-drop widget placement on a grid canvas
  • Property inspector with per-widget configuration
  • Play mode for testing layouts interactively
  • Code generation (JSON config + Arduino C++ header)
  • Save to app storage or export to file (.h / .json)
  • Undo/redo support
  • Import from existing .h and .json files

Available when the connected device has filesystem (LittleFS) support. Provides a Material 3 file manager interface:

  • Browse — Navigate directory tree with breadcrumb navigation
  • Upload — Pick files from the device and upload to the filesystem
  • Download — Save device files to the local device
  • Create directory — Create new folders
  • Rename — Rename files and directories
  • Delete — Single and multi-select deletion with confirmation
  • Format — Erase the entire filesystem (requires typed confirmation)
  • Storage info — Shows used/total capacity with progress bar
  • Transfer speed — Real-time speed indicator during uploads/downloads

Multi-select mode is activated by long-pressing a file tile. The AppBar changes to show selection count and bulk actions.

For USB-connected ESP32 devices:

  • Port scan — Auto-detect serial ports with chip synchronization
  • Chip info — Displays ESP32 model, revision, MAC, flash size, PSRAM, and core count
  • Firmware selection — Pick .bin files from the filesystem
  • Erase all — Optional full flash erase before flashing
  • Progress tracking — Real-time progress bar with percentage and status text
  • Console log — Collapsible log panel showing flash operations
  • Manual boot mode — Instructions for forcing bootloader mode when auto-sync fails

Raw serial communication monitor for debugging:

  • View incoming serial data in real-time
  • Send commands to the device
  • Useful for protocol debugging and development

When enabled in System > Advanced Options, the app runs a shelf HTTP server on port 7007. Endpoints include:

MethodEndpointDescription
GET/api/modelsList paired devices
POST/api/connection/connectConnect to a device
POST/api/connection/disconnectDisconnect from a device
GET/api/widgetsGet widget values
POST/api/widgets/<id>Set widget value
GET/api/session/routeCurrent app route
GET/api/session/stateFull view state (route, screen, overlays, follow mode)
GET/api/fs/*Filesystem operations
POST/api/designsSave a design
GET/api/logAPI request log

When Follow Mode is enabled, the app mirrors API navigation requests to the actual UI. This allows automated test scripts to drive the app through its screens remotely.

Ed25519-based cloud relay for remote device access:

  • Account management (create, import, export keypairs)
  • Multiple accounts with named profiles
  • Relay URL configuration per account
  • WebSocket transport with challenge-response auth
SettingLocationDefaultDescription
Interface ThemeSystem > EnvironmentDragonApp-wide color theme
Enable DemoSystem > EnvironmentOnShow interactive demo section
Use FullscreenSystem > Control UIOffImmersive mode in control screen
Remote AccessSystem > AdvancedOffEnable HTTP API server
Follow RemoteSystem > AdvancedOffEnable follow mode navigation