A Flutter companion app for Flipper Zero, built for Unleashed and other firmware.
BLE/USB connection, firmware updates and DFU repair, remote control, archive,
file manager and a toolbox — one codebase, five platforms.
qUnleashed is a Flutter companion app for Flipper Zero, written from scratch as an alternative to Flipper Android App and tailored for custom firmware, first of all Unleashed firmware by DarkFlippers. The app is optimized around Unleashed-specific workflows: tracking firmware releases, reading changelogs, downloading updates and installing them directly from the app, while also reworking and extending parts of the original Flipper app experience.
qUnleashed keeps the familiar companion-app workflows from the original Flipper Android App and extends them for custom firmware: USB support on mobile and desktop, firmware repair from DFU mode, phone GPS/internet sharing, a stronger local archive and a bigger toolbox.
- BLE and USB on every platform that allows it. qUnleashed connects to Flipper Zero over BLE on all supported platforms, and over a USB serial cable on Android, Windows, macOS and Linux (iOS is BLE-only — Apple does not expose USB serial to apps). Both transports drive the same app surface: device info, archive sync, file manager, apps, remote control and CLI.
- Multiple devices. The app remembers known Flippers, keeps warm sessions for them, switches between devices instantly and reconnects automatically (a plugged-in USB device takes priority over the last BLE one).
- Reliable background link. On Android a foreground service keeps the BLE connection alive while the app is in the background.
- Updater. Firmware-centric for Unleashed: release/dev channel tracking with changelogs, downloads and in-app install, including Unleashed variants (base, extra apps, compact). Official firmware channels are supported as well.
- Repair from DFU mode. If the firmware is broken, qUnleashed can fully re-flash the device over USB in DFU/recovery mode — core firmware, radio stack and FUS handling — mirroring qFlipper's Full Repair flow.
- Release notifications. Optional push notifications for new Unleashed and official firmware releases, with a separate opt-in for dev-channel builds.
- Device info. Connected Flipper status expanded with firmware version and build date, battery details, internal/external storage state and a raw device-details sheet.
- GPS and internet sharing. On firmware builds with the RPC GPS/network extension, the app feeds the phone's location to Flipper apps and proxies network connections from the Flipper through the phone's internet, with live TX/RX traffic stats on the device card.
- Remote desktop. Live screen streaming and button control, physical-keyboard input on desktop, screenshot export and GIF recording of the Flipper screen.
- Command line. A full CLI terminal session on the device (USB; not available on iOS).
- Local-first per-device archive with synced, remote-only, local-only and deleted states, favorites, restore actions and local/remote deletion.
- Categories. Sub-GHz, Wardriving (including autosaves), RFID 125, NFC, Infrared, iButton, Bad USB and JavaScript files.
- Launch from the app. Saved keys can be emulated/launched on the connected Flipper straight from the archive — NFC, RFID and iButton via RPC emulation, Sub-GHz, Infrared, Bad USB and JavaScript via the matching Flipper app.
- Editing and sharing. Built-in text editor with Flipper file-format syntax highlighting, plus sharing of remote files.
- File Manager. Browse both
/extand/int, hidden-file visibility, folder creation, rename, delete, download, upload and direct text editing.
- Apps catalog. Search, categories, sorting, app details and screenshots on top of the official catalog, with install, update and delete actions and detection of already-installed and preinstalled apps.
- Pixel Draw. A pixel-art editor for the Flipper screen: project manager, multi-frame animations, dolphin animation import and live preview directly on the device display.
- Extract MIFARE Keys. MIFARE Classic Mfkey32 key recovery from device nonces, computed natively on the phone.
- Remotes Library. Official infrared remote source plus the public
Lucaslhm/Flipper-IRDBrepository: browse by brand/category, search the whole library, preview and edit.irfiles, save remotes into the local archive or send them straight to/ext/infrared. - Pulse Plotter. Visualize raw Sub-GHz/Infrared/RFID pulse captures with zooming, histograms and slicing helpers — open captures right from the archive.
- Saved Locations. Parses synced archive files for latitude/longitude metadata, shows them as pins on an interactive map with the current phone position, distance, bearing and walking time, and links each pin back to the saved Flipper file.
The app is translated on Crowdin. Do not edit translations/app_*.arb by hand — English is the only exception, because it is the source every other language is translated from.
Crowdin exports each language file whole, so an edit made here is not merged with the next sync, it is reverted by it. That has already cost one manual repair of the Russian translation.
- To correct or add a translation, work in Crowdin. It reaches this repository automatically, in a pull request opened by the sync.
- To add or change an English string, edit
translations/app_en.arb. It is uploaded to Crowdin when the change lands onmain, and translators see it from there. - To have a new language enabled, open an issue asking for it. Enabling a language is done in Crowdin; once it has translations, the sync adds
translations/app_<code>.arbon its own and the app offers the locale. The only thing the repository needs is the language's own name in_localeNames(lib/services/localization/controller.dart) — without it the picker lists the language by its code rather than asDeutsch.
The Google Play listing works the same way: short_description.txt, full_description.txt and the changelogs are translated on Crowdin, so edit only the en-US copies. Screenshots, the icon, title.txt and video.txt are not on Crowdin and can be changed in any locale.
A CI check enforces all of this, so a pull request that edits a translated file fails rather than being merged and quietly undone.
- Keep product names untranslated: qUnleashed, Flipper, Flipper Zero, and protocol names such as Sub-GHz, NFC, RFID, iButton.
- Give every new key an
@keydescription saying where it appears and, for a bare word, whether it is a verb or a noun. Translators see only the string and that description. - Name placeholders for what they hold (
{fileName}, not{arg0}); the name is shown to translators.






















