Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

103 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌀 Tacx-Dongle-VS

License: GPL v3 GitHub release (latest SemVer) Platform: ESP32 Platform: Zwift Platform: Rouvy GitHub issues GitHub Discussions

Virtual Shifting (VS) for older Tacx Smart trainers using the LilyGo T-Dongle-S3 and the Tacx-Virtual-Shifting library.


🏁 Overview

T-Dongle-S3 Size

Tacx-Dongle-VS is a self-contained dongle that bridges Zwift’s Virtual Shifting system with older Tacx Smart trainers that never received Garmin’s 2025 firmware update.
It combines a modern ESP32-S3 microcontroller, a built-in ST7735 IPS display, a status LED and when the project code is uploaded, it delivers plug-and-ride compatibility.


🚴 What is Virtual Shifting (VS)?

Virtual Shifting lets you change gears digitally while riding indoors and using the Zwift Click device. Instead of mechanical chain movements, Zwift adjusts resistance and power targets in software, simulating gear ratios.
Recent Tacx trainers implement this natively; older ones cannot — unless a small bridge device translates between Zwift’s BLE protocol and Tacx’s ANT+ FE-C control channel.


🔗 What is the Tacx-Virtual-Shifting library?

The Tacx-Virtual-Shifting Arduino library:

  • connects to Zwift via BLE (as a Smart Trainer peripheral)
  • connects to a Tacx trainer via ANT+ FE-C
  • interprets Zwift’s virtual-gear, target-power, or gradient messages
  • sends equivalent ANT+ commands to the older Tacx trainer

The Tacx-Dongle-VS project wraps this library into a ready-to-use hardware package — the LilyGo T-Dongle-S3.


💡 Why the T-Dongle-S3?

  • ESP32-S3 – dual-core MCU with native BLE and plenty of flash/RAM
  • Integrated display – 0.96″ ST7735 IPS panel for connection & error feedback
  • APA102 LED – multicolor indicator for connection status
  • USB-C – single-cable power + firmware updates

These make the smallest and most affordable all-in-one bridge for Tacx VS.

T-Dongle-S3


For pricing (in the EU) see for example: TinyTronics


🔄 How it Works Together

Schema



The dongle receives Zwift VS events via BLE, translates them using the Tacx-Virtual-Shifting library, and re-emits trainer-compatible ANT+ commands — effectively adding VS to older hardware.

🧩 Dependencies

Library Purpose Source
Tacx-Virtual-Shifting BLE ↔ ANT+ bridge core GitHub Repo
Arduino-GFX ST7735 display driver Arduino Library Manager
Adafruit_DotStar APA102 LED control Arduino Library Manager

🚀 Getting Started

  1. Clone or download this repository.

  2. Unzip/copy the Tacx-Dongle-Virtual-Shifting folder to your Arduino sketch folder.

  3. Install all required libraries (see Dependencies).

  4. Select Board → ESP32S3 Dev Module.

  5. Set all options in Tools → Menu as shown below:

    T-Dongle-S3 Tools Settings

  6. Connect the dongle via USB-C.

  7. Open the Tacx-Dongle-Virtual-Shifting.ino sketch and upload.

  8. On boot you’ll see:

    • a splash screen,
    • Tacx and Zwift connection rows with text + color cues,
    • the APA102 LED mirroring the same connection states.

When both devices show Connected (🟢 green), you’re ready to ride!

Screen #6



🧠 Color Feedback Legend

Color Meaning
🟡 Yellow Scanning & Advertising
🟢 Green Connected
🔴 Red Connection Lost
🔵 Led only Scanning for Tacx
🟠 Led only Advertising for Zwift

🖼️ Screenshots

Screen #1

Screen #2


Tacx-Dongle-VS shows splash screen (during 3 seconds) and starts scanning (for Tacx trainer), device status Led is turquoise blinking!


Screen #3

Screen #4


Tacx-Dongle-VS shows (after 10 seconds) a scanning-timeout, device status Led is red blinking. Finally it keeps scanning (for Tacx trainer) and starts also advertising (for notifying Zwift app), device status Led is now yellow blinking!


🧾 License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
You may freely use, modify, and distribute this project, provided that any derivative work is also licensed under GPL-3.0.


✍️ Future Ideas

  • OTA (Wi-Fi) firmware updates
  • OLED or e-paper variant for low-power builds
  • Optional web-UI configuration

❤️ Contributing

This project is just starting! If you’re interested in testing, coding, writing docs, or just giving feedback, contributions are welcome in Discussions.


See Also other Github projects by the maker.

About

Virtual Shifting (VS) for older Tacx Smart trainers using LilyGo T-Dongle-S3 and Tacx-Virtual-Shifting library

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages