Openpelo
A cross-platform tool for installing additional apps on your Peloton.
Install / Use
/learn @doudar/OpenpeloREADME
OpenPelo
<img src="./images/Icon.png" alt="icon" width="150"/>OpenPelo is an easy-to-use app installer and device manager for any Android device — workout machines (Peloton, Echelon, NordicTrack, etc.), tablets, phones, and more. It handles ADB setup automatically, walks you through enabling developer mode, and provides a curated library of apps ideal for fitness equipment screens.
While OpenPelo works with any Android device, it's especially focused on making workout machines more versatile by providing streaming apps, custom launchers, file managers, and fitness tools — all installable with a few clicks over USB or WiFi.
Combine this with SmartSpin2k to add automatic resistance and virtual shifting to your spin bike for the ultimate Zwift setup.

Requirements
- USB cable (for initial setup) or WiFi network (for wireless connection)
- USB debugging enabled on your Android device
Installation
Watch on YouTube:
Option 1: Pre-built Executables (Recommended)
- Go to the Releases page
- Download the appropriate file for your system:
- Windows:
OpenPelo.exe - Mac:
OpenPelo
- Windows:
- Run the downloaded file
Option 2: Run from Source
- Install Python 3.6 or higher:
- Windows: Download from python.org
- Mac: Use Homebrew:
brew install python3
- Download this repository
- Run
python openpelo.py(Windows) orpython3 openpelo.py(Mac). Depending on your python installation, it could also be 'py openpelo.py'.
Usage
Supported Devices
OpenPelo works with any Android device that supports USB debugging, including:
- Workout Machines: Peloton Bike/Tread, Echelon, NordicTrack, Bowflex, and other Android-based fitness equipment
- Tablets & Phones: Any Android tablet, phone, or TV device
- Gen 1 Support: Older devices with armeabi-v7a architecture are supported with dedicated app versions
Option 1: USB Connection (Recommended for First Setup)
-
Connect your Android device to your computer via USB
-
Enable USB debugging on your device:
- Go to Settings → About (or Device Preferences)
- Tap 7 times on Build Number to enable Developer Options
- Go back to Settings → Developer Options
- Enable USB debugging
- (Optional) Disable "Verify apps over USB" for faster installs
Peloton-specific steps: Make sure your bike sensor cable is connected, perform a Firmware Reset from Settings → System, finish setup and select "Skip Home Installation", enable Gabeldorsche in Developer Options, and force quit the "Device Management" app (found in Settings → Apps → System).
-
Run OpenPelo:
- Double-click the downloaded executable
- The installer will automatically detect your device
- Wait for the "✅ Device connected" status
- Select the apps you want to install
- Click "Install Selected Apps" and wait for the installation to complete
Option 2: Wireless ADB Connection
Once Developer Options are enabled (see above), you can connect wirelessly:
-
Enable Wireless Debugging:
- Ensure your device and computer are on the same WiFi network
- Go to Settings → Developer Options
- Enable "Wireless debugging"
- Tap on "Wireless debugging" text to open settings
-
Connect via OpenPelo:
- Run OpenPelo
- Click the "📶 Connect via WiFi" button
- Follow the step-by-step guide
- When prompted, tap "Pair device with pairing code" on your device
- Enter the displayed IP address, port, and pairing code into OpenPelo
- Click "Connect"
- Wait for "Successfully connected!" message
-
Use OpenPelo wirelessly:
- Once connected, you can use all features wirelessly
- Select apps and install them as you would with USB
Features
- Easy-to-use interface — No technical knowledge required
- Works with any Android device — Workout machines, tablets, phones, and more
- USB and WiFi connections — Connect via USB for initial setup, then go wireless
- Curated app library — Launchers, streaming apps, fitness tools, file managers, and more
- Built-in device tools — Screen rotation, developer settings, default launcher management, app uninstallation
- Automatic ADB setup — No need to install or configure ADB manually
- Cross-platform — Runs on Windows, Mac, and Linux
- Gen 1 device support — Dedicated app versions for older armeabi-v7a devices
- mDNS device discovery — Automatically scan for devices on your network
- Configuration-based app management — Easily add new apps via JSON config
For Developers
Adding New Apps
To add new apps to the installer, simply edit the apps_config.json file. The configuration format is:
Automated Builds
This project uses GitHub Actions with Nuitka to build standalone executables for Windows, macOS (Intel and Apple Silicon), and Linux:
- Builds are triggered on pushes to main, pull requests, and when a release is created
- Nuitka compiles
openpelo.pyto optimized binaries while bundling required assets (ADB tools, configuration files, and certifi certificates) - Produced artifacts are attached to releases:
OpenPelo.exe,OpenPelo-macOS-*.zip, andOpenPelo-linux.tar.gz
The build process:
- Sets up a Python environment on each runner
- Installs Nuitka + supporting packages (zstandard, certifi, etc.)
- Compiles OpenPelo with
--standalone --onefileand includes runtime data directories - Packages platform-specific outputs (zip/tar.gz) and uploads them as release assets
To create a new release:
- Go to the Releases page
- Click "Create a new release"
- Tag the version and publish
- GitHub Actions will automatically build, package, and attach the Nuitka executables
Building With Nuitka Locally
If you need to create a build outside of GitHub Actions:
- Install dependencies:
python -m pip install --upgrade pip pip install nuitka zstandard certifi pillow - Run Nuitka for your platform (examples):
- Windows PowerShell
python -m nuitka ` --standalone ` --onefile ` --enable-plugin=tk-inter ` --include-package=certifi ` --include-data-file=apps_config.json=apps_config.json ` --include-data-file=usb_debug_steps.json=usb_debug_steps.json ` --include-data-file=wireless_adb_steps.json=wireless_adb_steps.json ` --include-data-dir=ADB=ADB ` --include-data-dir=platform-tools=platform-tools ` --windows-disable-console ` --windows-icon-from-ico=Icon.ico ` --output-filename=OpenPelo.exe ` openpelo.py - Linux
python -m nuitka \ --standalone \ --onefile \ --enable-plugin=tk-inter \ --include-package=certifi \ --include-data-file=apps_config.json=apps_config.json \ --include-data-file=usb_debug_steps.json=usb_debug_steps.json \ --include-data-file=wireless_adb_steps.json=wireless_adb_steps.json \ --include-data-dir=ADB=ADB \ --include-data-dir=platform-tools=platform-tools \ --output-filename=OpenPelo \ openpelo.py - macOS
python -m nuitka \ --standalone \ --onefile \ --enable-plugin=tk-inter \ --include-package=certifi \ --include-data-file=apps_config.json=apps_config.json \ --include-data-file=usb_debug_steps.json=usb_debug_steps.json \ --include-data-file=wireless_adb_steps.json=wireless_adb_steps.json \ --include-data-dir=ADB=ADB \ --include-data-dir=platform-tools=platform-tools \ --macos-disable-console \ --output-filename=OpenPelo \ openpelo.py
- Windows PowerShell
- Package the resulting binary if needed (zip/tar.gz) before distribution.
{
"apps": {
"App Name": {
"url": "https://download.url/app.apk",
"package_name": "com.example.app",
"description": "Brief description of the app"
}
}
}
Fields:
App Name: Display name in the installer menuurl: Direct download URL for the APK filepackage_name: Android package name (used for installation)description: Brief description of the app
Troubleshooting
-
"❌ No device detected"
- Ensure USB cable is properly connected
- Check that USB debugging is enabled on your device
- Try a different USB cable or port
- Click the "🔄 Refresh" button after fixing the connection
-
"Failed to setup ADB"
- Check your internet connection
- Try running the installer with administrator/sudo privileges
- If using antivirus, temporarily disable it during ADB installation
- Restart the installer and try again
-
Installation Errors
- If an app fails to install, check your device's storage space
- Ensure your internet connection is stable
- Try installing apps one at a time
- Check the error message in the log panel for specific issues
-
Wireless Connection Issues
- "Pairing Failed"
- Verify your device and computer are on the same WiFi network
- Double-check the IP address, port, and pairing code
- Make sure wireless debugging is still enabled on your device
- Try generating a new pairing code
- "Connection Timeout"
- Check your WiFi connection strength
- Ensure no firewall is blocking the connection
- Try moving your computer closer to the WiFi router
- "Connection Failed after pairing"
- The device may have disconnected. Try clicking "🔄 Refresh"
- Try connecting again using the "📶 Connect via WiFi" button
- Restart wireless debu
- "Pairing Failed"

