annotate sh/c1xx-analyze-image @ 17:632d62e5efb4

c1xx-analyze-image: add bootloader analysis
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 10 Jun 2023 06:24:15 +0000
parents 12810ff4aa92
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 #!/bin/sh
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 if [ $# != 1 ]
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 then
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 echo "usage: $0 flashdump.bin" 1>&2
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 exit 1
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 fi
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 if [ ! -f "$1" ]
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 then
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 echo "Error: $1 does not exist or is not a regular file" 1>&2
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 exit 1
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 fi
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 length=`wc -c $1 | cut -d ' ' -f 1`
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 case "$length" in
17
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
18 2097152)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
19 echo 'Flash dump file size is 2 MiB'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
20 echo 'Is it a small-flash C11x/12x phone?'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
21 flash=2m
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
22 cal_offset=0x1FC000
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
23 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
24 4194304)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
25 echo 'Flash dump file size is 4 MiB'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
26 echo 'Possible Compal phones: C11x/12x, C139/140, SE J100'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
27 flash=4m
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
28 cal_offset=0x3FC000
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
29 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
30 8388608)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
31 echo 'Flash dump file size is 8 MiB'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
32 echo 'Is it a Motorola C155/156 phone?'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
33 flash=8m
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
34 cal_offset=0x7E0000
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
35 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
36 *)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
37 echo "Error: file length of $1 is not understood" 1>&2
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
38 exit 1
2
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 esac
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 set -e
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 echo 'Parsing for RF calibration records'
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 c1xx-calextr -a rfasc -b rfbin "$1" $cal_offset
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 if [ ! -d rfbin/rx -o ! -d rfbin/tx ]
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 then
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 echo "Error: no RF calibration records found" 1>&2
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 exit 1
12810ff4aa92 c1xx-analyze-image: initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 fi
17
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
51
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
52 case $flash in
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
53 2m|4m)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
54 echo 'Analyzing bootloader'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
55 boot=`c139-analyze-boot "$1"`
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
56 case "$boot" in
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
57 unlocked)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
58 echo 'Found original Compal bootloader, unlocked'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
59 echo 'Generating restore-flash script'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
60 echo "flash erase-program-boot $1 0x10000" > restore-flash
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
61 echo "flash e-program-bin 0x10000 $1 0x10000" >> restore-flash
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
62 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
63 locked)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
64 echo 'Found original Compal bootloader, LOCKED!'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
65 u=unlocked-orig-fw.bin
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
66 echo "Generating unlocked version in $u"
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
67 cp "$1" $u
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
68 c139-patch-dmagic $u
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
69 echo 'Generating restore-flash script using this image'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
70 echo "flash erase-program-boot $u 0x10000" > restore-flash
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
71 echo "flash e-program-bin 0x10000 $u 0x10000" >> restore-flash
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
72 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
73 fc)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
74 echo 'Found FreeCalypso C11x/12x/139/140 bootloader'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
75 echo 'It is a FreeCalypso C1xx flash image, not original,'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
76 echo 'hence not generating restore-flash script.'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
77 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
78 *)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
79 echo 'Not found a good bootloader version - this flash image'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
80 echo 'is UNSAFE! If you proceed with flashing FreeCalypso,'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
81 echo 'you will not be able to restore the original fw without'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
82 echo 'bricking the phone! Recommendation: please reflash your'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
83 echo 'phone to a different, known-good official Motorola fw'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
84 echo 'version before venturing into FreeCalypso fw.'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
85 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
86 esac
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
87 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
88 8m)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
89 echo 'Analyzing bootloader'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
90 boot=`c155-analyze-boot "$1"`
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
91 case "$boot" in
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
92 ok)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
93 echo 'Found classic C155/156 bootloader, all good'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
94 echo 'Generating restore-flash script'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
95 echo "flash e-program-bin 0x20000 $1 0x20000" > restore-flash
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
96 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
97 *)
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
98 echo 'Not found a good bootloader version - this flash image'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
99 echo 'is UNSAFE! Please contact FreeCalypso and share your'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
100 echo 'flash image before taking any further action.'
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
101 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
102 esac
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
103 ;;
632d62e5efb4 c1xx-analyze-image: add bootloader analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 2
diff changeset
104 esac