Location: Hyderabad
Exp : 4 years +
Job Description:
We are looking for an experienced Linux USB Device Driver Developer to join our embedded software team. The candidate will work on USB driver development and integration, covering device-side gadget frameworks and core Linux USB architecture.
Key Responsibilities:
- Understand the fundamentals of USB, including USB 1.1/2.0/3.x specifications, device descriptors (device, config, interface, endpoint), and transfer types (control, bulk, interrupt, isochronous, streams).
- Handle USB power management, including bus/self-powered modes, suspend/resume, and Link Power Management (LPM).
- Work with the Linux USB architecture encompassing USB core, enumeration, host controller drivers (EHCI, OHCI, XHCI, DWC3), gadget framework, and USB Device Controllers (UDC).
- Develop and maintain USB class drivers such as HID, Mass Storage, CDC, Audio, and Video.
- Develop device-side USB stacks using the Gadget API (usb_gadget, usb_ep), function drivers (g_ether, g_mass_storage, g_hid), and dynamic configurations using ConfigFS.
- Manage USB endpoint handling, descriptors, and control requests.
- Write USB device drivers including device tree handling (snps, dwc3), registering UDC drivers, and implementing callbacks (bind, unbind, setup).
- Handle control requests and USB transfers using usb_ep_queue.
- Collaborate with other teams to debug and optimize USB functionality.
Mandatory Skills:
- Strong proficiency in C programming.
- Good understanding of USB specifications and Linux USB architecture.
- Experience in writing and debugging Linux USB Device Drivers.
- Familiarity with Device Tree and Linux kernel development.
- Knowledge of embedded Linux development tools.
Preferred Skills:
- Experience with USB gadget framework and class drivers.
- Exposure to kernel module programming and driver registration.
- Knowledge of advanced power management features like LPM.
- Experience with ConfigFS for USB device configuration.
- Familiarity with debugging embedded USB hardware and software.
Education:
- Bachelor's/Master's degree in Electronics, Computer Science, or related field.