diff --git a/README.md b/README.md new file mode 100644 index 0000000..037f447 --- /dev/null +++ b/README.md @@ -0,0 +1,109 @@ +# ANT+ to Bluetooth LE Bridge + +Bridge an ANT+ cycling power trainer over Bluetooth Low Energy, allowing modern devices that don't support ANT+ to receive power and cadence data. + +## Why this exists + +Modern training apps and devices (phone apps, many power meter displays) support Bluetooth LE but lack ANT+ radios. Previously, hardware-based Bluetooth-to-ANT+ bridge boxes were available for this purpose, but these have now been discontinued. This project provides a simple, software-based alternative using a standard USB ANT+ dongle. This bridge listens to ANT+ data from a wired trainer and re-broadcasts it as a standard Cycling Power Profile service over BLE. + +## How it works + +1. Opens a USB ANT+ dongle (vendor ID `0x0fcf`) and listens for broadcast messages from a specific trainer device number. +2. Parses power (Watts) and cadence (RPM) from the trainer's ANT+ data pages. +3. Exposes a Cycling Power Measurement BLE service via the system's Bluetooth adapter, updating values as new ANT+ messages arrive. + +## Requirements + +- Linux +- D-Bus (for BlueZ Bluetooth management) +- A Bluetooth adapter +- An ANT+ USB dongle +- An ANT+ cycling power trainer + +**Note:** This program must be run as root to access the USB dongle. + +## Tested hardware + +- USB dongle: ANT USBStick2 (Dynastream Innovations, vendor `0x0fcf`, product `0x1008`) + +## Setup + +The Linux `usbserial` driver must be prevented from claiming the ANT+ dongle. Create the following udev rule: + +```bash +sudo tee /etc/udev/rules.d/99-ant-usb.rules > /dev/null <