First we’ll need to have a tool to extract some files from the firmware. Create aml-upgrade-package-extract.c with the code below which http://freaktab.com/forum/tv-player-support/amlogic-based-tv-players/s912/others-aml-s912/firmware-roms-tools-by/602802-aml_upgrade_package-img-extract'); return false;">I found on Freaktab too and slightly modified it to parse the firmware filename:
Now compile the tool with gcc:
and run the thing on the firmware file:
It will extract a bunch of files:
You’ll just need aml_sdc_burn.ini and aml_sdc_burn.UBOOT, plus the IMG file itself to create a bootable mass storage device.
Now find the device for your micro SD card (formatted with FAT32) with lsblk:
In my case it’s /dev/sdd, but I’ll use /dev/sdX in the instructions below, just change the command with yours.
and finally re-mount the SD card/flash drive, copy the firmware file and aml_sdc_burn.ini to the root of the device, and rename the firmware to aml_upgrade_package.img to match the string in aml_sdc_burn.ini:
Now make sure no other USB devices or SD card are inserted in the TV box, and insert your bootable (micro) SD card or USB flash drive into the TV box. If your TV box is fully bricked, you have nothing to do, and the update should start straightaway, but if it is partially bricked or just working fine, you still need to press the recovery button, apply power, and release the button in order to enter recovery mode. The upgrade should then start automatically.
Patiently wait for the update to complete and you should be all good. Please note that I first tried with a USB flash drive, and the method did not work. Once the update is complete, you’ll see the “Android success” logo.