Skip to content

Protocol Overview

SpookyyQ edited this page May 11, 2026 · 1 revision

Protocol Overview

The IPI FLY PRO uses 16-byte HID payloads. The app prepends Report ID 0x08 before writing the payload to the HID interface.

HID Target

Field Value
Vendor ID 0x3554
Product ID 0xF517
Usage page 0xFF02
Usage 0x0002
Report ID 0x08

Frame Layout

Most simple configuration writes use this shape:

byte[0]  global checksum
byte[1]  0x00
byte[2]  0x00
byte[3]  command / ENCAP / config address
byte[4]  payload length or command type, usually 0x02
byte[5]  value
byte[6]  mini checksum, usually 0x57 - byte[4] - byte[5]
byte[7]  0x00
...
byte[14] 0x00
byte[15] tail checksum, usually 0xF1 - byte[3] - byte[4]

Checksum rules used by the app:

byte[0]  = (0x4D - sum(byte[2..=15])) & 0xFF
byte[6]  = 0x57 - byte[4] - byte[5]
byte[15] = 0xF1 - byte[3] - byte[4]

Not every command uses the mini checksum. DPI value writes and block-style writes have special layouts.

Block Reads

Block reads ask the device for 10 bytes of configuration memory starting at a given address.

Template:

08 00 00 <addr> 0a 00 00 00 00 00 00 00 00 00 00 <0x3b - addr>

Known block reads:

Address Purpose
0x00 polling rate and active DPI stage
0x0A lift-off distance, DPI stage 1, DPI stage 2
0x14 DPI stage 3, DPI stage 4
0xAA motion sync, sleep timer, linear correction, waveform control
0xB4 full power mode, rage time, work mode

Status Reads

Purpose Frame
Device status 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4a
Battery query 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49
Active DPI stage scalar read 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3b

Battery reads are currently not reliable enough for the public UI.

Clone this wiki locally