Welcome to PMPlib project!
Portable Media Player library (PMPlib) is an open source project for the development of management software/library for various portable media players. PMPlib project currently supports the following hardware:
- iRivNavi.iDB (pmp_irivnavi)
- iRiver H100 series
- iRiver H300 series
- PortalPlayer based players (pmp_portalplayer1)
- iRiver H10 UMS
- iRiver H10 MTP (with emergency connect mode)
- MEDION MDJuke220
- MEDION MDJuke440
- Samsung YH-820
- Samsung YH-920
- Samsung YH-925
- MSI MEGA PLAYER 540
- iRiver 3rd generation (pmp_iriverplus2)
- iRiver H10Jr. UMS
- iRiver U10 UMS
- iRiver 4th generation (pmp_iriverplus3)
- iRiver E10 UMS
News
PMPlib (EasyPMP) version 0.14 released (2007-02-12)
I am pleased to announce that PMPlib 0.14 was released with numerous enhancements and improvements.
- Implemented playlist conversion for iriver E10 (pmp_iriverplus3).
- Added the support for MSI MEGA PLAYER 540 in pmp_portalplayer1.
- Added the support of Ogg Vorbis for Samsung YH-920.
- On-the-fly playlist conversion from M3U/PLS playlist file located on the PC. Use -P (--playlist-source) option to configure the source directory.
- Configurable paths to music and playlist directories.
- Display supported firmware versions, audio codecs, and file extensions.
- Suppress flickering in the progress report.
- Report file names from which EasyPMP failed to obtain the media information.
- Report names of music files whose artist or album names are empty as they may be moved to "Unknown artist" or "Unkonwn album" section.
- Changed the default character encoding for non-unicode ID3v1/ID3v2 tags to ISO-8859-1.
- Fixed several bugs in reading/writing the database for iriver E10.
- Improved the routine for writing the iriver E10 database with the latest knowledge.
- Fixed a crash reported at the forum (thanks jonof).
- Fixed a bug in playlist conversion with -f (--find-missing) option on POSIX environments.
- Fixed a bug in database update for PortalPlayer devices on POSIX environments.
- Applied two patches for libid3tag for bug-fixes (Win32 version).
- Updated the JavaScript engine to SpiderMonkey 1.6 (Win32 version).
- Distribute RPM packages, pmplib, pmplib-tools, and pmplib-devel.
- Grand API restructuring and documentation.
- Install header files for the development to ${PREFIX}/include/pmplib
- Merged libucs2 (ucs2.dll) and libfilepath (filepath.dll) into libpmp (pmp.dll) for simplicity.
PMPlib Forum is reopened (2007-01-05)
I set up PMPlib Forum at my private server since I could not install the forum in the sf.net server due to the tight security. Let us share the information about PMPlib and portable media players in the forum. I apologize those who posted messages at the forum in sourceforge.net. I didn't reply to some messages.
The forum also takes over EasyH10 Forum. You can the same user name and password if you have an account for the EasyH10 Forum.
PMPlib (EasyPMP) version 0.13 released (2007-01-05)
After the short break of the project (mostly because Nyaochi was busy), we are pleased to announce PMPlib 0.13.
- [Common] New database reader/writer for iriver E10 (pmp_iriverplus3). This is based on the reverse engineering effort done by Nyaochi with the help of hullbr3ach. Playlist conversion for iriver E10 is not implemented yet due to some implementation problems (we need to revise the core API). The playlist conversion is planned in the next release.
- [CUI] Fit long progress reports in a line (done by Sucknblow).
- [Win32] Changed the Win32 compiler to Microsoft Visual Studio 2005. If you got an error message reporting missing runtime DLLs, please install Microsoft Visual C++ 2005 Redistributable Package (x86).
- [Web] Launch the new PMPlib forum.
The database format of iriver E10 was completely new to us. It is totally different from the 1st (H100/H300), 2nd (H10), and 3rd (H10Jr/U10) generation of media database employed in iriver players. The 4th generation database consists of multiple binary search trees (probably AVL trees) so that the player can implement various navigation paths (e.g., Artist->Album->TrackNumber, Title, Genre->Album->TrackNumber, etc) efficiently. A node in a binary search tree stores: the node value (BYTE, WORD, DWORD, or UCS-2 string); a linear-linked list pointing to records; and links to left and right children.
Although the database reader/writer worked fine on my experiments, there might be some problems as it is not based on a specification but the analysis. Should you have a problem with a database generated by this program, please report the problem in the forum. You can recover from the error with iriver plus 2 or 3 in the following steps.
- Delete three database files in your player, "/path-to-e10/System/db.dat", "/path-to-e10/System/db.dic", "/path-to-e10/System/db.idx". You need to enter the folder name (e.g., "E:\System") directly to the address bar of Explorer since the folder is hidden.
- Delete local database files of iriver plus 2 or 3, "/path-to-iriverplus/plus2_0.db" and "/path-to-iriverplus/plus2_0.bak", e.g., "C:\Program Files\iriver\iriver plus 3\plus2_0.db" and "C:\Program Files\iriver\iriver plus 3\plus2_0.bak".
- Run iriver plus 2 or 3. This will rebuild the database automatically. If not, choose the menu item, "Tools"->"Portable Device"->"Database Update".
Enjoy your music life with E10 and EasyPMP!