f-xoss

Free your XOSS device: a library for communicating with XOSS bike computers

3 releases

0.1.2 Jun 14, 2023
0.1.1 Jun 9, 2023
0.1.0 Jun 9, 2023


Used in f-xoss-util

MPL-2.0 license

66KB
1.5K SLoC

f-xoss: Free your Xoss device

A cloud-free reimplementation of Xoss companion app

Support

For now, this was only tested with Xoss Nav bike computer. Other Xoss bike computers seem to use the same protocol, however I haven't yet looked into supporting them.

Features

This app allows you to:

  • Download workout data from your device (in Garmin FIT format)
  • Get Satellite GPS assistance data (using u-blox AssistNow Offline API)

Not yet implemented:

  • Upload map data to device
  • Upload tracks to device
  • Editing device settings
  • Customizing panel layouts

Usage

1. Install the app

You can use a bash installer on linux or macOS:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/DCNick3/f-xoss/releases/latest/download/f-xoss-util-installer.sh | sh

And a powershell installer on Windows:

irm https://github.com/DCNick3/f-xoss.git/releases/download/f-xoss-util-installer.ps1 | iex

Alternatively, cargo binstall can be used:

cargo binstall f-xoss-util

Finally, you can build it from source with cargo install:

cargo install f-xoss-util

1.1. (Optional) You can also install shell completion with

bash:

f-xoss-util completion bash > ~/.local/share/bash-completion/completions/f-xoss-util

fish:

f-xoss-util completion fish > ~/.config/fish/completions/f-xoss-util.fish

zsh:

f-xoss-util completion zsh > ~/.zsh/completions/_f-xoss-util

2.0. (Linux-only) Adjust BLE connection supervision timeout

If you are using Linux, you will need to increase BLE connection supervision timeout before pairing, as the default one is too low for the device and leads to timeouts during file transfers.

To change the timeout edit /etc/bluetooth/main.conf and add/uncomment the following line in the [LE] section:

[LE]
ConnectionSupervisionTimeout=400

Note that bluetoothd restart is NOT sufficient to apply the changes, you will need to reboot your system. Unloading all bluetooth-related kernel modules would work too, but there are a lot of dependent ones, so it's easier to just reboot.

2.1. Pair with your device

You would use standard OS tools for this. To switch the Xoss Nav to the pairing mode you need to go to menu and select "Connect XOSS" menu item.

If you have paired with some other device it will show "XOSS#1234" instead. You would need to remove that pairing first by selecting the "Remove" option in the submenu.

3. Generate a config file

Next, you should use f-xoss-util setup command to generate a config file.

First, it will ask you to select the XOSS device from all available bluetooth devices.

Then it will ask you for an u-blox AssistNow token used for updating satellite data. You can get one for free here. You can also just press enter to skip this step, but the satellite data will not be updated.

4. Sync!

Now you can freely use f-xoss-util dev sync to regularly sync your device.

This will ensure the time is set correctly, the satellite data is updated and the workouts are downloaded.

The workouts will be saved in the data directory in Garmin FIT format.

You can use f-xoss-util paths to get the path to the data directory.

Dependencies

~19–50MB
~786K SLoC