Job Description
Job Description
Position Summary
We are seeking a Senior Embedded Linux Software Engineer to design, develop, and support embedded software solutions for advanced imaging and scanning systems. This role will be responsible for developing Linux-based embedded applications, kernel drivers, manufacturing test software, and system-level integrations while working closely with Electrical, Mechanical, and Systems Engineering teams.
IMPORTANT: Recent, hands-on experience with the Yocto Project is required. Candidates without meaningful Yocto experience will not be considered.
The ideal candidate is a hands-on engineer with deep expertise in Embedded Linux, Yocto, device driver development, and hardware/software integration. This individual will play a key role in bringing next-generation products from concept through production while supporting existing platforms in the field.
Essential Responsibilities
Embedded Software Development
- Design, develop, test, and maintain embedded software for Linux-based products and embedded processors.
- Develop Linux kernel modules, device drivers, and hardware abstraction layers for custom hardware platforms.
- Create software interfaces for hardware utilizing I2C, SPI, UART, GPIO, MIPI-CSI2, and SoC-specific peripherals.
- Develop embedded applications using C, C++, Python, and Shell scripting.
- Configure, customize, build, and maintain Embedded Linux distributions using the Yocto Project.
- Develop scalable, maintainable, and production-ready software architectures.
System Integration & Hardware Bring-Up
- Work closely with Electrical Engineers to support board design reviews, hardware validation, and system bring-up.
- Read and interpret electronic schematics to troubleshoot hardware and software interactions.
- Develop prototypes to evaluate new hardware, firmware, and software technologies.
- Integrate new hardware platforms into existing software environments.
- Rapidly understand and contribute to existing codebases and software architectures.
Product Development & Optimization
- Debug complex embedded systems and resolve software, hardware, and integration issues.
- Implement system diagnostics, logging, and error reporting capabilities.
- Analyze and optimize system performance, reliability, and scalability.
- Participate in design reviews and contribute to technical decisions throughout the product lifecycle.
Manufacturing & Production Support
- Develop embedded software and automated test applications used in manufacturing environments.
- Support manufacturing and technical support teams in troubleshooting production and field-related issues.
- Create tools and utilities that improve product testing, diagnostics, and quality.
Collaboration & Continuous Improvement
- Collaborate with cross-functional engineering teams to develop innovative solutions.
- Participate in code reviews and maintain software development best practices.
- Contribute to build automation, CI/CD initiatives, and release management processes.
- Create and maintain technical documentation related to software architecture, development, testing, and deployment.
Required Qualifications
Education & Experience
- Bachelor's or Master's degree in Computer Engineering, Computer Science, Electrical Engineering, or a related technical discipline.
- 5+ years of experience developing embedded software for commercial products.
- Proven experience supporting products through development, manufacturing, and production environments.
Technical Requirements
- Strong programming skills in C, C++, Python, and Shell scripting.
- Extensive experience with Embedded Linux development.
- Experience developing Linux kernel drivers and user-space applications.
- Experience with U-Boot, Linux kernel configuration, and Linux device tree development.
- Experience with embedded communication interfaces including I2C, SPI, UART, GPIO, and MIPI-CSI2.
- Experience using GCC toolchains, CMake, and related embedded development tools.
- Ability to read and troubleshoot electronic schematics.
- Experience supporting hardware bring-up and board-level debugging.
- Strong debugging and root-cause analysis skills.
REQUIRED - Yocto Project Experience
Candidates must possess hands-on experience with the Yocto Project, including:
- Building and maintaining custom Linux distributions using Yocto.
- Creating and modifying recipes, layers, and BitBake configurations.
- BSP integration and customization.
- Using BitBake, Devtool, and associated Yocto development tools.
- Image generation, package management, and deployment processes.
- Troubleshooting build environments and dependency issues.
- Supporting production-level embedded Linux platforms built on Yocto.
Yocto experience is a mandatory requirement and will be heavily weighted during the evaluation process.
Preferred Qualifications
- Experience with Video4Linux2 (V4L2) and Videobuf2 APIs.
- Experience developing multimedia pipelines using GStreamer, including custom plugins and elements.
- Experience with Linux kernel debugging techniques, including KGDB, OpenOCD, kernel instrumentation, and dynamic debugging.
- Experience with JTAG and ICE debugging tools such as Segger J-Link.
- Experience with FPGA development and integration using Verilog or VHDL.
- Experience working with CCD or CMOS image sensors.
- Experience with motion control systems, motor drives, and electromechanical products.
- Experience setting up and maintaining Docker-based build environments.
- Experience implementing CI/CD pipelines using Jenkins or similar tools.
- Experience developing manufacturing, diagnostic, or test applications on Linux, Windows, or macOS.
- Experience developing products subject to FCC, UL, RoHS, or similar regulatory standards.
Success Profile
The successful candidate will serve as a key technical contributor responsible for the Embedded Linux software stack, from bootloader through application layer. They will be comfortable working directly with hardware engineers, owning complex technical challenges, and delivering reliable, production-ready solutions for advanced imaging and scanning systems.
One recruiting tweak I'd make: change the title to 'Senior Embedded Linux Software Engineer (Yocto Required)'. Putting 'Yocto Required' in the title will eliminate a huge number of unqualified applicants before they ever hit your ATS.