RSS

R10Kit: an unofficial Swift SDK for the Garmin R10

R10Kit is a native Swift SDK that connects directly to the Garmin Approach R10 launch monitor over Bluetooth Low Energy. No first party app, no PC tether. Your iPhone talks to the R10 and reads every shot it emits.

This is an unofficial SDK. The protocol layer is reverse engineered from publicly available work (mholow/gsp-r10-adapter).

The practice swing unlock

The interesting part is what the R10 gives you without a ball. On a full practice swing with no ball, the radar still reports club speed, club path, attack angle, and the full swing timing in milliseconds. R10Kit exposes all of it. That means you can build a tempo trainer around a launch monitor you already own, not just a ball flight tracer.

Ball metrics (ball speed, launch angle and direction, spin rate, spin axis) populate only when the radar sees a ball leave. Everything else populates on every swing.

Screenshots

The repo ships a runnable demo app. It shows connection state, device info, and a live list of recent shots. Tap a shot to see every field the SDK exposes.

R10Kit demo showing connection state, device model and firmware, battery level, and a list of recent shots labeled by club speed

Shot detail showing identity fields and club metrics: club speed, club path, and attack angle

Shot detail scrolled to swing timing and the derived metrics: backswing, downswing, follow through, total duration, and tempo ratio

What it parses

R10Kit does full proto parsing for every shot the device emits: club speed, ball speed, launch angle and direction, spin rate with axis and provenance, attack angle, club face and path, swing timing in milliseconds, shot type, and tilt at impact. The API is AsyncStream first, modern Swift Concurrency, no delegates.

  • iOS 17+, watchOS 10+, macOS 14+. Pure Swift package.
  • 70 unit tests covering framing, COBS, CRC, proto parsing, time base conversion, and the swing rejection detector.
  • Real byte regression fixtures captured from the device, so future changes cannot silently break protocol compatibility.

Tested against an R10 on firmware 4.50 with an iPhone 16 Pro.

Get it

Builds on mholow/gsp-r10-adapter, under the same MIT license.

launch-monitor swift ble