How to Install Custom Firmware and Develop Apps for the Flipper Zero
Introduction
The Flipper Zero's open-source firmware and active developer community make it one of the most customizable hacking tools available. Beyond the official firmware, custom firmware variants add features, unlock capabilities, and optimize the user experience. The Flipper App Catalog hosts hundreds of third-party apps for everything from games to hardware tools. This guide covers the major custom firmware options, how to install them safely, how to develop your own Flipper apps in C, and the workflow for contributing to the ecosystem.
Custom Firmware Options
Official Firmware (flipperdevices/flipperzero-firmware)
- Developed by Flipper Devices Inc.
- Stable, well-tested, regular updates
- Some features intentionally limited (frequency restrictions, Sub-GHz region locks)
- Best for: users who want stability and official support
Momentum Firmware (formerly Unleashed)
- Most popular custom firmware
- Removes Sub-GHz frequency restrictions
- Adds extra protocols, apps, and features
- BadUSB enhancements, extra animations
- Regular updates tracking official firmware
- Best for: users who want maximum capability without the restrictions
Xtreme / XFW Firmware
- Focus on UI customization and visual enhancements
- Custom animations, themes, and menu layouts
- Some protocol additions
- Best for: users who want a personalized visual experience
Dark Flipper
- Minimal firmware focused on pentesting
- Stripped-down UI, maximum performance
- Best for: professional security assessors
Step 1: Install Momentum Firmware
Momentum is the recommended starting point for custom firmware. It adds capabilities while maintaining stability.
Prerequisites:
- qFlipper installed on your PC
- Flipper Zero with at least 50% battery
- USB-C cable
Installation via Web Updater (Easiest):
- Go to the Momentum firmware website ( momentum-fw.gitlab.io ).
- Click Web Updater.
- Connect your Flipper via USB.
- Click Connect and select your Flipper from the list.
- Click Install. The web app communicates directly with the Flipper via WebSerial.
- Wait for the installation to complete. The Flipper reboots automatically.
Installation via qFlipper:
- Download the latest Momentum .tgz from the releases page.
- Open qFlipper and connect your Flipper.
- Go to Install from file.
- Select the downloaded .tgz.
- Click Install.
First boot after installation:
- The Flipper shows the Momentum splash screen.
- Navigate to Settings > Desktop to configure animations and themes.
- Go to Settings > Region to verify Sub-GHz unlock status.
Step 2: What Momentum Adds
Sub-GHz frequency unlock:
- Transmits on all frequencies the CC1101 supports (300-348, 387-464, 779-928 MHz)
- Region locks removed — configure any frequency
- Raw signal capture on any supported band
Additional Sub-GHz protocols:
- Star Line (car alarm systems)
- Pandora (car alarm systems)
- Security+ 2.0 (Chamberlain garage doors)
- Additional rolling code variants
BadUSB enhancements:
- Mouse movement support (MOUSE_MOVE, MOUSE_CLICK commands)
- Hold/Release key support
- Faster typing speed options
UI improvements:
- Anarchy animations (custom dolphin animations)
- Custom themes and icon packs
- Additional desktop shortcuts
- Battery percentage display
Extra apps pre-installed:
- WiFi Marauder integration
- RFID fuzzer
- Sub-GHz brute forcer
- Additional NFC tools
Step 3: Browse and Install Apps from the App Catalog
The Flipper App Catalog is the official repository of third-party apps:
- On your PC, visit flipperzero.one/apps or lab.flipper.net/apps.
- Browse by category: GPIO, NFC, Sub-GHz, Tools, Games, etc.
- Click Install on apps you want.
- The web app communicates with your Flipper via WebSerial or Bluetooth and installs the app.
Essential apps to install:
- WiFi Marauder: WiFi scanning, deauth, beacon spam (requires ESP32 dev board)
- ESP Flasher: Flash ESP32 boards directly from the Flipper
- Logic Analyzer: Use Flipper as a logic analyzer with PulseView
- SPI Flash: Read and write SPI flash chips
- I2C Scanner: Scan and interact with I2C devices
- Weather Station: Decode weather sensor transmissions
- TPMS: Read tire pressure monitoring sensors
- RFID Fuzzer: Test RFID readers with various card formats
- Sub-GHz Bruteforcer: Brute force fixed-code remotes
- NFC Pay: Read payment card EMV data
- GPIO Tools: Manual GPIO pin control
- badusb: Enhanced BadUSB with more commands
Step 4: Set Up the Development Environment
To build apps for the Flipper, you need the Flipper SDK and toolchain.
Requirements:
- Linux (Ubuntu/Debian recommended) or macOS
- Git
- Python 3
- ARM toolchain (gcc-arm-none-eabi)
Install dependencies (Ubuntu):
sudo apt update sudo apt install -y git python3 python3-pip sudo apt install -y gcc-arm-none-eabi binutils-arm-none-eabi sudo apt install -y libstdc++-arm-none-eabi-newlib sudo apt install -y protobuf-compilerClone the firmware repository:
git clone --recursive https://github.com/flipperdevices/flipperzero-firmware.git cd flipperzero-firmwareBuild the firmware:
./fbtThis downloads the toolchain and builds the firmware. The first build takes 10-20 minutes.
Step 5: Create a Simple Flipper App
Flipper apps are written in C and use the Flipper's GUI framework.
App structure:
my_app/ application.fam # App manifest my_app.c # Main source file my_app.h # Header fileapplication.fam manifest:
App( appid="my_hello_app", name="Hello World", apptype=FlipperAppType.EXTERNAL, entry_point="my_app_main", requires=["gui"], stack_size=2 * 1024, fap_version="1.0", fap_icon="my_app.png", fap_category="Tools", )my_app.c (Hello World):
#include <furi.h> #include <gui/gui.h> #include <input/input.h> static void draw_callback(Canvas* canvas, void* ctx) { UNUSED(ctx); canvas_clear(canvas); canvas_set_font(canvas, FontPrimary); canvas_draw_str(canvas, 25, 30, "Hello Flipper!"); canvas_set_font(canvas, FontSecondary); canvas_draw_str(canvas, 15, 45, "Press back to exit"); } static void input_callback(InputEvent* input_event, void* ctx) { FuriMessageQueue* event_queue = ctx; furi_message_queue_put(event_queue, input_event, FuriWaitForever); } int32_t my_app_main(void* p) { UNUSED(p); FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(InputEvent)); ViewPort* view_port = view_port_alloc(); view_port_draw_callback_set(view_port, draw_callback, NULL); view_port_input_callback_set(view_port, input_callback, event_queue); Gui* gui = furi_record_open(RECORD_GUI); gui_add_view_port(gui, view_port, GuiLayerFullscreen); InputEvent event; bool running = true; while(running) { if(furi_message_queue_get(event_queue, &event, FuriWaitForever) == FuriStatusOk) { if(event.type == InputTypePress && event.key == InputKeyBack) { running = false; } } } gui_remove_view_port(gui, view_port); view_port_free(view_port); furi_message_queue_free(event_queue); furi_record_close(RECORD_GUI); return 0; }Build and install:
./fbt launch_app APPSRC=my_appThis compiles the app and launches it on the connected Flipper.
Step 6: App Development Concepts
GUI framework:
- Canvas: Low-level drawing (text, lines, circles, bitmaps)
- ViewPort: A drawing surface with callbacks
- Views: Reusable UI components (dialogs, menus, lists)
- Scene manager: Manages multiple screens with transitions
- Widgets: Pre-built UI elements (buttons, text boxes, icons)
Input handling:
- InputKeyUp/Down/Left/Right: Directional buttons
- InputKeyOk: Center button
- InputKeyBack: Back button
- InputTypePress/Release/Repeat: Button event types
Storage:
- Use the Storage API to read/write files on the SD card
- Path: /ext/apps_data/your_app/
Notifications:
- LED control: Set LED color and pattern
- Vibration: Trigger haptic feedback
- Sounds: Play notification sounds
Step 7: Publish to the App Catalog
- Develop and test your app thoroughly.
- Create a GitHub repository for your app.
- Add a README with description, screenshots, and installation instructions.
- Submit the app to the Flipper App Catalog via the submission form.
- The Flipper team reviews the app for quality and security.
- Once approved, the app appears in the catalog for all users to install.
Conclusion
Custom firmware and app development transform the Flipper Zero from a consumer device into an open platform limited only by your imagination. Momentum firmware removes artificial restrictions and adds professional tools. The App Catalog provides a growing ecosystem of community-developed apps. And with the C SDK, you can build your own apps that interact with GPIO, Sub-GHz, NFC, Bluetooth, and the GUI. Whether you are extending the Flipper's capabilities for penetration testing or building hardware debugging tools, the development ecosystem provides everything you need.
Related Guides
- Momentum Firmware for the Flipper Zero: Installation, Features, and Configuration
- Updating Flipper Zero Firmware and Installing Unleashed or RogueMaster
- Writing Your First FAP App
- Building Your First Custom Flipper Zero App: ufbt Setup, GUI, and GPIO
- The Flipper Zero Mobile App: Bluetooth Pairing, Remote Control, and Managing Your Flipper from Your Phone
- Flipper Zero Hardware Add-Ons Compared: WiFi Devboard, GPS Module, RFID Fuzzer, and Multi-Boards
- How to Use Bluetooth HID on the Flipper Zero for Wireless BadUSB Attacks
- How to Analyze EMV Payment Cards with the Flipper Zero: NFC, APDU Commands, and Security Architecture