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.



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.