PTP Porting Bounty

I hope it is permissible to offer a bounty of $1,000-$2,000 for a GPL project (if completed by 2015-01-31).

I would like the BBB to become a USB reference device for PTP. This means that I would like the normal low-level block-sector based file-system over USB that we are currently using to be replaced by a more mid-level file-id based system over USB that is used by android.

fortunately, there is at least one ptp-gadget already in public existence, maintained by Michael Grzeschik, so my request is probably only a port with debugging, documentation, and posting requirements.

the idea is for the BBB to become the reference implementation for a linux PTP stack, both on a host and on a device. when I looked, I learned that, although in wide use, most PTP/MTP implementations seem to be “hacks” that try to reverse-engineer the sins of others. that is, for example, even the linux host implementations are greatly concerned with making buggy legacy PTP/MTP devices work. in turn, some more modern devices do not seem to work with the standard low-level fuse-ptp linux hosts, even when they work well with gnome’s gvfs.

with a command-line interface, it should finally be possible to have solid tests of PTP/MTP communication protocol. something like

mount /dev/usb/… /mnt/ptp

mkdir /mnt/ptp/testme

perl checkptp.pl write /mnt/ptp/testfile “123” SUCCESS

perl checkptp.pl read /mnt/ptp/testfile “123” SUCCESS

perl checkptp.pl ls /mnt/ptp/testfile EXISTS

perl checkptp.pl read /mnt/ptp/nonexist FAIL

perl checkptp.pl rm /mnt/ptp/testfile SUCCESS

rmdir /mnt/ptp/testme

umount /mnt/ptp

for my bounty, I only want the principal functions to be working (writefile, readfile, ls, rm, cd, mkdir, rmdir), but these I want to work rock-solid and fast (i.e., not just an over-serial-port emulation that maxes out at 115KBaud). it needs to work solidly with both gphotofs and gvfs. it needs to work if PTP is the only protocol communicating over the USB port between USB host desktop and USB gadget client BBB. it needs to be GPL’ed and public for everyone to use, hosted on git so that others (Robert Nelson?) can use it. This is not just a project for me. This project should also be of interest for others.

Please drop me a private note (ivo.welch@gmail.com) if you are interested, and explain to me your expertise. I don’t want multiple people to work on this. I would be particularly interested if this were done by someone who wanted to do it anyway, and maintain it for others after the project bounty is paid.

/iaw