Flight Software Engineer
Job Summary
The Flight Software Engineer at Lynk will be developing flight software applications for commanding and controlling our satellites. This includes developing our satellite command and data handling system software, in addition to supporting software for both its primary (payload) and secondary radio communications functions. The software will initially be tested on the satellite prototype in a lab environment "flatsat" that simulates orbit operations. You will also be responsible for building the telemetry and instrumentation needed to capture data during tests and ensure successful verification and validation.
Core Responsibilities
- Contributing to the design of software solutions critical to the operation of our spacecraft, and developing these as Linux applications that run on satellite flight systems.
- Working in a small, agile team to execute the software development lifecycle (requirements definition, design, implementation, test, and verification) across many individual projects.
- Participating in design and code reviews, and collaborating with the team to uphold best practices for the flight software codebase.
- Supporting Lynk's Operations and Payload teams, who each bring unique demands on the satellite flight systems.
- Creating embedded software to interact with satellite devices and electronics using CAN, I2C, SPI, RS-422, RS-485, and other protocols.
- Implementing inter-application coordination and communications using standard inter-process communication (IPC) mechanisms available in Linux.
- Developing test software to support unit, integration, and system testing of all flight software functions.
- Building the telemetry, instrumentation, and data-capture tooling used to verify and validate flight software on our flatsat.
Basic Qualifications
- Proficiency in at least one systems programming language such as C, C++, or Rust, demonstrated through professional work, significant academic/personal projects, or open-source contributions.
- A willingness to work in the Rust programming language.
- Familiarity with Linux and operating system principles.
- Experience building software that interacts with hardware devices, or a strong systems background and eagerness to work close to hardware.
- An understanding of the phases of the software development life cycle.
- Experience writing automated tests for software you build.
- Familiarity with Git and the fundamentals of CI/CD systems.
- A Bachelor's degree or higher in Software, Computer, Electrical, Aerospace, or a related engineering field, or equivalent practical experience.
Preferred Qualifications
- Several years of professional software engineering experience.
- Network and socket programming experience, particularly for telemetry or commanding interfaces.
- Experience with inter-process communication (IPC) mechanisms.
- Advanced knowledge of the Rust programming language.
- Familiarity with embedded Linux systems, including the Yocto/OpenEmbedded project.
- Experience developing and testing software for SmallSats / CubeSats.
- Experience with hardware-in-the-loop integration and testing.
- Experience with Protocol Buffers, ZeroMQ, gRPC, and Systemd.
ITAR Requirements
To comply with U.S. Government export control regulations (ITAR), applicants must be one of the following: (i) a U.S. citizen or national, (ii) a lawful permanent resident (green card holder), (iii) a refugee under 8 U.S.C. § 1157, or (iv) an asylee under 8 U.S.C. § 1158. Individuals who do not meet these criteria must be eligible to obtain the necessary authorizations from the U.S. Department of State. For more information, please refer to the ITAR guidelines.
Learn about ITAR here.
Job Location
Chantilly, VA
#J-18808-Ljbffr