Skip to content

jaxa/open-set

Repository files navigation

README

This manual introduces the overview and setup method of the Open-SET software platform.

Contents:

1. Overview

This software is a software platform for spacecraft (such as artificial satellites), and Open-SET is an abbreviation for "Open Satellite/Service/Software Enhancement Technology". It was developed by JAXA as a platform that makes it easy to introduce the latest IT technology into spacecraft.

Until now, software for spacecraft has been developed mainly using the C programming language for device control on real-time operating systems dedicated to embedded devices, making it difficult to update the software easily. As the use of spacecraft became more diverse and complex, this situation was affecting the progress of space development. In order to address this issue, it became necessary to advance the digitization of spacecraft (satellite) development, and the [Satellite DX Research Group] (https://www.kenkai.jaxa.jp/research/sasshin/dx.html) was established as a foundation for this. The research group aims to digitize spacecraft (satellites), in other words, to turn them into software.

The Satellite DX Research Group aims to make spacecraft (satellites) more effective and easier to use by building a system that allows software (applications) to be installed and updated in spacecraft as easily as on smartphones, based on the concept of SDS (Software Defined Spacecraft/Satellite).

Open-SET was developed as a demonstration platform for the SDS concept, and this platform makes it easy to apply the latest IT technologies such as cloud-native technology and AI to space. Linux is used as the operating system, and container technology is used to run applications. This makes it easy for application developers to deploy applications developed on a PC on the ground to spacecraft. This concept represents a major innovation in the conventional software development method for spacecraft.

This tutorial explains the development method for object detection using Deep Learning and how to install it on a spacecraft.

2. License

Copyright 2025 Japan Aerospace Exploration Agency (JAXA)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

2.1. Notes on Third-Party Software

This software is released under the Apache License. However, numerous third-party software components are required for its operation.

  • License
    Third-party software is provided under various licenses (such as Apache-2.0, EPL, MIT, and GPL). Users are responsible for checking and complying with their respective licenses, terms of use, and fee structures (especially for software like Docker Desktop).

  • Disclaimer
    This project takes no responsibility for the installation or use of third-party software, or for any damage resulting from its use.

  • Details
    For detailed license information for all dependencies, please refer to [THIRD_PARTY_LICENSE.md] in the repository.

3. Internal Structure

This software provides an interface between the mission and satellite bus system sections of a satellite, as well as a software platform for on-orbit edge computing.

Throughout this page, we will assume that the Heterogeneous High-end On-Board Computer is installed as a computer in the mission section of the satellite, and we will refer to it as MISSION-OBC. The onboard computer (OBC) of the satellite bus system will be referred to as BUS-OBC.

This software (Open-SET) is broadly divided into the following two functions.

  • IFSW (interface between the satellite bus system and MISSION-OBC)
  • Software platform

Internal structure of Open-SET

3.1. IFSW

The BUS-OBC is designed to communicate with the MISSION-OBC via Ethernet. The BUS-OBC and MISSION-OBC communicate in four main ways: control commands, status commands, file transmission and reception, and satellite time distribution. Control commands are sent from the BUS-OBC to the MISSION-OBC. Status commands are sent from the MISSION-OBC to the BUS-OBC at any time to notify the BUS-OBC of control status. File transfer is an interface that allows the BUS-OBC to directly send and receive files with the MISSION-OBC. Satellite time is distributed from the NTP server installed in the BUS-OBC. The IFSW processes these four types of communication.

Table 1 shows the basic Ethernet communication information. The IP address is the default value and can be changed from the configuration file.

Table 1. Basic Ethernet communication information
No Item Specification Remarks
1 Communication standard 1000BASE-T Ethernet (metal)
2 IP address Both sides have fixed IP addresses
MISSION-OBC: 192.168.0.3/24
BUS-OBC: 192.168.0.4/24
IP addresses can be changed

3.2. Software Platform

The software platform has three main functions. These functions are the event hub, FDIR module, and service module. The event hub manages pub/sub messaging via mosquitto within Open-SET. The FDIR module monitors the status of MISSION-OBC by linking telegraf and prometheus, and performs isolation and recovery measures for abnormalities. The service module manages services that run on Open-SET.

4. Prerequisites

4.1. OS

  • Ubuntu Server 24.04 LTS(64-bit, amd64)

4.2. Hardware

The following hardware environment is assumed for Open-SET.

Item Assumed content Related script
Storage device NVMe0, NVMe1, SATA0 /opt/open-set/src/FDIRModule/telegraf_tools/execd_plugin_files/GetStatus_smartctl.sh /opt/open-set/src/IFSW/config/config.ini
GPU AMD /opt/open-set/src/FDIRModule/telegraf_tools/execd_plugin_files/GetStatus_rocm.sh
EDAC Supported /opt/open-set/src/FDIRModule/telegraf_tools/execd_plugin_files/GetStatus_memory.sh
S.M.A.R.T support /opt/open-set/src/FDIRModule/telegraf_tools/execd_plugin_files/GetStatus_smartctl.sh

If your storage device differs from the one assumed here, please refer to [5.2] (#52 - Installation) and [5.3] (#53 - Post-installation environment settings) and make the necessary settings for your user environment. If your GPU, EDAC, or S.M.A.R.T. differs from the assumptions made here, after following the steps in [5.3] (#53-Post-installation environment settings), please comment out the following parts of /etc/telegraf/telegraf.conf.

[[inputs.execd]]
  command = ["bash", "/opt/open-set/sys/get_status_rocm.sh"]
  interval = "2s"
  signal = "STDIN"
  data_format = "influx"
[[inputs.execd]]
  command = ["bash", "/opt/open-set/sys/get_status_memory.sh"]
  interval = "2s"
  signal = "STDIN"
  data_format = "influx"
[[inputs.execd]]
  command = ["bash", "/opt/open-set/sys/get_status_smartctl.sh"]        
  interval = "2s"
  signal = "STDIN"
  data_format = "influx"

Once you have completed the above steps, restart the telegraf service to apply the settings.

sudo systemctl restart telegraf.service

4.3. Software

Software/Library Version Description
Python 3.12.3 IFSW/Open-SET uses applications that run on python3. As a guide, please use version 3.8 or higher.
Inotify 3.22.6 File and directory monitoring software
Mosquitto 2.0.22 pub/sub style message broker
Docker 28.3.2 Used as a container environment.
telegraf 1.36.1 Used for collecting various types of status information.
prometheus 2.47.0 An anomaly monitoring software that works in conjunction with telegraf
alertmanager 0.26.0 An anomaly monitoring software that works in conjunction with prometheus
vsftpd 3.0.5 Daemon software that accepts connections via FTP and sends and receives files. To use key authentication, you will also need to install sftp on the client side.
ufw 0.36.2 Tool for setting up a firewall as a security measure

5. How to install

Please collect the following information, as it will be required when installing in 5.2.

  • Network device name (NIC)
  • Storage device name (NVMe0, NVMe1, SATA)
  • IP address of the satellite BUS-OBC side
  • FTP connection destination information (name, IP address/domain name, username)

The installation process is divided into the following three steps.

  1. Clone Open-SET from the git repository
  2. Install using the installer
  3. Configure the environment after installation

5.1. git clone

Please follow the steps below to clone Open-SET from the git repository and grant the necessary permissions.

  1. sudo mkdir -p /opt/
  2. sudo chown ${USER}:${USER} -R /opt/
  3. cd /opt/
  4. git clone https://github.com/jaxa/open-set.git

5.2. Installation

Installation is performed using the installerinstall_script.sh.

  1. cd /opt/open-set/src/Installer/
  2. vi install_script.sh

Replace the following "username" with your own username and "storage_device_name" with your computer storage device name.

#!/bin/bash

USERNAME="username"
FSCK_DEVICE_NAME="storage_device_name"
  1. sudo /bin/bash install_script.sh
  • python3
  • inotify
  • mosquitto
  • docker
  • prometheus
  • alertmanager
  • ufw
  • shutdown_request
  • telegraf1
  • vsftpd2
  • fsck setup3
  • logger setup
  • IFSW setup4
  • timesyncd
  • Restart all services for Open-SET platform
  • Check Open-SET services status5

For details on the settings for telegraf, fsck, vsftpd, IFSW and timesyncd, please refer to the following.

  • telegraf
  1. sudo visudo opens the sudoers file.

Add the following to the end of the file.

Defaults:telegraf !requiretty, !syslog
telegraf ALL = NOPASSWD: /usr/bin/dmesg, /usr/sbin/smartctl
  1. sudo vi /etc/telegraf/telegraf.conf opens telegraf.conf.

Replace the network device name (NIC) with the appropriate one for your environment (default: enp1s0f0).

[[inputs.net]]
interfaces = ["enp1s0f0"] # Replace "enp1s0f0" with the appropriate interface for your environment.
  1. sudo vi /get_status_smartctl.sh opens get_status_smartctl.sh.

For each of NVMe0, NVMe1, and SSD, specify the device name that actually exists under /dev/.

for device in "nvme0" "nvme1" "sda"
  1. sudo vi /get_status_throughput.sh opens get_status_throughput.sh.

Specify the IP address of the satellite BUS-OBC side below.

IP_BUS_OBC="192.168.0.4"

  • vsftpd

In order to use key authentication with SFTP, you need to register the public key you created in advance on the client side.

  1. First, create the encryption key/public key and set up SSH key authentication. @Client side (Satellite Bus System) sudo vi ~/.ssh/config opens config.

  2. Replace the values in the following [] with the values for your environment.

Host [Destination name]
hostname [IP address/domain name of the connection destination]
user [username of the connection destination]
IdentityFile /home/[username of the connection source]/.ssh/key_openset

  • fsck
  1. Update the installer settings using sudo vi setup_fsck.sh. You will need to change the storage device name to match the contents of /etc/fstab.

  2. Open fstab using sudo vi /etc/fstab.

  3. Change the number in the sixth column to 1. The following is an example of an fstab file.

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p2 during curtin installation
/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX / ext4 defaults 0 1

  • IFSW
  1. sudo vi /opt/open-set/src/IFSW/config/config.ini to set the following configuration values to match your user environment.
Name Default value Discription
IP_MISSION_OBC 192.168.0.3 Target IP address for commanding
IP_BUS_OBC 192.168.0.4 Source IP address for commanding
DIR_MONITORED /export/home/ Directory to be monitored
DB_FILE /mnt/open-set/ifsw-monitoring-file.db File path for monitoring database
DB_IFSW_GLOBAL_VARS /mnt/open-set/ifsw_global_vars.db File path for global variables database
DEVICE_NAME_INFO Name and partition information for storage devices
  1. Set the following configuration values to match your environment using sudo vi /opt/open-set/src/EventHub/WebhookReceiver/config/config.ini. These values should be the same as those in IFSW's config.ini.
Name Default value Discription
DB_IFSW_GLOBAL_VARS /mnt/open-set/ifsw_global_vars.db File path for global
  1. sudo vi /opt/open-set/tests/tools/ifsw_verification/commands/BUSOBC_consts.py to set the following values to match your user environment. Please set these values to the same as the IFSW config.ini.

Name Default value Discription
IP_MISSION_OBC 192.168.0.3 Target IP address for commanding
IP_BUS_OBC 192.168.0.4 Source IP address for commanding

  • timesyncd
  1. sudo vi /etc/systemd/timesyncd.conf opens the configuration file.
  2. Configure the NTP server settings to match your environment.

5.3. Post-installation environment settings

  • Checking the service status

Use the following command to check whether all the software has been installed. If each service is running normally, the installation was successful.

cd /opt/open-set/src/Installer
/bin/bash install_script.sh
# enter No.18 at the prompt.(Check services status)

If there is any software that has not been installed, please try [2.1] (#21-install) again. If the service still does not start, please try the following commands to check the status of the service.

sudo systemctl stop [service name]
sudo systemctl start [service name] 

6. How to use

Refer to the Tutorial section.

About

Mission Application Platform for Satellite Onboard Computing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published