BikeControl: Virtual Shifting

In-app purchases
172 reviews
Content rating
Everyone
10K+
Downloads
Content rating
Everyone
Learn more
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image
Screenshot image

About this app

Add virtual shifting to any indoor training app.

With BikeControl (formerly known as SwiftControl) you can shift virtual gears and control your favourite trainer app using a controller you already own: Shimano Di2, SRAM AXS / eTap, Zwift® Click, Zwift® Ride, Zwift® Play, Elite Square Smart Frame®, Elite Sterzo Smart®, Wahoo Kickr Bike Shift®, CYCPLUS BC2, Thinkrider VS200, Bluetooth remotes and gamepads.

▶ Virtual gear shifting
▶ Steering / turning
▶ Adjust workout intensity
▶ Control music on your device
▶ Add virtual shifting to trainer apps that do not support it natively
▶ Adjust gear count, ratios and gearing
▶ More? If you can do it via keyboard, mouse or touch, you can do it with BikeControl

Virtual Shifting in MyWhoosh, Rouvy, TrainingPeaks Virtual and Strappo
BikeControl applies the gear change at the trainer and sends only the resulting resistance to the app. Virtual shifting therefore works in MyWhoosh, Rouvy, TrainingPeaks Virtual, Strappo, Biketerra and Zwift - including apps that have no virtual shifting of their own.

Shimano Di2 and SRAM AXS
Pair the Shimano Di2 or SRAM AXS / eTap shifters you already ride outdoors and use those levers to shift virtual gears indoors. No extra hardware and no adapters: BikeControl reads the shifter over Bluetooth and moves the virtual gear for you.

Open Source
The app is open source and available at https://github.com/OpenBikeControl/bikecontrol/

Supported Apps
Officially supported (built in natively):
▶ MyWhoosh
▶ Rouvy
▶ TrainingPeaks Virtual
▶ Strappo
Also supported:
▶ Zwift
▶ Biketerra.com
▶ FulGaz
▶ Any other app: You can customize touch points (Android) or keyboard shortcuts (Desktop)

Supported Devices
▶ Shimano Di2
▶ SRAM AXS / eTap (every individual button)
▶ WHEELTOP EDS
▶ Zwift© Click
▶ Zwift© Click v2 (see issue #68)
▶ Zwift© Ride
▶ Zwift© Play
▶ Wahoo Kickr Bike Shift, Pro, V1 and V2
▶ CYCPLUS BC2 Virtual Shifter
▶ Thinkrider VS200 Virtual Shifter
▶ Elite Sterzo Smart (for steering support)
▶ Elite Square Smart Frame (beta)
▶ Gamepads
▶ BLE and classic Bluetooth HID devices
▶ Keyboard input
▶ Your phone on the handlebar, steering with its sensors
▶ An affordable open-standard alternative is in the works, supported by all major trainer apps — register at openbikecontrol.org

AccessibilityService API Usage
Important Notice: This app OPTIONALLY uses Android's AccessibilityService API to enable control of training applications through your Zwift devices.

Why AccessibilityService:
▶ To simulate touch gestures on your screen that control trainer apps
▶ To detect which training app window is currently active
▶ To enable control of apps like MyWhoosh, Biketerra.com, and others

How We Use AccessibilityService:
▶ When you press buttons on your Zwift Click, Zwift Ride, Zwift Play, Shimano Di2 or SRAM AXS shifters, BikeControl translates these into touch gestures at specific screen locations
▶ The service monitors which training app window is active, so gestures reach the right app
▶ NO personal data is accessed, collected, or transmitted through this service
▶ The service only performs the touch actions you configure

Privacy and Security:
▶ BikeControl only accesses your screen to perform the gestures you configure
▶ No other accessibility features or personal data is accessed
▶ All gesture configurations remain on your device
▶ The app does not connect to external services for accessibility functions

This app is not affiliated with or endorsed by Zwift, Inc. or Shimano or SRAM or Wahoo or Elite.

Permissions Required
Bluetooth: To connect to your shifters and trainer
AccessibilityService (optional): To simulate touch gestures for controlling trainer apps
Notifications: To keep the app running in the background
Location (Android 11 and below): Required for Bluetooth scanning on older Android versions
Virtual shifting for MyWhoosh, Rouvy & Zwift - with Di2, SRAM AXS or Click
Updated on
Aug 26, 2026

Data safety

Safety starts with understanding how developers collect and share your data. Data privacy and security practices may vary based on your use, region, and age. The developer provided this information and may update it over time.
  • No data shared with third parties
    Learn more about how developers declare sharing
  • No data collected
    Learn more about how developers declare collection

Ratings and reviews

142 reviews
Kal
June 16, 2026
It's good, it allows you to use the Zwift Click v1 with Rouvy, I would like the option the disconnect controllers after an amount of time off inactivity or when the trainer is not connected. I had my Zwift Click stay connected for days and it ran the battery flat.
2 people found this review helpful
Did you find this helpful?
OpenBikeControl UG
June 16, 2026
Great idea!
Leonardo Ocaña
July 24, 2026
Edit - I've been on Android since 2010, having a one-time purchase plus TWO subscription options paywalling me + a timed basic feature definitely justifies my frustration. I felt scammed - Scumbag app. Doesn't work with ThinkRider XXPro+VS200; base purchase is already expensive but it STILL limits virtual shifting to 20min. So they REALLY want you invested in paying for one of TWO subscription tiers - not to mention it completely messed up with my trainer. Deleted and refunded if at all possible
2 people found this review helpful
Did you find this helpful?
OpenBikeControl UG
July 24, 2026
Hi Leonardo, Instead of calling it a scam, whx not contact support to resolve your issues? Depending on your smart trainer, you won't need pro at all to enable virtual shifting. And that's what the trial time is for, to find out what is needed and how it works.
Peter Luscher
July 1, 2026
So incredibly confusing! I was trying to integrate Zwift Click to control myWhoosh. Both BikeControl and MyWhoosh will be running on my Android phone. There are so many options and they are so confusing. After about 3 hours of trial-and-error and working with ChatGPT to debug, I finally came across an *almost* working configuration. Perhaps the app works perfectly. Who would know? The instructions are terrible. Unusable. Someone needs to hire a usability expert.
1 person found this review helpful
Did you find this helpful?
OpenBikeControl UG
July 1, 2026
Trying the best I can. Do you have a suggestion how to improve it? What was the confusing part?

What’s new

**Features**:
• Zwift Click V2: when you use the right side only, the puck no longer falls asleep after a minute of inactivity — and the LEDs stay on.
• Network issues: you can now troubleshoot network related issues, e.g. connection to MyWhoosh
• Virtual Shifting:
- shifting on Zwift Ready trainers now feels instant
- more FTMS trainers are supported
- a new resistance test lets you confirm your trainer really responds