# qdomyos-zwift: turning a home treadmill into a controllable bike for Zwift

> qdomyos-zwift is a C++ and Qt bridge that talks to treadmills, bikes, ellipticals and rowing machines over Bluetooth and feeds them into cycling and running apps, with auto resistance, auto inclination and heart rate zones derived from the machine's own sensors. It runs on iOS, Android, macOS and Linux, and the repository publishes nightly builds rather than numbered releases.

**cagnulein/qdomyos-zwift** — Zwift bridge for smart treadmills and bike/cyclette

- Repository: https://github.com/cagnulein/qdomyos-zwift
- Website: https://www.qzfitness.com/
- Stars: 881 · Forks: 233
- Language: C++
- License: GPL-3.0
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/cagnulein-qdomyos-zwift

## The bridge sits between your machine and the app

The project is a Zwift bridge for treadmills and bikes, and the name reflects the two halves it connects. On one side is the physical equipment, which speaks Bluetooth Low Energy through the fitness machine protocols. On the other is the training application, which expects to find a controllable bike with a controllable resistance and, on some models, a controllable incline. The application is what makes the experience different from simply running on a treadmill and looking at numbers, because the app can then control the machine. The repository is a C++ project with a Qt front end, and the topic list gives the shape of it: bluetooth, bluetooth-low-energy, zwift, zwift-bridge, qdomyos-zwift, dietpi, raspberry, toorx, and the equipment makers it has been made to work with. The primary language is C++, the licence is GPL-3.0, and the last push was on 2026-10-22.

## Auto resistance and auto incline are the features that matter

The feature tables are organised by category and by equipment type, with columns for bike, treadmill, elliptical and rower, and the entries worth reading are the ones that need hardware support. Peloton real-time resistance conversion and Peloton real-time auto-resistance are marked for the treadmill and the elliptical, each with the possibility to customise it, and Peloton auto speed and auto inclination is marked for the treadmill. On the Zwift side, Zwift auto resistance is marked for the treadmill and the elliptical, and Zwift auto inclination and speed is marked for the treadmill and the elliptical. So the direction of control differs by machine: some equipment can be told to change resistance, and some can only be ridden and have their output read. The Wahoo Dircon row is the one to note, because it says the support is there in order to send data to Zwift or RGT with wifi only, and there is a separate row for one device only support for Zwift and Wahoo RGT, which is about a pairing limitation between the bridge and the Wahoo direct connection. Hardware support for resistance control is the hard part of this whole idea, and the table is honest about which machines have it.

## Heart rate, and estimating wattage when there is no power sensor

Heart rate support is marked across all four equipment types, with the source listed as Apple Watch, ANT+ devices and Bluetooth devices, and heart rate zone customisation is also marked for all four. The entry that stands out is the ability to calculate wattage from heart rate and cadence, marked for bikes only, with the note that it is for bikes that do not have a power sensor. That is a workaround rather than a measurement, and it is the kind of thing an app will accept as a power reading because the alternative is a zero. The rest of the entries in that group are ordinary. A rider whose bike has no power meter therefore appears to the app as producing a plausible number of watts, derived from their heart rate and how fast they are turning the pedals, which is the closest a Bluetooth-only bike can get to looking like a power meter bike.

## The list of apps it pretends to be

The third party compatibility table is a list of the apps the bridge can talk to, and it is longer than the Zwift support that gives the project its name. Zwift compatibility is marked for all four equipment types, as is Wahoo RGT, VzFit, Rouvy and BitGym. Wahoo Dircon is marked for all four as well. IFIT app compatibility and Echelon app compatibility are marked for the bike only. The pattern across the table is that the bike column is filled in far more often than the others, which is consistent with the physics of the situation: a bike trainer or a smart bike is what these apps drive, and a treadmill with resistance control is the exception rather than the rule. The QZ project is careful about the legal side, with a line at the top of the readme stating that it is not affiliated with or endorsed by any subscription service or maker of exercise equipment, which is the right thing for a project that makes other people's hardware work with other people's software.

## Training programs, local videos and auto-follow

The training program table is the feature set that makes the bridge feel like more than a signal forwarder. Builtin video support is marked for all four equipment types, with the note that files could be local or on the cloud. GPX auto following is marked for all four, as are 2D and 3D maps for GPX, ZWO Zwift workout file compatibility and XML workout file compatibility. The entry that is the most interesting is auto follow workout based on your heart rate, which is again marked for all four types, and it depends on the heart rate support working properly. Random workout is marked for all four as well. The statistics table adds an email report at the end of the workout and Strava integration, where the note explains the mechanism, that you press stop at the end of the workout to auto upload it. That detail tells you the integration is not continuous but tied to the end of a session.

## It runs where your phone or your laptop can run Qt

The installation guide is a separate document, and the platform coverage is wide. The readme says the application can run on Macintosh or Linux devices, iOS and Android, and it supports any FTMS-compatible application software and most bluetooth enabled device. There are app store links for both Google Play and the App Store, and the licence is GPL-3.0. The tree shows how multi-platform the project is in practice, with android_openssl and windows_openssl directories for the two platforms that need their own OpenSSL handling, an amazon-store directory for the Amazon store variant, a windows directory, an iOS build directory, a QZ_ESP32 directory for the microcontroller target, and a docker directory. There is also a no GUI version, which is the mode to use on a headless machine such as a Raspberry Pi running DietPi:

```bash
  $ sudo ./qdomyos-zwift -no-gui
```

The theme topics list includes dietpi and raspberry, which is a strong hint at the intended home setup for someone who wants the bridge running on a small machine next to the treadmill rather than on a phone.

## Nightly builds instead of numbered releases

The release history is unusual and worth understanding before you depend on it. There are no numbered releases at all, only nightly builds tagged with the date, such as nightly-2026-10-19, nightly-2026-10-18 and nightly-2026-10-16, and the build for a given day is produced in the early hours of the day itself. The practical consequences are two. You can always get a build from a specific day, which is useful when a change breaks something and you need to go back. And you have no stable version to pin, so a bug you report may have been fixed in the build from this morning, and the answer to a reproducibility question is a date rather than a version. The repository also carries a.github directory with the build automation, ci-scripts for the continuous integration work, a scripts directory, tests and a tools directory, and the last push was on 2026-10-22.

## Conclusion

qdomyos-zwift suits a rider or runner with a piece of equipment that talks Bluetooth but not the app protocol, and who wants it to appear as a controllable bike in a training app rather than as a manual machine. It does not suit someone whose equipment already speaks the fitness app protocol natively, since the whole point of the bridge is that the machine does not. Before you set it up, check whether your specific treadmill, bike or rower is in the supported devices list, and read the FAQ for your model, because the guidance is per device and the common failures are pairing and FTMS compatibility problems rather than the app side.

## FAQ

### What does qdomyos-zwift do?

It is a Zwift bridge for treadmills and bikes. It connects Bluetooth fitness equipment to training apps such as Zwift, Rouvy, Peloton, Wahoo RGT, VzFit and BitGym, and where the hardware supports it, it converts auto resistance, auto inclination and auto speed requests into commands for the machine, and reports heart rate back.

### Does qdomyos-zwift work with treadmills that only report speed?

It supports treadmills for the Zwift connection and for Peloton real-time resistance conversion, with auto speed and auto inclination also marked for treadmills. Whether the control works on a given model depends on the hardware, and the FAQ and the supported devices list are where the per-model guidance lives.

### Which platforms does qdomyos-zwift run on?

Macintosh, Linux, iOS and Android, with app store builds for Google Play and the App Store. There is also a no GUI version, run with sudo ./qdomyos-zwift -no-gui, which suits a headless machine such as a Raspberry Pi running DietPi.

### How are qdomyos-zwift releases published?

There are no numbered releases, only nightly builds tagged by date, such as nightly-2026-10-19, produced in the early hours of the day itself. That means you can always get a build from a specific day, but there is no stable version to pin, so a bug report may already be fixed in the newest build.

## Sources

- [cagnulein/qdomyos-zwift on GitHub](https://github.com/cagnulein/qdomyos-zwift)
- [License: GPL-3.0](https://github.com/cagnulein/qdomyos-zwift/blob/master/LICENSE)
- [Project website](https://www.qzfitness.com/)
- [README](https://github.com/cagnulein/qdomyos-zwift/blob/master/README.md)
- [Releases](https://github.com/cagnulein/qdomyos-zwift/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/cagnulein-qdomyos-zwift
