Note: If this is the wrong section, fill free to move it
Are your stuck at this screen:
ftl: Found production format: 43303035
ftl: Successfully found FTL context block: 3679
ftl: Possible unclean shutdown, last FTL metadata type written was 0x4f
ftl: FTL_Open cannot load FTLCxt!
ftl: restore searching for latest FTL context...
ftl: restore found useable FTL context with usnDec = 0x2dfc8
ftl: Detected version 46560001 b9a9fffe
ftl: restore scanning virtual blocks 0 - 999
ftl: restore scanning virtual blocks 1000 - 1999
ftl: restore scanning virtual blocks 2000 - 2999
ftl: restore scanning virtual blocks 3000 - 3894
ftl: restore creating mapping table...
ftl: restore scanning logical blocks 0 - 999
ftl: restore scanning logical blocks 1000 - 1999
ftl: restore scanning logical blocks 2000 - 2999
ftl: restore scanning logical blocks 3000 - 3871
ftl: restore determing free vbs...
ftl: restore wNumOfFreeVb = 6, number of log vbs = 14
ftl: restore -- log 0, wLbn = 0, wVbn = 269, pagesUsed = 1, pagesCurrent = 1, isSequential = 0
ftl: restore -- log 1, wLbn = 250, wVbn = 3606, pagesUsed = 357, pagesCurrent = 8, isSequential = 0
ftl: restore -- log 2, wLbn = 252, wVbn = 3751, pagesUsed = 383, pagesCurrent = 151, isSequential = 0
ftl: restore -- log 3, wLbn = 253, wVbn = 471, pagesUsed = 414, pagesCurrent = 181, isSequential = 0
ftl: restore -- log 4, wLbn = 300, wVbn = 373, pagesUsed = 377, pagesCurrent = 84, isSequential = 0
ftl: restore -- log 5, wLbn = 301, wVbn = 449, pagesUsed = 166, pagesCurrent = 16, isSequential = 0
ftl: restore -- log 6, wLbn = 303, wVbn = 512, pagesUsed = 397, pagesCurrent = 290, isSequential = 0
ftl: restore -- log 7, wLbn = 304, wVbn = 3843, pagesUsed = 465, pagesCurrent = 405, isSequential = 0
ftl: restore -- log 8, wLbn = 338, wVbn = 3740, pagesUsed = 96, pagesCurrent = 60, isSequential = 0
ftl: restore -- log 9, wLbn = 339, wVbn = 329, pagesUsed = 343, pagesCurrent = 274, isSequential = 0
ftl: restore -- log 10, wLbn = 340, wVbn = 3658, pagesUsed = 39, pagesCurrent = 39, isSequential = 0
ftl: restore -- log 11, wLbn = 341, wVbn = 3779, pagesUsed = 75, pagesCurrent = 74, isSequential = 0
ftl: restore -- log 12, wLbn = 382, wVbn = 3590, pagesUsed = 3, pagesCurrent = 3, isSequential = 0
ftl: restore -- log 13, wLbn = 518, wVbn = 519, pagesUsed = 19, pagesCurrent = 11, isSequential = 0
ftl: restore successful!
Is it repeating it in linux? Do you want to throw your iPhone on the wall to see if you can break the wall?
Here is a guide to fix it (I found the solution buried in help thread but im writing a guide as it was a bit hard to find it)
Abstract:
It must be due to a bug in the ftl context search routing, but I don't seem to be able to find it out as that code is equivalent to ancient aramaic XD
You can see that the ftl context block is always the same, and the routine is not able to save the restore, as it always start restoring the same block number...
So lets find a workaround. when you shutdown uncleanly the iphone, the ftl is not in sync, so we must restore it. if you have a new iphone or freshly restored it, your NAND is clear: you have to mark all block for worn out cells (yes, the more you use your iphone, the more you waste your nand.... don't worry thats normal, you can write around 1 milion times the same cell: the ftl is there to balance the writings so u write always different memory location and it will live long XD)
To mark the blocks you simply write them, the ftl will mark the worn out block "unusable" and will never check it again (unless you restore the phone again). if you don't, checking the ftl will take LONG! on my 8GB it takes 20 mins, on 16GB it takes 40 mins. after filling your nand, it takes a couple of seconds
Whatever you do this or not, if you dont COMPLETELY fill out your nand, you can miss the ftl context block, and for some reason, that "special" block could have a problem (maybe its worn out?).
Workaround:
Boot iOS, scp this script:
#!/bin/sh
[ -e /private/deletemeafterandroidboot ] && rm -rf /private/deletemeafterandroidboot
[ -e /private/var/deletemeafterandroidboot ] && rm -rf /private/var/deletemeafterandroidboot
mkdir /private/deletemeafterandroidboot
mkdir /private/var/deletemeafterandroidboot
let i=0
echo "Starting to fill first partition.... (this wont take much)"
while [ $? -eq 0 ]; do
let i=i+1
cp -uv /private/var/zImage /private/deletemeafterandroidboot/zImage${i}
done
echo "Starting to fill second partition.... (this will take much lol)"
while [ $? -eq 0 ]; do
let i=i+1
cp -uv /private/var/zImage /private/var/deletemeafterandroidboot/zImage${i}
done
echo "All done, forcing fsck and rebooting, bye bye =)"
fsck
reboot
execute it and wait forever for the autoreboot (if i didnt mess the script, i didnt wait forever to test the last 2 lines, lol)
Now boot into android.
Notice:
Be warned that you have to manually delete /private/deletemeafterandroidboot and
/private/var/deletemeafterandroidboot
those 2 directory completely fill your iphone (which was our pourpose)
Cheers
Dario Russo