Job at a glance
Description Job Summary: The Senior Embedded Software Engineer will design, develop, and support the embedded software and firmware at the heart of Qnergy's products – from bare-metal microcontroller firmware to embedded Linux systems. This is a senior hands-on individual contributor role with broad ownership across the embedded stack, working closely with electrical, mechanical, and software engineers.
As the company grows, this role has a path to grow into a technical leadership position for the embedded discipline. Responsibilities: Design, implement, and maintain bare-metal and RTOS-based firmware (STM32 / FreeRTOS) for engine controllers, supervisory/system controllers, power electronics, and monitoring systems. Develop and support embedded Linux platforms, including system services, networking, and device integration.
Own productization aspects of firmware: bootloaders, over-the-air / field firmware updates, secure boot, flash and file systems, watchdogs, and low-power operation. Integrate and support communication interfaces: fieldbus protocols (e.g., Modbus RTU/TCP, CAN, RS-485), remote connectivity (e.g., cellular/LTE), and cloud telemetry (e.g., MQTT, HTTP) feeding the Qnergy Dashboard. Debug complex cross-domain issues using lab equipment (oscilloscope, logic analyzer, debuggers) and contribute to hardware design reviews and board bring-up.
Collaborate with electrical, mechanical, and cloud/software teams on architecture, interfaces, and design tradeoffs. Establish and improve engineering practices for embedded development: version control, code reviews, automated builds, CI/CD for firmware, hardware-in-the-loop testing, and effective use of modern development and AI-assisted tooling. Support manufacturing, field service, and customer-facing teams in diagnosing and resolving issues from returned or deployed units.
Document designs, interfaces, and test procedures to a standard appropriate for safety and reliability-critical products. Requirements Education & Experience: 7+ years of professional experience in embedded systems, firmware, or embedded software development. Bachelor’s degree in Electrical Engineering, Computer Engineering, Computer Science, or a related field – or equivalent practical experience.
Experience shipping embedded products that operate in the field (industrial, IoT, energy, automotive, aerospace, or similar). Experience taking products from development through certification, manufacturing, and field deployment is a strong plus. Skills & Abilities: Must-have: Strong proficiency in C (and/or C++) for resource-constrained, bare-metal and RTOS environments. Hands-on experience with STM32 (or similar ARM Cortex-M) microcontrollers and FreeRTOS (or a comparable RTOS).
Working experience with embedded Linux (e.g., OpenWrt, Yocto, or Buildroot-based systems), including device configuration, networking, and cross-compilation. Experience with bootloaders, OTA/firmware update mechanisms, secure boot, and flash/file system design. Proficiency with common communication buses and protocols: UART, SPI, I2C, CAN, Ethernet. Able to read and interpret schematics and datasheets.
Comfortable debugging with lab equipment: oscilloscope, logic analyzer, JTAG/SWD debuggers, and multimeters. Solid understanding of embedded system fundamentals: interrupts, DMA, timers, ADCs, power management, and memory-constrained design. Disciplined engineering habits: version control (Git), code reviews, and structured testing of embedded code. Nice-to-have: Ability to contribute to hardware design: schematic review, component selection, and board bring-up.
Experience with PCB design tools (e.g., Altium, KiCad). Experience with industrial fieldbus protocols (Modbus RTU/TCP, CANopen) and RS-485 networks. Experience with cellular/LTE or other remote connectivity modules, and with IoT telemetry protocols (MQTT, HTTP/REST). Familiarity with firmware security practices: secure boot chains, encrypted updates, and key storage. Experience