Tensortech

Tensortech APT archive

Debian packages for the Tensortech EGSE (Electrical Ground Support Equipment) and the command line tools that run alongside it. Once this archive is configured, the software updates with the same apt commands as the rest of the system — no manual downloads and no one-off install scripts.

Adding the archive

Run this on the EGSE device, or on a workstation:

sudo install -d -m 0755 /usr/share/keyrings
sudo curl -fsSL https://ppa.tensortech.co/tensortech-archive-keyring.gpg \
    -o /usr/share/keyrings/tensortech-archive-keyring.gpg
sudo curl -fsSL https://ppa.tensortech.co/tensortech.sources \
    -o /etc/apt/sources.list.d/tensortech.sources

Set Suites: in that file to match the host: trixie on the EGSE device, resolute on an Ubuntu 26.04 workstation. It names no architecture, so the one file serves both the arm64 device and an x86-64 workstation.

On the EGSE device:

sudo apt update
sudo apt install tt-egse tt-egse-web
sudo apt upgrade          # to pick up later releases

On a workstation, the command line tools are what is on offer:

sudo apt update
sudo apt install adcs-cli cmg-cli fss-cli

Install only the ones you need — each talks to a different unit. If your machine is not one of the two suites above, or not arm64 or amd64, you can build them from source instead — see below.

To upgrade an ADCS board’s firmware, on the EGSE device:

sudo apt install adcs-fw
adcs-upgrade-v4.3.1 -p /dev/ttyS0 --dry-run

Not every package is in both suites — see below.

What is published

Package What it is trixie resolute source
libtt-base-dev the wire protocol library the command line tools are built from yes yes yes
tt-egse EGSE control daemon and power monitoring UI yes no —
tt-egse-web the browser interface to the same daemon yes no —
adcs-cli ADCS command and telemetry interface yes yes yes
cmg-cli CMG-10m command and telemetry interface, and its firmware updater yes yes yes
fss-cli Fine Sun Sensor command and telemetry interface, and its firmware updater yes yes yes
adcs-fw ADCS board firmware images, and the one command that installs them yes no —

trixie is Debian 13, which the EGSE images are built on; resolute is Ubuntu 26.04 LTS.

The two tt-egse packages are the EGSE device’s own software, so they are published for trixie alone — the suite the device runs. adcs-cli, cmg-cli and fss-cli are the tools an operator points at a unit, which they do from the device and from their own workstation, so they are published for both.

cmg-cli and fss-cli carry no firmware. Both can flash a unit — cmg-cli update and fss-fw-update — but the image is an argument you supply from the matching hardware release, not something this archive holds.

adcs-fw is trixie only, and not because of where the tool runs. It depends on tt-egse — the upgrade drives the EGSE power and PHY commands — and tt-egse is published for trixie alone, so a resolute entry would name a dependency this archive cannot satisfy. Widening it means widening tt-egse first.

The firmware images adcs-fw carries are AES-256-CBC encrypted, and the key that decrypts them lives only in the bootloader on the board. Publishing them here is deliberate: an upgrade a customer cannot fetch is an upgrade that does not happen. A download is not a readable image.

Both suites carry arm64 and amd64, so the command line tools install on an x86-64 workstation and on an arm64 one alike.

Building the command line tools from source

The three command line tools are published as Debian source packages as well as prebuilt .debs, so you can build them for a machine the prebuilt packages do not cover — a Raspberry Pi on an older Raspberry Pi OS, an armhf or riscv64 board, another distribution, or anywhere policy is to compile what you run.

The tensortech.sources above already has deb-src on its Types: line, so:

sudo apt update
sudo apt install dpkg-dev              # once, so apt can unpack a source package
sudo apt build-dep adcs-cli            # the compiler, cmake and libtt-base-dev
apt source --compile adcs-cli          # builds a .deb in the current directory
sudo apt install ./adcs-cli_*.deb

Substitute cmg-cli or fss-cli for adcs-cli. Nothing needs to be run as root except the three apt lines; the build itself runs as you, in the current directory.

On an architecture we do not prebuild

The tools share one library, tt-base, published as libtt-base-dev. On arm64 and amd64 apt build-dep installs it for you and the four commands above are all you need. On anything else — armhf, riscv64, an older Raspberry Pi OS — build the library first, because there is no prebuilt one for your machine:

apt source --compile tt-base
sudo apt install ./libtt-base-dev_*.deb
sudo apt build-dep adcs-cli
apt source --compile adcs-cli
sudo apt install ./adcs-cli_*.deb

tt-base is small and the first step takes seconds.

Changing the library

The three tools are built from one copy of tt-base, so a change to it reaches all of them:

apt source tt-base
cd tt-base-*/ && $EDITOR source/if/product/cmg_api.c
dpkg-buildpackage -us -uc -b
sudo apt install ../libtt-base-dev_*.deb
apt source --compile cmg-cli           # picks up your change

The tools link the library statically, so an installed cmg-cli does not depend on libtt-base-dev and does not need it present to run.

A package you build yourself is version 4.3.1-1 where this archive’s is 4.3.1-1~trixie. ~ sorts below, so your own build ranks higher and apt upgrade will not quietly replace it with the archive’s build of the same revision. The next release, 4.3.1-2~trixie, ranks above both and arrives as an ordinary upgrade. To go back to the archive’s build deliberately:

sudo apt install adcs-cli=4.3.1-1~trixie

If you do not need any of this, deb-src costs one extra index per apt update and you can delete it from the Types: line — nothing else changes.

Packages built for a specific suite carry a ~trixie or ~resolute version suffix, which sorts below the plain version so releases upgrade cleanly within either suite.

Everything here is signed, and apt refuses the archive if the keyring above is missing or does not match it.

Support

Questions and issues: https://tensortech.co