Export to GitHub

e60-open - CustomFirmwareHowTo.wiki


You will need: * A Linux workstation (tested with Ubuntu Lucid and Debian Squeeze). This might also work with a Linux LiveCD. * the squashfs-tools and svn packages (and probably some others too...)

Generate the firmware from SVN

Download the firmware files from SVN

  • To avoid messing up things, create a directory somewhere you will remember, for example: mkdir ~/workinprogress cd ~/workinprogress
  • Now, we are going to get the latest firmware files: svn checkout http://e60-open.googlecode.com/svn e60-open-read-only This might take a few minutes...

You have now all the required files to create a new firmware. You can modify the files you need in the directory "Binaires/squash-fsroot".

Generate the firmware

This is actually very easy: cd ~/workinprogress/e60-open-read-only/Binaires chmod +x mkpackage make-E60FR.sh ./make-E60FR.sh

You will be prompted for your root password: this is normal, we have to be root to create some of the files.

This process will generate a firmware usable with the French (and Italian too?) version of the E60.

Before installing it, we strongly suggest that you read the Wiki entry on the rescue mode. This could be a good idea also to prepare now a valid firmware (i.e. a vanilla firmware from Samsung, properly renamed in order to be ready to use in case of a problem with your own firmware).

Generate the firmware from the Samsung-supplied distribution

Get the "10_E60.zip" file from the Samsung Open Source Release Center and unzip it.

Extract from the existing firmware image

  • Use "unsquashfs" to extract the "rootfs.bin" file

Create your own rootfs

  • Use "mksquashfs squashfs-root/ rootfs.bin" to create a "rootfs.bin" image
  • Run "make-E60FR.sh" to create the firmware image
  • Run the following line to make the firmware recognized on a French E60 device: perl -pi -e 's{\x51\x20\xE8\x04}{\x00\x10\x10\xF0}' E60FR-CP.bin
  • Put the firmware on your device

Compile your own kernel

CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-unknown-linux-gnueabi-gcc \ AS=/usr/local/arm/4.2.2-eabi/usr/bin/arm-unknown-linux-gnueabi-as \ AR=/usr/local/arm/4.2.2-eabi/usr/bin/arm-unknown-linux-gnueabi-ar \ LD=/usr/local/arm/4.2.2-eabi/usr/bin/arm-unknown-linux-gnueabi-ld \ make zImage config_q60k