This manual introduces the overview and setup method of the Open-SET software platform.
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.
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.
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.
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
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.
| 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 |
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.
- Ubuntu Server 24.04 LTS(64-bit, amd64)
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
| 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 |
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.
- Clone Open-SET from the git repository
- Install using the installer
- Configure the environment after installation
Please follow the steps below to clone Open-SET from the git repository and grant the necessary permissions.
sudo mkdir -p /opt/sudo chown ${USER}:${USER} -R /opt/cd /opt/git clone https://github.com/jaxa/open-set.git
Installation is performed using the installerinstall_script.sh.
cd /opt/open-set/src/Installer/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"
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
sudo visudoopens thesudoersfile.
Add the following to the end of the file.
Defaults:telegraf !requiretty, !syslog
telegraf ALL = NOPASSWD: /usr/bin/dmesg, /usr/sbin/smartctl
sudo vi /etc/telegraf/telegraf.confopenstelegraf.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.
sudo vi /get_status_smartctl.shopensget_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"
sudo vi /get_status_throughput.shopensget_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.
-
First, create the encryption key/public key and set up SSH key authentication. @Client side (Satellite Bus System)
sudo vi ~/.ssh/configopensconfig. -
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
-
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. -
Open fstab using
sudo vi /etc/fstab. -
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
sudo vi /opt/open-set/src/IFSW/config/config.inito 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 |
- 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 |
sudo vi /opt/open-set/tests/tools/ifsw_verification/commands/BUSOBC_consts.pyto 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
sudo vi /etc/systemd/timesyncd.confopens the configuration file.- Configure the NTP server settings to match your environment.
- 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]
Refer to the Tutorial section.
