Releases
The project makes periodic releases of the library at the decision of the developers. You can download the code directly from SourceForge or from your distribution.
Current Release
- Release 1.0.1
- Download
- Released: 09/11/2009
- Changelog:
- Detect MTP descriptors according to USB IF spec (though no market device use this method...)
- Speedup of metadata cache (was a bug...)
- Rewrote album metadata reading/tagging removing bugs on some devices
- Device flags and new devices to improbe compatibility
- Notes to Downstream:
- soname libmtp.so.8.3.1
- C++ compatibility enhancements
CVS Checkout
If you are interested in looking at the code between releases, you can do so through our SourceForge CVS one of two ways
- Browse CVS via the web: http://libmtp.cvs.sourceforge.net/libmtp/
Alternatively you can check the source out via annonomous CVS login.
- cvs -d:pserver:anonymous@libmtp.cvs.sourceforge.net:/cvsroot/libmtp login
- no password
- cvs -z3 -d:pserver:anonymous@libmtp.cvs.sourceforge.net:/cvsroot/libmtp co -P libmtp
To build from CVS run the following commands in the libmtp directory
- ./autogen.sh
- ./configure
- make
- make install
Previous Releases
- Release 1.0.0
- Download
- Released: 08/15/2009
- Changelog:
- New functions: LIBMTP_Get_File_To_Handler, LIBMTP_Send_File_From_Handler, LIBMTP_Get_Track_To_Handler, LIBMTP_Send_Track_From_Handler, functions to get/send files/tracks from/to handler functions.
- External handling of individual properties: LIBMTP_Is_Property_Supported to check if a certain property is supported on a certain device. LIBMTP_Get_Allowed_Property_Values to get alowed range/enum of a property value.
- LIBMTP_Get_Representative_Sample_Format will now get the size parameter to allow us to determine the maximum size for a representative sample.
- Added modificationdate to file and track structs.
- Added LIBMTP_FILETYPE_ALBUM and LIBMTP_FILETYPE_PLAYLIST filetypes.
- Numerous Windows portability fixes.
- Marcus Meissner rewrote the PTP object handling and metadata caching functions from libgphoto2 and fixed up the ugly largefile handling.
- Various minor bug fixes.
- Notes to Downstream:
- The API is still source compatible so applications should only need a recompile against libmtp 1.0.0. The new soname is libmtp.so.8.3.0.
- Release 0.3.7
- Download
- Released: 03/16/2009
- Changelog:
- Compatible library interface libmtp.8.2.2
- Stores albums and playlists in the default music folder if no default folder for albums resp. playlists has been detected.
- An error report from RedHat BZ led to strange code for detecting anonymous OGG files being rewritten to handle NULL filenames and filenames that do not exceed 4 chars.
- Patch from Marcus to fix an issue with retransmit originally reported by Florent Pillet.
- Discovered a new device that cannot even read out battery level but still claims to be able to.
- Release 0.3.6
- Download
- Released: 01/21/2009
- Changelog:
- Compatible API libmtp.so.8.2.1
- Several bug fixes to the examples
- Improved Windows and *BSD support
- Proper device flags to handle Toshiba players (hopefully)
- New devices and flag settings
- Release 0.3.5
- Download
- Released: 12/21/2008
- Changelog:
- Allow for playlists with zero tracks on them (also in update).
- Get folders to a flat list and we get O(n) searching instead of the previous O(n^2) algorithm!
- Notes to Downstream:
- Bumped soname to libmtp.so.8.2.0
- Change metadata const*const to *const to allow playlist_id to be modified by LIBMTP_Update_Playlist. Shouldn't affect any code out there really.
- Release 0.3.4
- Download
- Released: 11/08/2008
- Changelog:
- Check propdesc before setting props in create_new_abstract_list().
- Fix several bugs in Ogg filetype support.
- New flag for broken handling of PTP_OPC_DateModified, tag all SanDisk devices with this flag. Bug appeared in them.
- Sync in upstream updates to PTP baseline.
- Detect and warn on broken OPL:s.
- Fix the association type problem on LIBMTP_Create_Folder(). This caused folders not to work properly on some devices!!
- Release 0.3.3
- Download
- Released: 09/25/2008
- Changelog:
- Richard Low fixed some serious low-level bugs, hence this quick release.
- make sure we don't try to fit a new file onto a ROM storage.
- mtp-sendtr can now specify a storage for a track.
- Notes to Downstream:
- Interface bump to libmtp.so.8.1.0 - the interface is backwards compatible, but has these new functions: LIBMTP_Set_File_Name(), LIBMTP_Set_Track_Name(), LIBMTP_Set_Folder_Name(), LIBMTP_Set_Playlist_Name(), LIBMTP_Set_Album_Name(), replacing the old LIBMTP_Set_Object_Filename() which is now deprecated.
- Release 0.3.1
- Download
- Released: 08/25/2008
- Changelog:
- Initial support for Samsung playlists: these are ad-hoch UTF-16 encoded files found in Samsung devices only, and a custom extension. Thank Alistair Boyle for doing this.
- Many new devices in database, so your app will detect them.
- Notes to Downstream:
- Some low-level USB fixes, it is possible that your device no longer needs the DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL or DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST or even more commands. Please help us finding such devices by trying to remove such flags.
- Release 0.3.0
- Download
- Released: 06/23/2008
- Changelog:
- The .so-name has changed to libmtp.8.0.0 to signify a major API revamp
- The version number changed to 0.3.0 too, so you notice
- Recognize video files as tracks
- Bugfixes and new devices galore
- Notes to Downstream:
- removed the parenthandle argument from: LIBMTP_Send_File_From_File(), LIBMTP_Send_File_From_File_Descriptor(), LIBMTP_Send_Track_From_File(), LIBMTP_Send_Track_From_File_Descriptor(), LIBMTP_Create_New_Playlist(), LIBMTP_Create_New_Album()
- Now you must pass in parent ID from a metadata or filedata set. Use the respective field of the file, track, playlist or album struct to pass in a parent handle when calling these functions from now on. The bonus for changing your code is that you can now also pass in a storage_id with any metadata set! Consequently LIBMTP_Create_Folder() was altered to accept THREE metadata arguments: name, parent_id and storage_id. All calls to any of these functions in any referring code need to be altered to use this scheme. It should be quite self-evident for most code and easy to perform.
- LIBMTP_Detect_Raw_Devices() and LIBMTP_Open_Raw_Device() are now available to open sessions to selected devices only. The raw device struct can be used to determine if the device was seen before and if it's already opened. See examples/detect.c for a (simple) example usage. This can probably be matched with HALd and stuff to make devices come and go properly to desktop GUI clients.
- Release 0.2.6.1
- Download
- Released: 03/07/2008
- Changelog:
- Uncomment that which should not have been commented
- Release 0.2.6
- Download
- Released: 03/02/2008
- Changelog:
- Marcus' latest bugfix for the Sansas
- Numerous new devices and modified device flags
- Automatic short header detection (Scott Snyder)
- Compatible interface bump to libmtp.so.7.1.0
- New function: LIBMTP_Set_Object_Filename()
- New function: LIBMTP_Get_Representative_Sample()
- New function: LIBMTP_Get_Manufacturername()
- Sample mtp-sendfile recognize .bin files as firmware, used by e.g. RockBox developers.
- Release 0.2.5
- Download
- Released: 01/08/2008
- Changelog:
- bug fixes
- new devices added to the database
- Release 0.2.4
- Download
- Released: 11/24/2007
- Changelog:
- avoid probing deeper into interfaces that have a string describing them as "MTP" after a suggested patch from Alexander Kanavin. Fixes support for some Nokias.
- patch from Chris Waters replacing calls to atoi() with calls to strtoul(). Since object ID:s are unsigned long, atoi() would reject too high object IDs. The patch also fix a few memory leaks. Thanks Debian! We love our downstream!
- silence some irrelevant OPFF freeing warnings.
- repair broken Creative ZEN headers in a more correct way.
- numerous new devices and flags in the database.
- Release 0.2.3
- Download
- Released: 10/25/2007
- Changelog:
- The libmtp soname is bumped from libmtp.so.6 to libmtp.so.7. This reflects a change in the LIBMTP_device_entry_struct which was probably not used by anything except the libmtp "hotplug" program that generated udev and FDI info. Most apps only need to be recompiled to work with libmtp 0.2.3 / libmtp.so.7.
- Notes to Downstream:
- repair headers on broken devices (Creative ZEN), don't just ignore them.
- add support for broken set object proplist devices. Motorola RAZR2 V8 has this problem.
- get folder list recursively instead, this works better with fast dir retrieveal I think.
- fix the deletion of cached properties when removing objects.
- remove the previously-concatenated vendor and product string "name" field as it's now redundant.
- make LIBMTP_Send_File_From_File_Descriptor() survive the case where device->storage is NULL.
- Release 0.2.2
- Download
- Released: 10/04/2007
- Changelog:
- devices which represented file size with a 32bit value (some old Creative devices) would return a bananas file size.
- avoid crash on failed connect
- introduce a new device flag for devices that have broken PTP headers, first encountered on the Creative ZEN 8GB. We don't know if it works yet.
- Add a new device flag for devices that don't like it if you release the interface (or try to clear endpoints). Tagged the SanDisk devices with this, hope it helps their "second connection fails" problem.
- wrapped updating of playlists and albums into an abstract function so we do it consistently. Added support for tagging on modification date to files, tracks, playlists and albums.
- cancellation working *as it should*, we can now cancel transfers by having the callback return non-zero.
- only read OS descriptors for devices we don't know since it breaks on some devices.
- edit up into a udev ruleset that is inexorably complicated but probably compatible with most udev versions out there. Now please DON'T update udev styles again!
- make sure we query recursively supplying each storage ID in turn, so we spin over storages. Also check what storage may be available to store a file, if the first one fails, try the next!
- retire the horrid, broken, stream send facility that does not work on any device since they all want to know the file size in advance. Add in some code to fall back on the recursive metadata retrieveal if getting the whole long list fails.
- new device flag to strip all non-7bit chars from filenames on some lame devices. (Philips Shoqbox is lame.)
- deal with setting of metadata sets for u16/u32:s that are ranges or enums, rounding and twiddling if need be. This is needed because some new devices (like the TrekStor Sweez, has duration defined as a range: MIN 0, MAX 65535000, STEP 1 and Sandisk Sansa c240 has duration as range: MIN 0, MAX 2147483000, STEP 1000) whereas old devices would just accept any value.
- Release 0.2.1
- Download
- Released: 08/07/2007
- Changelog:
- Fix problem with large file transfer. (See "Hope" reference in 0.2.0 release.)
- Release 0.2.0
- Download
- Released: 08/04/2007
- Changelog:
- Uses extended commands to retrieve and cache large metadata sets quickly.
- Includes many new device ID's and bug flags making it ever more interoperable.
- Fully supports 64bit filesizes. (We hope.)
- New udev rules for the new kernels.
- Produces a very bleeding edge HAL style .fdi file.
- Many, many other bug fixes.
- Notes to Downstream:
- The album API in the libmtp.h file has changed somewhat, it should be quite easy to upgrade the existing code. However the album API still needs some overhaul.
- The library version is bumped to libmtp.so.6 as a consequence of the changes which affects distribution packaging and makes it necessary to recompile applications linking to libmtp.
- Release 0.1.5
- Download
- Released: 03/26/2007
- Changelog:
- Improved support for setting track meta data on Philips devices.
- More verbose detection using mtp-detect.
- New devices in the database.
- Fixes to account for buggy iRiver firmware when handling ogg files.
- Release 0.1.4
- Download
- Released: 03/07/2007
- Changelog:
- iRiver devices are expected to work now.
- Introduction of multiple device interface in the API and the internals rework to reflect that.
- New devices in the database.
- Release 0.1.3
- Download
- Released: 01/16/2007
- Changelog:
- First sourceforge release