[SCRIPTS] Unpack / repack MT65xx/MT83xx boot.img, recovery.img or logo.bin

Search This thread

bgcngm

Recognized Developer
Apr 2, 2007
7,090
21,550
Lisbon
HTC One (M8)
Xiaomi Mi 5
If you are looking for a way to easily unpack / repack boot.img, recovery.img or logo.bin from your MediaTek device (all except Android One devices), don't look any further. Here you can find my own Perl scripts.

Scripts were first based on the ones available on Android-DLS WiKi, but are now highly modified in order to work with specific MTK boot and recovery images. The scripts fully work with every image from all known MediaTek SoC:
  • MT6516
  • MT65x3 (MT6513 and MT6573)
  • MT65x5 (MT6515 and MT6575)
  • MT6577
  • MT65x2 (MT6572, MT6582 and MT6592)
  • MT6589
  • MT83xx (MT8377 and MT8389)
  • MT6595

The most up to date version of the scripts is always available at my public github repository: bgcngm/mtk-tools. Scripts require Perl v5.14+ to be installed and were fully tested under Ubuntu 12.04 as well as Windows 7 x64 (using Cygwin).

Please don't just leech the files and go away. You can easily say thanks just by pressing "Thanks" button.

Unpack script usage:
Code:
Usage: unpack-MTK.pl <infile> [COMMAND ...]
  Unpacks MediaTek boot, recovery or logo images

Optional COMMANDs for boot or recovery images are:

  -info_only
    Display file information only
     (useful to check image information without unpacking)

  -kernel_only [--debug]
    Extract kernel only

  -ramdisk_only [--debug]
    Extract ramdisk only

    (optional argument '--debug' can additionally be used to provide useful
     information for debugging purposes, even while unpacking both kernel
     and ramdisk)

Optional COMMANDs for logo images are:

  -force_logo_res <width> <height>
    Forces file to be unpacked by specifying image resolution (in pixels)
     (only useful when no zlib compressed images are found)

  -invert_logo_res
    Invert image resolution (width <-> height)
     (may be useful when extracted images appear to be broken)

Repack script usage:
Code:
Usage: repack-MTK.pl <COMMAND ...> <outfile>
  Repacks MediaTek boot, recovery or logo images

COMMANDs for boot or recovery images are:

  -boot [--debug] <kernel> <ramdisk-directory>
    Repacks boot image

  -recovery [--debug] <kernel> <ramdisk-directory>
    Repacks recovery image

    (optional argument '--debug' can additionally be used to provide useful
     information for debugging purposes, while repacking)

COMMANDs for logo images are:

  -logo [--no_compression] <logo-directory>
    Repacks logo image

    (optional argument '--no_compression' can be used to repack logo images
     without compression)

Version history:
  • modified to work with MT6516 boot and recovery images (17-03-2011)
  • included support for MT65x3 and eliminated the need of header files (16-10-2011)
  • added cygwin mkbootimg binary and propper fix (17-05-2012)
  • included support for MT65xx logo images (31-07-2012)
  • fixed problem unpacking logo images containing more than nine packed rgb565 raw files (29-11-2012)
  • re-written logo images file verification (29-12-2012)
  • image resolution is now calculated and shown when unpacking logo images (02-01-2013)
  • added colored screen output (04-01-2013)
  • included support for logo images containing uncompressed raw files (06-01-2013)
  • more verbose output when unpacking boot and recovery images (13-01-2013)
  • kernel or ramdisk extraction only is now supported (13-01-2013)
  • re-written check of needed binaries (13-01-2013)
  • ramdisk.cpio.gz deleted after successful extraction (15-01-2013)
  • added rgb565 <=> png images conversion (27-01-2013)
  • code cleanup and revised verbose output (16-10-2014)
  • boot or recovery is now extracted to the working directory (16-10-2014)
  • unpack result is stored on the working directory, despite of the input file path (17-10-2014)
  • added support for new platforms - MT6595 (thanks @carliv) (29-12-2014)
  • minor code cleanup and revised information output for boot and recovery images (29-12-2014)
  • make scripts more future-proof by supporting even more args (30-12-2014)
  • continue repacking even if there's no extra args file (01-01-2015)
  • more verbose output when repacking boot and recovery images (02-01-2015)
  • added new cmdline option for debugging purposes when unpacking / repacking boot and recovery images (06-01-2015)

Credits:
  • Android-DLS for the initial scripts
  • starix (from forum.china-iphone.ru) for the decryption of logo.bin files structure
  • carliv (from xdaforums.com) for new platform support and new binaries

