Ex-Alta 1 vs Ex-Alta 2
Software
Despite the software design of Ex-Alta 1 being well made in terms of raw functionality, it contained some drawbacks that reduced the software’s readability, maintainability, and reusability. To make a higher quality open-source software available to other CubeSat teams, significant changes were made to Ex-Alta 2 to ensure that the software was useful and reusable for future missions, and that the code was easy to maintain and understand.
One major change that was made was the use of Python as the ground station scripting language instead of Forth. The Forth language was less popular and was unfamiliar to many people compared to Python. Moreover, the legacy Forth command response relied heavily on manual control by operators. It took days for operators to use Forth to control the satellite. Therefore, Python, as a more well-known programming language, was introduced as the scripting language to build the ground station architecture. Compared with Forth, Python was much easier to write, read, maintain, and understand, which made the satellite itself much easier to automate. By using Python to write commands, operators at the ground station received asynchronous responses. This improvement greatly enhanced the efficiency of the ground station operation team, as members no longer needed to wake up at midnight to operate the satellite.
The new scripting language also brought another convenience: the new communication system. For Ex-Alta 1, members needed to install and configure the operation platform themselves. They had to learn the Forth keywords, which reduced the efficiency and productivity of maintaining the satellite. Ex-Alta 2, however, had a more user-friendly interface for operators to communicate with the satellite—a website using Python as the backend language was created. The new interface was hassle-free and required no additional programming knowledge to use.
The software layout of Ex-Alta 2 followed the principles of object-oriented design, with each module responsible for a specific functionality. There were also several significant improvements in the network layer. A service-oriented architecture (SOA) was introduced in this layer. Each system was assigned 64 services without data handling, which reduced the workload of the development team. The new black-box architecture made each service and sub-service more independent, ensuring that business actions did not interfere with one another. The new design methods also reduced implementation redundancy. For example, the service for the Electrical Power System (EPS) did not need to be implemented because EPS had its own SOA using CSP, which could update and request EPS system data from the ground directly.
This new layout also included improvements in testing methods. During the development of Ex-Alta 1, testing methods were simply appended to completed code. For normal operations, test results were printed directly to GomShell. A major shortcoming was that the On-Board Computer (OBC) could not be interacted with during these operations. Another testing approach in Ex-Alta 1 involved running all tests or a selected subset, but this method was time-consuming since it required the device to be reset every time tests were executed.
For Ex-Alta 2, the optimized testing scheme provided each team with a more user-friendly procedure. If users needed to test the Subsystem Equipment Handlers (EH) layer or other layers—such as the Subsystem Hardware Abstraction Layer (Layer 2), Telecommand/Telemetry Handling and OSL Network layers (Layer 3), or the On-board Services layer (Layer 4)—they could do so independently. The EH layer was tested using CMock and Ceedling frameworks, while Layers 2, 3, and 4 were tested via manual regression using the ground station command-line interface and UART/Serial interface. Unlike the time-consuming methods used in Ex-Alta 1, this new approach allowed for individual function testing, saving time for the team.
Other differences between Ex-Alta 1 and Ex-Alta 2 included changes to the file system, compression library, and repository structure. Ex-Alta 2 introduced a more redundant file system to improve system reliability and incorporated a compression algorithm to reduce image data loss. Compared to Ex-Alta 1, Ex-Alta 2 also included an additional repository to separate production and development components, making development tracking clearer and improving productivity and efficiency.
By Viet Quang Nguyen
This page was last updated June 2025