explaingit

jsammarco/flipper-subghz-analyzer

15PythonAudience · developerComplexity · 2/5Setup · easy

TLDR

A dependency-free Python desktop app for analyzing Flipper Zero radio signal captures, visualize timing, decode bit patterns, compare frames side by side, and edit signals to reverse-engineer remote controls.

Mindmap

mindmap
  root((SubGHz Analyzer))
    What it does
      Opens Flipper sub files
      Decodes bit patterns
      Compares frames
    Analysis features
      Packet splitting
      Frame visualization
      Region labeling
    Editing
      Bit editor
      Hex conversion
      Save modified files
    Requirements
      Python 3.10 or later
      No dependencies
      Sample captures included
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Load a .sub capture from your Flipper Zero and visualize decoded frames to spot repeated patterns across multiple button presses.

USE CASE 2

Compare captures of the same remote pressing different buttons to identify which bits encode the command versus the fixed header.

USE CASE 3

Edit specific bits in a captured frame and save a modified .sub file to replay on your Flipper Zero.

Tech stack

PythonTkinter

Getting it running

Difficulty · easy Time to first run · 5min

In plain English

This is a desktop application for examining radio signal captures recorded by a device called Flipper Zero. Flipper Zero is a small handheld tool that can receive and record radio signals from things like remote controls, garage door openers, and ceiling fan remotes. It saves those recordings as files with a .sub extension. This application opens those files and gives you a set of tools for understanding what is inside the signal. When you load a capture file, the app reads the raw timing data, which is a sequence of positive and negative numbers representing how long the radio signal was on or off at each moment. It then splits that stream into individual packets based on unusually long gaps, so you can see each button press or transmission as a separate frame. From there, you can apply different decoding strategies to convert the timing pattern into a series of ones and zeros, since different types of remote controls encode bits in different ways. The main visual panel shows all the decoded frames as horizontal rows of colored bars, letting you see repeated patterns at a glance. Clicking on a row highlights other frames that look similar, which helps identify consistent parts of a signal from variable parts. A separate analysis function compares frames side by side and tries to label regions as a fixed header, device identifier, command bits, rolling code section, or checksum, though the README is clear that these are heuristic guesses meant to speed up investigation rather than definitive protocol decoding. Once you have identified the structure, you can edit the bits in a selected frame directly in the interface, convert between binary and hexadecimal representations, and save a modified version of the capture file. The intended use case is reverse engineering: capturing a signal multiple times, comparing the recordings across different button presses, and working out which parts of the signal change and which stay fixed. The application is written entirely in Python using the standard library's Tkinter interface toolkit. It requires Python 3.10 or later and has no third-party dependencies. Four sample ceiling fan and ceiling light captures are included for testing.

Copy-paste prompts

Prompt 1
I have a .sub capture file from my Flipper Zero of a garage door opener. Help me load it into the SubGHz Analyzer, split it into frames, and identify which region is the fixed header versus the rolling code.
Prompt 2
I am comparing two .sub captures of the same ceiling fan remote pressing different speed buttons. Using frame comparison, help me figure out which bits encode the fan speed command.
Prompt 3
Write a Python script that reads a Flipper Zero .sub file without the GUI and extracts the raw timing sequences as a list of integers, based on how the SubGHz Analyzer parses the file format.
Prompt 4
After identifying a command in the SubGHz Analyzer bit editor, help me flip two specific bits and save a new .sub file to test a modified transmission on my Flipper Zero.
Open on GitHub → Explain another repo

← jsammarco on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.