Build Setup for HISPEC and HSDEV User#

System Requirements#

  • OS: Ubuntu 24.04 LTS (Noble Numbat)

  • Python: 3.12 (Default system version)

Users#

Create hsdev as the administrative user during the OS installation, then give it serial access:

sudo usermod -aG dialout hsdev

Do not create a hispec login. The installer in HISPEC Software creates hispec as the system account the daemons run as, with no login shell, along with the hispec-ops group, and enrols hsdev into that group.

System Package Installation#

Update package list and install essential build tools and dependencies:

sudo apt update
sudo apt install -y \
  software-properties-common \
  build-essential \
  libffi-dev \
  libssl-dev \
  zlib1g-dev \
  libbz2-dev \
  libreadline-dev \
  libsqlite3-dev \
  wget \
  curl \
  llvm \
  libncursesw5-dev \
  xz-utils \
  tk-dev \
  libxml2-dev \
  libxmlsec1-dev \
  liblzma-dev \
  git \
  python3-pip \
  python3-venv \
  python3-dev \
  python3-docutils \
  python3-tk \
  python3-pil.imagetk \
  pyqt5-dev-tools \
  make m4 autoconf \
  xorg-dev xaw3dg-dev \
  libmotif-dev \
  libc6-dev-i386 \
  snmp \
  flex flex-doc bison bison-doc \
  pandoc groff rst2pdf

KROOT Specific Packages#

Packages required for KROOT environments:

sudo apt install -y \
  openconnect \
  subversion cvs at \
  libxt-dev libncurses-dev \
  tcl tcl-dev tcl-thread tcllib tk tk-dev expect \
  tclx tcl-fitstcl libpq-dev \
  g++ gfortran \
  libpam-dev \
  python3-ephem

Additional Instrument Development Packages#

sudo apt install -y \
  libboost-all-dev \
  libopencv-dev \
  libccfits-dev \
  libcfitsio-dev

HISPEC Software#

Install the HISPEC software as described in Installing HISPEC on a host, passing hsdev and every other operator to install.sh. That page is also where updating the host and enrolling operators are covered.

Update Hosts File#

Edit /etc/hosts to include the private network entries for HISPEC, ordered numerically by IP address:

192.168.29.2    hispecserver
192.168.29.3    hispecserverlom
192.168.29.4    specswitchspare
192.168.29.100  feilantronix
192.168.29.101  feiswitch
192.168.29.102  feidcpdu2
192.168.29.104  feilakeshore
192.168.29.105  feieaton1
192.168.29.106  feieaton2
192.168.29.107  feifsm
192.168.29.109  feitrackcomp
192.168.29.110  feidcpdu1
192.168.29.120  feiinficon
192.168.29.122  tmpstanda
192.168.29.123  redatten rediriscontroller
192.168.29.125  blueinficon
192.168.29.129  redswitch
192.168.29.130  redlantronix
192.168.29.131  specblueinficon
192.168.29.132  specredinficon
192.168.29.135  redinficon
192.168.29.136  specredlakeshore
192.168.29.140  hs1wirered
192.168.29.145  host
192.168.29.150  blueettemp
192.168.29.151  blueeaton1
192.168.29.152  blueeaton2
192.168.29.153  bluelantronix
192.168.29.154  hs1wireblue
192.168.29.161  redlakeshore1
192.168.29.162  redlakeshore2
192.168.29.163  redeaton1
192.168.29.164  redeaton2
192.168.29.165  redettemp
192.168.29.166  redeaton3
192.168.29.171  specblueeaton
192.168.29.177  specbluelakeshore
192.168.29.181  specredeaton
192.168.29.185  specredlakeshore

MQTT Broker Setup#

Install the Mosquitto broker and command-line clients, and enable the broker to start on boot:

sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable mosquitto

Configure the Listener#

Create /etc/mosquitto/conf.d/hispec.conf with the listener for the host the broker is served from:

listener 1883 hispec.caltech.edu
allow_anonymous true

Note

The listener address depends on where HISPEC is hosted. hispec.caltech.edu is the current host; replace it with the address of the machine running the broker.

Restart the broker to apply the configuration and confirm it is running:

sudo systemctl restart mosquitto
sudo systemctl status mosquitto

Test the Broker#

In one terminal, subscribe to a test topic:

mosquitto_sub -h hispec.caltech.edu -p 1883 -t "test/topic" -v

In a second terminal, publish a message to the same topic:

mosquitto_pub -h hispec.caltech.edu -p 1883 -t "test/topic" -m "Hello"

The subscriber terminal should print:

test/topic Hello

Disable Unnecessary Services#

Disable unused background services in headless/development setups:

sudo systemctl disable cups.service              # Printing
sudo systemctl disable cups-browsed.service      # Printing browsing
sudo systemctl disable ModemManager.service      # Modem management
sudo systemctl disable apt-daily.timer           # Automatic updates
sudo systemctl disable apt-daily-upgrade.timer   # Background upgrades
sudo systemctl disable avahi-daemon.service      # Zeroconf mDNS

Done!#

System setup prepared for Ubuntu 24.04 LTS under user hsdev.