Copyright (C) 2007-2011 pancake Copyright (C) 2011-2012 Pali Rohár SPECS FOR THE FIASCO FIRMWARE FILE FORMAT ffff! ----------------------------------------------- This is final working version of FIASCO format. FIASCO image which is generated by this spec is acceptable by Nokia flasher-3.5 and unpack data same as FIASCO image generated by Nokia fiasco-gen. This format is implemented in 0xFFFF and every image which I tested (generated by 0xFFFF and fiasco-gen) was properly unpacked under 0xFFFF and flasher-3.5 with same result. Small difference is that fiasco-gen add some unknown subsection block to image header (type '4' or '/') which contains some messy characters... But if these sections missing, flasher-3.5 working fine too. And old FIASCO images (for N8x0) does not have these subsection... FILE HEADER 1 byte = 0xb4 -- signature 4 bytes -- FW header length (big endian) FW HEADER 4 bytes -- number of FW header blocks (big endian) block { 1 byte -- type of block 0xE8 - Fiasco name 0x31 - FW name 1 byte -- length of block data N bytes -- block data } IMAGE 1 byte = 0x54 -- signature 1 byte -- number of subsection blocks block { 1 byte -- type of subsection block 0x2E - file data 0x2F - partition info 0x31 - version 0x32 - device & hw revisions (size of device is 16, hw revision 8) 0x33 - layout 0x34 - image data part block (one block for one data part) 1 byte -- length of subsection block N bytes -- subsection block data } 1 byte -- checksum of subsection data without signature (0xFF - xorpair) N bytes -- image data FILE DATA BLOCK 1 byte -- asic index (always APE - 0x01) 1 byte -- device type (always NAND - 0x01) 1 byte -- device index (always 0x00) 2 bytes -- checksum for the image contents (xorpair) (big endian) 12 bytes -- image name type (first byte is FF if is the last image) 4 bytes -- length of image data (big endian) 4 bytes -- load address of image data (big endian, unused always zero) PARTITION INFO BLOCK N bytes -- unknown IMAGE DATA PART BLOCK 4 bytes -- unknown (always 0x00 0x00 0x00 0x00) 4 bytes -- offset (big endian) 4 bytes -- unknown (always 0x00 0x00 0x00 0x00) 4 bytes -- size (big endian) N bytes -- partition name (prefix) in layout (may be omitted) LAYOUT DATA BLOCK N bytes of text data, e.g.: mmc { name = "internal"; partition { fs_type = "vfat"; prefix = "mydocs"; no_create = true; } partition { size = 2048; fs_type = "ext3"; prefix = "home"; } partition { size = 768; fs_type = "swap"; } }