Skip to content

TurtlPass/turtlpass-uf2-installer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Logo

🔗 TurtlPass Ecosystem

🐢 Firmware • 💾 Protobuf • 💻 Host • 🌐 Chrome • 📱 Android


⚡️ TurtlPass Firmware Installer

🚧 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.


✨ Features

  • 🌐 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).


🧠 High-Level Architecture

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.


🧭 Installer Flow

  1. Select a UF2 firmware file
  2. Put the board into BOOTSEL mode
  3. Select the RPI-RP2 drive
  4. Flash firmware (with progress & cancellation)

Each step is enforced by a finite state machine, preventing invalid actions.


🚀 Getting Started

Prerequisites

  • JDK 17+
  • Gradle
  • A modern browser with WebAssembly support
  • RP2040 / RP2350 board in BOOTSEL mode
  • UF2 firmware file

▶️ Run Locally

./gradlew wasmJsBrowserDevelopmentRun

Then open:

http://localhost:8080

🏗 Build for Production

./gradlew wasmJsBrowserDistribution

The optimized output will be available in:

composeApp/build/dist/wasmJs/productionExecutable

🧩 Tech Stack

  • 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

📚 Related Resources

About

⚡️ TurtlPass Firmware Installer

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors