SSD1306 Test - Flipper Zero OLED Diagnostic Tool

May 15, 2026 ยท View on GitHub

A Flipper Zero application for testing and diagnosing external SSD1306-based 128x64 I2C OLED displays. Supports both monochrome and yellow-bar (dual-color) display variants. Built for Momentum firmware.

Features

Clock + Status Board

  • Large 7-segment style clock (HH:MM) with blinking colon and seconds display
  • Status bar with battery level, charging indicator, day of week, and date
  • Yellow-bar aware layout: on dual-color displays, the status bar renders as dark text on a filled yellow background; on mono displays, a clean line-separated header
  • Shows Flipper device name at the bottom
  • Updates every second automatically

Test Patterns

  • All White / All Black (dead pixel detection)
  • Checkerboard, Horizontal Lines, Vertical Lines
  • Border (edge pixel verification)
  • Color Zone Test (highlights the yellow/blue boundary on dual-color displays)
  • Page Fill (fills each page sequentially to verify page addressing)
  • Dithered Gradient
  • Shapes and Text rendering

Brightness Control

  • Adjustable contrast from 0 to 255 with real-time preview

Display Commands

  • Invert display
  • Horizontal and vertical flip
  • Force all pixels on (bypasses RAM)
  • Display power on/off
  • Variant toggle (monochrome vs yellow-bar)

Hardware Scrolling

  • Horizontal scroll (left/right)
  • Diagonal scroll (vertical + horizontal)
  • Adjustable scroll speed (8 levels)

Display Info

  • Auto-detects I2C address (0x3C and 0x3D)
  • Live connection status
  • Display variant indicator

Wiring

Connect the SSD1306 OLED to the Flipper Zero GPIO header:

OLED PinFlipper Zero PinGPIO Header
GNDGNDPin 18
VCC3.3VPin 9
SCLC0Pin 16
SDAC1Pin 15

Note: Use the 3.3V pin, not 5V. The Flipper Zero GPIO is 3.3V logic. Most SSD1306 modules work fine at 3.3V. If your module requires 5V for its power rail, you may use the 5V pin (pin 1) for VCC only, but the I2C data lines (SCL/SDA) must remain 3.3V-tolerant.

Building

This project uses ufbt (micro Flipper Build Tool) to compile without needing the full firmware source tree. ufbt downloads the SDK and ARM cross-compiler automatically.

macOS

Requires Python 3 and pip. Install via Homebrew if needed (brew install python).

# Install ufbt
pip3 install ufbt

# Clone and enter the repo
git clone https://github.com/martinbogo/ssd1306_test.git
cd ssd1306_test

# Pull the Momentum firmware SDK
make setup

# Build
make

The compiled FAP will be at dist/ssd1306_test.fap.

Linux (Debian/Ubuntu)

# Install prerequisites
sudo apt update
sudo apt install -y python3 python3-pip git

# Install ufbt
pip3 install ufbt

# Clone and enter the repo
git clone https://github.com/martinbogo/ssd1306_test.git
cd ssd1306_test

# Pull the Momentum firmware SDK
make setup

# Build
make

If pip3 install warns about the PATH, either add ~/.local/bin to your PATH or use pipx install ufbt instead.

For USB access to the Flipper without root, add a udev rule:

sudo tee /etc/udev/rules.d/42-flipperzero.rules << 'UDEV'
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", TAG+="uaccess"
UDEV
sudo udevadm control --reload-rules && sudo udevadm trigger

Windows

Requires Python 3. Download from python.org and ensure "Add Python to PATH" is checked during install.

# Install ufbt
pip install ufbt

# Clone and enter the repo
git clone https://github.com/martinbogo/ssd1306_test.git
cd ssd1306_test

# Pull the Momentum firmware SDK
ufbt update --index-url=https://up.momentum-fw.dev/firmware/directory.json

# Build
ufbt

On Windows the Makefile requires make (available via chocolatey: choco install make, or via MSYS2/Git Bash). Alternatively, run ufbt directly as shown above.

Deploying to the Flipper Zero

USB deploy (all platforms)

Connect your Flipper Zero via USB. Close any other application using the serial port (qFlipper, Flipper Lab, serial terminals).

# macOS / Linux
make launch

# Windows (or any platform without make)
ufbt launch

This uploads the FAP and immediately launches it on the Flipper.

Manual SD card install

Copy dist/ssd1306_test.fap to your Flipper Zero's SD card:

SD Card/apps/GPIO/ssd1306_test.fap

Then navigate to Apps > GPIO > SSD1306 Test on the Flipper.

VSCode Integration

To set up full IntelliSense (autocomplete, go-to-definition into Flipper SDK headers):

make vscode

This generates .vscode/c_cpp_properties.json and compile_commands.json pointing at the Momentum SDK include paths and the ARM cross-compiler.

Makefile Targets

TargetDescription
makeBuild the FAP
make launchBuild and deploy to connected Flipper
make cleanRemove build artifacts
make setupInstall ufbt and pull Momentum SDK
make updateUpdate Momentum SDK to latest
make vscodeRegenerate VSCode IntelliSense config
make lintLint source files
make formatAuto-format source files

Using the Official Flipper SDK

If you prefer to build against the official Flipper Zero firmware instead of Momentum, replace the SDK URL:

ufbt update --channel=release

The app uses standard Flipper Zero SDK APIs and is compatible with both firmwares.

License

MIT