Although not nearly the rave of Apple’s iPod, the iRiver certainly holds its own in both features and size. What it loses in disk space from not being a harddrive it makes up for in weight, feeling like little more than a spoon in your hand. Most importantly though, is how well it works on Linux, of course. The answer, not bad. However, it could be much easier.

File System Options

The iRiver comes with a choice of two file systems. The first, and native, is the iFP filesystem. This format integrates with iRiver’s own media center (which is, of course, developed only for Windows) and offers mp3, wma, and ogg decoders. However, mounting it under Linux requires a special "driver" to communicate directly with the device called ifp-line. There are some other options, including a kernel module for mounting the iFP filesystem, but I haven’t had success with those projects at this time.

The other available filesystem, dubbed UMS, is compatible with generic USB Mass Storage drivers, and does not require any special drivers. However, the catch (there is always a catch) is that the ogg decoder does not work when using UMS. As you might imagine, I decided to stick with the iFP filesystem for this exact reason.

Installation Procedure

commandline/midnight commander (ifp-line)

  1. make sure to install libusb-devel package (rpm -qa | grep -m 1 -c "libusb.*-devel")

  2. extract the ifp-line tarball using tar -zxf ifp-line-0.2.3.1.tar.gz

  3. apply patch from kio-slave using patch -p0 < ifp-line-0.2.3.1.diff

  4. move ifp-line-Makefile to ifp-line-0.2.3.1/Makefile (prefix change, uninstall target)

  5. enter ifp-line-0.2.3.1 directory

  6. change MC_INFO constant in ifp_routines.h to the info file name for mc

  7. run make

  8. run sudo make install

  9. cp the binary /usr/bin/ifp to /usr/share/mc/extfs/

  10. ensure there is a line with "ifp" in /usr/share/mc/extfs/extfs.ini

  11. first time only: run ifp-setup.sh as root to configure hotplug permissions for non-root user

  12. first time only: use drakconf/kuser to create ifp group and put necessary users in the "ifp" group

  13. run ifp ls / to see some files, verify it worked

*Note:* I did not have success compiling versions newer than 0.2.3.1, though this problem could have be due to the fact that I was using an older kernel at the time.

kio-slave (kio_ifp)

  1. make sure patches were applied to ifp client when built

  2. modify the ifp.cpp and change endsWith(str, bool) to lower().endsWith(str) to support KDE 3.1

  3. ./configure --prefix=$PREFIX (start fresh for each KDE install we are targetting)

  4. make

  5. sudo make install

Upgrading Firmware

  1. get the firmware for the manager version and name it IFP-3XXT.HEX

  2. run ifp firmupdate ./IFP-3XXT.HEX

  3. wait for player to do its thing, concluding in a poweroff

  4. unplug everything, turn on player, and plug back in

  5. run ifp ls / to see some files, ensure it is working

Resources