Installing Incyclist on a Linux box with an ANT+ dongle

A few tricks to get Incyclist up an running on Ubuntu-like systems.

Appimages

As Incyclist is distributed as an Appimage, it runs on all major Linux distributions. The latest image is here: Incyclist AppImage for Linux
There are only a few basic prerequisites that must be met though.

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

Communication between Incyclist app and the bike

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/

That should be it