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