Features
This page provides a comprehensive reference for every feature in the RadioKit Flutter app, organized by screen and function.
Device Management
Section titled “Device Management”Scanning and Pairing
Section titled “Scanning and Pairing”The app discovers devices through four transport mechanisms:
| Transport | Discovery Method | Platform Support |
|---|---|---|
| BLE | GATT service scan | Android, iOS, Linux |
| Serial | USB port enumeration | Android (USB-OTG), Linux, Web |
| WiFi | mDNS + manual IP | All platforms |
| Cloud | Account-based relay | All 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.
Reconnection
Section titled “Reconnection”When reconnecting a paired device, the app:
- Checks all configured transports in parallel
- Tries the last-used transport first
- Falls back to other available transports
- Shows connection status (scanning, connecting, connected, failed)
Availability probing runs every 10 seconds for paired devices when the Models tab is active.
Authentication
Section titled “Authentication”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
Device Info Sheet
Section titled “Device Info Sheet”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)
Control Interface
Section titled “Control Interface”Widget Rendering
Section titled “Widget Rendering”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
Widget Types
Section titled “Widget Types”Input Widgets:
| Widget | Value Range | Variants | Description |
|---|---|---|---|
| Push Button | 0 or 1 | — | Momentary press button |
| Toggle Button | 0 or 1 | — | On/off toggle switch |
| Slide Switch | 0 or 1 | — | Horizontal slide toggle |
| Rocker Switch | 0 or 1 | — | Rocker-style toggle |
| Linear Slider | -100 to +100 | Unidirectional (0-100), Bidirectional (-100 to +100) | Linear track control |
| Gas Pedal | -100 to +100 | Unidirectional, Bidirectional | Vertical pedal control |
| Rotary Knob | -100 to +100 | Unidirectional, Bidirectional | Rotary dial with configurable angle range |
| Steering Wheel | -100 to +100 | Unidirectional, Bidirectional | Large rotary steering control |
| Joystick | X: -100 to +100, Y: -100 to +100 | — | 2-axis analog controller |
| Multi Button | 0 to N (single select) | — | Row/column of mutually exclusive buttons |
| Multi Select | Bitmask | — | Row/column of independently toggleable buttons |
Output Widgets:
| Widget | States | Description |
|---|---|---|
| LED | off, on, blink, breathe | RGB indicator with shape options (circle, square, diamond, star) |
| Text Display | Any string | Read-only text output with configurable font |
| Serial Monitor | Stream of strings | Scrolling console output display |
| Telemetry | Display only | Metrics display with label, icon, and unit |
Auto-Center
Section titled “Auto-Center”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
Fullscreen Mode
Section titled “Fullscreen Mode”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).
Themes
Section titled “Themes”The app ships with eight built-in themes:
| Theme | Scheme | Character |
|---|---|---|
| Abyss | Dark | Deep ocean blue tones |
| Dragon | Dark | Industrial orange and brown |
| Matrix | Dark | Green phosphor terminal |
| Bumblebee | Light | Clean white and gray |
| Emerald | Light | Professional green accent |
| Minimal | Light | Pure monochrome |
| Rose | Light | Soft pink tones |
| Vintage | Light | Warm sepia tones |
Theme selection is available in System > Environment > Interface Theme. The theme applies to both the app chrome and the widget canvas.
Visual Designer
Section titled “Visual Designer”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
.hand.jsonfiles
Developer Tools
Section titled “Developer Tools”Filesystem Explorer
Section titled “Filesystem Explorer”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.
Firmware Flasher
Section titled “Firmware Flasher”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
.binfiles 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
USB Serial Monitor
Section titled “USB Serial Monitor”Raw serial communication monitor for debugging:
- View incoming serial data in real-time
- Send commands to the device
- Useful for protocol debugging and development
Remote Access
Section titled “Remote Access”HTTP API
Section titled “HTTP API”When enabled in System > Advanced Options, the app runs a shelf HTTP server on port 7007. Endpoints include:
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/models | List paired devices |
| POST | /api/connection/connect | Connect to a device |
| POST | /api/connection/disconnect | Disconnect from a device |
| GET | /api/widgets | Get widget values |
| POST | /api/widgets/<id> | Set widget value |
| GET | /api/session/route | Current app route |
| GET | /api/session/state | Full view state (route, screen, overlays, follow mode) |
| GET | /api/fs/* | Filesystem operations |
| POST | /api/designs | Save a design |
| GET | /api/log | API request log |
Follow Mode
Section titled “Follow Mode”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.
Cloud Relay
Section titled “Cloud Relay”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
Settings Reference
Section titled “Settings Reference”| Setting | Location | Default | Description |
|---|---|---|---|
| Interface Theme | System > Environment | Dragon | App-wide color theme |
| Enable Demo | System > Environment | On | Show interactive demo section |
| Use Fullscreen | System > Control UI | Off | Immersive mode in control screen |
| Remote Access | System > Advanced | Off | Enable HTTP API server |
| Follow Remote | System > Advanced | Off | Enable follow mode navigation |
See Also
Section titled “See Also”- App Overview — Architecture and screen summary
- Quick Start — Get started in 5 minutes
- Designer Manual — Visual UI designer guide
- Arduino Library — Hardware side documentation