A lightweight Docker container for running antfs-cli with all required dependencies preinstalled, including openant.
This project provides a reproducible and up-to-date environment for downloading activity data from Garmin fitness devices using ANT-FS, while addressing installation issues and dependency conflicts found in the original repositories.
- 🐳 Runs
antfs-cliinside a Docker container - 📦 Includes
antfs-cli,openant, and all required Python dependencies - 💾 Persists downloaded activities in a mounted host directory
- 🔌 Provides USB passthrough for ANT+ USB sticks
- ✅ Simplifies setup compared to manual installation
- Docker installed on your system
- A Garmin-compatible ANT+ USB stick connected to the host machine
- A writable directory on the host where downloaded data will be stored
Clone this repository and build the image:
docker build -t local/garmin-antfs .Run the container with USB passthrough and a mounted volume for data:
docker run --privileged --rm -v /srv/docker/antfs:/app/data -v /dev/bus/usb:/dev/bus/usb -t local/garmin-antfs- Make sure the host directory
/srv/docker/antfsexists before running the container. - You may replace
/srv/docker/antfswith any directory of your choice to store downloaded activities. - The
--privilegedflag and USB passthrough (-v /dev/bus/usb:/dev/bus/usb) are required for device access.
All data retrieved by antfs-cli will be stored in the mounted host directory.
Inside the container, files are written to /app/data.
- Connect your Garmin device and ANT+ USB stick to your host machine
- Ensure Docker is installed and running
- Build the image:
docker build -t local/garmin-antfs . - Run the container with proper volumes and device access:
docker run --privileged --rm -v /srv/docker/antfs:/app/data -v /dev/bus/usb:/dev/bus/usb -t local/garmin-antfs
- Collected activity data will appear in
/srv/docker/antfs
- Tigge/antfs-cli – Original ANT-FS implementation
- Tigge/openant – Python ANT+ communication library