Lightweight USB Media Transfer Protocol (MTP) responder daemon for GNU/Linux
Storage : Global and per storage UID/GID override options :
Code fixes / improvements :
Storage : new flags and modes :
"locked" flag support.
"removable" flag support.
New dynamic/runtime commands (umtprd -cmd:COMMAND) :
"lock"/"unlock" commands to dynamically lock/unlock lockable storage.
Examples:
Unlock all locked storage (set with the 'locked' option in the configuration file) :
umtprd -cmd:unlock
Lock all lockable storage (set with the 'locked' option in the configuration file) :
umtprd -cmd:lock
"addstorage"/"rmstorage" commands to dynamically add/remove storage.
Examples:
umtprd '-cmd:addstorage:/tmp Tmp rw'
umtprd '-cmd:rmstorage:Tmp'
Use double-quotes when arguments have spaces in them:
umtprd '-cmd:addstorage:/path "My Path" rw,removable'
umtprd '-cmd:rmstorage:"My Path"'
Added umask configuration entry and fix permissions on send objects.
USB 3.0 SuperSpeed support.
Supports files rename at the MTP device side.
New "firmware_version" configuration field : set the MTP device info value.
Many fixes and improvements :
Fix inotify for root folders when using multiple storage.
Add guard to avoid storage from being added twice.
Update the file size information to the dataset when modifying the file content.
Check that fs handles db is valid before using it to get entries.
Security fix : Fix the invalid ".." setObjectPropValue access trick.
Fix deadlock when SendObject / GetObjectHandles fail.
Fix permissions on newly created folders.
Configuration file : realign user usb buffers size.
Internal : Remove redundant code and possible double closedir issue. (Fix segmentation fault with uClibc).
Reduce the default max usb read/write buffer size to 8KB. (This is required by some SoCs, e.g. the iMX series)
Many thanks to all the contributors !
MTP Storage mount / unmount support (-cmd:mount:[store name] / -cmd:unmount:[store name] / ).
Config file :
Config file path can be changed in the command line (-conf:[Config file path]).
Async/inotify event : Send file size changes.
Fix : GadgetFs -> Handle unexpected disconnection while transferring a file.
Fix : Shared multi-drives inotify events.
Code fixes / improvements :
Major update ! : Now support all file operations !
Config file : storage "rw"/"ro" parameter added to write protect a drive.
Performance : Read and write throughput increased (~ 4x speedup).
Fix >2GB files listing.
Fix >2GB files access support on 32 bits systems.
File read/write transfer cancel operation supported.
Drives and objects properties support.
New supported commands :
Many others fixes and improvements !
MTP event support added : The MTP initiator is now notified when files/folders are removed or added from the responder.
Various debug messages fixes and improvements.
Generic FunctionFS/libcomposite support added !
New configuration option : show/hide hidden files option.
It now follows the symbolic links.
Daemon mode :
Bug fixes / Improvements :
Windows host : Non-empty folder deletion issue fixed.
Severals memory leaks in daemon mode fixed.
GadgetFs init/deinit reworked.
Initial release.
Tested on Raspberry Pi Zero and Atmel Sama5D2 Xplained boards.