Firmware Overview
RADR runs on an ESP32-S3 microcontroller with custom firmware written in C++ using the Arduino framework and PlatformIO.Firmware Version
Check for firmware updates regularly to access new features and device support.
Source Code
The complete firmware source is available on GitHub:RADR Firmware
Browse the source code and documentation.
Architecture Overview
Main Components
Key Services
Development Environment
Prerequisites
- Visual Studio Code
- PlatformIO Extension
- USB-C cable for flashing
Getting Started
1
Clone the repository
2
Open in VS Code
Open the
Software folder in VS Code. PlatformIO will automatically detect the project configuration.3
Build the firmware
Click the PlatformIO Build button or run:
4
Flash to device
Connect RADR via USB-C and click Upload, or run:
Key Features
Canvas-Based Rendering
RADR uses double-buffered canvas rendering for smooth display updates:- Full-screen sprites prevent flickering
- Partial updates for performance-critical areas
- Consistent 60fps UI refresh rate
State Machine Architecture
The UI uses a hierarchical state machine:- Clear transitions between screens
- Isolated state logic for each screen
- Event-driven input handling
Device Registry
RADR supports multiple device types through a two-tier registry:
The dynamic registry (
registry.json) can be updated via firmware updates to add new device support without code changes.
Configuration Files
Technical Reference
Web Flasher
Flash firmware using the web-based tool.
BLE Communication
Bluetooth protocol details and device communication.
Contributing
We welcome contributions to the RADR firmware. Before contributing:- Read the contribution guidelines
- Join the Kinky Makers Discord to discuss changes
- Submit pull requests against the
mainbranch
Code Style
- Follow existing code formatting
- Use descriptive variable and function names
- Document public functions and complex logic
- Test changes on actual hardware before submitting

