How to create Amlogic recovery SD card from Linux

Amlogic recovery SD card is used when device is bricked, when bootloader does not exist on boot device (SPI chip or NAND) or it is corrupted.

Linux (any distribution) is most convenient OS for creating that kind of card. Basically, card is created that way that first 3 cylinders on card are reserved for bootloader. FAT32 partition follows (starts on sector 3 to the end of sdcard).

Let’s say we want to create recovery card for MX board. MX uses u-boot.img as bootloader name. We will asume that our device is bricked and needs complete firmware reinstall.
So, we need: u-boot.img for that device and rest of firmware ( and recovery.img which is recovery kernel + tools, usually Android recovery system).

We will asume this:
Our sdcard is: /dev/sdb
First partition: /dev/sdb1
Mountpoint for sdcard: /home/stane/recoverysd

First we will unmount our sdcard if it is mounted

Next we will raw copy u-boot.img from our current folder to sdcard (not partition!)

Now we have to delete all existing partitions on sdcard and create only one that will start from 3rd cylinder. Most newer Linux distros uses also newer version of fdisk utility which consider cylinders for display/entry unit as deprecated, so before any action you have to enable it by issuing “u” in fdisk and pressing enter key.

So, lets start with fdisk. We will start it with following command:

in fdisk, as I said earlier we will first issue u command and hit enter which will result with message: Changing display/entry units to cylinders (DEPRECATED!)
Just ignore it and contine.

Next step is to delete all existing partitions from our sdcard. Hit d command and after that hit p command to see current partition status on your sdcard.
Repeat this step until all partitions are deleted.

After issuing p output should look like this:

with no partitions listed.
When we cleared our partition layout, its time to create new one.

To do that, issue n command and create primary partition (by selecting p option on next menu).
When fdisk asks for partition number, leave empty (1st is by default) and continue.
Now comes our cylinder part. Fdisk will ask you for First cylinder. Put there 3 and continue.
Next, it will ask for last cylinder. Leave default value (just press enter).

Ok, partition is created, but its raw for now. We have to assign filesystem to it (which will be FAT32). So, issue t command and after that b command (b is code for FAT32 partition type).

When done, with these steps, issue w command which will write changes to sdcard and will exit fdisk.

Ok, now we have to format our newly created partition which we will do with issuing command:

When partition is formatted, you have two options. Either you will re-insert your card to cardreader, or you will mount it manually to folder from which we unmounted it.

If you choose second option, issue command as follows:

When mounted, copy all your firmware files to sdcard and properly unmount it and eject from your cardreader. You can unmount it within your Linux distro file manager or with command:

Now your recovery sdcard is ready to use.

When you finished with recovery of your box, you’ll probably want to back your card to normal (because using it in another box, might brick it).

We are going to do that by raw copying few kilobytes of zeros to start of sdcard (after we unmounted it) with following command:

After procedure is finished, start fdisk as before (which will warn you that your drive/card is corrupted) and just issue w command. Fdisk will write changes to sdcard and exit.

After that, start fdisk again and create your new partition (none exists anymore) as you did before, just use default values. After that, format the file system on your sdcard and thats it.

Hope it helped someone 🙂

2 thoughts on “How to create Amlogic recovery SD card from Linux”

  1. Thankd for the tutorial, i can un brick my Mini M8S ( S905) with this tutorial.
    Buat when i use u-boot.bin it will not boot, i have to use
    i have to use after read this post
    I put only Two File in SD Card, its aml_sdc_burn.ini and update_minim8s_rv104L03.img renamed to aml_upgrade_package.img

    The i insert the SDcard to Mini M8S, hold the Button, plug the Power. hold the Button until its showed the Update proses and Release the Button.

    I just want to share, if anyone come here throug google search, it could help them.

    Thanks again.

  2. You copy a .bin to the raw SD card. Why do use a block size of 640 for the dd? bs=1M ought to be faster and have the same result. In any case, a multiple of 512 is much more common for disk-like targets. oflag=direct might be good (but not with bs=640).

    Then you fdisk that SD card.

    Does the fdisk not undo the copying? fdisk whacks on the partition table which happens to be at the end of the first “sector” (512 bytes) of the raw SD card.

    Does the .bin make allowances for the partition table (i.e. the end of the first sector)? Does it not already have one?

    Then you place a partition 2048 sectors in from the start (i.e. from the 3rd “cylinder”.

    Does the .bin end before that first partition?

Leave a Reply

Your email address will not be published. Required fields are marked *