Your phone. A pole. A motorcycle sim controller.
TeleBike turns a phone mounted on a simple handlebar rig into a low-latency motion controller for motorcycle sims. Lean the rig, turn the bars — the phone streams its sensors to your Windows PC, and your game just sees a controller.
Windows + Android · free · in development — no packaged download yet.
how it works
A phone sits at the center of the handlebars, a crossbar on top of the pivot pole — a T shape, like an upside-down push broom. The pole's floor end is the pivot; you hold the bars and move the whole rig. Three motions, three axes:
| You do | Phone measures | Game gets | Meaning |
|---|---|---|---|
| Tilt the pole side to side | Roll | Left Stick X | Bike lean — the primary steering input |
| Tilt the pole toward / away from you | Pitch | Right Stick Y (configurable) | Rider body lean forward/back |
| Rotate the pole about its own length | Yaw | Blend into steer, or its own axis | Handlebar turn (counter-steer) |
The Android app streams one packet per sensor sample over UDP — USB tethering preferred, Wi-Fi works too. A small Python receiver on the PC filters, maps and feeds a ViGEmBus virtual controller, so any game that takes a gamepad takes TeleBike.
features
⚡Low latency by design
One UDP datagram per sample straight from the sensor loop — no cloud, no relay app, no video stream. USB tethering keeps it off your Wi-Fi entirely.
🎛Fully custom mapping
Per-axis range, deadzone, response curve, inversion and smoothing — plus yaw_into_steer to blend handlebar turn into the lean axis for counter-steering feel. All in one config file, no rebuild.
🎮Looks like a real controller
The receiver drives a ViGEmBus virtual pad. If your sim takes a gamepad, it takes TeleBike — no per-game plugins.
🧭Drift handled
Yaw is measured relative to your last Re-center: stand the rig upright, bars square, one tap and you're zeroed again.
🔩Hardware-ready
Throttle and brakes are planned as real hardware — levers and a twist throttle on Hall-effect sensors — merging into the same virtual pad later. The mapping stays open for it.
🔓Free and local
Self-written, free, and everything stays on your own network. Test without the phone using the included test sender.
quick start
- PC, once. Install ViGEmBus, then
pip install -r pc/requirements.txt. - PC, every session. Run
.\pc\run.ps1and leave it running — it creates the virtual controller and prints live axis values. - Phone. Install the TeleBike app, plug into the PC over USB and enable USB tethering (Wi-Fi on the same LAN also works). Open TeleBike, tap Find PC, then Start.
- Zero it. Stand the pivot pole upright with the handlebars square and tap Re-center. Ride.
python pc/test_sender.py feeds the receiver synthetic packets so you can verify the controller end to end.tuning
Everything lives in pc/config.json and applies without a rebuild:
| Setting | What it does |
|---|---|
| Per-axis range (degrees) | How far you physically lean for full stick deflection |
| Deadzone & curve | Kill jitter near center; shape the response toward the edges |
| Inversion | Flip any axis to match your sim |
| Smoothing | Trade a little latency for steadier input |
yaw_into_steer | Blend handlebar turn into the lean axis — one steering axis with counter-steer feel |