ironsight 0.0.1

Client library for the FlightScope Mevo+ / Mevo Gen2 binary protocol
Documentation

ironsight

Disclaimer

This project is not affiliated with or endorsed by FlightScope (Pty) Ltd. FlightScope and Mevo are trademarks of their respective owner.

Description

Client library for the FlightScope Mevo+ / Mevo Gen2 binary protocol (TCP port 5100). Handles wire framing, device handshake, keepalive, arming, and shot result parsing. Exposes typed message structs and a synchronous, caller-driven API with no async runtime or heavyweight dependencies.

Legal Basis — DMCA Section 1201(f)

This project is an exercise of the interoperability exception under 17 U.S.C. § 1201(f):

(f) Reverse Engineering.—

(1) Notwithstanding the provisions of subsection (a)(1)(A), a person who has lawfully obtained the right to use a copy of a computer program may circumvent a technological measure that effectively controls access to a particular portion of that program for the sole purpose of identifying and analyzing those elements of the program that are necessary to achieve interoperability of an independently created computer program with other programs, and that have not previously been readily made available to the person engaging in the circumvention, to the extent any such acts of identification and analysis do not constitute infringement under this title.

(2) Notwithstanding the provisions of subsections (a)(2) and (b), a person may develop and employ technological means to circumvent a technological measure, or to circumvent protection afforded by a technological measure, in order to enable the identification and analysis described in paragraph (1), or for the purpose of enabling interoperability of an independently created computer program with other programs, if such means are necessary to achieve such interoperability, to the extent that doing so does not constitute infringement under this title.

The FlightScope Mevo+ uses a proprietary binary protocol over TCP to communicate shot data (ball speed, launch angle, spin, club data, etc.) to companion software. FlightScope does not publish this protocol or provide an SDK for third-party integration. The protocol was reverse-engineered from publicly broadcast WiFi traffic between the device and the official FS Golf app, solely to enable interoperability with third-party golf simulation software.

No FlightScope code is reproduced here. No access controls were circumvented — the device operates as an open WiFi access point, and all traffic was captured from the researcher's own lawfully purchased hardware.

Acceptable Use

This project exists solely to enable interoperability between the FlightScope Mevo+ / Mevo Gen2 and third-party golf simulation software.

It must not be used to:

  • Circumvent licensing or subscription requirements on FlightScope products
  • Unlock paid features (ProPackage, Fusion Tracking, etc.) without purchase
  • Bypass any access controls on FlightScope software or services

The sensor activation exchange (0x90/0x89) is documented only to the extent needed for device communication. The encrypted licensing certificate is opaque to this library and is not decoded, forged, or tampered with.

Issues or discussions proposing circumvention of licensing will be closed and the user blocked.

License

Licensed under either of:

at your option.

Status

Alpha (0.0.x). The protocol is reverse-engineered and still being mapped — the API will change as new message types are decoded and existing ones are refined. This crate follows SemVer: while the version is 0.0.x, any release may contain breaking changes. Once the API stabilizes it will move to 0.1.0, after which breaking changes will bump the minor version until 1.0.

Supported Devices

Device SSID Status
Mevo+ (Gen1) FS M2-XXXXXX Fully supported
Mevo Gen2 FS MG2-XXXXXX Fully supported

Device generation is detected at connection time via the 0xC8 DSP query response (dspType: 0x80 = Mevo+, 0xC0 = Gen2).

Protocol Documentation

Detailed specs live in docs/:

  • WIRE.md — Frame format, byte stuffing, checksum, field encodings, and the complete message catalog (43 decoded message types).
  • SEQUENCE.md — Connection lifecycle, six handshake phases with timing, shot-to-shot message flow, re-arm logic.
  • CAMERA.md — Port 1258 JSON protocol (GVP camera API), port 8080 MJPEG stream, per-shot video pipeline.

Quick Start

See examples/event_loop.rs for a complete standalone example: connect, handshake, arm, poll for shots, and print results.

Dependencies

Minimal by design:

  • thiserror — error enum derives
  • serde (optional, behind serde feature) — serialization support

No async runtime. No logging framework. Standard library TCP only.