← How-Tos
flipper-zero May 6, 2026 ◑ 6 views ◯ 6 min read

How to Install Custom Firmware and Develop Apps for the Flipper Zero

flipper zerocustom firmwaremomentumapp developmentc sdkapp catalogunleashedxtremebuildcompilehowto

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)

Momentum Firmware (formerly Unleashed)

Xtreme / XFW Firmware

Dark Flipper

Step 1: Install Momentum Firmware

Momentum is the recommended starting point for custom firmware. It adds capabilities while maintaining stability.

Prerequisites:

Installation via Web Updater (Easiest):

  1. Go to the Momentum firmware website ( momentum-fw.gitlab.io ).
  2. Click Web Updater.
  3. Connect your Flipper via USB.
  4. Click Connect and select your Flipper from the list.
  5. Click Install. The web app communicates directly with the Flipper via WebSerial.
  6. Wait for the installation to complete. The Flipper reboots automatically.

Installation via qFlipper:

  1. Download the latest Momentum .tgz from the releases page.
  2. Open qFlipper and connect your Flipper.
  3. Go to Install from file.
  4. Select the downloaded .tgz.
  5. Click Install.

First boot after installation:

  1. The Flipper shows the Momentum splash screen.
  2. Navigate to Settings > Desktop to configure animations and themes.
  3. Go to Settings > Region to verify Sub-GHz unlock status.

Step 2: What Momentum Adds

Sub-GHz frequency unlock:

Additional Sub-GHz protocols:

BadUSB enhancements:

UI improvements:

Extra apps pre-installed:

Step 3: Browse and Install Apps from the App Catalog

The Flipper App Catalog is the official repository of third-party apps:

  1. On your PC, visit flipperzero.one/apps or lab.flipper.net/apps.
  2. Browse by category: GPIO, NFC, Sub-GHz, Tools, Games, etc.
  3. Click Install on apps you want.
  4. The web app communicates with your Flipper via WebSerial or Bluetooth and installs the app.

Essential apps to install:

Step 4: Set Up the Development Environment

To build apps for the Flipper, you need the Flipper SDK and toolchain.

Requirements:

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-compiler

Clone the firmware repository:

git clone --recursive https://github.com/flipperdevices/flipperzero-firmware.git cd flipperzero-firmware

Build the firmware:

./fbt

This 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 file

application.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_app

This compiles the app and launches it on the connected Flipper.

Step 6: App Development Concepts

GUI framework:

Input handling:

Storage:

Notifications:

Step 7: Publish to the App Catalog

  1. Develop and test your app thoroughly.
  2. Create a GitHub repository for your app.
  3. Add a README with description, screenshots, and installation instructions.
  4. Submit the app to the Flipper App Catalog via the submission form.
  5. The Flipper team reviews the app for quality and security.
  6. 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.