Skip to content
jaapcrezee edited this page Sep 24, 2014 · 11 revisions

An incomplete list of tasks for the project

Larger tasks

Require some discussion and knowledge of existing code)

  • Relay device over ethernet
  • Isochronous transfers
  • LibUSB async transfers
  • GadgetFS Multipacket reads
  • See if we can programatically disconnect the host device
  • See if there are any other standard control requests we need to do something special for
    • update active interface in interfacegroup and active endpoints upon set interface request
    • proper handling of multiple set configs in a session (deactivate old endpoints, activate new ones, leave unchanged ones alone
  • FaceDancer software compatibility
  • FaceDancer hardware compatibility (possibly not worth the time/effort)
  • Support other hardware - Parallella, Olimex Lime, USB3380kl
  • retry incomplete libusb transfers
  • handling of device/host connects/disconnects/reconnects
  • Act as a hub to proxy multiple devices
  • Test mode for development on a host without a USB device controller (kernel module to present device?)
  • Implement USBProxy module for gadget_configfs (See Documentation/usb/gadget_configfs.txt from 3.16 for example)

Smaller / independent tasks

Good for newcomers to the project

  • Check return values from malloc(), memcpy(), etc
  • Decide on how many debug/verbosity levels we should have and set prints appropriately and add any additional ones needed. (Eg relay thread start/stop)
  • Language bindings, especially for packet filters, host/device proxies - python, C, etc
  • Make USBProxy into a library - split out optional sections as plugins, and command line tool as example
  • Make host/device proxy and filters runtime configurable - config files, args passed to usb-mitm, etc