KubOS 1.13 New Solutions

Jesse Coffey
Kubos Tech
Published in
3 min readFeb 26, 2019

If we want KubOS to stay lean and effective, we need to make sure we’re not keeping old solutions or tools around just because we already have them; instead, we should keep them because they still solve a problem. The two major areas that we have identified for improvement for this release of KubOS are our communication methods with the GraphQL-based services and our command line interface tooling.

GraphQL Communication

We are updating our GraphQL-based services to change from a UDP server interface to HTTP. The road that originally led us to UDP is interesting, and the road back to HTTP even more so, so please forgive my upcoming long-windedness.

Why Did We Use UDP?

Originally, when we brought GraphQL services to KubOS, we didn’t have a standard way to incorporate a radio into the ecosystem. While GraphQL has been developed primarily to work over HTTP, we knew that passing HTTP requests over a lossy space-ground link would be the nightmare scenario for spacecraft operators. As a result, we needed to make sure our GraphQL services spoke a protocol that was more link friendly (UDP), so that our customers could create a passthrough for their radio and not have to worry about changing protocols. We were still to able take some advantage of what GraphQL provides, but since we were deviating from the most common use case, we had to let go of a vast world of functionality.

What Changed?

We now have the communications service framework, KubOS’s standard library for incorporating a radio. Not only does it give an easier path for radio integration, but the architecture of the communications service allows us to interact with Kubos services using HTTP without passing all of that weight over the radio link. The framework does this by translating packets between the space-ground protocol and KubOS’s internal protocol, HTTP. Currently, we still only support UDP over the link in the default communications service, but it can be augmented to use whatever protocol is necessary, including CCSDS Spacepackets, CCSDS AOS frames, CSP, AX.25…the list goes on. You can use the framing/protocol that is best suited for your hardware, mission, and use case, not what we dictate. This architecture uses the dedicated space protocols in the one place they were designed to be used: space-ground communication.

Why Did We Go Back?

GraphQL is not only a query language, it’s an ecosystem. Going back to HTTP puts us squarely back into that ecosystem, and gives us all the benefits it provides. Most remarkably, we now have a GUI included for all Kubos GraphQL services called GraphiQL. Not only is it included in our services, but, as you create your payload services, you can use it for all the new functionality you add as well…out of the box. No integration required. On top of that, it’s interacting with the service in the exact same way as you’ll interact with it through the communication service over the radio.

Command Line Interface Tooling

In short, we removed the kubos command from the SDK. It was primarily oriented around our old Kubos RT system (which we no longer use) and building embedded C projects. It depended on a library (yotta) that is no longer being maintained, and was actually creating more problems for us as time went on. But don’t worry! We still support using C within Kubos Linux using CMake. It is too important in the aerospace world to leave behind, and we plan on improving our support for C over time. Since we also support Python and Rust, our ultimate goal is to create an environment that will make development in any of these languages as smooth and easy as possible.

As Always…

Check out the full release notes in the changelog! Since we have made some serious changes, any of you out there developing on KubOS need to update your SDK. Additionally, we highly suggest flashing the newest version of Kubos Linux to your board and then re-compiling all mission applications with the latest code in order to pull in the HTTP changes. We also recommend reading over the new introductory documentation and tutorials, as they have changed drastically with this release. If you have any questions or feedback, or just want to see what’s going on, come talk to us on Slack and see what’s underway on our Community Trello board!

--

--