No description
  • C 55.5%
  • Dart 43.7%
  • Kotlin 0.5%
  • CMake 0.2%
  • Ruby 0.1%
Find a file
2026-09-09 09:43:13 +03:00
.github Arch: move files 2026-08-04 20:09:08 +03:00
android DFU: build libusb from source and add the Android and Windows hosts 2026-09-06 10:04:16 +03:00
example/lib Repo: declare all platforms except web, upgrade universal_ble and add an example 2026-08-08 21:22:52 +03:00
ios Repo: declare all platforms except web, upgrade universal_ble and add an example 2026-08-08 21:22:52 +03:00
lib Client: report the stored name of any held device 2026-09-09 09:43:13 +03:00
linux Repo: declare all platforms except web, upgrade universal_ble and add an example 2026-08-08 21:22:52 +03:00
macos DFU: build libusb from source and add the Android and Windows hosts 2026-09-06 10:04:16 +03:00
proto Protobuf: bump proto submodule to HTTP and WebSocket API 2026-08-08 14:13:23 +03:00
src/libusb DFU: build libusb from source and add the Android and Windows hosts 2026-09-06 10:04:16 +03:00
windows DFU: build libusb from source and add the Android and Windows hosts 2026-09-06 10:04:16 +03:00
.gitignore DFU: build libusb from source and add the Android and Windows hosts 2026-09-06 10:04:16 +03:00
.gitmodules Add network api 2026-06-23 22:28:21 +03:00
CHANGELOG.md Repo: declare all platforms except web, upgrade universal_ble and add an example 2026-08-08 21:22:52 +03:00
LICENSE Initial commit 2026-05-13 22:04:32 +03:00
pubspec.lock Repo: declare all platforms except web, upgrade universal_ble and add an example 2026-08-08 21:22:52 +03:00
pubspec.yaml DFU: build libusb from source and add the Android and Windows hosts 2026-09-06 10:04:16 +03:00
README.md Repo: update readme.md 2026-08-11 12:33:16 +03:00

flipperlib

source pub package license

Flipper Zero client for Flutter: BLE and USB links, the full protobuf RPC surface, CLI passthrough and STM32WB55 recovery.

Built for qUnleashed, a Flipper Zero companion app. Made by ApertureFox Technology at DarkFlippers.

Features

  • Multi-session — several links held at once, exactly one active. activate() reroutes every call and stream instantly; the other sessions stay connected and warm.
  • Transports — BLE over GATT with flow control, USB serial with OS-level hotplug events.
  • RPC — typed extensions per namespace: storage, app, gui, system, gpio, desktop, property, usb, ble. Chunked read/write with progress, request priorities, interleaving.
  • CLI — switch to the text console and back, execute a command, stream raw bytes.
  • Recovery — STM32WB55 DFU in a background isolate: firmware, wireless stack, option bytes.

Platforms

BLE USB serial DFU recovery
Android
iOS
macOS
Linux
Windows

Recovery needs libusb: bundled on macOS, libusb-1.0 from the system on Linux and Windows.

Install

dependencies:
  flipperlib: ^1.0.0

Usage

import 'package:flipperlib/flipperlib.dart';

final flipper = FlipperClient();
await flipper.initialize();                  // BLE permissions

final devices = await flipper.refreshDevices();
await flipper.connect(devices.first);        // RPC mode is entered for you

final listing = await flipper.storageList(ListRequest(path: '/ext'));
for (final response in listing.items) {
  for (final entry in response.file) {
    print(entry.name);
  }
}

await flipper.disconnect();

State arrives on broadcast streams — devicesStream, connectionStream, sessionsStream, messageStream, errorStream — so the UI never polls.

Logging

Off by default. Attach a sink to see anything; trace and debug are compiled out of release builds.

Log.level = FlipperLogLevel.debug;
Log.sink = (level, message) => print('[$level] $message');

See also

  • dartufbt — build .fap packages (Flipper Application Package): SDK deployment, ARM toolchain, compile and link. Desktop only. Build the .fap there, ship it with flipperlib.

License

GPL-3.0. See LICENSE.