release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Wiki > Main > SansaFuzePlusPort (compare)

Difference: SansaFuzePlusPort (r63 vs. r62)

Warning !! There have been several reports of malfunctioning devices and it is unclear if it is related to Rockbox or not since similar problems happen with the original firmware. Remember that you use Rockbox at your own risks !

Port Status

driverstatuscomments
LCD 95% Both kinds of LCD are working. Still lacking partial updates, lcd sleep, and inversion.
Keys 90% Physical keys are handled (see (1)). Touch pad RMI driver has been implemented, some basic gesture analysis has been written but needs to be enhanced.
Music playback 80% Works but needs more testing. A few bugs have been reported when using files of different format (undefined instruction), see FS#12442 and FS#12446. Some files can get randomly skipped on some formats (musepack, flac,AAC) but there is a workaround FS#12447. On startup a very unpleasant sound will be heared FS#12483
FM Radio 95% Everything works but the RDS reception is not great and needs to be investigated.
Recording 0% Not implemented.
Power Management 80% Battery charging and core_sleep for battery saving are implemented.
DMA 100% DMA works
SSP 100% SSP works
MMC 100% MMC works, I can switch the internal flash to 8-bit @48 MHz
SD 100% SD works.
Clock/voltage 70% The code works but we are still lacking code to handle voltage; also switching cpu speed is non-trivial and requires careful switching of clock and voltages.
USB 100% Everything is implemented and should work.
Manual 80% Most of the files have been created. Keymaps link have been updated. Only the application plugin section still has to be completed. Please refer to FS#12492 and contact JeanLouisBiasini (jlbiasini) if you want to help.
Rockbox Utility 100% Rockbox Utility now fully handles Fuze+.
  • (1) The volume down key is wired to a GPIO but volume up and power button are wired to the PSWITCH pin for power up/down/recovery. The detection is made by the chip and is voltage based which means that one can detect when either one of those is down but it's impossible to distinguish between when volume up is down and when both are down. Is there another way to handle this ?

Bootloader features

The bootloader comes with a number of features which allow to recover from potential problematic situations.

Booting to the OF

The bootloader can either boot rockbox or the OF. By default it will boot rockbox. The bootloader will boot the OF if volume down is hold while powering up. This works independently from the power source. For example, the following actions will boot the OF:

  • hold volume then press power for a few seconds
  • hold volume then plug the usb cable (plugged into wall outlet or computer)

Note that booting to the OF might be necessary to complete a boootloader update if done with rockbox USB by putting firmware.sb to the root of the filesystem.

Building the bootloader

The bootloader can be built using three different methods. The recommend one is the automatic method using RockboxUtility. The semi-automatic method requires a working cross-compiler and a copy of the Rockbox source code.

Automatic method

  • Use RockboxUtility. Please refer to Rockbox manual for Sansa Fuze+ on how to do so.
  • RockboxUtility will ask you to provide a copy of Sansa original firmware for the Fuze+. You may manually download it from Sansa Forum Website here: version 02.38.06

Semi-Automatic method

Linux

This method requires the following things:

  • a working cross-compiler (arm-elf-eabi), see HowToCompile
  • a copy of the source code, see HowToCompile
  • a copy of the latest firmware for the Fuze+, you need to decompress it, it is be named firmware.sb

First you need to compile the bootloader, to do this follow the instructions from HowToCompile and when running the configure script, select the Fuze+ and bootloader build. After the build, you should get a bootloader-fuzeplus.sansa file (you don't need to go further than the 5. Build step in HowToCompile).

Then you need to build the mkimxboot tool in rbutil/mkimxboot. To do so, just cd into rbutil/mkimxboot and run make. It should produce a mkimxboot executable.

Finally, you need to run the tool with the correct parameters. Assuming you are in rbutil/mkimxboot, run:

./mkimxboot -i sandisk-firmware.sb -b bootloader-fuzeplus.sansa -o firmware.sb -t dualboot

You should replace sandisk-firmware.sb by the path to the firmware you downloaded from Sandisk and extracted from the archive, and replace bootloader-fuzeplus.sansa by the path to the bootloader-fuzeplus.sansa file produced by the compilation. Note that this command will produce a file called firmware.sb so if you put a copy of the firmware.sb file from Sandisk in this directory, rename it to something else like sandisk-firmware.sb before running the command.

Finally, plug your Fuze+ and put the firmware.sb file at the root of the file system, unmount and unplugged just like a regular firmware update.

Of course, to run rockbox, you will also need to do a normal build of rockbox and put rockbox on your device (see HowToCompile but this time to a normal Fuze+ build and go until the 6. Install step).

If you want to boot to the OF, press Volume Down on boot (hold it, press power, wait a few seconds and release it).

Alternative method

you need

  • a compiled bootloader: Bootloader V9 V10 - I will keep it up to date. Keep in mind that bootloader should be updated as rarely as possible. The actual program is in the rockbox build itself, not in the bootloader. Bootloader won't be updated as long as it works.
  • Then you also need the rockbox build itself. Updated builds can be downloaded here: http://build.rockbox.org/data/rockbox-sansafuzeplus.zip

Extract the 2 zip file to your player's root directory then perform the usual manual update via booting into OF. (Sansa recommendation applies here too: no SD card, and check that you have enough battery before performing the update)

Recovery procedure

If for any reason your device doesn't work anymore (doesn't boot, stuck in the bootloader and even the OF doesn't work or if a firmware upgrade failed). You might need to recover your device. You should not attempt this without an advice from someone knowledgeable. The point of the recovery procedure is too reinstall the OF and will remove any trace of the rockbox bootloader.

Linux

This method requires the following things:

  • a working cross-compiler (arm-elf-eabi), see HowToCompile
  • a copy of the source code, see HowToCompile
  • a copy of the latest firmware for the Fuze+, you need to decompress it, it is be named firmware.sb

First you need to compile the bootloader, to do this follow the instructions from HowToCompile and when running the configure script, select the Fuze+ and bootloader build. After the build, you should get a bootloader-fuzeplus.sansa file (you don't need to go further than the 5. Build step in HowToCompile).

Then you need to build the mkimxboot tool in rbutil/mkimxboot. To do so, just cd into rbutil/mkimxboot and run make. It should produce a mkimxboot executable.

Then you need to build the sbloader tool in utils/imxtools. To do so, just cd into utils/imxtools and run make. It should produce several executable and one of them is sbloader.

Then you need to run the tool with the correct parameters to build a recovery image. Assuming you are in rbutil/mkimxboot, run:

./mkimxboot -i sandisk-firmware.sb -b bootloader-fuzeplus.sansa -o recovery.sb -t recovery

Then put your device in recovery mode: power it off, hold volume up and plug the usb cable then release volume up after a few seconds. The screen should stay black and the device will report as a HID device.

Finally send it to your device using sbloader(replace blabla by the path to utils/imxtools)(you will probably need run it as root).

blabla/sbloader 1024 recovery.sb

The screen should display a few lines and the device you report as a mass storage but you OS will not be able to mount it. It should have 4 partitions. Assuming that it was detected as /dev/sdb, send the OF file to the second partition this way:

dd if=sandisk-firmware.sb bs=512 seek=4 of=/dev/sdb2

When done, unplug your device and you are done.

Battery Benchmark

See http://www.rockbox.org/wiki/SansaRuntime

-- AmauryPouly - 01 May 2011

r77 - 02 Apr 2014 - 15:38:42 - AmauryPouly

Revision r63 - 06 Jun 2012 - 11:31 - AndrejSinicyn?
Revision r62 - 17 May 2012 - 09:47 - JeanLouisBiasini
Copyright by the contributing authors.