XDA:DevDB Information
MTK-Tools, Tool/Utility for the Android General

Contributors
bgcngm

Version Information
Status: Stable

Created 2014-10-15
Last Updated 2014-10-17
 
Last edited:

bgcngm

Recognized Developer
Apr 2, 2007
7,090
21,550
Lisbon
HTC One (M8)
Xiaomi Mi 5
Editing .rgb565 raw files

There may be other ways for doing this, but here's a short info that will help you to edit .rgb656 raw files found inside MTK logo images.

  • Download and install Paint.NET
  • Download the attached plugin and copy the RGB565.dll file to the folder: "C:\Program Files\Paint.Net\FileTypes"
  • Open the .rgb565 file and enter image height and width

Information:

The plugin will allow read and write support to the RGB565 or RAW565 format. This format is used by the Android platform for the initial boot screen of the device. It will also allow you to open a BMP, PNG, JPG or other image and save it as a RGB565 file.

RGB565 is simply the raw pixel data of a bitmap file. It does not contain any header information and does not contain the dimensions of the image. The only thing that is known is the total number of pixels. When opening a .rgb565 file, the user must specify the height and width of the image, which is the resolution of your device's screen.

Just as an example, for a device with a 540 x 960 screen, the .rgb565 file for that device will have 518400 pixels. The size of the file in bytes will be twice the number of pixels, i.e. 1036800 bytes.
 

Attachments

  • rgb565.rar
    4.7 KB · Views: 7,831
Last edited:

varun.chitre15

Inactive Recognized Developer
Oct 23, 2011
3,153
15,403
Sangli
hello,
i tried ur script and works with MT6573 but i need some help.
How to repack?
The syntax u posted looks little jumbled and i need a example on unpack and repacking from u


Burned from my laser torch using pencil cells
 
Last edited:

bgcngm

Recognized Developer
Apr 2, 2007
7,090
21,550
Lisbon
HTC One (M8)
Xiaomi Mi 5
Simple... let's say you unpack a boot.img:
Code:
unpack-MT65xx.pl boot.img

This extracts the kernel (it will be named boot.img-kernel.img) and the ramdisk folder (it will be named boot.img-ramdisk).

In order to repack, you should run:
Code:
repack-MT65xx.pl boot.img-kernel.img boot.img-ramdisk new-boot.img

If you are repacking a recovery.img, then it should be:
Code:
repack-MT65xx.pl -recovery recovery.img-kernel.img recovery.img-ramdisk new-recovery.img
 

varun.chitre15

Inactive Recognized Developer
Oct 23, 2011
3,153
15,403
Sangli
I m getting "can't exec "mkbootimg" : No such file or directory at ./repack-Mt65xx.pl line 66" error
Now?

Edit: Solved the error

Burned from my laser torch using pencil cells
 
Last edited:

marsavo

Member
Sep 17, 2008
14
0
Hello, sorry for my bad english :(

help me please :eek:

i'm getting this error:
C:\Perl\MT65xx_scripts>unpack-MT65xx.pl recovery.img
Subroutine Cwd::fastcwd redefined at C:/Perl/lib/Cwd.pm line 819.
Subroutine Cwd::getcwd redefined at C:/Perl/lib/Cwd.pm line 819.
Subroutine Cwd::abs_path redefined at C:/Perl/lib/Cwd.pm line 819.

kernel written to boot/recovery.img-kernel.img
the boot image does not appear to contain a valid gzip file at C:\Perl\MT65xx_sc
ripts\unpack-MT65xx.pl line 48.

My telephone have a MT6573 processor
 

yuweng

Senior Member
Feb 5, 2012
1,172
4,226
Works in windows with cygwin too with some minor tweaking...

change the repack script line 66, mkbootimg to ./mkbootimg.exe & replace mkbootimg with this windows version...:p i think it should work with any mkbootimg.exe windows version too...

ignore the unpack scripts error though, it works fine actually in cygwin...:)
 

bindassdost

Senior Member
Jul 17, 2011
398
1,166
delhi
If you are looking for a way to easily unpack / repack boot.img (or recovery.img) from your MediaTek device, don't look any further. Here you can find my own Perl scripts.

These scripts are based on the ones available on Android-DLS WiKi, but highly modified in order to work with specific MTK boot and recovery images. Currently, these scripts fully work with any MT6516, MT6513 or MT6573 boot image. I believe it will still work for the new MT6575 images.

Unpack script usage:
Code:
unpack-MT65xx.pl <image>

Repack script usage:
Code:
repack-MT65xx.pl [-recovery] <kernel> <ramdisk-directory> <outfile>

