Open source · WaterRower S4 over USB

WAKE

Your rowing machine already measures everything. WAKE reads the WaterRower S4 monitor over USB and turns it into analog instruments that behave like water, 19 games, and a flight down the California coast on a real 3D globe. It runs on the tablet you already have.

A WaterRower in an Ergatta fit-out, its tablet showing WAKE's home screen of game cards
The machine all of this was written on and measured against — a WaterRower under an Ergatta fit-out, running WAKE on the tablet it already came with. Nothing was added to the hardware: the app reads the S4 monitor over the USB cable that is already there.
⬇ Download APK · 3.24.0 Open WAKE Source on GitHub ♥ Sponsor

1 MB · Android 6.0+ · debug-signed, so Android will ask you to allow installs from your browser. Open WAKE only does something on a tablet that already has it installed — handy on a kiosk-locked rower with no app switcher.

Screenshots

Canyon - fly the rings at the speed they ask for
Canyon - fly the rings at the speed they ask for
Wave Rider - hold the pocket, not the throttle
Wave Rider - hold the pocket, not the throttle
Row Runner - rowing sets the pace, the runner jumps itself
Row Runner - rowing sets the pace, the runner jumps itself
Stroke Coach - the shape of your drive, scored
Stroke Coach - the shape of your drive, scored
Skyline - every strong stroke drops another floor
Skyline - every strong stroke drops another floor
Night Grid - your watts light the town
Night Grid - your watts light the town
River Explorer - a river that forks where you steer
River Explorer - a river that forks where you steer
Zombie Run - the horde is right behind you
Zombie Run - the horde is right behind you
Zone Row - the piece as one instrument
Zone Row - the piece as one instrument

What it does

3
Analog gauges whose needles carry momentum
19
Games driven by your actual power and cadence
900 km
Cesium flight, Golden Gate to San Diego
7
S4 memory addresses decoded live

The instruments

Speed, power and stroke rate on real dials, a water paddle that spins at the measured speed, and a live trace of boat speed over power. The thing that matters is the decay between strokes — rowers call it the run of the boat, and it is the whole reason to take the next stroke. Most apps hold the last reading flat. Here the needle holds its run, eases off, and lands on zero - and the moment the paddle's own pulses stop, it finishes, so nothing hovers above zero on a still machine.

The games

Every game tunes itself to you: WAKE learns your typical power, speed and stroke rate as you row. Row up a never-ending river in first person with a map that fills in; see the shape of every stroke against your best; keep a crew of eight in time; climb from club to Olympic in a regatta with a race a day; race a rival that keeps it close, your best, or a friend's recording. Plus a daily challenge, workout plans in Zone Row, a zombie chase, a runner where every stroke is a jump, and a town you light with your power. Every one shows the same vitals strip so you can read your numbers while you play.

Coast Flight

A CesiumJS globe with satellite imagery and real terrain. Power above 60 W is lift, boat speed is airspeed, and the route flies itself down the California coast. Your progress persists, so the 900 km is a trip across many sessions.

Install

On an Ergatta rower

  1. Restart the rower's screen.
  2. On the log-in screen, tap the top-left corner of the screen 8 times.
  3. Open the browser and go to dustin-gamble.github.io/wake.
  4. Tap Download APK, and allow the install when Android asks. Nothing is replaced and nothing needs root.
  5. Open WAKE. The monitor is already connected, so it finds the rower by itself - tap OK if Android asks to allow access to it. Take a stroke and the gauges come alive.

Ergatta itself is left exactly as it was. To go back, exit WAKE; if Ergatta does not read your strokes afterwards, restart the screen.

On another Android tablet

Open this page in the tablet's browser, download and install, plug in the S4 monitor's USB cable, and open WAKE.

The laptop dashboard is optional — clone the repo and run node server/server.js for live capture, an event stream and protocol decoding. The app finds it on your Wi-Fi by itself.

Make it yours

WAKE was built with an AI coding agent, one build at a time, with the rower rowing and reporting back — and everything learned the hard way is written down for the next agent. Want a different game, zones tuned to your pace, your own colours? Open Claude Code or any coding agent, paste this, and describe the change:

I want to customize WAKE, a rowing app for the WaterRower S4 on an Ergatta tablet.

1. Fork https://github.com/dustin-gamble/wake to my GitHub account, clone my fork,
   and create a branch called my-wake.
2. Before changing anything, read AGENTS.md, then README.md, then CLAUDE.md.
3. Help me with this: <describe what you want - e.g. "a game where I race a shark
   that speeds up whenever my stroke rate drops">
4. There is no emulator for this tablet. Build the APK, tell me how to get it onto
   my rower, and ask me what I see before moving on.

Your agent can't see the tablet, so you are its eyes: install each build, row, and tell it what you see. Made something good? Send a pull request.

Built to be safe on a leased machine

Hardware

Built against a WaterRower in an Ergatta fit-out, Android 9 tablet, S4 monitor 04D8:000A over CDC-ACM. Any WaterRower S4 that exposes USB serial should work; other Android tablets should too. reports welcome

Device: WR USB sensor      Driver: CdcAcmSerialDriver
Decoded: 088 watts · 14A speed · 1A9 rate · 140 strokes
         057 distance · 1A0 heart rate · 1E1 clock