Port Status
| driver | status | comments |
|---|
| LCD | 80% | One kind of LCD is working, the other one has been implemented solely by reverse engineering but remains untested. Still lacking partial updates, lcd sleep, inversion, ... Backlight does some strange things on fade. |
| Keys | 90% | Physical keys are handled (see (1)). Touch pad RMI driver has been implemented, some basic gesture analysis has been written but need to be enhanced. |
| Music playback | 80% | Works but needs more testing. |
| FM Radio | 0% | Not implemented. |
| Recording | 0% | Not implemented. |
| Power Management | 30% | No battery charging yet. |
| DMA | 100% | DMA works |
| SSP | 100% | SSP works |
| MMC | 100% | MMC works, I can switch the internal flash to 8-bit bit @48 MHz |
| SD | 40% | A few commands implementeds, only the general SD part is missing, detection works |
| Clock/voltage | 70% | The code works but we are still lacking code to handle voltage; also switch cpu speed is non-trivial and requires careful switching of clock and voltages |
| USB | 100% | Everything is implemented and should work |
- (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 ?
Building the bootloader
To write. The bootloader can be built using three different methods. The recommend one is the automatic method using RockboxUtility when available. The semi-automatic and manual methods require a working cross-compiler and a copy of the Rockbox source code.
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).
-- AmauryPouly - 01 May 2011
Copyright © by the contributing authors.