-
Notifications
You must be signed in to change notification settings - Fork 0
Protocol Overview
SpookyyQ edited this page May 11, 2026
·
1 revision
The IPI FLY PRO uses 16-byte HID payloads. The app prepends Report ID 0x08 before writing the payload to the HID interface.
| Field | Value |
|---|---|
| Vendor ID | 0x3554 |
| Product ID | 0xF517 |
| Usage page | 0xFF02 |
| Usage | 0x0002 |
| Report ID | 0x08 |
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 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 |
| 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.