Job Description
A highly skilled Embedded Software Engineer to develop and maintain software for embedded systems. The role involves working across Linux-based applications, hardware interfacing, firmware collaboration, and PC-side tools to support device configuration, monitoring, diagnostics and basic management of them.
KEY RESPONSIBILITIES
Develop and maintain industrial-grade embedded Linux applications (C/C++, Python) Customize Linux distributions (Yocto) Develop and debug device drivers and kernel modules Interface with hardware peripherals (UART, SPI, I2C, USB, Ethernet) Collaborate with firmware engineers and understand MCU interactions Develop interfaces to external applications through ex. SNMP etc. Develop PC applications/tools for configuration, visualization, and firmware updates Support full product lifecycle from concept to production PC APPLICATION DEVELOPMENT
Develop desktop tools for device configuration, firmware updates, and diagnostics using technologies such as: C++ / Qt Python (PyQt, Tkinter) These tools interact with embedded devices via USB, serial, or network interfaces. Develop basic desktop applications and/or API for managing the equipment. HARDWARE & FIRMWARE INTERACTION
Work closely with hardware and firmware teams to: Understand schematics and data sheets Validate system behavior and signal integrity Debug issues across hardware/software boundaries Interface with microcontrollers and SoCs Perform system-level debugging using tools like GDB, JTAG, logic analyzers Optimize performance for CPU, memory, and I/O PREFERRED SKILLS
Experience with Yocto or Buildroot Familiarity with Linux kernel and driver development Experience with GUI frameworks (Qt, .NET, or Python-based GUIs) Experience with web-based technology (webserver, Database, Web GUI). Experience with debugging tools (oscilloscope, logic analyzer) Understanding of networking protocols (TCP/IP, sockets, SNMP) Familiarity with fiber optics network Knowledge of firmware and RTOS concepts ESSENTIAL EDUCATIONAL/EXPERIENCE REQUIREMENTS
Bachelor's or Master's degree in Computer Engineering, Electrical Engineering, or Computer Science 3+ years of experience in embedded systems development ESSENTIAL SKILLS/TRAITS
Strong programming skills in C/C++ Experience with Embedded Linux systems and tools Knowledge of communication protocols (UART, SPI, I2C, CAN, Ethernet) Experience with version control systems (Git) Strong problem-solving and debugging abilities Strong focus on reliability, safety, and manufacturability in product design. COMMUNICATION SKILLS
Strong verbal and written communication skills Ability to collaborate across hardware, firmware, and software teams Capable of documenting designs and presenting technical information WORK LOCATION
This is primarily an on-site role due to hands-on development On-site presence required for lab work, debugging, and collaboration TRAVEL Occasional travel may be required for supplier visits, testing, or customer support. WORK ENVIRONMENT
This role involves cross-functional collaboration with hardware, firmware, and QA teams. Engineers will work in a lab environment with embedded boards, test equipment, and development tools. To collaborate well with global internal and external teams, early morning or late evening online meetings may be required.