EasyH10 requires libid3tag and libiconv to be installed on one's operating system. As of version 1.0 beta 6, EasyH10 does not require a patch for libid3tag. The build & install procedure is as simple as:
$ tar xvzf easyh10-1.0.tar.gz $ cd easyh10-1.0 $ ./configure $ make $ make install
EasyH10 can also be built against libid3tag with an enhancement patch enabled. The patch distributed by EasyH10 project has two enhancements over the official version to deal with problematic MP3 files:
Build libid3tag-0.15.1b special version as follows:
$ tar xvzf libid3tag-0.15.1b.tar.gz $ cd libid3tag-0.15.1b $ patch -p1 < ../libid3tag-0.15.1b_easyh10-0.10.patch $ ./configure --disable-shared $ make # Just compile and do not install it! $ export PATH_TO_ID3TAG=`pwd` # For the convenience.
Then one can force a link between libid3tag library statically by the following configure options:
$ tar xvzf easyh10-1.0.tar.gz $ cd easyh10-1.0 $ ./configure --with-id3tag-header=$PATH_TO_ID3TAG --with-id3tag-library=$PATH_TO_ID3TAG/.libs $ make $ make install
EasyH10 also depends on iconv in libc or libiconv for converting locale-specific characters (e.g., ISO-8859-1, CP932, etc.) into UCS-2 little endian. The configure script should find iconv library and header file, but some operating systems may not have these files installed. Should the configure script fail for lack of iconv staffs, one will need to download the iconv source code and build it. One can download the source code from the libiconv web site.
$ tar xvzf libiconv-1.9.1.tar.gz $ cd libiconv-1.9.1 $ ./configure $ make $ export PATH_TO_ICONV=`pwd` # For the convenience.
Then he or she can force a link between iconv library statically by the following configure options:
$ ./configure --with-iconv-header=$PATH_TO_ICONV/include --with-iconv-library=$PATH_TO_ICONV/lib/.libs
Before using EasyH10, it is recommended that one choose an H10 model template in "/usr/local/share/easyh10/model/*.model" and copy it into H10's HDD so that EasyH10 can automatically recognize the model and firmware of the H10 player. EasyH10 assumes $PATH_TO_H10/easyh10.model or $PATH_TO_H10/easyh10/model/easyh10.model ($PATH_TO_H10 is the path to H10 root directory) to be the default template file. Given that the H10 player is mounted on /mnt/usbdisk and you have H10 5GB UMS firmware version 2.05, he or she can do this task by:
$ cp /usr/local/share/easyh10/model/H10UMS_5GB_FW2.04-2.05.model /mnt/usbdisk/easyh10.model
or
$ mkdir /mnt/usbdisk/easyh10/model $ cp /usr/local/share/easyh10/model/H10UMS_5GB_FW2.04-2.05.model /mnt/usbdisk/easyh10/model/easyh10.model
If he or she has an operating system working in a character set other than UTF-8, he or she must specify it with -e option. If he or she uses a character set other than UTF-8 for non-unicode ID3v2 tags or WAVE files, he or she must specify it with -w option.
For example, if one has Japanese Shift_JIS MP3 files, he or she needs to add "-w CP932" in the command-line arguments.
Rebuild the media database with track number ordering. Reconvert playlists in /mnt/usbdisk/Media/Music and /mnt/usbdisk/Media/Playlist/* into respective PLP playlists. Be sure to change the arguments for -e and -w options so that they fit your environment.
$ easyh10 -C -on -PMrf -e UTF-8 -w ISO-8859-1 /mnt/usbdisk EasyH10 [CUI] 1.0 Copyright (c) 2005 by Nyaochi H10 model template: /mnt/usbdisk/easyh10.model Path to database: /mnt/usbdisk/System\DATA/ Path to music: /mnt/usbdisk/Media\Music/ Path to playlist: /mnt/usbdisk/Media\Playlist/ Playlist extension: .plp Enumerating music files: 28 files found. Reading H10 model template: H10 (UMS) 5GB firmware 2.04 - 2.05 Obtaining media information from 28 files: 28 files obtained. Updating database Writing H10 media database: 100%: (H10DB.hdr) Enumerating playlists: 4 playlists found. Enumerating music files: 28 files found. Converting 4 playlists: 4 playlists successfully converted.
$ easyh10 -U -on -PMf -e UTF-8 -w ISO-8859-1 /mnt/usbdisk EasyH10 [CUI] 1.0 Copyright (c) 2005 by Nyaochi H10 model template: /mnt/usbdisk/easyh10.model Path to database: /mnt/usbdisk/System\DATA/ Path to music: /mnt/usbdisk/Media\Music/ Path to playlist: /mnt/usbdisk/Media\Playlist/ Playlist extension: .plp Enumerating music files: 28 files found. Reading H10 model template: H10 (UMS) 5GB firmware 2.04 - 2.05 Reading H10 media database 100%: H10DB_*.idx Obtaining media information from 0 files: 0 files obtained. Updating database Writing H10 media database: 100%: (H10DB.hdr) Enumerating playlists: 4 playlists found. Enumerating music files: 28 files found. Converting 0 playlists: 0 playlists successfully converted.
If you are interested in the database structure...
$ easyh10 -D /mnt/usbdisk EasyH10 [CUI] 1.0 Copyright (c) 2005 by Nyaochi H10 model template: /mnt/usbdisk/easyh10.model Path to database: /mnt/usbdisk/System\DATA/ # H10DB.hdr unknown1: 0 unknown2: 0 pathname_dat: System\DATA\H10DB.dat unknown3: 1 pathname_hdr: System\DATA\H10DB.hdr unknown4: 0x00000428 num_dat_entries: 28 num_dat_inactive_entries: 0 num_dat_fields: 22 fd[ 0]: {0x0000F001, 2, 4, 0, 0, 1, 0, 0, L"System\DATA\H10DB_@DEV.idx"} fd[ 1]: {0x0000F002, 1, 128, 0, 0, 1, 0, 0, L"System\DATA\H10DB_FPTH.idx"} fd[ 2]: {0x0000F003, 1, 128, 0, 0, 1, 0, 0, L"System\DATA\H10DB_FNAM.idx"} fd[ 3]: {0x0000F00A, 2, 4, 0, 0, 1, 0, 0, L"System\DATA\H10DB_FRMT.idx"} fd[ 4]: {0x0000002E, 1, 40, 0, 0, 1, 0, 0, L"System\DATA\H10DB_TIT2.idx"} fd[ 5]: {0x0000003C, 1, 40, 0, 0, 1, 0, 0, L"System\DATA\H10DB_TPE1.idx"} fd[ 6]: {0x0000001C, 1, 40, 0, 0, 1, 0, 0, L"System\DATA\H10DB_TALB.idx"} fd[ 7]: {0x0000001F, 1, 20, 0, 0, 1, 0, 0, L"System\DATA\H10DB_TCON.idx"} fd[ 8]: {0x0000E002, 2, 4, 0, 0, 1, 0, 0, L"System\DATA\H10DB_@DU3.idx"} fd[ 9]: {0x0000E003, 2, 4, 0, 0, 1, 0, 0, L"System\DATA\H10DB_@DU4.idx"} fd[10]: {0x0000E004, 2, 4, 0, 0, 1, 0, 0, L"System\DATA\H10DB_@DU5.idx"} fd[11]: {0x0000E005, 2, 4, 0, 0, 0, 0, 0, L""} fd[12]: {0x00000043, 2, 4, 0, 0, 1, 0, 0, L"System\DATA\H10DB_TRCK.idx"} fd[13]: {0x0000004E, 2, 4, 0, 0, 0, 0, 0, L""} fd[14]: {0x0000F009, 2, 4, 0, 0, 0, 0, 0, L""} fd[15]: {0x0000F007, 2, 4, 0, 0, 0, 0, 0, L""} fd[16]: {0x0000F006, 2, 4, 0, 0, 0, 0, 0, L""} fd[17]: {0x0000F005, 2, 4, 0, 0, 0, 0, 0, L""} fd[18]: {0x0000E000, 2, 4, 0, 0, 1, 0, 0, L"System\DATA\H10DB_@DU1.idx"} fd[19]: {0x0000E001, 1, 40, 0, 0, 1, 0, 0, L"System\DATA\H10DB_@DU2.idx"} fd[20]: {0x00000083, 2, 4, 0, 0, 0, 0, 0, L""} fd[21]: {0x00000084, 1, 64, 0, 0, 0, 0, 0, L""} ... # End of H10DB.hdr # H10DB.dat {num_dat = 28} ## Entry 1 inactive: 0 unknown1: 0 unknown2: 0 file_path: Media\Music\Jem\FinallyWoken\ file_name: 01_FinallyWoken.mp3 media_type: 0 title (htn=0): They artist: Jem album: Finally Woken genre: rating: 0 revision: 0 recent_play: Sat Jan 1 08:00:00 2000 unknown4: 1118761606 number: 0 filesize: 3067233 duration: 196 samplerate: 44100 bitrate: 124978 unknown5: 1 unknown6: unknown7: 0 unknown8: Validation failed: unknown4 Validation failed: unknown5 ## End of entry 1 ...
$ man easyh10 EASYH10(1) User Commands EASYH10(1) NAME EasyH10 - manage the iRiver H10 MP3 player SYNOPSIS easyh10 [ options ] [ location ] DESCRIPTION EasyH10 is a command-line utility to generate a media database and playlist for an iRiver H10 digital audio player. Transferring MP3/WMA/WAV files into the music directories and creating M3U/M3U8/PLS playlist files under the music directories or playlist directory must be done manually in advance. EasyH10 then constructs a media database from the music files and converts the playlist files into PLP/PLA playlist files, which are recognized by the H10 player. Database construction generates a set of database files in the database directory, obtaining the media information (e.g., title name, artist name, album name, genre name, track number, etc.) from all MP3/WMA/WAV files found in the music directories. Among database-related options, the update mode (-U option) reads an existing media database, compares it with the current content of the music directories, inserts entries for music files that have been added or updated since the previous pro- cessing, and erases entries for music files that have been removed. EasyH10 can force music tracks to be played in an order that a user specified with -o option. The way of obtaining the information of a music file is also configurable (see -z option). Playlist conversion targets all M3U/M3U8/PLS playlist files located in the playlist directory (with -P option) and/or music directories (with -M option). For each target, it finds the music files referred by the playlist and writes out an iRiver-specific playlist file into the playlist directory with the same file name. The converted playlist files will have .plp extension for UMS players or .pla for MTP players. The behavior when EasyH10 could not find a music file referred by a playlist can be specified with options -g, -f, and -k. Do not put two or more playlist files sharing the same file name to avoid a collision of converted playlist files. Location specifies the path to the root directory where an H10 player is mounted as an external HDD. Three important directories, the database directory, music directory, and playlist directory are deter- mined automatically as relative paths from the root directory. As for these directories, refer to the description for options -d, -m, and -r that configure the default values. A model template must be specified for EasyH10 to identify the model of the iriver H10 player to be managed. EasyH10 assumes a default tem- plate (easyh10.model) to be placed in the current directory, the root directory of the player, easyh10/model directory from the player root directory, etc. As for the complete list of directories for the default template, refer to the description of option -t, which speci- fies a model template manually. OPTIONS Database construction options: -C, --construct Construct a media database from music files located under the music directory. EasyH10 enumerates all MP3/WMA/WAV files in
$ easyh10 --help EasyH10 [CUI] 1.5 Copyright (c) 2005-2006 by Nyaochi USAGE: cui/easyh10 [OPTIONS] [LOCATION] LOCATION Absolute path to the H10 root directory (e.g., /mnt/usbdisk/) Database construction options: -C, --construct Construct a new media database from music files -U, --update Update the existing media database incrementally -o, --order=TYPE Specify a playback order: d, default Leave an H10 firmware for playback order (DEFAULT) t, tracktitle Force an alphabetical order of track titles f, filename Force an alphabetical order of file names n, tracknumber Force a numerical order of track numbers c, complete Force a complete random order (always shuffle) a, album Force a random order when playing an album l, all Force a random order when playing all titles -z, --source=METHOD Specify a method for obtaining media information: m Tag information in music files (DEFAULT) [g]p Parse pathnames to obtain (genres and) artists [g]pa Parse pathnames to obtain (genres,) artists, albums [g]pa[n]t Parse pathnames to obtain (genres,) artists, albums and parse filenames to obtain (numbers and) titles Playlist conversion options: -P, --playlist Convert playlist files in PLAYLIST directory -M, --music Convert playlist files in MUSIC directories -r, --reconvert Discard the existing PLP/PLA playlist and reconvert -g, --guess-missing Guess pathnames of missing music files in a playlist -f, --find-missing Find pathnames of missing music files in a playlist -k, --skip-missing Skip missing music files in a playlist and continue -x, --regex-playlist Enable Regular Expression Playlist (REP) -l, --auto-shuffle Shuffle music files in [(name).sfl*.(ext)] playlists Tuner preset options: -I, --import-tuner=FN Import a tuner preset from a file -E, --export-tuner=FN Export the current tuner preset to a file -a, --merge-tuner Merge the current tuner preset with a file H10 player model options: -t, --model=MODEL Apply a model template for specifying an H10 model -T, --gen-model=MODEL,FW_MIN_VERSION,FW_MAX_VERSION Create a model template from an existing database -X, --install-model Install the specified model template into the player H10 location options: -s, --systempath=SYSTEM Specify path to the system directory -d, --dbpath=DATABASE Specify path to the database -m, --musicpath=MUSIC Specify root path to the music files -p, --playlistpath=PLAYLIST Specify path to the playlist files Language-specific options: -e, --encoding=SE Specify character encoding used by the operating system -w, --tagencoding=TE Specify character encoding for parsing non-Unicode tags -b, --bidi Arrange BiDi characters to be displayed correctly (exp) Miscellaneous options: -D, --dump Output a database dump in plain text format -V, --version Show version number and exit -h, --help Show this help message and exit -v, --verbose Verbose mode