Deciphering the song rating system of the Fuze

I haven’t contributed to this forum for a looooong time.
But still I’m a happy Fuze user - with a couple of whishes left. One of the main missing items is the ability to get the rating info from the Fuze (in MSC USB mode) transfered to the computer. I really like to abuse the “Rate Song” feature to flag certain
things like
  - this file should be removed from my music collection (on the computer)
  - that file should be re-tagged properly
and others.

A few days ago I decided to digg into the song rating business of my Fuze by reverse engeniering the (binary) system files on the root directory of the device. Surprisingly it was not to hard to decode the essential parts. So I wrote a small Java application to get the info about rated songs into a simple CSV text file suitable for further processing according to my needs.

And as Christmas is approaching, I’d like to share my program with you!

Any feedback is welcome.

1. Requirements

  - Fuze in MSC USB mode
  - Java Runtime Environment (JRE)
  - My java program JDeFuze.jar (download from project page )

2. About Java Runtime

Check for a suitable JRE by pointing your browser to this page.

You need at least java version 5 (aka 1.5) - better 6 (aka 1.6) from Sun Microsystems Inc.
If you don’t have internet connection you could get the current java version from the command prompt (on Windows: DOS console) by running: “java -version”

If you need special configurations - e.g. setting up and running multiple versions of the JRE - please consult the documentation found on the web.

If you installed a recent Java Version (> about 1.6.0_10) I recommend you to turn off the automatic update “feature” from the Java Control Panel.

3. Running JDeFuze.jar

In the current state this is a simple console application - which might not be appropriate for all users (sorry, to those of you …). It might turn into a full fledged, bleeding edge GUI application in the future …

The recommended way of using the program is by executing the command:
    java -jar JDeFuze-<x.y>.jar <fuzeDir> <outFileName>
    <x.y>         - program version
    <fuzeDir>     - the root of Fuze filesystem (on Windows the drive letter, e.g. E: )
    <outFileName> - a user defined name of the output CSV text file

The output CSV text file contains one line for every rated song. Each line currently consists of three items separated by the single character “|”: the path name of the song, the file name without path, and the rating. The path name syntax is that of the Fuze (seen by the device), thus “mmc:0:” refers to the internal storage and “mmc:1:” refers to external storage (microSD card).

EDIT: smileys kicked off …

A new version 0.2 of the JDeFuze java application is out. Get it from the download section of the project.

The following is a snippet from changelog file:

  • revert from using the method Arrays.copyOf() which was introduced in jre6 but was not available in jre5
  • bugfix: recordings must be ignored in MTABLE.SYS because there is no associated entry in RES_INFO.SYS
  • changed output CSV file format:
         - add some info about current java version to header
         - each line now consists of the following 4 field: song rating, storage location, directory path, file name