GPIO Logic Analyzer v2.01 for Flipper Zero
By: UberGuidoZ | https://github.com/UberGuidoZ/Flipper
Code: Applications/UberGuidoZ/gpio_logic_analyzer/Source
A logic analyzer that monitors all 8 exposed GPIO pins on the Flipper Zero 18-pin header, draws live scrolling waveforms on the 128x64 OLED, and logs every sample to a timestamped CSV file on the SD card, with instructions.
Quick start
- Grab FAP from Release folder, build and side-load (see Building section below), or download from App Store.
- On the Flipper, navigate to Apps > GPIO > GPIO Logic Analyzer.
- Select Instructions to review the voltage limits and control map.
- Select Start Analyzer to begin capture.
- CSV logs are written automatically to
/ext/gpio_analyzer/while capturing.
Screenshots
Screenshots of the various screens can be found here.
Main Menu
| Item | Action |
|---|---|
| Start Analyzer | Opens the live capture screen |
| Instructions | Four-page on-screen reference guide |
| About | Version, author, and project URL |
Analyzer Screen
GPIO Analyzer RUN 100Hz*
---------------------------------
A7 [~~~~|__________|~~~~] H
A6 [_______|~~~~|_______] L
A4 [____________________] L
B3 [~~~~~~~~~~~~~~~~~~~~] H
B2 [____________________] L
C3 [~~~~|_____|~~~~|____] L
C1 [_____|~~~~~~~|______] L
C0 [~~~~~~|______|~~~~~~] H
- Each row is one GPIO pin.
- The waveform shows the last 104 samples, scrolling left as new samples arrive.
- The newest sample is always the rightmost pixel column.
H/Lat the right edge shows the instantaneous pin state.- Vertical lines in the waveform mark state transitions (rising/falling edges).
*after the sample rate in the header means CSV logging is active.
Controls
| Button | Action |
|---|---|
| OK (short) | Toggle capture on / off |
| OK (long) | Clear waveform history |
| UP | Increase sample rate |
| DOWN | Decrease sample rate |
| BACK | Stop capture, close CSV, exit |
Monitored Pins
| Row | Label | Pin Name | Header Pin | Notes |
|---|---|---|---|---|
| 1 | A7 | PA7 | Pin 2 | 3.3V max |
| 2 | A6 | PA6 | Pin 3 | 3.3V max |
| 3 | A4 | PA4 | Pin 4 | 5V tolerant |
| 4 | B3 | PB3 | Pin 5 | 3.3V max |
| 5 | B2 | PB2 | Pin 6 | 3.3V max |
| 6 | C3 | PC3 | Pin 7 | 3.3V max |
| 7 | C1 | PC1 | Pin 15 | 3.3V max |
| 8 | C0 | PC0 | Pin 16 | 3.3V max |
All pins are configured as digital inputs with no internal pull resistor.
They are returned to high-impedance analog mode when you exit the analyzer.
Voltage warning: Do not connect signals above 3.3V to any pin except PA4.
No pull-up or pull-down resistors are enabled. Add external resistors to
your circuit if the signals you are probing have undefined idle states.
FAILURE TO FOLLOW THIS WARNING COULD CAUSE FLIPPER TO LEAK MAGIC SMOKE!
Sample Rates
| Rate | Period | Notes |
|---|---|---|
| 10 Hz | 100 ms | Safest for SD write overhead at any card speed |
| 50 Hz | 20 ms | Good general-purpose rate |
| 100 Hz | 10 ms | Default (balanced speed and reliability) |
| 200 Hz | 5 ms | Fast; occasional sample jitter near SD writes |
| 500 Hz | 2 ms | Best-effort; may drop samples during CSV flush |
Rates are FreeRTOS timer-based. The Flipper OS scheduler and SD write latency can introduce jitter at high rates. For precision timing analysis, use a dedicated logic analyzer. This tool is intended for qualitative signal inspection and basic protocol debugging. YMMV, caveat emptor, all that.
CSV Logging
A new CSV file is created automatically each time you start capture.
Location on SD card:
/ext/gpio_analyzer/gla_YYYYMMDD_HHMMSS.csv
Example: /ext/gpio_analyzer/gla_20240315_143022.csv
File format (comma-separated, CRLF line endings):
sample,A7,A6,A4,B3,B2,C3,C1,C0
0,1,0,1,0,0,1,0,1
1,1,0,1,0,0,1,0,0
2,0,0,1,0,0,1,1,0
...
sample- monotonically incrementing sample number (starts at 0 each session).- Pin columns -
1= HIGH (3.3V),0= LOW (0V). - Column order matches the on-screen row order (A7 top, C0 bottom).
- CRLF endings ensure correct display in Excel and LibreOffice Calc.
If the SD card is absent or the directory cannot be created, the app
continues without logging (no * in the header) and flashes the error LED.
Building
Assumes repo is cloned to gpio_logic_analyzer and requires ufbt:
pip install ufbt # install ufbt once
cd gpio_logic_analyzer
ufbt # build only (outputs build/.../gpio_logic_analyzer.fap)
ufbt launch # build and side-load over USB
To build inside the full firmware tree instead:
# Place gpio_logic_analyzer/ under applications_user/
./fbt fap_gpio_logic_analyzer
To change the custom icon, drop a 10x10 pixel PNG named gpio_analyzer_icon.png overwriting the existing.
File Structure
gpio_logic_analyzer/
application.fam -- ufbt app manifest
gpio_analyzer.h -- shared types, constants, app struct
gpio_analyzer_app.c -- entry point, alloc/free, scene handler table
scene_menu.c -- main menu (Submenu widget)
scene_analyzer.c -- GPIO capture, waveform renderer, CSV logging
scene_instructions.c -- 4-page on-screen reference (LEFT/RIGHT to page)
scene_about.c -- about screen
README.md -- this file