Embedded Linux Software Engineer
Role details
Job location
Tech stack
Job description
- Develop flight software applications running on embedded linux platforms for unmanned aircraft
- Collaborate with hardware engineering to bring up new boards, integrate device drivers, and validate interfaces between software and electronics.
- Maintain board support package software for embedded linux platforms
- Create reliable software solutions in compliance with internal and external requirements
- Plan and execute software testing at the module, subsystem, and system levels using automated tools, simulation frameworks, and structured test procedures
- Support deployment, configuration, monitoring, and ongoing maintenance of software across a distributed fleet of embedded devices
- System-level debugging and root cause analysis across hardware and software
Requirements
to join our team. The ideal candidate will be a professional with 3+ years of experience in producing high-quality, robust, embedded software. Experience with Embedded Linux is a must. Come help be part of emerging small, unmanned aircraft technology!
This position is responsible for development of embedded software and requires the ability to work closely with hardware engineers on developing software for embedded devices. This candidate should have experience implementing best practice methods and techniques for all phases of software development, documentation, and version control., Applicant must have strong skills in the following:
- Proficiency developing embedded Linux applications in C/C++, with Python and Bash for tooling and test scripting
- Familiarity with concurrent, multi-process design and service management using systemd
- Practical understanding of networking fundamentals and communication patterns, including TCP/UDP, IPC, and messaging frameworks such as ZeroMQ
- Hands-on experience with Linux kernel internals, device drivers, and device-tree configuration on custom boards
- Experience developing on NVIDIA Jetson or similar embedded SoCs.
- Ability to bring up hardware interfaces and debug drivers for I2C, SPI, UART, CAN, USB
- Low-level microcontroller development experience (STM32, PIC)
- Usage of tools such as oscilloscopes, protocol analyzers, and low-level instrumentation
- Understanding of electrical schematics and PCB layouts
- Experience with Ardupilot is a strong plus, * Describe a peripheral you integrated and the bus it used. What hardware and software tools did you rely on during debugging?
- How does a Linux user space application communicate with a hardware device or kernel driver? Provide one example you have used.
- Which embedded Linux platforms and build systems have you developed on (e.g., Jetson, Yocto, custom BSPs)?
Education:
- Bachelor's (Required)
Experience:
- Embedded Linux, Microcontroller, or RTOS : 1 year (Required)
Benefits & conditions
Pulled from the full job description
- 401(k)
- Health insurance
- Paid time off
- Vision insurance
- Dental insurance
- Life insurance
- Employee assistance program, * 401(k)
- Dental insurance
- Employee assistance program
- Health insurance
- Life insurance
- Paid time off
- Vision insurance