when i type
unpack-MT65xx.pl boot.img
in terminal it says
unpack-MT65xx.pl cammand not found

im on ubuntu 11
 

balamu96m

Senior Member
May 2, 2011
1,216
1,304
Chennai
Solution to the error!!

Edit: Solved the error - can't exec "mkbootimg"

If someone gets the error:

can't exec "mkbootimg" : No such file or directory at ./repack-Mt65xx.pl line 66

Follow this:

In Ubuntu:

copy the 'mkbootimg' file and paste it in your /bin folder.

A command like this in the terminal will do the work:

Code:
 sudo cp /path/to/unpack-repack-scripts/mkbootimg /bin
(enter your password, when it asks)

In windows(using cygwin):


Edit:

Use the OP to download latest script.
 
Last edited:
  • Like
Reactions: VanoSM

ajparag

Senior Member
Mar 9, 2011
250
64
Mumbai
Hello, sorry for my bad english :(

help me please :eek:

i'm getting this error:
C:\Perl\MT65xx_scripts>unpack-MT65xx.pl recovery.img
Subroutine Cwd::fastcwd redefined at C:/Perl/lib/Cwd.pm line 819.
Subroutine Cwd::getcwd redefined at C:/Perl/lib/Cwd.pm line 819.
Subroutine Cwd::abs_path redefined at C:/Perl/lib/Cwd.pm line 819.

kernel written to boot/recovery.img-kernel.img
the boot image does not appear to contain a valid gzip file at C:\Perl\MT65xx_sc
ripts\unpack-MT65xx.pl line 48.


I am getting the same error. I am running this script on windows 7. My phone is based on MT6516.
 

jbctiong

Senior Member
Nov 15, 2008
70
23
Simple... let's say you unpack a boot.img:
Code:
unpack-MT65xx.pl boot.img

This extracts the kernel (it will be named boot.img-kernel.img) and the ramdisk folder (it will be named boot.img-ramdisk).

In order to repack, you should run:
Code:
repack-MT65xx.pl boot.img-kernel.img boot.img-ramdisk new-boot.img

If you are repacking a recovery.img, then it should be:
Code:
repack-MT65xx.pl -recovery recovery.img-kernel.img recovery.img-ramdisk new-recovery.img

Thanks for sharing. Very useful.
 
Last edited:
Oct 30, 2010
48
11
Mumbai
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 379
    If you are looking for a way to easily unpack / repack boot.img, recovery.img or logo.bin from your MediaTek device (all except Android One devices), don't look any further. Here you can find my own Perl scripts.

    Scripts were first based on the ones available on Android-DLS WiKi, but are now highly modified in order to work with specific MTK boot and recovery images. The scripts fully work with every image from all known MediaTek SoC:
    • MT6516
    • MT65x3 (MT6513 and MT6573)
    • MT65x5 (MT6515 and MT6575)
    • MT6577
    • MT65x2 (MT6572, MT6582 and MT6592)
    • MT6589
    • MT83xx (MT8377 and MT8389)
    • MT6595

    The most up to date version of the scripts is always available at my public github repository: bgcngm/mtk-tools. Scripts require Perl v5.14+ to be installed and were fully tested under Ubuntu 12.04 as well as Windows 7 x64 (using Cygwin).

    Please don't just leech the files and go away. You can easily say thanks just by pressing "Thanks" button.

    Unpack script usage:
    Code:
    Usage: unpack-MTK.pl <infile> [COMMAND ...]
      Unpacks MediaTek boot, recovery or logo images
    
    Optional COMMANDs for boot or recovery images are:
    
      -info_only
        Display file information only
         (useful to check image information without unpacking)
    
      -kernel_only [--debug]
        Extract kernel only
    
      -ramdisk_only [--debug]
        Extract ramdisk only
    
        (optional argument '--debug' can additionally be used to provide useful
         information for debugging purposes, even while unpacking both kernel
         and ramdisk)
    
    Optional COMMANDs for logo images are:
    
      -force_logo_res <width> <height>
        Forces file to be unpacked by specifying image resolution (in pixels)
         (only useful when no zlib compressed images are found)
    
      -invert_logo_res
        Invert image resolution (width <-> height)
         (may be useful when extracted images appear to be broken)

    Repack script usage:
    Code:
    Usage: repack-MTK.pl <COMMAND ...> <outfile>
      Repacks MediaTek boot, recovery or logo images
    
    COMMANDs for boot or recovery images are:
    
      -boot [--debug] <kernel> <ramdisk-directory>
        Repacks boot image
    
      -recovery [--debug] <kernel> <ramdisk-directory>
        Repacks recovery image
    
        (optional argument '--debug' can additionally be used to provide useful
         information for debugging purposes, while repacking)
    
    COMMANDs for logo images are:
    
      -logo [--no_compression] <logo-directory>
        Repacks logo image
    
        (optional argument '--no_compression' can be used to repack logo images
         without compression)

    Version history:
    • modified to work with MT6516 boot and recovery images (17-03-2011)
    • included support for MT65x3 and eliminated the need of header files (16-10-2011)
    • added cygwin mkbootimg binary and propper fix (17-05-2012)
    • included support for MT65xx logo images (31-07-2012)
    • fixed problem unpacking logo images containing more than nine packed rgb565 raw files (29-11-2012)
    • re-written logo images file verification (29-12-2012)
    • image resolution is now calculated and shown when unpacking logo images (02-01-2013)
    • added colored screen output (04-01-2013)
    • included support for logo images containing uncompressed raw files (06-01-2013)
    • more verbose output when unpacking boot and recovery images (13-01-2013)
    • kernel or ramdisk extraction only is now supported (13-01-2013)
    • re-written check of needed binaries (13-01-2013)
    • ramdisk.cpio.gz deleted after successful extraction (15-01-2013)
    • added rgb565 <=> png images conversion (27-01-2013)
    • code cleanup and revised verbose output (16-10-2014)
    • boot or recovery is now extracted to the working directory (16-10-2014)
    • unpack result is stored on the working directory, despite of the input file path (17-10-2014)
    • added support for new platforms - MT6595 (thanks @carliv) (29-12-2014)
    • minor code cleanup and revised information output for boot and recovery images (29-12-2014)
    • make scripts more future-proof by supporting even more args (30-12-2014)
    • continue repacking even if there's no extra args file (01-01-2015)
    • more verbose output when repacking boot and recovery images (02-01-2015)
    • added new cmdline option for debugging purposes when unpacking / repacking boot and recovery images (06-01-2015)

    Credits:
    • Android-DLS for the initial scripts
    • starix (from forum.china-iphone.ru) for the decryption of logo.bin files structure
    • carliv (from xdaforums.com) for new platform support and new binaries

    XDA:DevDB Information
    MTK-Tools, Tool/Utility for the Android General

    Contributors
    bgcngm

    Version Information
    Status: Stable

    Created 2014-10-15
    Last Updated 2014-10-17
    32
    Editing .rgb565 raw files

    There may be other ways for doing this, but here's a short info that will help you to edit .rgb656 raw files found inside MTK logo images.

    • Download and install Paint.NET
    • Download the attached plugin and copy the RGB565.dll file to the folder: "C:\Program Files\Paint.Net\FileTypes"
    • Open the .rgb565 file and enter image height and width

    Information:

    The plugin will allow read and write support to the RGB565 or RAW565 format. This format is used by the Android platform for the initial boot screen of the device. It will also allow you to open a BMP, PNG, JPG or other image and save it as a RGB565 file.

    RGB565 is simply the raw pixel data of a bitmap file. It does not contain any header information and does not contain the dimensions of the image. The only thing that is known is the total number of pixels. When opening a .rgb565 file, the user must specify the height and width of the image, which is the resolution of your device's screen.

    Just as an example, for a device with a 540 x 960 screen, the .rgb565 file for that device will have 518400 pixels. The size of the file in bytes will be twice the number of pixels, i.e. 1036800 bytes.
    18
    Simple... let's say you unpack a boot.img:
    Code:
    unpack-MT65xx.pl boot.img

    This extracts the kernel (it will be named boot.img-kernel.img) and the ramdisk folder (it will be named boot.img-ramdisk).

    In order to repack, you should run:
    Code:
    repack-MT65xx.pl boot.img-kernel.img boot.img-ramdisk new-boot.img

    If you are repacking a recovery.img, then it should be:
    Code:
    repack-MT65xx.pl -recovery recovery.img-kernel.img recovery.img-ramdisk new-recovery.img
    9
    I have created a public github repository (bgcngm/mtk-tools) to host the scripts. The most up to date version is always available at the repo.

    I'm currently finishing the re-write of the scripts in order to add the unpack/repack feature of MediaTek logo.bin images.

    Please don't just leech the files and go away. You can easily say thanks just by pressing "Thanks" button.
    3
    Works in windows with cygwin too with some minor tweaking...

    change the repack script line 66, mkbootimg to ./mkbootimg.exe & replace mkbootimg with this windows version...:p i think it should work with any mkbootimg.exe windows version too...

    ignore the unpack scripts error though, it works fine actually in cygwin...:)