FreeCalypso > hg > fc-magnetite
comparison doc/C139-Howto @ 94:596d86109e44
initial round of documentation
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Mon, 03 Oct 2016 04:26:16 +0000 |
| parents | |
| children | 48792a467305 |
comparison
equal
deleted
inserted
replaced
| 93:6475bde1b170 | 94:596d86109e44 |
|---|---|
| 1 Running FreeCalypso Magnetite firmware on the Motorola C139 | |
| 2 =========================================================== | |
| 3 | |
| 4 Mot C139 phones are brickable - because the Calypso boot ROM is disabled by PCB | |
| 5 wiring, the ability to reflash a phone with new firmware critically depends on | |
| 6 there being a particular kind of boot code in flash sector 0 at all times - a | |
| 7 particular kind of boot code that allows the boot process to be interrupted and | |
| 8 diverted to external code loaded via the headset jack serial port. | |
| 9 | |
| 10 The FreeCalypso project has adopted one specific version of the flash sector 0 | |
| 11 boot code (produced by applying a binary patch to one of Compal/Motorola's | |
| 12 original versions) for use with all of our firmwares for this target. No matter | |
| 13 which FreeCalypso firmware you are running - Citrine, Magnetite or tcs211-c139 - | |
| 14 you flash your FC fw image at offset 0x10000 while keeping this boilerplate boot | |
| 15 code at the beginning of the flash: | |
| 16 | |
| 17 ftp://ftp.freecalypso.org/pub/GSM/FreeCalypso/compal-flash-boot-for-fc.bin | |
| 18 | |
| 19 Because neither FC Citrine nor FC Magnetite implements any phone UI or puts | |
| 20 anything at all on the LCD, when a C139 phone is flashed with one of our | |
| 21 firmwares, it will behave very oddly: | |
| 22 | |
| 23 * Whenever the phone is off but the battery is inserted, even a momentary | |
| 24 accidental press of the power button will launch a full power-on and firmware | |
| 25 boot - without any visible indication whatsoever as the LCD stays dark! | |
| 26 | |
| 27 * Once the firmware has booted from a press of the power button - even a | |
| 28 momentary accidental press - there is no way to make it shut down and power | |
| 29 off except by sending a power-off command via the headset jack serial port. | |
| 30 So it will just keep running until the battery runs down, once again with the | |
| 31 LCD dark and no visible indication of any kind that it's on. | |
| 32 | |
| 33 Additional considerations are: | |
| 34 | |
| 35 * Flashing a given phone back and forth between FreeCalypso and Mot/Compal's | |
| 36 official firmware is a royal pita, so if you are going to play with | |
| 37 FreeCalypso on a C139, it would be the easiest to dedicate a phone | |
| 38 specifically for FC experiments; | |
| 39 | |
| 40 * We haven't got firmware-controlled battery charging working yet, so you will | |
| 41 need another phone running one of the official fw versions to charge | |
| 42 batteries. | |
| 43 | |
| 44 Converting a phone to FreeCalypso | |
| 45 ================================= | |
| 46 | |
| 47 Start by installing FreeCalypso host tools on your PC/laptop or whatever host | |
| 48 you will use to talk to C139 phones, if you haven't already. If you are | |
| 49 starting with an unhacked C139 phone running one of the official firmware | |
| 50 versions, the procedure for flashing and bringing up FreeCalypso for the first | |
| 51 time is as follows: | |
| 52 | |
| 53 * Note down your phone's factory IMEI. After you get FreeCalypso firmware | |
| 54 flashed and running, you will need to set your own IMEISV, as our fw doesn't | |
| 55 know how to grok Mot/Compal's flash data structures where they store theirs. | |
| 56 You can set whatever IMEISV you like, but if you would like to keep the | |
| 57 factory one, it would be the easiest to have it noted down on a piece of | |
| 58 paper. If you have a labelmaker, you can print a sticky label with the IMEI | |
| 59 and stick it on the side of the phone where you can easily see it later while | |
| 60 playing with FreeCalypso. | |
| 61 | |
| 62 * Get in with fc-loadtool, preceded with tfc139 if necessary - see FC host tools | |
| 63 documentation. | |
| 64 | |
| 65 * Once you are in with fc-loadtool, i.e., at the loadtool> prompt, reflash the | |
| 66 boot sector with the FreeCalypso version: | |
| 67 | |
| 68 loadtool> flash erase-program-boot compal-flash-boot-for-fc.bin | |
| 69 | |
| 70 * Flash the FC Magnetite firmware image you have compiled: | |
| 71 | |
| 72 loadtool> flash erase 0x10000 0x230000 | |
| 73 loadtool> flash program-bin 0x10000 fwimage.bin | |
| 74 | |
| 75 * Erase the flash sectors to be used for the FFS (flash file system) by | |
| 76 FreeCalypso firmwares: | |
| 77 | |
| 78 loadtool> flash erase 0x3C0000 0x30000 | |
| 79 | |
| 80 * Exiting fc-loadtool cleanly will cause it to power off the phone: | |
| 81 | |
| 82 loadtool> exit | |
| 83 | |
| 84 Reflashing between different FreeCalypso firmwares | |
| 85 ================================================== | |
| 86 | |
| 87 By the conventions established in the FreeCalypso project, all of our firmwares | |
| 88 for the C139 target have the following in common: | |
| 89 | |
| 90 * They all stay out of the boot sector and expect to receive control from the | |
| 91 boot code in the same manner (boot entry point at 0x10058, exception vectors | |
| 92 at 0x10000), thus there is no need to reflash the dangerous boot sector when | |
| 93 going from one FC firmware to another. | |
| 94 | |
| 95 * They all use the same aftermarket FFS configuration of 3 sectors of 64 KiB | |
| 96 each (64x3) at 0x3C0000. This FFS location is deliberately different from | |
| 97 the one used by Mot/Compal's firmwares, eliminating the possibility of one fw | |
| 98 trying to use the FFS created by the other, and by putting our FFS toward the | |
| 99 end of the flash we maximize the amount of flash space available for our | |
| 100 firmware code images. But even though we don't share our FFS with | |
| 101 Mot/Compal's official firmwares, we do share the same FFS between all of | |
| 102 FreeCalypso firmware projects - thus once you have initialized your FFS (see | |
| 103 below) with one FC firmware version, it will work with the others as well. | |
| 104 | |
| 105 If you need to reflash your C139 from one FC firmware version to another, | |
| 106 simply get in with fc-loadtool -h compal (no more need for the inefficient | |
| 107 -c 1003 or -c 1004 options or for tfc139) and reflash just the fw image part: | |
| 108 | |
| 109 loadtool> flash erase 0x10000 0x230000 | |
| 110 loadtool> flash program-bin 0x10000 fwimage.bin | |
| 111 | |
| 112 First boot of the firmware | |
| 113 ========================== | |
| 114 | |
| 115 Connect the serial cable, but instead of running fc-loadtool, run rvinterf. | |
| 116 Press the red power button on the phone briefly just like you would for | |
| 117 fc-loadtool entry. Because there is no fc-loadtool running on the host end of | |
| 118 the serial cable, the boot path will *not* be diverted in the bootloader, and | |
| 119 the main fw image will run - and this time it will be the FreeCalypso firmware | |
| 120 you have compiled and flashed. The phone's LCD will remain dark as there is no | |
| 121 LCD driver code in this firmware, but you will see trace output in the rvinterf | |
| 122 window, telling you that the fw is running. | |
| 123 | |
| 124 Before you do anything else, you will need to run fc-fsio and initialize the | |
| 125 aftermarket FFS for our firmware: | |
| 126 | |
| 127 fsio> format / | |
| 128 fsio> mk-std-dirs | |
| 129 fsio> set-imeisv fc XXXXXXXX-YYYYYY-ZZ (punctuation optional, place anywhere) | |
| 130 fsio> set-rfcap dual-eu (if you have 900+1800 MHz hardware) | |
| 131 or | |
| 132 fsio> set-rfcap dual-us (if you have 850+1900 MHz hardware) | |
| 133 | |
| 134 After you've initialized your FFS as above, you can exit fc-fsio, run fc-shell | |
| 135 and try some AT commands: | |
| 136 | |
| 137 AT+CMEE=2 -- enable verbose error responses | |
| 138 AT+CFUN=1 -- enable radio and SIM interfaces | |
| 139 AT+COPS=0 -- register to the default GSM network | |
| 140 | |
| 141 When you are done, you can power the phone off by sending a 'poweroff' command | |
| 142 through fc-shell. The only other way is to yank the battery, and doing the | |
| 143 latter is recommended anyway: when a phone with the present hack-firmware | |
| 144 flashed into it is powered off but still has the battery inserted, even a | |
| 145 momentary accidental press of the power button will cause it to power on and | |
| 146 boot, but there will be absolutely no visual indication, as the LCD stays dark. |
