🐢 Firmware • 💾 Protobuf • 💻 Host • 🌐 Chrome • 📱 Android
🚧 This project is under active development.
APIs, UX, and internal architecture may change.
A browser-based UF2 firmware installer for RP2040 / RP2350 devices, built with Kotlin/Wasm and Compose Multiplatform.
Flash your Raspberry Pi Pico (or compatible boards) directly from the browser — no native apps, drivers, or CLI tools required.
- 🌐 Pure web app — runs entirely in the browser
- 🔌 UF2 flashing for RP2040 / RP2350
- ⚡ Progress-aware flashing with cancellation support
- ♻️ Safe state handling (explicit steps, no hidden UI states)
- 🧩 Composable UI built with Compose Multiplatform
- 🖥 Cross-platform — works on any OS with a modern browser
Currently targets browsers with File System Access / WebUSB support
(Chrome, Edge; Firefox not supported).
Compose UI (Kotlin/Wasm)
│
▼
Installer State Machine
│
▼
Flasher Logic (JS / Web APIs)
│
▼
RP2040 / RP2350 (BOOTSEL / UF2)
-
Kotlin/Wasm + Compose Handles UI, state transitions, progress display, and user interaction.
-
Web APIs (JS interop) Handle file access, device communication, and UF2 block transfer.
-
RP2040 Bootloader Receives UF2 blocks while in BOOTSEL mode and flashes firmware.
- Select a UF2 firmware file
- Put the board into BOOTSEL mode
- Select the
RPI-RP2drive - Flash firmware (with progress & cancellation)
Each step is enforced by a finite state machine, preventing invalid actions.
- JDK 17+
- Gradle
- A modern browser with WebAssembly support
- RP2040 / RP2350 board in BOOTSEL mode
- UF2 firmware file
./gradlew wasmJsBrowserDevelopmentRunThen open:
http://localhost:8080
./gradlew wasmJsBrowserDistributionThe optimized output will be available in:
composeApp/build/dist/wasmJs/productionExecutable
- Kotlin/Wasm — Kotlin compiled to WebAssembly
- Compose Multiplatform — declarative UI framework
- Coroutines & Flow — async operations and progress streaming
- Gradle — build tooling
- Material Design — UI components & theming