Kettler USB to BLE Bridge

Hi Mike,

many thanks! The installation is my problem - I always get errors on installing Kettler2BLE - but I am not an expert to solve these errors. So it would help, if I could get a running version!
At first it could help if you can remember the exact version of OS - as I remember you can try running: cat /etc/os-release ? and which version of node (command: node -v), nvm (command: nvm -v) and npm (command npm -v).
Many thanks for your help!

Hello, here the info:
OS: Raspbian GNU/Linux 11 (bullseye) 32 Bit
Node: 10.24.1
nvm: 0.38.0
I have no npm installed.

Thanks - I will try to get it running!

Hi Candus,
hope you are still in this project?

I got everything running - if I start with “sudo node server.js” every thing is run ning and the Bike (Kettler E5) is recognized by incyclist or mywhoosh.
But - the automatic launch with the raspberry is not running - means the service is running - I can see it under “systemctl status” as

├─kettler.service
│ ├─540 sudo /home/wolfgang/.nvm/versions/node/v18.20.8/bin/node /home/wolfgang/kettlerUSB2BLE/server.js
│ └─546 /home/wolfgang/.nvm/versions/node/v18.20.8/bin/node /home/wolfgang/kettlerUSB2BLE/server.js

(Don´t know why it is 2 times in the list?)

But I could not find the device in Bluetooth?
If I stop the service and run:

sudo /home/wolfgang/.nvm/versions/node/v18.20.8/bin/node /home/wolfgang/kettlerUSB2BLE/server.js

on command line - everything works fine - what do I do wrong?

I have tried to work with kettler.service - here is what I´m using:

[Unit]
Description=KettlerUSB2BLE
After=bluetooth.service
Requires=bluetooth.service

[Service]
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Kettler
WorkingDirectory=/home/wolfgang/kettlerUSB2BLE
ExecStart=sudo /home/wolfgang/.nvm/versions/node/v18.20.8/bin/node /home/wolfgang/kettlerUSB2BLE/server.js
User=wolfgang

[Install]
WantedBy=multi-user.target

Finaly I got it running for my Kettler E5 and Mywhoosh and incyclust on windows with Bullseye and node 18 on a Raspberry Pi 2 W - feel free to contact me for help? Has anyone integrated a gear shifter?

Has anybody tried to connect a Kettler Coach S with the BLE Bridge. Do you think this is possible?

For anyone looking into this topic now (like myself), let me point you to this fork of the orginal project. :backhand_index_pointing_down: This person re-implemented the entire thing to make it run natively on latest Raspbian, which makes all the hassle with installing buster, specific node versions etc. go away.

https://github.com/bbashinskiy/kettlerUSB2BLE

(Note: see the pending pull request towards README on how to handle the pip dependencies on latest OS versions)

Overall I am so happy to have found this Bridge to connect an old non-smart Kettler bike. I’m using a 3B model to connect an ancient Kettler Cross 9 (with Serial port) and it works like a charm.

Interesting !
Thanks

Mein Kettler ERGO C12 hat zwar Bluetooth, aber die Garmin Forerunner 965 erkennt es nicht als Leistungsmesser. Deshalb habe ich eine kleine BLE-Bridge gebaut:

Kettler ERGO C12 ──USB──► Raspberry Pi Zero W BLE► Garmin FR 965Ein Raspberry Pi Zero W (~15 €) liest per USB die Trainingsdaten vom Ergometer und sendet Watt + Kadenz als BLE Cycling Power Service weiter. Die Garmin erkennt den Pi als normalen Leistungsmesser – koppeln, fertig.

Was kann es?Live-Übertragung von Watt und Kadenz an Garmin (oder jedes Gerät mit CPS-Support)Passiver Modus – Widerstand wird weiterhin am Ergometer eingestelltAutostart als systemd-Service, Auto-Reconnect bei USB-UnterbrechungDummy-Modus zum Testen ohne HardwareKompatible ModelleGetestet mit dem ERGO C12. Potenziell kompatibel: ERGO C10, TOUR 300/400/600, ERGO C6/C8/S6/S8. Ältere Modelle (Ergoracer, Racer S/7/9) brauchen eine kleine Code-Anpassung (CM → CD). Nicht kompatibel: HOI-Serie.

GitHub Tenner/kettler-ble-bridge Im Repo: BLE Bridge (Pi + Windows), Terminal-Dashboard, Simulator, vollständige Protokoll-Dokumentation, Setup-Script und systemd-Service.

Falls jemand ein anderes Kettler-Modell hat und es testen möchte – gerne, Feedback und PRs sind willkommen!

I managed to get my Kettler Ergometer E7 working with bbashinskiy/kettlerUSB2BLE on a RPI3. Important to install all updates or Bluetooth didn’t work and update the baudrate to 57600 instead of 9600 in kettler_usb.py without this the RPI doesn’t see the serial information.

I came across this thread while working on a similar solution for old RS-232 Kettler trainers…
The project started with two machines I own: a Kettler E4 ergometer and an older Kettler CTR1 cross trainer. The goal was to keep these perfectly usable machines working without relying on the old Windows software.

The system is now working successfully with both devices.

A Linux computer communicates directly with the Kettler trainer through a USB-to-RS232 adapter. The software currently provides:

  • automatic identification of the E4 and CTR1
  • reading power, cadence, speed, distance, energy and training time
  • target power control
  • freely configurable JSON training profiles
  • constant-power and ramp training
  • CSV training logs
  • browser-based training cockpit, also usable from a smartphone
  • ANT+ heart-rate reception
  • virtual ANT+ Bicycle Power sensor
  • virtual ANT+ Speed/Cadence sensor
  • integration with compatible Garmin watches for activity recording

I have tested two USB-to-RS232 adapters: the LogiLink AU0002B using a Prolific PL2303 and the LogiLink AU0034 using an FTDI FT232R. The AU0034 has been successfully tested with both the E4 and CTR1.

One interesting finding is that the E4 and CTR1 essentially use the same serial command structure. Both respond to the commands ID, VE, ST, CM and PW.

The complete project is available as open source here:

GitHub – stofflkind/kettler-e4-trainer

I don’t own any other old Kettler machines, so I cannot test additional models myself. However, I would be very interested to find out which other RS-232-equipped Kettler trainers use the same protocol.

If anyone still owns an older Kettler machine and would like to try the project, feedback would be very welcome. In particular, the device identification (ID), firmware version (VE) and results of the status query would help determine which other models are compatible.

It would be interesting to build a list of compatible Kettler devices and preserve support for some of this older but still perfectly usable hardware.