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, 18 games, and a flight down the California coast on a real 3D globe. It runs on the tablet you already have.

⬇ Download APK · 3.12.1 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.

What it does

3
Analog gauges whose needles carry momentum
18
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

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.

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