Flightkit Getting Started Guide

This document will guide you through installing and setting up Bright Ascension’s Helix Flightkit.

1. System requirements

The flightkit package is built for and tested with Ubuntu 22.04 LTS.

1.1. Java

Flightkit makes use of Java, and installing it will install the openjdk-17-jre-headless package as a dependency.

If you use update-alternatives, or tools like SDKMAN! to manage your Java environment, you must make sure that java uses the OpenJDK 17 JRE installed by installing Flightkit.

You can check this by running java -version after you have installed the flightkit package. You should see this output:

openjdk version "17.0.11" 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Ubuntu-122.04.1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Ubuntu-122.04.1, mixed mode, sharing)

If your output is different, you will need to change your environment configuration before using Flightkit.

1.2. eCryptfs

Due to the age of the meson build system tool available in Ubuntu 22.04, flightkit does not work correctly if used in an eCryptfs encrypted directory.

You can check whether you may run into issues with eCryptfs by running the following command:

df -T $HOME

If the Type column reads ecryptfs then Flightkit workspaces will not be buildable in your home directory.

You can work around this by keeping your workspaces in a directory which is not encrypted by eCryptfs.

2. Installing Flightkit

  1. Download Flightkit from the Bright Ascension download server using the credentials provided in the introductory email.

  2. Open a terminal in your downloads directory and run the following command:

    sudo apt install ./flightkit_2025.6.0-1_amd64.deb

    You can safely ignore any warnings about downloads being "performed unsandboxed as root".

  3. Check that Flightkit has installed correctly by running the following command in a new terminal:

    hfk

    You should see help text about the available sub-commands.

  4. Install the licence file provided to you by Bright Ascension. To do this, first create the required licence directory using the following command:

    mkdir -p ~/.config/brightascension/lab/licence/

    Then copy the licence file you received from Bright Ascension using the following command, run in the same directory as your licence.properties file:

    cp licence.properties ~/.config/brightascension/lab/licence/

The Helix Lab ground software included with Flightkit will not run without a valid licence file in the correct location.

Helix Lab requires an internet connection in order to verify the licence.

3. Updating Flightkit

Flightkit can be updated from an older version by downloading and installing the new package as in the last section.

You should consult the change notes before updating Flightkit. If you would like assistance with the update process, contact Bright Ascension using our customer portal.

Updating Flightkit will update the hfk tooling used to build your flight software. You will need to update your workspaces to use this new tooling. If the major version of hfk changes you will also need to make changes to code you have written.

Updating Flightkit will also remove bundles which were installed with the old Flightkit package (bundles you have installed yourself will not be affected). If you used these bundles in your workspaces, you will need to update your workspaces to use the new versions of the bundles. If the major version of the bundles changes, you will also need to make changes to code you have written.

  1. Download Flightkit from the Bright Ascension download server using the credentials provided in your introductory email.

  2. Open a terminal in your downloads directory and run the following command:

    sudo apt install ./flightkit_2025.6.0-1_amd64.deb
  3. Update each workspace to use the tooling and bundles included in the new version of Flightkit:

    • In the workspace.xml file, update the <Workspace> element’s toolingVersion attribute so it reads toolingVersion="3.1.2"

    • In the workspace.xml file, update any bundle dependency on FlightkitFoundation so it requires version 6.0.0:

          <Dependencies>
            <Bundle name="FlightkitFoundation">
              <Version major="6" minor="0" patch="0"/>
            </Bundle>
            ...
          </Dependencies>
    • In each workspace.xml file, update any bundle dependency on FlightkitExtras so it requires version 4.1.0:

          <Dependencies>
            <Bundle name="FlightkitExtras">
              <Version major="4" minor="1" patch="0"/>
            </Bundle>
            ...
          </Dependencies>
    • Run hfk workspace prepare to update the local resources in the workspace.

    • We recommend you remove the generated and output directories, as these may contain data which is no longer compatible with your new version of Flightkit.

    • If you are updating from one major version to the next, consult the change notes to determine what changes you will need to make to your code.

4. Installing External Toolchains

Some of the platforms that Flightkit supports require you to install external toolchains to build for them.

4.1. Raspberry Pi Zero W

Flightkit support for the Raspberry Pi Zero W assumes you have installed Raspberry Pi OS on the device. We also make use of a specific toolchain for building binaries for the Pi. Refer to the Raspberry Pi Zero W How-to Guide for more information.

4.2. ACS Kryten

