Personal / hardware protocol research

Fiido Air BLE Tools

Understand the protocol first. Write to the bike only when the evidence is strong.

01 / Purpose

A tool with a reason to exist.

A Python research toolkit and native Android controller for inspecting, documenting and cautiously controlling understood Fiido Air e-bike Bluetooth Low Energy features.

01

Observe BLE traffic and turn unknown packets into documented, testable protocol knowledge.

02

Expose understood read-only bike state through a terminal dashboard and Android interface.

03

Allow only deliberately enabled, confirmed writes for narrowly understood settings.

04

Preserve unknown bits and exclude firmware, braking and other safety-critical control areas.

02 / Decisions

The interesting part is why.

01

Observation before writes

Reverse engineering becomes dangerous when a plausible guess is treated as a proven control.

02

Preserve packed bits

Changing one known setting must not overwrite neighbouring fields whose meaning is still unknown.

03

Unsafe domains excluded

Firmware, braking, controller internals and bypass-style behaviour stay outside the tool’s scope.

04

Two interfaces, one protocol model

Python accelerates investigation while the Android app tests whether the understood subset can become a useful native controller.

03 / Architecture

A deliberate path through the system.

01

Observe

Scan, connect and capture notifications without assuming that an unknown field is safe to interpret.

02

Model

Translate repeatable frames into parsers while unknown and candidate fields remain visibly labelled.

03

Confirm

Cross-check a proposed meaning through repeated stationary observations and protocol tests.

04

Control carefully

A write requires explicit enablement and preserves unrelated packed bits rather than replacing a whole setting byte.

04 / Technology

The working parts.

Python 3BleakBluetooth LEProtocol parsersNative Android JavaAndroid BLE APIsSDK 35Automated tests

05 / State & roadmap

What is real now—and what comes next.

Current
  • The Python toolkit has automated checks and live protocol evidence.
  • The terminal tooling provides inspection and a bounded control surface.
  • A native Android application exists using standard platform BLE APIs.
  • The Android build still needs a physical-phone, stationary bike smoke test.
Planned
  • Continue read-only mapping for unresolved protocol fields.
  • Run stationary Android connection and interaction verification.
  • Promote only repeatedly confirmed fields into the control surface.
  • Keep safety-sensitive and manufacturer-update paths excluded.