* FlipperApplication: skip a plugin that fails to load instead of ending the scan plugin_manager_load_all() broke out of the directory loop on the first file it could not load, so a single stray or stale .fal silently cost every plugin listed after it. It then returned PluginManagerErrorNone unconditionally, which made every caller's error check dead code - including the one in the Sub-GHz radio device registry, whose "Failed to load all libs" could never fire. Skip the file and carry on, and return the first error the scan hit, so a caller can tell a complete load from a partial one. An app id mismatch is deliberately not one of those errors. A scan selects, and a plugin belonging to another app is a normal thing to meet in a shared directory - reporting it would hand the caller an error for a folder that is working exactly as intended. That verdict belongs with the check itself rather than at the call site, so the body of plugin_manager_load_single() moves into a static helper that knows whether it is scanning: naming one file and getting a mismatch is still an error, meeting one mid-scan is logged at debug. Both examples checked the result and gave up, which was unreachable until now and would have thrown away the plugins that did load - the opposite of the point. They are the template a third-party plugin host gets copied from, so they log and carry on instead, and the do/while(0) whose only break this was goes with it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * FlipperApplication: tell a failed directory read from the end of the directory storage_dir_read() returns false both when it has handed back the last entry and when the read itself failed - storage_ext_dir_read() sets FSE_NOT_EXIST for the former and leaves FSE_NOT_READY, FSE_INTERNAL and friends for the latter, so the only way to tell them apart is storage_file_get_error(). The scan loop treated the two the same, so a card pulled or a controller hiccup partway through left a half-populated manager reporting complete success. Check the error before the directory is closed, and report a read that ended the scan early. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * FlipperApplication: let a plugin directory scan filter by file name prefix A plugin's app id only becomes readable once its whole image has been mapped and relocated, its init arrays run and its entry point called - see flipper_application_plugin_get_descriptor(). So a scan of a directory shared with plugins of another kind pays for a foreign image in full, and runs its constructors against an API interface it was not built for, before it can tell the plugin is not the one it wanted. And apps_data/<parent appid>/plugins is fbt's default location for every plugin of an app, so sharing is the norm. Add plugin_manager_load_all_prefixed(), which takes an optional file name prefix and passes over anything that does not start with it. Same idea as CliCommandExternalConfig::fal_prefix in the CLI registry, which has its own loader for exactly this reason. plugin_manager_load_all() keeps its signature and becomes the NULL-prefix case, so nothing already built has to change. API 88.6 -> 88.7. Exporting the new entry point rather than keeping it firmware-internal costs 8 bytes of API table, and is what lets a plugin-hosting FAP fix the same hazard in its own directory. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * SubGhz: pick the radio device plugins out of their folder by file name subghz_device_registry_init() scans apps_data/subghz/plugins on every subghz_devices_init(), which runs on every Sub-GHz app start and from the CLI and JS module. Anything else that ends up in that folder - the natural place for a Sub-GHz plugin, by fbt's own convention - was mapped, relocated and run in full before the app id said it was not a radio driver. For the Frequency Analyzer plugin that is 5,103 bytes of heap and ~7 KB of SD reads, every time. Radio device plugins are all named radio_device_*.fal already, so require that prefix and let the registry pass over the rest for the cost of a string compare. Its "Failed to load all libs" check now means something, and says which error it means. The cost of keying on the file name is that a driver named anything else stops being picked up, and a skip is only logged at debug level, which release builds compile out. Since a missing driver otherwise shows up as nothing more than the external module no longer being offered, warn when the scan ends with no driver at all, and add the assertion to the Sub-GHz unit test suite - which already inits the registry - that the one driver we ship is still found. The warning cannot see one of several drivers going missing; the test is what covers that if a second one is ever added. A third-party radio driver under some other name is the one compatibility cost here; radio_device_cc1101_ext.fal is the only driver in the tree and the only naming an out-of-tree one could have copied. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * SubGhz: put the Frequency Analyzer plugin back in the default plugin directory PR #1131 deployed it to apps_data/subghz/plugins/features/ so the radio device registry's non-recursive scan would never see it, and added an fal_path field to the app manifest to allow that. With the registry filtering by file name and the loader skipping what it cannot load, the folder is safe to share, so the plugin goes back to apps_data/subghz/plugins/ and fal_path goes away with it. Nothing else used fal_path, and it has not shipped in a release, so no SDK consumer can be relying on it; every other plugin already deploys to the default apps_data/<parent appid>/plugins. It was also a divergence in scripts/fbt from OFW, which is rebase surface we do not need to carry. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * CHANGELOG: plugin loader scan fix, API 88.7 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Flipper Zero Unleashed Firmware
This firmware is a fork of the original (OFW) version of flipperdevices/flipperzero-firmware and represents the most stable custom build, incorporating new features and improvements to the original components while remaining fully compatible with the API and applications of the original firmware.
Warning
This software is intended solely for experimental purposes and is not meant for any illegal activities. We do not condone unlawful behavior and strongly encourage you to use it only within the bounds of the law.
This project is developed independently and is not affiliated with Flipper Devices.
Also be aware, DarkFlippers/unleashed-firmware is the only official page of the project, there is no paid, premium or closed source versions and if someone contacts you and say they are from our team and try to offer something like that - they are scammers, block that user ASAP
🚀 Usage
Before getting started:
-
Review the Official Documentation: docs.flipper.net
-
Installation Guide & Version Info:
How to install the firmware by following the Installation Guide and check the version information (e,,c) -
FAQ:
Find answers to common questions in the FAQ -
Web Installer: -> Unleashed FW Web Installer
📦 Releases
Release builds (stable)
Telegram: t.me/unleashed_fw
-
GitHub Releases
Dev builds (unstable)
Note
Built automatically from dev branch
- Web site: dev.unleashedflip.com
Telegram: t.me/kotnehleb
🧰 Companion App & Web Tools
-
qUnleashed — app for mobile and PC:
Companion app to manage your Flipper from your phone or computer — DarkFlippers/qUnleashed -
Sub-GHz & Coordinates Map:
Online map to view your Sub-GHz wardriving files, and any other files with coordinates in them — map.unleashedflip.com -
Wi-Fi Wardriving Map:
Combine and display multiple WiGLE-formatted captures from ESP32 Marauder and others — wdmap.unleashedflip.com -
ESP32 Web Flasher:
Easy to use flasher for popular ESP32 modules, fully in your browser — espflasher.unleashedflip.com
🆕 What's New
Sub‑GHz Library & HAL
- Many new protocols added
- Regional TX restrictions removed
- Extra Sub-GHz frequencies added
- Frequency range can be extended in settings file (warning: It can damage Flipper's hardware)
- Many rolling code protocols now have the ability to save & send captured signals
- FAAC SLH (Spa) & BFT Mitto (keeloq secure with seed) manual creation
- External CC1101 module support (by quen0n)
Sub‑GHz Main App
- Save last used settings (by derskythe)
- New frequency analyzer (by ClusterM)
- Press OK in frequency analyzer to use detected frequency in Read modes (by derskythe)
- Long press OK button in Sub-GHz Frequency analyzer to switch to Read menu (by derskythe)
- New option to use timestamps + protocol name when you saving file, instead of random name or timestamp only - Enable in
Radio Settings -> Protocol Names = ON- Read mode UI improvements (shows time when signal was received) (by @wosk)
- External CC1101 module support (Hardware SPI used)
- External CC1101 module amplifier control (or LED control) support (enabled by default)
- Hold right in received signal list to delete selected signal
- Custom buttons for Keeloq / Alutech AT4N / Nice Flor S / Somfy Telis / Security+ 2.0 / CAME Atomo - now you can use arrow buttons to send signal with different button code
Add manuallymenu extended with new protocols- FAAC SLH, BFT Mitto / Somfy Telis / Nice Flor S / CAME Atomo, etc. manual creation with programming new remote into receiver (use button 0xF for BFT Mitto, 0x8 (Prog) on Somfy Telis, (right arrow button for other protocols))
- Debug mode counter increase settings (+1 → +5, +10, default: +1)
- Debug PIN output settings for protocol development
- Ignore options - Alarms: Hollarm, GangQi | ReversRB2: Revers RB-2(M) protocol | Sensors: Magellan, Honeywell Sec, Honeywell WDB (doorbells), Legrand (doorbells), Feron (RGB lights) | NiceFlorS: Nice Flor-S protocol
Sub‑GHz Apps (by Unleashed Team)
- Sub-GHz Bruteforce - static code brute-force plugin
- Time delay (between signals) setting (hold Up in main screen (says Up to Save)) + configure repeats in protocols list by pressing right button on selected protocol
- Load your own file and select bytes you want to bruteforce or use preconfigured options in protocols list
- Sub-GHz Remote - remote control for 5 sub-ghz files | bind one file for each button
- use the built-in constructor or make config file by following this instruction
Infrared (IR)
- Recompiled IR TV Universal Remote for ALL buttons
- Universal remotes for Projectors, Fans, A/Cs and Audio(soundbars, etc.) → Also always updated and verified by our team
- Infrared →
RCAProtocol- Infrared → External IR modules support (with autodetect by OFW)
NFC/RFID/iButton
- LFRFID and iButton Fuzzer plugins
- Add DEZ 8 display form for EM4100 (by @korden32)
- Extra Mifare Classic keys in system dict
- EMV Protocol + Public data parser (by @Leptopt1los and @wosk)
- NFC
Add manually→ Mifare Classic with custom UID- NFC parsers: Umarsh, Zolotaya Korona, Kazan, Metromoney, Moscow Social Card, Troika (reworked) and many others (by @Leptopt1los and @assasinfil)
Quality of Life & Other Features
- Customizable Flipper name Update! Now can be changed in Settings → Desktop (by @xMasterX and @Willy-JL)
- Text Input UI element → Cursor feature (by @Willy-JL)
- Byte Input Mini editor → Press UP multiple times until the nibble editor appears (by @gid9798)
- Clock on Desktop
Settings -> Desktop -> Show Clock(by @gid9798)- Battery percentage display with different styles
Settings -> Desktop -> Battery View- More games in Dummy Mode → click or hold any of arrow buttons
- Lock device with pin (or regular lock if pin not set) by holding UP button on main screen (by an4tur0r)
- BadKB (BadUSB) (by Willy-JL, ClaraCrazy, XFW contributors) - (Integrated into BadUSB app now!) - (aka BadUSB via Bluetooth)
- BadUSB → Keyboard layouts (by rien > dummy-decoy)
- Custom community plugins and games added + all known working apps can be downloaded in extra pack in every release
- Other small fixes and changes throughout
- See other changes in readme below
Also check the changelog in releases for latest updates!
Current modified and new Sub-GHz protocols list:
Full list of supported protocols and their frequencies/modulations (to use in Read mode)
Thanks to Official team (to their SubGHz Developer, Skorp) for implementing support (decoder + encoder / or decode only) for most protocols in OFW.
And thanks to our contributors who took part in SubGHz improvements and making of new features:
@RocketGod-git, @zero-mega, @ashphx, @pkooiman, Vitaly, Carlos, @li0ard, @mishamyte, d82k, Steffen (bastelbudenbuben de), @assasinfil, @gid9798
❤️ Please support development of the project
The majority of this project is developed and maintained by me, @xMasterX. Our team is small and the guys are working on this project as much as they can solely based on the enthusiasm they have for this project and the community.
@mishamyte- NFC, RFID, SubGHz and chats moderation@quen0n- Hardware, SubGHz and chats moderation@Drone1950- Reverse Engineering, telegram bot and chats moderation@HackcatDev- Support and chats moderation@Leptopt1los- NFC, RFID, Plugins, chat moderation and many other things@gid9798- SubGHz, Plugins, many other things - currently offline :(@assasinfil- SubGHz protocols, NFC parsers, chat moderation@Svaarich- UI design and animations@amec0e- Infrared assets- Community moderators in Telegram, Discord, and Reddit
- And of course our GitHub community. Your PRs are a very important part of this firmware and open-source development.
The amount of work done on this project is huge and we need your support, no matter how large or small. Even if you just say, "Thank you Unleashed firmware developers!" somewhere. Doing so will help us continue our work and will help drive us to make the firmware better every time.
Also, regarding our releases, every build has and always will be free and open-source. There will be no paywall releases or closed-source apps within the firmware. As long as I am working on this project it will never happen.
You can support us by using links or addresses below:
| Service | Remark | QR Code | Link/Wallet |
|---|---|---|---|
| patreon.com/mmxdev | |||
| patreon alternative | boosty.to/mmxdev | ||
| only RU payments accepted | pay.cloudtips.ru/p/7b3e9d65 | ||
| only RU payments accepted | yoomoney.ru/fundraise/XA49mgQLPA0.221209 | ||
| TRC20 | TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs |
||
| BSC/ERC20-Tokens | 0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a |
||
bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9 |
|||
| Solana/Tokens | DSgwouAEgu8iP5yr7EHHDqMNYWZxAqXWsTEeqCAXGLj8 |
||
D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv |
|||
ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9 |
|||
qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3 |
|||
| Monero | 41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn |
||
UQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmsxa |
📱 Community Apps
Enhance your Flipper Zero with apps and plugins created by the community:
-
Extra Plugins & Packs:
Check out the latest extra plugins and plugin packs (Extra Pack and Base Pack) on GitHub. -
Source Code & Full List:
Find the complete list and source code at xMasterX/all-the-plugins. -
Official Apps Catalog:
Browse the official Flipper Zero Apps Catalog on the web or via the mobile app.
📁 Where I can find IR, Sub-GHz, ... files, DBs, and other stuff?
- UberGuidoZ Playground - Large collection of files - Github
- Awesome Flipper Zero - Github
- IRDB - Infrared remotes database - Github
📘 Instructions
Firmware & main Apps feature
- System: How to change Flipper name
- BadUSB: How to add new keyboard layouts
- Infrared: How to make captures to add them into Universal IR remotes
Sub-GHz
- Full list of supported protocols and their frequencies/modulations (to use in Read mode)
- How to use Flipper as rolling code remote (Doorhan, Nice FlorS, BFT Mitto, Somfy Telis, Aprimatic, AN-Motors, etc..)
- Experimental rolling code counter modes (avoid desync)
- External Radio: How to connect CC1101 module
- Transmission is blocked? How to extend Sub-GHz frequency range
- How to add extra Sub-GHz frequencies
Configure Sub-GHz Remote App⚠️ Not recommended, please use embedded configurator
Plugins
- TOTP (Authenticator): config description
- Barcode Generator: How to use
- Multi Converter: How to use
- WAV Player: sample files & how to convert
- Sub-GHz playlist: generator script
GPIO - Plugins that works with external hardware
- Unitemp - Temperature sensors reader: How to use & supported sensors
- [NMEA] GPS: How to use
- i2c Tools How to use
- [NRF24] plugins: How to use
- [WiFi] Scanner: How to use | Web Flasher
- [ESP8266] Deauther: How to use | Web Flasher
- [ESP32] WiFi Marauder: How to use docs by UberGuidoZ | Marauder repo
- [ESP32-CAM] Camera Suite: How to use
- How to Upload
.binto ESP32/ESP8266: Windows | FAP "ESP flasher" - [GPIO] SentrySafe plugin: How to use
👨💻 Firmware & Development
- Developer Documentation - developer.flipper.net
- How to build | Project-structure
- Build apps on Android with Termux - compile
.fapfiles on your phone, no PC needed by @CamsShaft - CLion IDE - How to setup workspace for flipper firmware development by Savely Krasovsky
- "Hello world!" - plugin tutorial English by DroomOne | Russian by Pavel Yakovlev
- How to write your own app.
Project structure
applications- Applications and services used in firmwareassets- Assets used by applications and servicesfuri- Furi Core: OS-level primitives and helpersdebug- Debug tool: GDB-plugins, SVD-file and etcdocumentation- Documentation generation system configs and input filesfirmware- Firmware source codelib- Our and 3rd party libraries, drivers and etc...site_scons- Build helpersscripts- Supplementary scripts and python libraries home
Also, pay attention to the ReadMe.md files inside those directories.
🔗 Links
-
Unleashed web page: flipperunleashed.com
-
Unleashed FW Web Installer: web.unleashedflip.com
-
Unleashed domain used for direct .tgz update links for web updater or direct download: unleashedflip.com
-
Unleashed directory json for ufbt builds: up.unleashedflip.com/directory.json
-
Official Docs: docs.flipper.net
-
Official Forum: forum.flipperzero.one
-
Update! Official Developer Documentation developer.flipper.net