annotate doc/Compal-unlock @ 985:8109185528c1

tfc139: new logic actually works
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Sat, 12 Dec 2015 03:24:52 +0000
parents 3f67d5bf96ef
children 7a55a3eb985a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
425
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
1 Using FreeCalypso tools to unlock Motorola C1xx phones
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
2 ======================================================
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
3
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
4 The ultimate goal of the FreeCalypso project is to produce our own complete GSM
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
5 dumbphone firmware which We the People fully own, control and compile from
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
6 source ourselves, running at first on some selected pre-existing hardware
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
7 targets, and then ultimately on our own Free Dumb Phone hardware. While that
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
8 goal is still far past the visible horizon, what can we do in the meantime to
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
9 make our current forced use of existing proprietary dumbphone firmwares a
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
10 little more tolerable? This article presents one such hack: using FreeCalypso
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
11 loadtools to dump the flash content of Compal phones for analysis, including
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
12 TIFFS, and to replace one existing proprietary fw version with another, e.g.,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
13 to remove carrier branding and the associated SIM restriction.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
14
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
15 Serial access
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
16
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
17 Mot C1xx (Compal) phones have a 2.5 mm headset jack that dual-functions as a
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
18 debug/programming serial port. In hardware terms, there is an electrically
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
19 controlled switch (MUX) inside that switches the external jack between the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
20 analog headset signals and the digital serial ones; this switch is controlled
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
21 by a GPIO signal from the Calypso. The hardware power-up state of this switch
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
22 is serial; Mot/Compal's standard fw switches it to headset upon boot, but the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
23 serial setting persists long enough to use it to break into the bootloader.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
24
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
25 Bootloader
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
26
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
27 The Calypso DBB (digital baseband) chip used in these phones has an on-chip
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
28 boot ROM, but it also has a hardware pin that enables or disables this boot
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
29 ROM, and unfortunately these phones have it disabled. If the boot ROM were
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
30 enabled in hardware, it would provide an unstoppable and unbrickable way to
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
31 take control of the device through the externally-accessible serial port like
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
32 we have on Openmoko and Pirelli phones, but unfortunately the hardware we have
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
33 available is not wired that way.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
34
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
35 However, Mot/Compal's standard firmware on these phones includes a bootloader,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
36 a part that executes before any of the rest of the fw image is allowed to
426
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
37 execute or is made use of in any way, and this Compal-specific bootloader has a
425
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
38 provision for interrupting the boot process and diverting it to an externally-
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
39 supplied piece of code loaded over the serial line. Older fw versions have
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
40 this feature enabled unconditionally, but some of the newer versions have a
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
41 malfeature whereby the serial boot interrupt and code download possibility may
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
42 be disabled. Some C1xx phones out in the wild, particularly all North American
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
43 C139s with TracFone branding, have such maliciously-locked firmware in them.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
44
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
45 Fortunately though, these maliciously-locked firmwares (or at least the most
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
46 common TFC139 one) have been found to have another hole through which we can
974
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
47 break in, as described in the TFC139-breakin article. We can exploit this hole
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
48 in the TFC139 firmware to gain code execution access to the Calypso, and then
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
49 use the latter to reprogram the flash, replacing the ultra-malicious firmware
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
50 with some other version that, although still proprietary, is a little less evil.
425
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
51
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
52 Making first contact
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
53 ====================
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
54
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
55 If you have a C1xx phone which you are seeking to free, your first step should
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
56 be to try breaking in with fc-loadtool, using the Compal bootloader method.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
57 With the phone powered off, but containing a charged battery (SIM present or
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
58 absent, doesn't matter), proceed as follows:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
59
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
60 1. Connect the serial or USB-serial cable between your PC or other host and the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
61 target phone's headset jack.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
62
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
63 2. On the host end, run fc-loadtool like this:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
64
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
65 C11x/123: fc-loadtool -h compal /dev/ttyXXX
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
66 C139/140: fc-loadtool -h compal -c 1003 /dev/ttyXXX
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
67 C155/156: fc-loadtool -h c155 /dev/ttyXXX
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
68
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
69 3. Press the power button on the phone. A momentary press is sufficient and
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
70 recommended: the hardware powers up and causes the boot code to run exactly
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
71 the same whether the power button is pressed momentarily or held down.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
72
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
73 Normal phone power-up requires the button to be held down because the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
74 standard firmware does a check fairly late in the boot process to see if the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
75 power button is still held down, and commands the hardware (the ABB) to
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
76 power off if it is not - it is a standard feature to prevent phones from
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
77 turning themselves on inadvertently from accidental momentary presses of
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
78 that button. But if the goal is to cause the boot code to run, but not to
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
79 boot the regular fw all the way, a momentary press is ideal.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
80
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
81 If your phone has a bootloader without the malicious lock in it, the above
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
82 procedure should result in fc-loadtool gaining full access to the target and
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
83 landing you at a loadtool> prompt. You can dump the flash content and analyse
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
84 it, etc. If you would like to change to a different fw version (to remove the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
85 SIM lock / carrier branding or for any other reason), see the corresponding
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
86 later section of this article.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
87
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
88 Alternative method
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
89 ==================
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
90
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
91 If the above procedure fails to gain access to the Calypso because the boot
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
92 code in the phone never offers a serial download opportunity, the alternate
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
93 break-in method should be tried, going through the full running firmware
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
94 instead of just the bootloader part thereof. Proceed as follows:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
95
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
96 1. Remove the SIM (if there was one to begin with) and put the charged battery
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
97 back in. Charge the battery if necessary, using the standard charging
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
98 function of the existing fw.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
99
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
100 2. Power the phone up for normal boot: hold the power button down like a
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
101 regular user would, without fc-loadtool or other serial break-in tools.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
102 The fw will boot up, notice the lack of a SIM, and the display will read
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
103 "SIM card absent" or something to that effect, depending on the fw version.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
104
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
105 3. Key in this magic sequence: **16379#. A hidden "Trace Switch" menu should
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
106 appear, with the choices being "Trace On" and "Earphone". Select "Trace On".
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
107 The electrically controlled hardware switch mentioned earlier in this article
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
108 should now be set back to the UART, bringing the latter out to the headset
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
109 jack. Because Mot/Compal's firmware is based on TI's reference architecture,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
110 the interface presented by the running fw on this serial port is TI's RVTMUX,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
111 albeit at 57600 baud instead of TI's default of 115200.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
112
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
113 4. Connect the headset jack serial cable if it wasn't already connected, and
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
114 run this FreeCalypso hack-utility:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
115
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
116 tfc139 /dev/ttyXXX
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
117
974
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
118 Compal's TI-based firmware implements some of TI's Test Mode commands, and one
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
119 of these commands is a raw memory write. Our tfc139 hack-utility will try to
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
120 break into the phone (gain code execution access) by using this Test Mode
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
121 command to write a little payload into a particular RAM location (beginning of
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
122 IRAM), and then doing more memory writes by the same method, seeking to smash
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
123 the stack and cause control to be transferred to the sent payload by
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
124 overwriting a function return address on the stack.
425
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
125
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
126 If the stack smashing hack succeeds, the code injected by tfc139 will send a
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
127 message out the serial port indicating this success, and then re-enable the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
128 Calypso boot ROM and jump to it. Once the boot ROM code gains control, it will
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
129 wait forever for a serial code download following its standard protocol. If
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
130 tfc139 gets the success indication from the target, it will announce this
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
131 success and direct you to run:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
132
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
133 fc-loadtool -h compal -c none /dev/ttyXXX
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
134
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
135 Do as it says. The -c none option tells fc-loadtool to skip compalstage and
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
136 proceed directly to feeding loadagent to the Calypso boot ROM. You should now
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
137 be in full control of the phone via fc-loadtool.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
138
433
2d8ab1b0df8d rvinterf/doc/tfc139.usage: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 427
diff changeset
139 There is one additional quirk worth mentioning. It appears that Mot/Compal's
427
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
140 main fw (at least TF's version 8.8.17, which is the version we break into with
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
141 tfc139; other versions are anyone's guess) keeps resetting the RTC alarm
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
142 registers in the Calypso DBB as it runs, always keeping the alarm time in the
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
143 near future relative to the current time. When one breaks into this firmware
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
144 with tfc139 and takes over the control of the device with fc-loadtool, this
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
145 alarm time will almost certainly be reached, and the RTC alarm will go off.
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
146 This alarm has no effect on loadtool operation (i.e., it cannot reset the CPU
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
147 or otherwise wrestle control away from loadtool, so it doesn't add any bricking
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
148 risk), but it has one quite surprising effect upon exit, i.e., when you are
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
149 done with your loadtool session and give it the exit command.
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
150
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
151 Loadtool's configured default exit action for this target is to send a power-off
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
152 command to the Iota ABB, leaving the device cleanly powered off. However, if
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
153 the RTC alarm has gone off previously during the session, the ABB will instantly
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
154 power the phone back on, and put it through a new boot cycle. The firmware
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
155 (again, the only version this stuff can be tested on is the one that works with
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
156 tfc139) handles this special form of boot rather oddly: it proceeds to the same
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
157 end state it would have reached via a normal power button hold-down boot
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
158 (powered on with the "Insert SIM" message on the LCD), but it reaches this state
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
159 almost instantly, without going through the power-on LCD logo and buzz phase.
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
160 Odd, but harmless. This explanation has been included to save other hackers
433
2d8ab1b0df8d rvinterf/doc/tfc139.usage: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 427
diff changeset
161 the hours of bewildered head-scratching I spent chasing this quirk down.
427
7e305184b0b4 doc/Compal-unlock: TFC139 RTC alarm oddity explained
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 426
diff changeset
162
425
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
163 Dumping and reloading flash
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
164 ===========================
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
165
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
166 Once you break in with fc-loadtool (either through the bootloader or through
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
167 tfc139), the first step you should do is make a dump (backup) of the flash:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
168
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
169 loadtool> flash dump2bin flashdump.bin
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
170
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
171 Before you do any flash write (erase or program) operations, please realise
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
172 that these phones are brickable. Because the Calypso boot ROM is disabled at
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
173 the board level (Calypso DBB's nIBOOT configuration input is tied high directly
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
174 underneath the BGA package!), when the phone powers up, the ARM7 core starts
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
175 executing instructions directly out of the flash, from address 0. Therefore,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
176 flash sector 0 must contain good working boot code (one that allows serial code
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
177 download access for recovery) at all times. If you erase this sector or fill
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
178 it with some garbage (anything other than good working boot code) and then power
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
179 the phone off or otherwise lose control of it, the phone will be unrecoverably
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
180 bricked!
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
181
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
182 On most C1xx models there seems to be no way to access the Calypso's JTAG
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
183 signals, hence no possibility of using JTAG to unbrick a bricked phone. And
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
184 because the flash chip is a micro-BGA, it is quite unlikely that one could
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
185 successfully desolder it, program it in a standalone flash chip programmer,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
186 and then put it back on the board. Thus if you brick your C1xx phone, then
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
187 most likely it is truly toast. You've been warned!
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
188
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
189 That being said, if your phone came with a maliciously locked bootloader, such
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
190 that you had to use tfc139 to break in, then replacing that bootloader with a
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
191 non-malware version is pretty much a necessity, and taking the chance of
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
192 bricking the phone becomes a necessary risk. Even if the bootloader version in
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
193 your C1xx is free of the locking malfeature, if you need to reflash the main fw
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
194 to a different version, one still needs to erase and reprogram the dangerous
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
195 sector: on C11x/123 and C139/140 the main fw image starts at 0x2000, but the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
196 erase block boundary doesn't come until 0x10000.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
197
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
198 The good news, however, is that fc-loadtool has special support for rewriting
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
199 the boot sector on Compal phones with minimal risk of bricking. The command is:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
200
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
201 flash erase-program-boot binfile [length]
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
202
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
203 The first argument is the name of the file (in straight binary format)
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
204 containing the new boot code; the second argument (always interpreted as hex)
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
205 is the number of bytes to program, always starting at 0. If only one argument
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
206 is given, the length of the file is used instead, which must not exceed the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
207 length of flash sector 0: 64 KiB on C11x/123 and C139/140, or 8 KiB on C155/156.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
208
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
209 This special command minimizes the bricking vulnerability window by loading the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
210 entirety of the new boot code to be programmed into a scratchpad RAM buffer on
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
211 the target first (no problem because it's 64 KiB max), then commanding loadagent
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
212 (the code that actually runs on the Calypso when you use fc-loadtool) to perform
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
213 the "atomic" operation of erasing flash sector 0, then immediately reprogramming
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
214 it with the bits that are already in scratchpad RAM on the phone.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
215
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
216 With this approach the phone will only be bricked if the battery dies or is
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
217 physically yanked out of the phone in the time window between the beginning of
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
218 the erase operation and the last critical bit of the new boot code being
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
219 programmed - on the order of a second or two, or if the flash operations fail
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
220 for some reason. However, the phone will *not* be bricked with this approach
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
221 if the serial connection between fc-loadtool or the target gets broken during
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
222 the window in question, or if the host machine running fc-loadtool crashes: no
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
223 flash operations start until loadtool gives the go-ahead command to loadagent,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
224 and once loadagent receives the latter command, it will proceed till completion
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
225 without caring if loadtool is still there or not.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
226
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
227 Of course the conventional flash erase and flash program-bin commands will be
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
228 happy to operate on flash sector 0 just like any other sector, but doing so is
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
229 NOT recommended, as the window of vulnerability for bricking would then be
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
230 considerably greater.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
231
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
232 Unlocked firmware for C139
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
233 ==========================
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
234
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
235 If your phone is a North American (1900+850 MHz) C139, and you are reading this
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
236 article because it came with Cingular or TracFone branding, whereas you would
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
237 like to use it with SIMs and networks of your own choosing instead, you've come
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
238 to the right place. We have an unlocked and non-carrier-branded (Mot branding
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
239 only) version of the fw that runs on these phones, and you can use FreeCalypso
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
240 loadtools to flash this version into your C139 whether it came with Cingular or
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
241 TF branding originally. Download this file:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
242
974
3f67d5bf96ef doc: TFC139-breakin written, Compal-unlock updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 433
diff changeset
243 ftp.freecalypso.org:/pub/GSM/Compal/c139-unlocked-fw.zip
425
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
244
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
245 Unzip it, and you'll get c139-unlocked-fw.bin - that is the image you'll need
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
246 to flash into your phone. Get in with fc-loadtool (using tfc139 if necessary
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
247 for locked-down Tracfones) and make a backup of the original flash content.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
248 Then reflash the firmware as follows:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
249
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
250 flash erase-program-boot c139-unlocked-fw.bin 2000
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
251 flash erase 10000 360000
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
252 flash program-bin 2000 c139-unlocked-fw.bin 2000
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
253
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
254 The 3 commands given above will reflash the phone as follows:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
255
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
256 * The first 0x2000 bytes of the firmware image in c139-unlocked-fw.bin comprise
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
257 the boot code. This fw version features the "good" boot code *without* the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
258 access locking malfeature. The erase-program-boot command will erase flash
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
259 sector 0 (the entire 64 KiB sector, as the physics of the flash chip dictates)
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
260 and then immediately reprogram its first 8 KiB with the "good" boot code from
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
261 the unlocked fw image file. The remaining 56 KiB of this sector will be blank
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
262 after this step.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
263
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
264 * The following "regular" flash erase command is to erase the following 54
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
265 sectors (also of 64 KiB each) in preparation for programming the main fw
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
266 image in there.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
267
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
268 * The last command programs the bulk of the fw image into blank flash that has
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
269 been erased by the first two commands.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
270
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
271 I also recommend erasing the old FFS that was maintained by the old fw version,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
272 so that the new fw will automatically format a "virgin" FFS the first time it
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
273 boots:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
274
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
275 flash erase 370000 50000
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
276
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
277 After this procedure the phone should retain its original IMEI and factory RF
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
278 calibration values, as these are stored in the 8 KiB sector at 0x3FC000 which
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
279 is not touched per the above procedure - not in the FFS.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
280
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
281 The same procedure should be followed for flashing all firmwares for C11x/123
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
282 and C139/140 phones. In the case of C11x/123, adjust the length for the "main"
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
283 erase and program operations appropriately for the flash configuration in your
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
284 phone.
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
285
426
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
286 One last word of caution: if you are going to flash some fw version other than
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
287 the unlocked North American C139 one discussed above, please check to see what
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
288 boot code version it includes, and whether or not that version has the
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
289 malfeature of checking the flash word at 0x2060 for the serial access control
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
290 flag. If the fw version you are seeking to play with has boot code with that
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
291 malfeature present, the bricking vulnerability window extends until you not
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
292 only program the new boot code into flash, but also program 0xDDDDDDDD into
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
293 that 0x2060 word. You've been warned.
1060bf70d95d doc/Compal-unlock: added cautionary note about flashing firmwares containing
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 425
diff changeset
294
425
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
295 C155/156 differences
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
296 ====================
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
297
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
298 C155/156 phones are nicer than the others in that they use a flash chip with a
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
299 "bottom boot" configuration. C11x/123 and C139/140 use "top boot" flash chips,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
300 which is why the boot code and the first 56 KiB of the main fw image live in
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
301 the same erase block on those phones. The boot code and the control hand-off
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
302 interface between it and the main fw have also been revamped in C155/156 fw,
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
303 and the new structure is:
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
304
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
305 8 KiB sector at 0: contains the boot code
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
306 7 more 8 KiB sectors starting at 0x2000: blank and unused
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
307 64 KiB sector at 0x10000: also blank and unused
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
308 64 KiB sector at 0x20000: beginning of main fw image
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
309
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
310 With this new flash layout, it is now possible to erase and program the main fw
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
311 region starting at 0x20000 without ever erasing the boot code sector or doing
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
312 any writes to it, so there is no bricking vulnerability window at all. (The
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
313 phone can still be bricked though if one types the wrong command and erases the
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
314 boot sector inadvertently, so be careful.)
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
315
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
316 So far the only phones in this family that I laid my hacking hands on have been
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
317 North American C156 units, all from the same seller and batch (hence identical),
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
318 so I don't know if there exist any maliciously-locked boot code versions in
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
319 this family - the boot code in my C156 is free of any malfeatures. But if "bad"
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
320 versions of C155/156 boot code do exist, and if you can break into the phone
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
321 somehow, you can use the flash erase-program-boot command to rewrite the boot
f81a931f9172 doc/Compal-unlock write-up
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
322 code with minimal risk of bricking just like on the other Compal families.