GästebuchIhr Eintrag in unser Gästebuch KontaktNehmen Sie Kontakt mit den Autoren auf ArchivAlle Unixwerk- Artikel seit 2003
13. September 2005

Mit Linux auf die iRiver Player der IFP Serie zugreifen.

iriver iFP 865

Die portablen Musikplayer der Firma iRiver sind gerade unter Linux sehr beliebt weil sie neben dem mp3-Format auch das bessere ogg-Format unterstützen. Dieser Artikel beschreibt wie man mit Linux auf den Player zugreifen kann. Ich habe die diversen Programme nur unter Debian/GNU Linux getestet, sie sollten sich aber unter allen Linuxversionen installieren lassen.

Inhalt

  1. Welche Möglichkeiten gibt es auf den iRiver Player zuzugreifen?
  2. Vorraussetzungen
  3. ifp-line: Ein Programm für die Kommandozeile
  4. iFP GUI: Ein Qt Programm für die iriver Player
  5. iFP-Gnome: Ein Gnome Programm für die iriver Player
  6. ifp-linux-filesystem: Den iRiver Player als Dateisystem mounten
  7. Der iRiver Player als USB Mass Storage Gerät

1. Welche Möglichkeiten gibt es auf den iRiver Player zuzugreifen?

Im Wesentlichen sind zwei Möglichkeiten zu unterscheiden mit denen man auf den iRiver Player zugreifen kann, mit der Standardfirmware oder mit der UMS-Firmware.
Nutzt man die Standardfirmware hat man den Vorteil, das kein Firmawareupdate gemacht werden muss. Ausserdem funktionieren alle Programme unter Linux zur Konfiguration und zum Dateimanagement des Players nur mit der Standardfirmware. Ein Nachteil der Standardfirmware ist allerdings das man auch immer ein Programm benötigt, will man eventuell den iRiver Player an einem anderen PC nutzen benötigt man dafür immer ein extra Programm.
Wird die UMS-Firmware eingesetzt ist es möglich den Player wie eine normale Festplatte zu mounten. Als Nachteil kann man sehen das man den Player, zumindest mit Linux, nicht mehr am PC konfigurieren kann. Weiterhin ist, wie bereits gesagt, zwingend ein upgrade der Firmware notwendig bei dem alle bereits auf dem Player vorhandenen Daten gelöscht werden.

2. Vorraussetzungen

Da der iRiver iFP Player über USB an den Rechner angeschlossen wird, ist ein funktionierendes USB System die Grundvorraussetzung zur Nutzung des Players am Rechner. Es muss also zumindest das Modul für den USB-Hostkontroller geladen sein (bspw. uhci_hcd).
Nach dem einstecken des Players an den USB-Port sollte der Befehl lsusb das Gerät anzeigen.

spielzeug@backdoor:~$ lsusb
Bus 001 Device 002: ID 4102:1008 iRiver, Ltd. iFP-800 series mp3/ogg vorbis player
Bus 001 Device 001: ID 0000:0000
Kann man den iRiver Player in der Liste sehen, können auch die nötigen Programme installiert werden.

3. ifp-line: Ein Programm für die Kommandozeile

ifp-line ist ein Kommandozeilenprogramm mit dem man die wesentlichen Dinge des iriver Players verwalten kann. Es ist mit ifp-line möglich Dateien auf den Player zu laden, eine neue Firmware aufzuspielen, den Batteriestand zu prüfen etc. Eine komplette Liste aller Möglichkeiten zeigt der Aufruf ifp ohne weitere Optionen.

usage: ifp command params
commands:
    ls [directory]
    df
    upload localfile ifptarget
    upload localdir  ifpdir
    put localfile
    put localdir
    download ifpfile localtarget
    download ifpdir  localdir
    get ifpfile
    get ifpdir
    rm [-r] file
    rmdir dir
    mkdir dir
    battery
    typestring
    firmversion
    format
    firmupdate /path/to/FIRMWARE.HEX

