DRV-210 · Device Drivers · Practitioner
USB Device Drivers — full syllabus
The USB stack from descriptors to URBs, on both the host and gadget sides.
Who this course is for
Engineers who must support a custom USB device — writing the host-side driver that binds to it, or implementing the device side with the gadget framework.
Prerequisites
- DRV-110 level device-model knowledge
- C and kernel module build experience
- Comfort reading protocol specifications
Course outline
Day 1 — Architecture and enumeration
- USB topology, speeds and addressing
- Descriptors: device, configuration, interface, endpoint
- Standard requests and what happens during enumeration
- usb_device vs usb_interface and where drivers actually bind
- Reading lsusb -v output like a datasheet
Day 2 — URBs and transfer types
- Endpoint types: control, interrupt, bulk, isochronous
- Bandwidth guarantees and what the scheduler promises
- The URB lifecycle: alloc, fill, submit, complete, kill
- Anchors, cancellation and unlink semantics
- Error paths: stalls, timeouts, -ENOENT, -ESHUTDOWN
Day 3 — A host-side driver
- probe/disconnect for a custom interface
- Bulk and interrupt URB submission patterns that survive disconnect
- usb_control_msg for vendor requests
- Exposing the device: char device or joining an existing subsystem
- Autosuspend basics and its interaction with URBs
Day 4 — The gadget side
- UDC, function drivers and the gadget framework
- configfs and composite gadgets: serial, ethernet, mass storage
- Building a custom function driver
- usbmon and Wireshark for both-ends debugging
- Common interop failures and how to read them off the wire
Hands-on labs
- Lab: Decode a real device's descriptor tree with lsusb -v and usbmon; draw its configuration and endpoint map
- Lab: Write a host driver that binds on VID/PID and streams bulk or interrupt URBs with correct completion handling
- Lab: Inject a stall and a surprise disconnect; verify your cleanup path survives both without warnings
- Lab: Build a composite gadget with configfs and talk to your own host driver through it
- Lab: Capture enumeration and your transfers in usbmon/Wireshark and annotate the trace against your code
Capstone project
Go end to end: a configfs composite gadget presenting a custom interface, plus the host-side driver that binds to it and moves data over bulk endpoints — evidenced by usbmon captures of the full transfer path and a disconnect/error-injection matrix showing every failure mode is handled without leaks or hangs.
What you leave with
- A working host-side USB driver for a custom interface
- URB lifecycle discipline: submission, completion, cancellation, disconnect
- Hands-on gadget/configfs experience from the device side
- usbmon and Wireshark fluency for USB debugging
- A transfer-and-error model you can apply to any USB device
Upcoming dates
| Dates | Where | Seats | Early bird | Regular | |
|---|---|---|---|---|---|
| 15 Nov – 18 Nov 20264 full days | RiyadhIn person · KAFD Conference Centre | 7 of 14 | SAR 9,450until 16 Oct | ||
| 22 Nov – 25 Nov 20264 full days | Kuwait CityIn person · Al Hamra Tower | 12 of 14 | KWD 780until 23 Oct | ||
| 29 Nov – 2 Dec 20264 full days | MuscatIn person · Knowledge Oasis Muscat | 7 of 14 | OMR 970until 30 Oct | ||
| 29 Nov – 8 Dec 20268 half-days | Gulf bandLive online · 09:00–13:00 GMT+3 | 15 of 20 | US$1,800until 30 Oct | ||
| 30 Nov – 3 Dec 20264 full days | OttawaIn person · Kanata North Tech Park | 12 of 14 | CAD 3,430until 31 Oct | ||
| 7 Dec – 10 Dec 20264 full days | TorontoIn person · MaRS Discovery District | 7 of 14 | CAD 3,430until 7 Nov | ||
| 7 Dec – 16 Dec 20268 half-days | Europe bandLive online · 09:00–13:00 CET | 4 of 20 | US$1,800until 7 Nov | ||
| 7 Dec – 16 Dec 20268 half-days | Americas bandLive online · 13:00–17:00 ET | 9 of 20 | US$1,800until 7 Nov | ||
| 14 Dec – 17 Dec 20264 full days | LondonIn person · Shoreditch Works | 12 of 14 | GBP 1,960until 14 Nov | ||
| 14 Dec – 17 Dec 20264 full days | BerlinIn person · Factory Görlitzer Park | 7 of 14 | EUR 2,320until 14 Nov |
Book a seat, or bring this course to your team
Seats can be reserved online; private delivery runs on-site or live online, adapted to your stack.
Questions about fit or prerequisites? Email hello@kernelsystems.academy. To save this syllabus, print this page to PDF from your browser.