Embedded Software Engineer I
Job Description
<p><span style="font-size: 14pt;"><strong>Embedded Software Engineer I</strong></span></p> <p><a class="external-link" href="http://alarm.com/">Alarm.com</a> is a rapidly expanding technology company developing innovative cloud and device solutions across a wide range of cutting-edge technologies that provide a unified, connected service to millions of residential and commercial properties in the US and abroad. We are looking for a talented and passionate embedded software engineer for the Device Engineering team to help us define the future of the Internet-of-Things for residential and commercial properties by creating and integrating devices that connect with our robust cloud using next-gen communication stacks. You will be working with a team of talented engineers across a diverse set of technological backgrounds to design devices, build and manufacture hardware, architect and implement software, and collaborate in an agile and fast-paced environment.</p> <p><strong>Required Skills:</strong></p> <ul> <li>Bachelor's degree in computer science, Electrical/Computer engineering, or related field, or equivalent experience.</li> <li class="code-line">0-2 years of professional experience; internships, co-ops, research, capstone, or personal projects involving embedded or systems software are welcome in place of industry experience.</li> <li class="code-line">Proficiency in C and/or C++, with an understanding of software architecture and design principles.</li> <li class="code-line">Proficiency in Linux and comfort working from the command line.</li> <li class="code-line">Exposure to microcontrollers or single-board computers (e.g., STM32, ESP32, Arduino, Raspberry Pi, BeagleBone) and hardware peripherals such as UART, SPI, I2C, and ADC.</li> <li class="code-line">Foundational understanding of electronics and the ability to read circuit schematics.</li> <li class="code-line">Familiarity with version control systems such as Git.</li> <li class="code-line">Strong problem-solving skills, curiosity about how hardware and software meet, and eagerness to learn from code review and mentorship.</li> <li class="code-line">Clear written and verbal communication, and the ability to collaborate on a team.</li> </ul> <p><strong>Preferred Skills:</strong></p> <ul> <li class="code-line">Experience with C++ in bare-metal and RTOS-based environments (FreeRTOS, Zephyr, ThreadX, or similar).</li> <li class="code-line">Experience with glibc, musl or bionic.</li> <li class="code-line">Experience in threading, processes and other Linux Systems knowledge. Experience in Asynchronous and Messaging based designs (e.g., protobuf/nanopb).</li> <li class="code-line">Experience in building Linux kernels, device drivers, kernel modules, U-Boot, etc.</li> <li class="code-line">Experience with cross-compilation and build frameworks such as Yocto, Buildroot, OpenWRT, or Android.</li> <li class="code-line">Functional knowledge of security standards and protocols, such as TLS/SSL, OpenSSH, ECDSA/ECDH, AES256, HMAC, SHA256.</li> <li class="code-line">Experience with designing firmware for video pipeline systems, image signal processing, or streaming protocols (RTSP, H.264/H.265) is a strong plus.</li> <li class="code-line">Experience with running AI models on embedded device</li> </ul> <p><strong>Responsibilities:</strong></p> <ul> <li>Work alongside senior engineers to develop and maintain embedded Linux applications, platform frameworks, and board support packages using C/C++.</li> <li>Implement, test, and debug well-scoped features and bug fixes on real hardware, growing toward indep