Ifp-line ist zumindest bei Debian/unstable dabei und kann mit apt-get install ifp-line installiert werden. Weiterhin sollte auch das Packet pmp-common installiert werden, welches usb-hotplug-scripts für die iRiver Player enthält.
Damit man das Programm auch als regulärer User nutzen kann, müssen die entsprechenden User zur Gruppe plugdev hinzugefügt werden. Das heisst sie werden einfach an die entsprechende Zeile in der /etc/group angefügt. Zu beachten ist der jeweilige Nutzer neu einloggen muss um zur Gruppe zu gehören.

4. iFP GUI: Ein Qt Programm für die iRiver Player

iFP Gui ein Qt Programm für den iRiver Player

iFP Gui ist ein Qt Programm zur Verwaltung der iriver iFP Player. Neben den Standardaufgaben wie Dateimanagement oder Firmwareupgrade beherrscht dieses Programm auch das Einstellen und Konfigurieren der Radiosender.
Leider kann das Programm nicht über apt installiert werden und ist somit selbst zu kompilieren. Vorraussetzung hierfür sind die libqt3-mt-dev und libusb-dev Pakete die mit apt-get installiert werden können.
Unter der URL http://ifpgui.sourceforge.net/ kann die jeweils neueste Version des Programmes heruntergeladen werden. Nach dem auspacken des tarballs mit tar xvzf ifp_gui-0.6.2.tar.gz und einem Wechsel in das entstandene Verzeichnis kann das mitgelieferte build.sh Skript ausgeführt werden. Ist der Kompiliervorgang beendet befindet sich im bin/ Verzeichnis das fertige binary ifp_guiwelches ausgeführt werden kann. Es ist aber zu empfehlen das binary nach /usr/bin zu kopieren damit es bei allen Nutzern im Pfad liegt und benutzt werden kann.
Die Bedienung des Programmes als solches ist nahezu selbsterklärend. Links befindet sich der Verzeichnisbaum des Systems und rechts die Verzeichnisse des Players, Dateien oder Ordner können einfach per Drag 'n Drop auf die jeweils andere Seite geschoben werden.

5. iFP-Gnome: Ein Gnome Programm für die iriver Player

Hierbei handelt es sich um ein python Skript welches eine grafische Oberfläche für das ip-line Programm zur Verfügung stellt. Dieses Programm konnte ich leider nicht testen da zur Ausführung des Programms knapp 30 weiter Gnome Packete installiert werden müssten, ich aber kein Gnome verwende. Das ca. 600 Zeilen lange Skript kann man sich unter der URL http://sourceforge.net/projects/ifp-gnome herunterladen.

6. ifp-linux-filesystem: Den iRiver Player als Dateisystem mounten

Bei dem ifp-linux-filesystem handelt es sich um einen Kernelpatch (der Kernel bzw. die Module muss/müssen also neu kompiliert werden), der es ermöglich den iRiver Player wie eine Festplatte zu mounten.
Erforderlich sind natürlich Kernelsourcen für den genutzten Kernel und der Patch den man unter http://sourceforge.net/ herunterladen kann. Dann nach fügt man den Patch den Kernelsourcen hinzu und übersetzt die Module und ggf. den Kernel wie unten beschrieben.
backdoor:/usr/src/linux# patch -p1 < /tmp/iriverfs-r0.1.0.1.patch
patching file COPYING.iriverfs
patching file Documentation/filesystems/iriver.txt
patching file fs/Kconfig
Hunk #1 succeeded at 339 (offset -63 lines).
patching file fs/Makefile
Hunk #1 succeeded at 53 (offset 2 lines).
patching file fs/iriver/Makefile
patching file fs/iriver/ifp.h
patching file fs/iriver/ifp_comp.c
patching file fs/iriver/ifp_dentry.c
patching file fs/iriver/ifp_dentry.h
patching file fs/iriver/ifp_os.h
patching file fs/iriver/ifp_os_linux.c
patching file fs/iriver/ifp_prim.c
patching file fs/iriver/ifp_prim.h
patching file fs/iriver/ifp_readwrite.c
patching file fs/iriver/inode.c
patching file fs/iriver/iriverfs.h