Flightkit support for the ACS Kryten requires you to install version 10.3-2021.10 of ARM’s arm-none-eabi toolchain. Refer to the ACS Kryten How-to Guide for more information.

4.3. EnduroSat OBC

Flightkit support for the EnduroSat OBC requires you to install version 10.3-2021.10 of ARM’s arm-none-eabi toolchain. Refer to the EnduroSat OBC How-to Guide for more information.

5. Documentation

Flightkit documentation is installed to the following path:

/usr/share/doc/bright-ascension/helix/flightkit/

The documentation is provided as a static HTML site and is best accessed from the index.html in that directory rather than by browsing the file tree directly.

The documentation is categorised to aid navigation:

  • Tutorials: these documents guide you through activities intended to help you gain familiarity with Flightkit. We recommend that all new Flightkit users work through the tutorials when first getting to grips with it.

  • How-to Guides: these documents give step-by-step instructions about how to configure and use specific parts of Flightkit.

  • Feature Guides: these documents are explanatory guides intended to give a deeper understand of Flightkit’s features.

  • Reference Material: these documents give in depth technical information aimed at readers already familiar with Flightkit.

Also in this directory is the copyright file, which lists the 3rd-party free and open source software used by Bright Ascension in Flightkit, along with their respective licences.

6. Bundles

Bundles are snapshots of workspaces which can be required by your own workspace to enable access to the artefacts contained within them.

Flightkit comes shipped with two separate bundles, FlightkitFoundation and FlightkitExtras.

6.1. FlightkitFoundation

FlightkitFoundation contains artefacts that we consider to be essential for building a typical mission. The bundle also contains demonstration missions which show how these artefacts can be used to produce flight software to run on desktop Linux, the Raspberry Pi, the ACS Kryten and the EnduroSat OBC.

All of these artefacts have been tested on the physical hardware they are designed to run on.

For information on how to use FlightkitFoundation in your workspaces refer to the final section of this guide.

6.2. FlightkitExtras

FlightkitExtras contains artefacts that provide support for interacting with specific physical subsystems. The bundle also contains a demonstration mission showing how these artefacts can be used to produce flight software to run on an ACS Kryten-based spacecraft.

We do not have the facility to test these artefacts against hardware, and as such cannot guarantee their reliability or robustness.

For information on how to use FlightkitExtras in your workspaces refer to the final section of this guide.

7. Running Helix Lab

The Helix Lab ground software included with Flightkit allows you to interact with flight software you are developing.

Helix Lab can be launched by clicking the "Helix Lab" icon in the applications menu.

Guidance on using Helix Lab to control and inspect flight software is given in the tutorials.

As described above, Helix Lab will not run without a valid licence file in the correct location.

8. Running the tutorials

The Flightkit package includes a set of tutorials to help you get to grips with the development kit.

To begin, navigate to a directory of your choice in the terminal and run the following command to extract the tutorials:

hfk-prepare-tutorials

This command will direct you to the tutorials/readme.html file which will guide you through the tutorials.

9. Creating workspaces

Once you’re familiar with Flightkit you can create your own workspace in which you’ll be able to write your own flight software.

To do so, run the following command:

hfk workspace create MyWorkspace

Your workspace should have been created in the MyWorkspace directory.

It is empty, but you can populate it with your own artefacts as described in the Flightkit Workflow Feature Guide.

You can also use artefacts from the bundles provided with Flightkit, bundles provided to you, or bundles you have generated yourself.

To use a bundle you must:

  1. Determine whether the bundle you want to use is installed. To do so you can run the following command:

    hfk bundle list
  2. If the bundle you want to use is not listed by hfk bundle list you must install it. To do so, run the following command, replacing <path-to-bundle-archive> with the path to the bundle .tar.gz file which you wish to use:

    hfk bundle install <path-to-bundle-archive>
    You will likely need to use sudo to run this command because bundles are installed under /usr/share/bright-ascension/…​.
  3. With the bundle installed you should be able to see it in the output of hfk bundle list. You can then add it as a requirement of your workspace. Run the following command in your workspace directory, where <name-of-bundle> and <version-of-bundle> are the name and version of the bundle as they appear in the output of hfk bundle list:

    hfk workspace bundle require <name-of-bundle>:<version-of-bundle>
    You may omit the version of the bundle you require if you want to use the latest version you have installed. Conversely, if you want to use a specific version of a bundle then you must provide a version. For example, to specifically require version 1.6.0 of MyNewBundle, you would run hfk workspace bundle require MyNewBundle:1.6.0.

You are now ready to build your own flight software using artefacts from whichever bundles you require.