Close

Initial plan

A project log for Jailbreaking a rowing machine

My rowing machine is almost useless without a $30 per month subscription. I would like to change that.

tom-callahanTom Callahan 10/14/2024 at 17:200 Comments

The rowing machine is basically just an Android tablet. You can get out of the Ergatta app into the stock Android interface by rapidly tapping in the top left corner. An Ergatta rep walked me through this once when an app update was corrupted and I had to use the native browser to download a replacement -- I also installed the app on a Samsung tablet just to see what would happen, and it works (although obviously can't find the rower). If I remember correctly, it runs Android 11.

The Android tablet connects via a USB-A to USB-C wire to a small circuit board mounted on the back. I haven't opened this up enough to get a good look at this board yet, but I can see the edge of it through a gap in the housing.

The second board also has what looks like a 1/8" audio jack on it, with a wire that goes from that, down a channel in the arm of the frame, and out again at the back of the machine, where a short audio jumper cable connects it to another audio jack on the other side of a hinge point, near the pulley that spins when I row to drive the paddles.

My assumptions so far:


1. We only need 2 pieces of information to report on my performance: paddle speed and rowing cadence (strokes per minute). From there everything else can be computed, probably with some magic numbers:

a. Cadence is likely reported directly.

b. Rowing distance is paddle RPM times some number which should be fairly easy to calculate. Paddle circumference probably.

c. Calories burned is probably cadence times distance times another magic number but honestly I don't need this.

d. Split time is just distance divided by time.

2. The signal from the sensors are probably analog, given that it looks like a regular audio cable and that there's a small board between it and the tablet. I am assuming the small board is like an ESP32 or something that reads the analog signal, maybe does some processing on it, and turns into a digital signal, sent over USB to the app. 

So my options are either:

1. Learn how to read the analog signal, hook the sensors up to an SBC with a built-in display and mount that on the side of the main screen. Then I can install Netflix on the main screen...

2. Learn how to read whatever is being sent over USB to the Android tablet, and make my own Android app to run on the tablet.

Option 1 is probably easier (for me anyway). I have a drawer full of ESP32 and Raspberry Pi devices that can substitute for the second board, and once it's in software I can do whatever I need with it. I don't know anything about USB or how to intercept what is being sent over it, and I've only done Android (or iOS) app development using Capacitor, so I've never interacted with device hardware other than the camera.

And whichever method ends up working, the ultimate goals are:

1. Provide basic performance metrics on a screen. This is the big one -- everything else on this list is easy once I have access to the performance data. I'm thinking one of those ESP32 devices with a built-in LCD screen.

2. Log rowing sessions and chart them over time, stored locally.

3. Build a simple online service to put your history in a personal cloud somewhere.

4. Build an integration with Apple Health to report this data -- currently their app does this, but it reports limited information. I have two different "rewards" programs (one through my health insurer, one through my life insurance) that provide small financial rewards for exercise, but the data that Ergatta reports to them doesn't contain the right kind of information for it to count.

Discussions