Job Description
<p><p>Role Overview :<br/><br/>We are seeking highly skilled USB Stack Developers and Linux Driver Developers with expertise in x86 architectures.
The ideal candidate will bring hands-on experience in USB software stack development, Linux kernel/driver programming, and OS internals.
This role demands strong problem-solving, design, and debugging skills with the ability to deliver efficient, high-quality system software.<br/><br/>Key Roles & Responsibilities :<br/><br/>USB Stack Developer :<br/><br/>- Design, develop, and maintain USB software stack components.<br/><br/></p><p>- Review, enhance, and optimize USB architectures for performance, scalability, and compliance.<br/><br/></p><p>- Work on USB protocols, descriptors, transfers, and class drivers.<br/><br/></p><p>- Debug and resolve issues in USB connectivity, data transfer, and power management.<br/><br/></p><p>- Collaborate with hardware, firmware, and QA teams for end-to-end USB solution delivery.<br/><br/>Linux Driver Developer (x86 Architectures) :<br/><br/>- Develop, port, and optimize Linux kernel drivers for x86-based systems.<br/><br/></p><p>- Work on OS concepts including scheduling, services, OS-Boot, and runtime services.<br/><br/></p><p>- Debug and troubleshoot low-level system issues related to kernel, drivers, and hardware interactions.<br/><br/></p><p>- Contribute to kernel upstreaming and patch development where applicable.<br/><br/></p><p>- Perform code reviews, architectural reviews, and documentation for driver modules.<br/><br/>General Responsibilities :<br/><br/>- Ensure compliance with industry standards and best practices in driver development.<br/><br/></p><p>- Collaborate with cross-functional teams (hardware, embedded, systems engineers).<br/><br/></p><p>- Participate in design reviews, testing strategies, and performance benchmarking.<br/><br/></p><p>- Provide technical guidance and mentorship for junior engineers when needed.<br/><br/><b>Required Skills & Experience :</b><br/><br/>- Bachelors/Masters degree in Computer Science, Electronics, or related discipline.<br/><br/></p><p>- 2+ years of proven experience in USB stack development (mandatory).<br/><br/></p><p>- Hands-on expertise in Linux kernel/driver development with x86 focus.<br/><br/></p><p>- Strong C/C++ programming skills for system-level software.<br/><br/></p><p>- Experience in designing and reviewing USB architectures.<br/><br/></p><p>- Knowledge of Linux internals scheduling, services, memory management, boot process, and runtime services.<br/><br/></p><p>- Strong debugging skills using tools like GDB, JTAG, KGDB, perf, strace, ftrace.<br/><br/></p><p>- Familiarity with build systems (Make, CMake, Yocto) and version control (Git).<br/><br/><b>Preferred Skills (Good to Have) :</b><br/><br/>- Exposure to USB 2.0/3.x protocols and compliance testing tools.<br/><br/></p><p>- Understanding of PCIe, networking, and storage drivers.<br/><br/></p><p>- Contributions to Linux kernel community or open-source driver projects.<br/><br/></p><p>- Knowledge of performance tuning and security aspects in driver development.<br/><br/></p><p>- Familiarity with virtualization (KVM, QEMU, Docker) and cross-compilation.</p><br/></p> (ref:hirist.tech)