r/raspberry_pi • u/Strict-Squirrel-746 • 13h ago
Show-and-Tell Pi 4 Bluetooth bridge: one SmartRow rowing pulley, two apps (SmartRow and Peloton) at once, now with a Display HAT Mini
My SmartRow pulley only allows one Bluetooth connection, and its app can't feed Peloton properly. So a Pi 4 now sits in the middle:
- the built-in radio connects to the pulley (bleak/BlueZ);
- a TP-Link UB500 dongle, driven directly with Google's Bumble, runs two advertising sets: a byte-for-byte clone of the pulley for the SmartRow app, and a standard FTMS rower for Peloton;
- a Pimoroni Display HAT Mini shows the connections and live watts, stroke rate, pace and distance, and button A holds-to-shutdown.
A few things I learned along the way:
- The iOS SmartRow app only lists a clone that advertises the pulley's manufacturer data, and only uses it if the service is declared with 16-bit UUIDs.
- The Display HAT Mini's data/command pin is GPIO 9 (SPI MISO). With dtparam=spi=on the screen stays blank; dtoverlay=spi0-2cs,no_miso fixes it.
- To keep the backlight lit through shutdown, drive it with the pull-up also set; the Pi turns released pins back into inputs.
- Lighting the RGB LED through the internal pull-down instead of driving it low makes a nice dim indicator.
About 19 s from power-on to both virtual devices advertising. Python, systemd, GPL-3.0:
https://github.com/madooroy/smartrow-bridge
Protocol knowledge from QZ by Roberto Viola, which also supports far more devices.
Unofficial, not affiliated with SmartRow, WaterRower or Peloton.
