4-20 years
Mumbai
Posted 4 weeks ago
Job Description:
We are looking for an Embedded Linux Software Developer with experience in developing, integrating and optimizing software for Linux-based embedded platforms. The ideal candidate will be responsible for building robust system software, working with the Linux kernel, device drivers, board bring-up and system-level debugging. You’ll collaborate closely with hardware, firmware and system architecture teams to deliver high-quality embedded Linux solutions for production-grade products
Key Responsibilities:
- Design, develop and maintain Embedded Linux system software for custom hardware platforms.
- Perform board bring-up from sractch, cross-toolchain, bootloader customization (U-Boot) and kernel configuration for SoCs.
- Build and maintain Linux root filesystems using Yocto, Buildroot buid-systems.
- Develop and integrate Linux kernel drivers, device trees, network subsystems and board support packages (BSP).
- Optimize & implement platform/bus drivers and network device drivers.
- Develop and optimize user-space applications, system daemons and inter-process communication (IPC) mechanisms (sockets, shared memory etc.).
- Work on system startup scripts, init systems, boot process and overall OS configuration.
- Debug kernel-space and user-space issues using tools like GDB, kgdb, strace, objdump, perf etc.
- Optimize system performance, boot time, and memory footprint.
- Collaborate with hardware and QA teams for integration, validation, and release.
- Participate in design reviews, code reviews.
Requirements:
- Hands-on experience in Embedded Linux system development, preferably in networking products.
- Strong proficiency in C/C++ programming for both kernel and user space.
- Strong Proficiency with Board-bring up process, cross-toolchain, bootloaders (U-Boot), device tree configuration, and BSP customization.
- Proficiency with Yocto Project, Buildroot or similar build systems.
- Deep understanding of Linux internals & low-level system programming — networking stack, process management, memory management and low-level device drivers.
- Hands-on Experience in platform & bus drivers (such as gpio, i2c, usb) and network interface drivers (ethernet, tcp/ip etc.) is preffered.
- Hands-on shell scripting, Makefile, Git, Cmake, packet tracing tools like wireshark and cross-compilation toolchains.
- Experience with GNU or similar compiler and debugging suites, GDB, kgdb, strace, perf, dmesg, ftrace and other debugging tools.
- Deep understanding of Linux kernel networking subsystem, OSI layer, netfilter, bridge or routing protocols and should be able to tweak those in kernel source.
- Strong working knwoledge of Communication protocols like TCP/IP stack, L2 Protocols, L2 packet forwarding, Ehernet/MPLS-TP OAM, Routing Protocols (BGP,RIP,OSPF,IS-IS), PON Protocol, PHY, Switching, Security, PCIe.
- Ability to read and interpret chip/SoC datasheets and techincal reference manuals.
- Strong ability in reverse engineering, debugging and identifying root causes of system-level issues.
- Working knowledge of networking-specific SoCs based on architectures such as MIPS or similar embedded processors is preferred.
Preferred Qualifications:
- Exposure to Yocto layer customization and meta-layer management.
- Basic experience with containerized embedded environments (Docker/Podman).
- Familiarity with Linux power management, thermal management, and real-time extensions (PREEMPT_RT).
- Experience in networking or telecom domains — ONT/OLT, routers, or switches.
- Bachelor’s or Master’s degree in Electronics, communication, Computer Engineering, or a related field.
Job Title: Software Engineer
Location: Mumbai India
Experience: 4-20 years
Job Type: Full-time
Salary: As per industry standards
Work Mode: on-site – Mumbai
Job Features
| Job Category | Software |