Position Description
Established in 2005 and based in Charlotte, North Carolina, Snap One is a manufacturer and exclusive source of A/V, security, control, networking, and remote management products for professional integrators. An industry leader in the pro-install channel, Snap One helps integrators build their businesses by providing a wide range of high-quality products, easily accessible through an intuitive website and backed by award-winning service and support. With a vast catalogue of today’s most popular brands, Snap One is the premier choice for professional installers across the globe. With 28 pro stores in thee-commerce One blends the benefits of ecommerce with the convenience of local stores. Additional information about Snap One and its products can be found at www.snapone.com.
The Staff Embedded Linux Software Engineer will report to the Joint Product Development Software Engineering Senior Manager and be responsible for various application development within Linux on embedded devices. This position will be required to work effectively in a fast-paced environment, have proven experience managing priorities and be comfortable working in an environment with fluid schedules and loose product requirements. The successful individual will demonstrate intellectual curiosity, self-motivation, accountability, attention to detail and business acumen.
Specific Responsibilities
- Leverage the Hailo TPU SDK to consume network camera streams for AI analysis.
- Process H264/H265 network streams using gstreamer for manipulation and streaming/saving. Should be familiar with HLS and other industry encoding standards.
- Must be able to debug complex issues including low level memory mapping in Linux.
- Should have a good understanding of various AI models including yolov5 and yolov8.
- Assist in the development and configuration of kernel, bootloader, and driver level software.
- Understand how to consume and build a REST API server; connect features to API functions.
- Implement security in the REST server, local UI, and other interfaces with input from cyber security.
- Create unit tests, automated testing and upkeep of existing test tools.
- Work closely with our data science team on AI model modification and implementation.
- Provide support to the internal test and beta teams as issues arise.
- Work with the Product team to define new features including AI detection types, regions of interest, stream stitching, event aggregation, line crossing, and more.
- Understand existing metrics being reported to the data lake and work with Product teams to enhance.
- Collaborate with other teams in Linux build system and OS configuration on a shared platform.
- Integrate with existing workflows, including code review, automated testing, and code repository processes using GitHub and Jira.
- Implement features in a timely fashion with quality.
- Provide input on application design and architecture decisions.
Required Qualifications
- Bachelor’s Degree in Computer Science or a related field.
- 10+ Years’ Experience in Embedded Linux development.
- Highly proficient with C++.
- Must have a good understanding of Open Source licensing, including application, publishing, and compliance.
- Previous experience with machine learning projects and code.
- Good understanding and knowledge of Jenkins for builds, GitHub for code source and Jira for bug/issue tracking
- Implementation of nginx or other embedded web servers.
- Exposure to GNU toolchain and Yocto.
- Ability to read and understand schematics, datasheets, and other technical documentation.
Preferred Qualifications
- Advanced Degree in Computer Science or a related field.
- Experience with SPI, I2C, TTL.
- Experience debugging platform issues using debuggers, oscilloscopes, logic analyzers, protocol analyzers.
- Previous experience with Linux Development including: bootloader, kernel and device driver internals, device trees, build tools (Buildroot, GNU, Yocto, etc.)