FreeCalypso > hg > freecalypso-sw
comparison doc/Compal-unlock @ 988:0654212e5c53
doc/Compal-unlock: documented safe flashing of newer fw versions and
cisversion unlocking
| author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
|---|---|
| date | Sat, 12 Dec 2015 18:40:56 +0000 |
| parents | 7a55a3eb985a |
| children |
comparison
equal
deleted
inserted
replaced
| 987:7a55a3eb985a | 988:0654212e5c53 |
|---|---|
| 286 The same procedure should be followed for flashing all firmwares for C11x/123 | 286 The same procedure should be followed for flashing all firmwares for C11x/123 |
| 287 and C139/140 phones. In the case of C11x/123, adjust the length for the "main" | 287 and C139/140 phones. In the case of C11x/123, adjust the length for the "main" |
| 288 erase and program operations appropriately for the flash configuration in your | 288 erase and program operations appropriately for the flash configuration in your |
| 289 phone. | 289 phone. |
| 290 | 290 |
| 291 One last word of caution: if you are going to flash some fw version other than | 291 Flashing newer firmware versions |
| 292 the unlocked North American C139 one discussed above, please check to see what | 292 ================================ |
| 293 boot code version it includes, and whether or not that version has the | 293 |
| 294 malfeature of checking the flash word at 0x2060 for the serial access control | 294 The flashing procedure given above, where the first 0x2000 bytes of the new fw |
| 295 flag. If the fw version you are seeking to play with has boot code with that | 295 image (the bootloader part) are written with the flash erase-program-boot |
| 296 malfeature present, the bricking vulnerability window extends until you not | 296 command and the regular flash program-bin command writes everything from 0x2000 |
| 297 only program the new boot code into flash, but also program 0xDDDDDDDD into | 297 onward, is only correct for older firmware versions whose bootloader portion is |
| 298 that 0x2060 word. You've been warned. | 298 completely free from the access locking malfeature: not only unlocked, but with |
| 299 no provision for locking at all. In these older fw versions the boot code is | |
| 300 fully contained in the first 0x2000 bytes and nothing from 0x2000 onward affects | |
| 301 the ability to perform a new serial boot, hence the bricking vulnerability | |
| 302 window ends at 0x2000. However, this flashing procedure should NOT be used for | |
| 303 newer fw versions that have the provision for locking the bootloader - it's the | |
| 304 provision that matters in this case, even if the lock hasn't been activated - | |
| 305 if you flash one of these newer fw versions as above, you will risk bricking | |
| 306 your phone! | |
| 307 | |
| 308 If you need to flash one of the newer fw versions that includes the bootloader | |
| 309 lock provision, you need to take some additional precautionary steps: | |
| 310 | |
| 311 1. Examine the fw image you wish to flash with a hex dump viewer. Look starting | |
| 312 at offset 0x2000. You should see 3 identifying ASCII strings: one right at | |
| 313 0x2000, another at 0x2020 and one more at 0x2040. Then look at 4 bytes at | |
| 314 offset 0x2060. If they contain 0xFFFFFFFF (blank flash) like the surrounding | |
| 315 unused bytes, then you have an older fw version without the bootloader lock | |
| 316 provision - you can safely flash it as in the previous section. If it's a | |
| 317 newer fw version with the bootloader lock provision, the word at 0x2060 will | |
| 318 contain either 0x00000000 or 0xDDDDDDDD, corresponding to the activated | |
| 319 (access disabled) and non-activated (access enabled) states of the lock, | |
| 320 respectively. | |
| 321 | |
| 322 2. If the fw image you wish to flash has 0x00000000 at 0x2060, you must patch | |
| 323 it to 0xDDDDDDDD with a hex editor before flashing. Just because our tfc139 | |
| 324 utility can recover phones with maliciously locked bootloaders does NOT mean | |
| 325 that you should *ever* deliberately flash such a bootloader-locked fw image | |
| 326 into your phone! Recovery of locked phones via tfc139 depends on the | |
| 327 complete fw image being present and working, not just the bootloader part, | |
| 328 hence if you were to flash an image that has a lockable bootloader with the | |
| 329 lock activated, the bricking vulnerability window will extend until the | |
| 330 *entire* fw image has been programmed - far too dangerous. | |
| 331 | |
| 332 3. When flashing the image with fc-loadtool, use a slightly different command | |
| 333 sequence compared to the previous section: | |
| 334 | |
| 335 flash erase-program-boot new-fw-image.bin 10000 | |
| 336 flash erase 10000 360000 | |
| 337 flash program-bin 10000 new-fw-image.bin 10000 360000 | |
| 338 | |
| 339 The difference is that the boundary between the part handled with flash | |
| 340 erase-program-boot and the part handled with flash program-bin has been moved | |
| 341 from 0x2000 to 0x10000. Because the word at 0x2060 is part of the bricking | |
| 342 vulnerability window with these newer fw versions, one should rewrite the | |
| 343 entire boot sector of the flash (including the beginning of the main fw image) | |
| 344 with flash erase-program-boot for safety. | |
| 345 | |
| 346 Unlocking while keeping the same fw version | |
| 347 =========================================== | |
| 348 | |
| 349 Suppose you have a phone with a locked bootloader such that you had to break in | |
| 350 with tfc139, you would like to unlock it so you can use RAM-based (non-flash) | |
| 351 tools such as c139explore or OsmocomBB with it, but you have no particular need | |
| 352 to change the main fw from the original version to a different one. If you | |
| 353 need to perform such a cisversion unlock, you can do it as follows: | |
| 354 | |
| 355 1. Break in with tfc139; | |
| 356 2. Use fc-loadtool's flash dump2bin command to save the first 64 KiB sector | |
| 357 of the flash to a file; | |
| 358 3. Using a hex editor, patch the word at 0x2060 from 0x00000000 to 0xDDDDDDDD; | |
| 359 4. Use fc-loadtool's flash erase-program-boot command to flash the patched | |
| 360 (unlocked) boot sector back into the phone. | |
| 299 | 361 |
| 300 C155/156 differences | 362 C155/156 differences |
| 301 ==================== | 363 ==================== |
| 302 | 364 |
| 303 C155/156 phones are nicer than the others in that they use a flash chip with a | 365 C155/156 phones are nicer than the others in that they use a flash chip with a |
