Installing Incyclist on a Linux box
Here are a few tricks to help you get Incyclist up and running on Linux systems.
The descriptions here were tested on Ubuntu-based systems.
Some differences exist between 22.04 LTS and 24.04 LTS releases (see below for more details).
One fellow cyclist reported that they worked on Arch Linux too.
Other distributions may work as well.
If you have successfully installed Incyclist on other Linux versions or with other smart trainers using this FAQ, I would be very grateful for any feedback or suggestions for improvement.
Supported Smart Trainers and Devices
Most devices that support ANT+ can be operated using the linux Incyclist app.
See below for information on how to get ANT+ working.
I have tested two smart trainers that work well under Linux:
- Jetblack Volt
- Wahoo KickR Snap.
Some older devices with a serial interface (also known as COM or RS232 interface) work well, especially DAUM bikes and cross trainers.
You will find information on how to get the serial interface working with Incyclist below.
- All Daum Classic and Daum Premium models are supported (i.e. Daum 8008, Daum 8080, Daum 8i)
- I successfully tested a DAUM Ergolyps Cardio Pro with the Linux app.
Devices with BLE interfaces are not yet supported on Linux.
- Please note, that the Windows and MAC versions of Incyclist both support BLE.
- The above-mentioned KickR Snap works well on a Windows PC with BLE.
Appimages and Incyclist download
As Incyclist is distributed as an Appimage, it runs on all major Linux distributions. Download it from
the author's homepage.
There are only a few basic prerequisites that must be met though.
Ubuntu 22.04 LTS and Debian 13 (Trixie)
The FUSE package
On a fresh installed minimal Ubuntu 22.04 LTS instance, Incyclist won't start. If started from the command line, the application throws following error message:
Incyclist complains about missing FUSE
./incyclist.appimage
dlopen(): error loading libfuse.so.2
AppImages require FUSE to run.
You might still be able to extract the contents of this AppImage
if you run it with the --appimage-extract option.
Fixing the missing FUSE
On my system, the problem disappeared after installing an alternative (Xfce) display manager with the xubuntu-desktop package. But the easiest hassle free way to get Incyclist running, is to simply install FUSE from the repository:
Install FUSE
sudo apt install fuse
Fixing the missing FUSE on Debian 13 (Trixie)
Installing fuse does not help on Debian 13. A user reports, that he had to install the package libfuse2t64 containing the library libfuse.so.2.
Ubuntu 24.04 LTS
Missing sandbox
On a fresh installed Ubuntu 24.04 LTS instance, Incyclist won't start. If started from the command line, the application throws following error message:
Incyclist complains about missing sandbox
./incyclist.appimage
[4568:0130/145445.179350:FATAL:sandbox/linux/suid/client/setuid_sandbox_host.cc:169]
The SUID sandbox helper binary was found, but is not configured correctly.
Rather than run without sandboxing I'm aborting now.
You need to make sure that /tmp/.mount_IncyclS9qRnr/chrome-sandbox is owned by root and has mode 4755.
Fixing the missing sandbox
Several online resources report, that the issue lies with the AppArmor configuration in Ubuntu 24.04 and not with the AppImage or Incyclist.
You can disable the sandboxing restriction for all programs using the following command:
Disabling the sandboxing restriction temporarily
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=1
Alternative: make the change persistent
To make the change persistent, edit /etc/sysctl.conf
and add kernel.apparmor_restrict_unprivileged_userns = 0 to that file.
Communication between Incyclist app and the bike
The Linux version of the App does not support Bluetooth yet. But many trainers can communicate with Incyclist using ANT+ or serial communications. Both work fine but some problems might occure.
Problems with the ANT+ Stick (Dongle)
I tried out several brands of ANT+ Sticks. None of them functioned out of the box although the system recognizes them as valid USB devices.
Incyclist was not able to pair a smart trainer or even closed unexpectedly during application start.
It appeared, that they all use the same Dynastream chip set for which I found several sites reporting issues with missing rules for the device.
If your stick doesn't function with Incyclist, it probably has the Dynastream Device ID. I used the lsusb command to find that out:
Find out the Device ID of the ANT+ Dongle
lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 0a5c:2145 Broadcom Corp. BCM2045B (BDC-2.1) [Bluetooth Controller]
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 0fcf:1008 Dynastream Innovations, Inc. ANTUSB2 Stick
Fixing the rules issue of ANT+ Sticks with device ID 0fcf:1008 or 0fcf:1009
The missing rules will prevent non-root users from using the stick for wireless communications.
The fix is to create a file with the rules, and to put it in the right place:
Create the rules file
nano 42-ant-usb-sticks.rules
Content for the rules file
# This files changes the mode of the Dynastream ANT UsbStick2 so all users
# can read and write to it.
#
# This file should go into '/etc/udev/rules.d'. Note that it should go in
# before 73-seat-late.rules for `uaccess` to work.
ACTION!="add", GOTO="openant_rules_end"
SUBSYSTEM!="usb", GOTO="openant_rules_end"
ATTR{idVendor}=="0fcf", ATTR{idProduct}=="1008", ENV{ID_ANT_DEVICE}="1", TAG+="uaccess"
ATTR{idVendor}=="0fcf", ATTR{idProduct}=="1009", ENV{ID_ANT_DEVICE}="1", TAG+="uaccess"
LABEL="openant_rules_end"
Move the file to its final destination
sudo mv 42-ant-usb-sticks.rules /etc/udev/rules.d/
Unplug / Plug the ANT+ Stick
After having having applied the fix you need to unplug/plug the USB stick once
Problems with serial communication ports
Some trainers, particularly DAUM bikes and cross trainers, use serial interfaces, also known as COM ports.
These can be connected directly to a COM port on older PCs, or via USB-serial or Bluetooth-serial adapters.
If you encounter problems, the following causes may apply to your setup:
- missing permissions to use the serial interface
- the serial port is already in use by the ModemManager
- the serial parameters don't match with the settings on your bike
Fixing the permission issue by adding your user to the dialout group
# Replace the user name with your actual user name on the system:
sudo adduser <<user_name>> dialout
Fixing the ModemManager issue
# on my system, the ModemManager took the serial port as soon as I plugged in a USB to Serial adapter
# so I disabled it
sudo systemctl disable ModemManager
Configuring the serial port for my device
# this will put the interface in RAW mode, without flow control using 9600 baud for the communication
# works well with my DAUM Ergolyps cross trainer
sudo stty -F /dev/ttyUSB0 9600 cs8 -cstopb -parenb \
-ixon -ixoff -crtscts \
raw -echo -icanon -isig -iexten \
min 1 time 0
That should be it
-
I performed above steps on 4 different systems and got Incyclist up and running on each of them:
- ubuntu 22.04 LTS,
- xubuntu 22.04 LTS,
- ubuntu studio 24.04 LTS,
- Linux Mint 21 Xfce Edition,