Embedded Software Engineer




Working on our satellites offers software developers a chance to interact with the fullest of stacks, and this position can be customized to fit a variety of experiences and skill sets. As a Embedded Software Engineer you will be working on the satellites and their terrestrial communication relays. This role requires a close working relationship with hardware engineers and manufacturing technicians to design, build, and troubleshoot systems. You will have the opportunity to work on various parts of the stack including:

Core systems: Design and implement improvements to our onboard power distribution, computation, and comm systems to enhance functionality, usability, robustness, performance, and integrate new technology
Communications and radio: Leverage innovations in radio design by implementing new communication protocols and integrating new radio hardware
Satellite application platform: Build frameworks for the automated execution of work on the satellite to meet customer requirements or changing operational needs
Candidates must have experience with the following:
Extensive experience with C: interrupt handlers, concurrency, etc.
Strong Linux skills: extensive CLI/scripting familiarity, kernel mods, drivers, etc.
Experience with sensor integration over I2C, SPI, CAN, UART, etc.
Software Design with memory, processor, and real-time constraints
Embedded OS (FreeRTOS, Yocto Embedded Linux)
Scripting Familiarity: Python, Bash, etc.
Power optimization experience
Experience with board bring up
Strong candidates will also possess skills in one or more of the following areas:
General hardware skills (EE, PCB, PSI)
MIPS/RISC profiling and optimizations
Networking (ISO, IP, protocol design)
Domain Knowledge (ADCS, RF, Space)
FPGA expertise (verilog, VHDL)
RF programming (SDR, USRP)