Open source · WaterRower S4 over USB
Your rowing machine already measures everything. WAKE reads the WaterRower S4 monitor over USB and turns it into analog instruments that behave like water, 18 games, and a flight down the California coast on a real 3D globe. It runs on the tablet you already have.
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.
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.
Pace boats, ghost races against your own best, a zombie that gains on you when you ease off, a side-scrolling runner, a canyon chase, an isometric city that builds itself one block per stroke. Zone Row turns a timed piece into one big instrument: your split across four effort zones and your stroke rate against a target band. Every one shows the same vitals strip so you can read your numbers while you play.
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.
dustin-gamble.github.io/wake.Ergatta itself is left exactly as it was. To go back, exit WAKE; if Ergatta does not read your strokes afterwards, restart the screen.
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.
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 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