Plain-language note, not legal advice. It records what OpenRide does and does not do at the sensor boundary, so the design intent is on the record.
OpenRide is an independent application for the Peloton Bike (Gen 2). It is not affiliated with, authorized, or endorsed by Peloton Interactive, Inc. Its one point of contact with Peloton software is reading the bike's own sensor values (cadence, resistance, power) so the rider can see their metrics. This document explains how that is done and why it is designed to stay within the lines of interoperability.
- Runs as a normal, sideloaded Android app on the bike's tablet (a device the user owns). Installation uses ADB via the community OpenPelo tool. No root, no bootloader unlock, no firmware modification.
- Binds a system service that already exists on the tablet
(
com.onepeloton.affernetservice) to receive live sensor frames, then renders them. Seedocs/SENSOR_PROTOCOL.md.
- No technical protection measure is bypassed. The affernet service is an
exported, unguarded Android service: it declares no signature permission
and any installed app may bind it. OpenRide binds it through the ordinary,
documented Android
bindServiceAPI. Nothing is decrypted, unlocked, jailbroken, or defeated to reach it. - No Peloton code is copied. The AIDL interfaces and the
BikeDataParcelable undercom.onepeloton.affernetservice/are an independent reconstruction written to match the service's observed on-device wire format. They must carry Peloton's package name and field/transaction ordering because those are the functional interface an interoperating client is required to speak — the same category of functional interface material treated as fair use in Google v. Oracle. OpenRide copies no implementation. - Only functional facts are used. Field order in a Parcel and the power→speed curve are facts dictated by the hardware/protocol, not creative expression; under the merger doctrine there is essentially one way to express them correctly.
- No servers, accounts, or networks are touched. OpenRide never contacts Peloton's servers, never uses Peloton credentials, and reads only data produced locally by hardware the user owns. There is no unauthorized access to any computer system.
- No Peloton content or brand assets. OpenRide ships no Peloton source, artwork, logos, fonts, audio, video, or class content. "Peloton" appears only descriptively (to say what hardware the app runs on) and as functional identifiers required by the binder interface.
The technique of binding the on-device sensor service was publicly demonstrated
by grupetto. grupetto ships no
license, so OpenRide treats its code as all-rights-reserved and copies none of
it. OpenRide's sensor path is an independent AIDL-based reimplementation that
also decodes newer struct fields grupetto's decompiled class does not contain.
See THIRD_PARTY_NOTICES.md.
"Peloton" and "Peloton Bike" are trademarks of Peloton Interactive, Inc. OpenRide uses them nominatively — only as needed to identify the compatible hardware — and does not use Peloton's logos, stylized marks, or trade dress. OpenRide does not imply sponsorship or endorsement.
OpenRide exists so an owner can see and keep their own ride data on hardware they own. It is not a tool for accessing Peloton's subscription content, and it neither contains nor unlocks any such content.