- Kepler
- Toronto, ON
- Full-Time
- 15 days ago
- $159,288–$209,288
Senior Embedded Software Designer.
Before you go
Before you leave us, sign up for our email alerts
We don't do job spam, just the best digital jobs delivered straight to your inbox.
Senior Embedded Software Designer: our view in 3 lines...
- The Role:This role is for a senior embedded software engineer building software for spacecraft and ground systems at a space communications company.
- The Person:The person will design, develop and maintain embedded software, secure communications and low-level components, while creating automated tests, joining architecture and code reviews, and mentoring junior engineers.
- Requirements:The role calls for 6+ years of embedded software experience, a bachelor’s degree in Computer Science, Computer Engineering or Electrical Engineering, proficiency in C/C++, embedded Linux and RTOS environments, and Git-based workflows.
About the role
Our mission is to provide real-time on-orbit connectivity for critical missions, enabling a new era of data-driven intelligence and innovation. With 33 satellites launched to date, Kepler operates the first commercial optical data relay constellation, enabling real-time, continuous space communications while supporting advanced on-orbit compute and hosted payload capabilities.
Key Responsibilities:
-
Design, develop, and maintain reliable, high-quality embedded software for both spacecraft and ground-based systems supporting a growing fleet of satellites
-
Design and implement secure communications capabilities, including encryption, authentication, and key exchange for next-generation data links
-
Build and maintain low-level software components including device drivers, kernel modules, hardware interfaces, and platform services
-
Develop automated tests, validation tools, and technical documentation to support robust software delivery and long-term maintainability
-
Participate in software architecture discussions, design reviews, and code reviews to ensure software quality and system reliability
-
Collaborate closely with cross-functional teams to define system requirements, debug complex issues, and evolve system architecture
-
Identify performance gaps, reliability risks, and architectural shortcomings in existing systems, and drive improvements across the software stack
-
Provide technical leadership, mentorship, and guidance to junior engineers while contributing to engineering best practices and development standards
Required Skills & Qualifications:
-
6+ years of experience developing embedded software for complex, high-reliability systems
-
Bachelor’s degree in Computer Science, Computer Engineering, Electrical Engineering, or equivalent practical experience
-
Strong software engineering fundamentals, including system design, debugging, testing, performance analysis, and maintainable code development
-
Proficiency in C/C++ for embedded systems, including concurrency, interrupt handling, memory-mapped peripherals, and hardware communication interfaces such as SPI, I2C, UART, and CAN
-
Experience developing software for embedded Linux and/or RTOS environments, including familiarity with build systems such as Yocto/OpenEmbedded and operating systems such as FreeRTOS
-
Experience developing low-level embedded Linux components including kernel modules, device drivers, and device tree integrations
-
Experience developing and maintaining automated test frameworks, validation tooling, or hardware/software integration test environments
-
Strong cross-functional collaboration and communication skills, with the ability to work effectively across software, hardware, and operations teams
-
Proficiency with modern software development workflows and tools, including Git-based version control and code review practices
Bonus Points:
-
Master's degree in Computer Science, Computer Engineering, or related field
-
Experience developing software for aerospace applications
-
Experience implementing embedded security solutions such as secure boot, hardware security modules (HSMs), certificate/key management, authentication, or encrypted communications
-
Familiarity with Linux networking concepts and infrastructure, including routing, interfaces, netlink, or packet-processing pipelines
-
Experience developing multi-stage bootloaders
-
Strong knowledge of computer networking and modern networking protocols
-
Experience with RTL (Verilog and/or VHDL) and embedded SoCs

