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 (update.zip 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
sudo umount /home/stane/recoverysd
Next we will raw copy u-boot.img from our current folder to sdcard (not partition!)
sudo dd if=u-boot.bin of=/dev/sdb bs=640
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:
Command (m for help): p
Disk /dev/sdb: 16.0 GB, 16009658368 bytes
64 heads, 32 sectors/track, 15268 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x94d4b0e9
Device Boot Start End Blocks Id System
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:
sudo mkfs.msdos /dev/sdb1
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:
sudo mount /dev/sdb1 /home/stane/recoverysd
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:
sudo umount /home/stane/recoverysd
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:
sudo dd if=/dev/zero of=/dev/sdb count=1000
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 🙂