dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Search | Go
Wiki > Main > SummerOfCode > SummerOfCode2009 > UsbStackEnhancements (r5)

USB stack enhancements

Rockbox has an integrated USB stack for some targets, with mainly the Mass-Storage Class Driver being used. The main aim of the project, is to add support for an additional class-driver, the Human-Interface-Device (HID) class driver, and to overhaul the USB stack to dynamically load class drivers as modules (aka plugins), therefore reduce binary size, and gain further benefits, such as ease development of additional class drivers (e.g. MTP).

Public git repository

Type the following command in order to clone the git repository:

$ git clone git://

Project Plan

  • Implement a working HID class driver
  • Write a HID test application (control volume of the host)
  • Separate class driver from main binary, and implement infrastructure to dynamically load them

Currently working on: Implement HID class driver

  • Valid enumeration of the DAP as a Human-Interface Device (Committed).
  • Implement support for Interrupt transfers in Sansa e200 (Committed).
  • Add debug menu items to control volume (VolUp/VolDown/Mute) on the host using HID messages (Done. Not yet committed).

Remaining work for current phase:
  • Switch to git repository management, to ease development process (done).
  • Successfully send HID messages to host (done).
  • Implement sample plugin application that sends various key-strokes to host: Volume control, Mouse control, System control (reboot, shutdown), etc.

Future enhancements (not part of this project):
  • Make touch-screen enabled platforms identify as a tablet device, enabling the player to act as a touch-pad.
  • Implement context menu to control the class driver, e.g. key-mappings (code pages), etc.
  • Implement 'code-page' to configure key-mapping for controlling Power-Point presentations.
  • Implement Interrupt type endpoints in all other drivers.
r5 - 16 May 2009 - 18:17:18 - TomerShalev

Copyright by the contributing authors.