ClockworkMod Recovery is a replacement recovery system for Android devices
developed as part of famous CyanogenMod project. Because under the hood
FirefoxOS reuses most low-level components from Android, we can use this
recovery to easily backup and restore for example Alcatel One Touch Fire
devices (but the steps shown here should be similar for other devices). This
guide shows how to port and build
AOTF devices by yourself.
First of all, you have to dump
boot.img image form your device as described
in my previous post. Lets assume that you dumped this image to
As already mentioned, ClockworkMod is part of CyanogenMod project. We have to download CyanogenMod sources in order to create recovery image. CM10 didn’t work for me so you have to download older version - CM9.1. You will need repo tool for this:
mkdir -p ~/BUILD/cyanogen9.1 cd ~/BUILD/cyanogen9.1 ~/bin/repo init -u git://github.com/CyanogenMod/android.git -b cm-9.1.0 ~/bin/repo sync
This will take a lot of time to finish. Go for a walk or something.
Prepare for build
Now lets prepare our build environment:
cd ~/BUILD/cyanogen9.1 source build/envsetup.sh make -j4 otatools
This will build some essential tools and should take no more than couple of minutes to finish. When it’s done, we can create device tree for our phone:
export PATH=$PATH:$PWD/out/host/linux-x86/bin/ ./build/tools/device/mkvendor.sh alcatel hamachi ~/boot.img
This will create and populate
device/alcatel/hamachi/ directory. Now we have
BoardConfig.mk inside of this directory to the values used by our device:
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00600000 BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00a00000 BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x0c800000 BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x0a100000
Those values can be obtained from the device itself, by running (we are interested in 2nd column):
$ adb shell cat /proc/mtd | grep -e 'boot\|system\|recovery\|user' mtd0: 00600000 00020000 "boot" mtd1: 0c800000 00020000 "system" mtd5: 0a100000 00020000 "userdata" mtd7: 00a00000 00020000 "recovery"
You should also uncomment following line:
BOARD_HAS_NO_SELECT_BUTTON := true
Otherwise you won’t be able to use POWER button to select menu item.
Build recovery image
Now we are ready to build the image:
source build/envsetup.sh lunch full_hamachi-eng make -j4 recoveryimage
If everything goes fine, after couple minutes your should get following messages:
Made recovery image: out/target/product/hamachi/recovery.img out/target/product/hamachi/recovery.img total size is 6082560
You are ready to run your new recovery image!.
In order to run
recovery.img you have to boot your device in
You can do this using ADB (if your phone is already runnig) using
reboot-bootloader command or manualy by pressing volume-down button while
powering up your phone. You should see familiar Alcatel logo and phone should
stay at this screen forever.
You can ensure that device entered
fastboot mode by running:
$ fastboot devices MSM7627A fastboot
Now you can boot your image with:
$ fastboot boot ~/BUILD/cyanogen9.1/out/target/product/hamachi/recovery.img downloading 'boot.img'... OKAY [ 0.493s] booting... OKAY [ 0.167s] finished. total time: 0.661s
If everything goes well, you should see well-known CWM recovery screen. Go and backup your phone!
After backing up your original firmware (including original recovery), you can
reboot your phone to
fastboot mode and install your custom recovery image:
$ fastboot flash recovery ~/BUILD/cyanogen9.1/out/target/product/hamachi/recovery.img sending 'recovery' (5940 KB)... OKAY [ 0.497s] writing 'recovery'... OKAY [ 0.974s] finished. total time: 1.471s
From now on, you can run CWM recovery by holding volume-up button when powering up your device.