BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Live dashboard, workouts and history for the Yosuda rowing machine, over Web Bluetooth.
Sports & fitnessJavaScript · CSSGitHub @lanratOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
web-bluetooth app for Yosuda rowing machines
Translation pending
Loading the full README.
Read the full README ↗Rowlink replaces the FED Fitness app for Yosuda rowers (YOSUDA-RM-*). Open it in Chrome or Edge on Android, Windows, macOS, ChromeOS or Linux, wake the rower with a stroke, and tap Connect rower.
It also fixes the jumpy numbers other apps show. The rower's own pace and power readings swing 2× from one stroke to the next, so Rowlink works them out from the rower's distance and stroke counters instead.
Live dashboard
Guided workouts, hands-free
Full screen
History and export
Private
Full screen on a phone in landscape, the way it's meant to be used on a rower mount:
Before each resistance change, a prompt counts you down to it:
Phone in portrait: the live dashboard, and the workouts list with each workout's shape and length.
A saved session, with how closely you hit each step's targets:
Screenshots use the built-in simulator, which the connect screen offers when no rower is nearby.
python3 web/serve.py
Then open http://localhost:8080/web/ in Chrome. On Linux, Web Bluetooth may need chrome://flags/#enable-web-bluetooth. No rower nearby? Use Simulator, or Replay a capture of a real session, on the connect screen.
cd web && npm install && npm test
| App | web/: plain HTML/JS, no build step (details) |
| Design notes | PLAN.md: protocol findings, data pipeline, decisions |
| Recordings | captures/: raw Bluetooth sessions from the real rower, used by the tests and the Replay feature |
iOS (no Web Bluetooth in any iOS browser), Firefox and Safari.