backdoor:/usr/src/linux# make modules modules_install
Im nächsten Schritt kann das Modul mit dem Befehl modprobe iriver geladen und der Player mit mount -t iriver none /mountpoint eingebunden werden. Es ist noch anzumerken das beim ifp-linux-filesystem einige Features zum Zeitpunkt dieses Artikels noch nicht implementiert sind, es ist insbesondere nicht möglich Verzeichnisse oder Dateien umzubennen.

7. Der iRiver Player als USB Mass Storage Gerät

Wie weiter oben bereits gesagt ist es auch möglich den Player so zu betreiben das er sich wie eine normale Festplatte am System anmeldet. Dies hat den Vorteil das man überall, ohne jegliche weitere Software, Dateien auf oder vom Player herunter laden kann. Hierfür ist zwingend ein Firmwareupgrade nötig, nach dem Firmwareupgrade wird keines der hier vorgestellten Programme mehr funktionieren. Es ist also auch nicht mehr möglich unter Linux zur "normalen" Firmeware zurückzukehren!
Weiterhin sollte man von den Daten auf dem Player ein Backup machen, da nach dem Firmwareupgrade der Speicher des Players neu formatiert wird!

Vorraussetzung um den Player als USM Gerät zu nutzen ist eins der oben beschriebenen Programme um die Firmware auf den Player zu laden und das Modul usb-storage. Alternativ kann statt des Moduls usb-storage natürlich auch fest in den Linuxkernel einkompiliert werden.
Zunächst ist die Firmware von der iriver Webseite herunterzuladen. Es ist darauf zu achten das es sich um die USM Version handelt.
Die Firmware muss nun mit dem unzip Kommando entpackt werden:

backdoor:/tmp$ unzip ifp890eu-ums129.zip
Archive:  ifp890eu-ums129.zip
  inflating: IFP-8XXT.HEX
Bei der .Hex Datei handelt es sich um die neue Firmeware, diese Datei kann nun auf den Player hochgeladen. Ich habe dafür das ifp-line Programm benutzt. Das Fehler nach dem hochladen ist so richtig, da sich der Player erstens nach dem hochladen ausschaltet und zweitens die Software mit der UMS Firmware nicht mehr funktioniert.
backdoor: /tmp$ ifp firmupdate IFP-8XXT.HEX
WARNING: Do you want to firmware update? [y/N]: y
1376256 sent
Please wait few minutes...
ifp battery: Could not get battery status. ctl8 = control: 03 00 00 00 0f 55 04 ffffff80 .
Unable to connect to iFP.
Der iriver Player kann nun wieder eingeschaltet werden. Nach dem Einschalten wird der Speicher des Players neu formatiert es erscheint im Display die Anzeige formating xx%.
Schaltet man den Player wieder ein sollte im dmesg von Linux in etwa folge Meldung erscheinen:
usb 1-1: new full speed USB device using uhci_hcd and address 3
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 3
usb-storage: waiting for device to settle before scanning
  Vendor: iriver    Model: MassStorage Disc  Rev:
  Type:   Direct-Access                      ANSI SCSI revision: 00
usb-storage: device scan complete
SCSI device sda: 2048001 512-byte hdwr sectors (1049 MB)
sda: assuming Write Enabled
sda: assuming drive cache: write through
SCSI device sda: 2048001 512-byte hdwr sectors (1049 MB)
sda: assuming Write Enabled
sda: assuming drive cache: write through
 sda:
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
Nun kann man mit dem mount Kommando den Player in das System einfügen. Als root sollte folgeneder Befehl reichen:
mount /dev/sda /mnt/iriver/
um den Player als Festplatte zu mounten. Nun können alle Daten mit beliebigen Dateikommandos auf den Player zurückgespielt werden.