the original firmware can be modified by Uberizer (key sequence: d/0 for backup, c/6 for root, b/3 for market fix, e/2 for boot animation, c/13 for root checker apk, and d/0 for final backup)
Custom ROMs based on the factory firmware
Uberoid for MK802 – rooted orig. FW0710B with some apks (no kernel or userspace mods)
download LiveSuitPack109eng (LiveSuit V1.09) which contains a flashing tool and x86&x64 USB drivers
download firmware image file (*.img)
proceed as follows
press and hold MK802’s reset button (one of the holes near HDMI port)
connect MK802 via OTG port to PC (still holding the reset button)
wait while Windows will be looking for driver for the device (~5 seconds) and then, the reset button can be released
open Windows Device Manager and select “Update driver” on the new “Unknown device”, ser LiveSuit’s folder when Windows starts looking for a suitable driver
after the driver is installed, you can run LiveSuit (and read or skip emerging help)
in LiveSuit, select the preffered firmware image (*.img file)
disconnect and again connect the MK802 device
flashing starts automatically, when the connected device is recognized (when its driver will be found)
Windows: A10 flash kitchen v2 – the version for ICS, based on the ainol novo 7 soruce drop, but only contains the nescessary files, and has a few batch scripts to automate the process
Linux: execute awimage tool which will extract the content of the image into original.img.dump directory as
awimage -uv original.img
Windows: put an image file as original.img into a10_flash_kitchen_v2/packer_ics directory as extract_image.bat in the flash kitchen and execute
extract_image.bat
directory _extract or *.dump will contain the extracted files which are
SYS_CONFIG* – a command bunch for LiveSuite which tells the app how to flash, what to flash, where, and it configures the device too (screen size, ram info, cpu info, etc)
BOOT0_* and BOOT1_* – NAND bootloaders
FED_*, FES_*, and FET_* – NAND flashing utilities, checksums, hardware scanner, and other tools used during flashing
1234567890* – bootloaders, config files, and tools for SDMMC flashing, if there’s a device with SDMMC internal instead of NAND, these are used
SPLIT_* – some kind of ID string
RFSFAT16_BOOTLOADER_00000.fex – the bootloader partition (vfat dump)
RFSFAT16_BOOT_00000000000.fex – the boot image (kernel + initrd)
RFSFAT16_RECOVERY_0000000.fex – the recovery image (kernel + initrd)
RFSFAT16_SYSTEM_000000000.fex – the system partition (ext4 sparse)
extract RFSFAT16_BOOTLOADER_00000.fex by executing mkdir -p RFSFAT16_BOOTLOADER_00000; sudo mount -o loop RFSFAT16_BOOTLOADER_00000.img RFSFAT16_BOOTLOADER_00000
which mounts the vfat dump into ./RFSFAT16_BOOTLOADER_00000 directory
extract RFSFAT16_BOOT_00000000000.fex by executing
tools/split_bootimg.pl RFSFAT16_BOOT_00000000000.fex
which extracts the boot image into RFSFAT16_BOOT_00000000000.fex-kernel (kernel) and RFSFAT16_BOOT_00000000000.fex-ramdisk.gz (initrd) images
mkdir -p RFSFAT16_BOOT_00000000000 && cd RFSFAT16_BOOT_00000000000; gunzip -c ../RFSFAT16_BOOT_00000000000.fex-ramdisk.gz | cpio -i
which extracts the content of given initrd file into RFSFAT16_BOOT_00000000000 directory
extract RFSFAT16_RECOVERY_0000000.fex by executing
tools/split_bootimg.pl RFSFAT16_RECOVERY_00000000000.fex
which extracts the recovery image into RFSFAT16_RECOVERY_00000000000.fex-kernel (kernel) and RFSFAT16_RECOVERY_00000000000.fex-ramdisk.gz (initrd) images
mkdir -p RFSFAT16_RECOVERY_00000000000 && cd RFSFAT16_RECOVERY_00000000000; gunzip -c ../RFSFAT16_RECOVERY_00000000000.fex-ramdisk.gz | cpio -i
which extracts the content of given initrd file into RFSFAT16_RECOVERY_00000000000 directory
extract RFSFAT16_SYSTEM_000000000.fex by executing
tools/simg2img RFSFAT16_SYSTEM_000000000.fex RFSFAT16_SYSTEM_000000000.img
which creates an ext4 dump
mkdir -p RFSFAT16_SYSTEM_000000000; sudo mount -o loop RFSFAT16_SYSTEM_000000000.img RFSFAT16_SYSTEM_000000000
which mounts the ext4 dump into ./RFSFAT16_SYSTEM_000000000 directory
replace the original kernels (boot.img-kernel and recovery.img-kernel) with customised ones and modify extracted files and files in the mounted directories as you wish
get bootloader.fex by unmounting ./RFSFAT16_BOOTLOADER_00000 directory and renaming RFSFAT16_BOOTLOADER_00000.fex to bootloader.fex
pack new boot.fex by executing
tools/mkbootfs RFSFAT16_BOOT_00000000000 | gzip > boot.img-ramdisk.gz
which creates initrd file
tools/mkbootimg --base 0x40000000 --kernel boot.img-kernel --ramdisk boot.img-ramdisk.gz --cmdline 'console=ttyS0,115200 rw init=/init loglevel=8' -o boot.fex
which packs the kernel and the initrd images into boot.fex file
pack new recovery.fex by executing
tools/mkbootfs RFSFAT16_BOOT_00000000000 | gzip > recovery.img-ramdisk.gz
which creates initrd file
tools/mkbootimg --base 0x40000000 --kernel recovery.img-kernel --ramdisk recovery.img-ramdisk.gz --cmdline 'console=ttyS0,115200 rw init=/init loglevel=8' -o recovery.fex
which packs the kernel and the initrd images into recovery.fex file
pack new system.fex by executing
sudo tools/mkuserimg.sh -s ./RFSFAT16_SYSTEM_000000000 system.fex ext4 /tmp 300M
(the directory should be still mounted when executing the command)
pack the new firmware into output.img file
Linux: ???
Windows: use flas kitchen as follows
move all new *.fex files into a10_flash_kitchen_v2/packer_ics/_input directory
open a10_flash_kitchen_v2/packer_ics/files/image.cfg file and comment lines with OEM and VOEM strings by preceeding semicolon (;)
in a10_flash_kitchen_v2/packer_ics directory execute create_image.bat to create the firmware image as output.img file