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.
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.
| 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.
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.
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.
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.
Questions and issues: https://tensortech.co