FreeCalypso > hg > fc-magnetite
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/C139-Howto Mon Oct 03 04:26:16 2016 +0000 @@ -0,0 +1,146 @@ +Running FreeCalypso Magnetite firmware on the Motorola C139 +=========================================================== + +Mot C139 phones are brickable - because the Calypso boot ROM is disabled by PCB +wiring, the ability to reflash a phone with new firmware critically depends on +there being a particular kind of boot code in flash sector 0 at all times - a +particular kind of boot code that allows the boot process to be interrupted and +diverted to external code loaded via the headset jack serial port. + +The FreeCalypso project has adopted one specific version of the flash sector 0 +boot code (produced by applying a binary patch to one of Compal/Motorola's +original versions) for use with all of our firmwares for this target. No matter +which FreeCalypso firmware you are running - Citrine, Magnetite or tcs211-c139 - +you flash your FC fw image at offset 0x10000 while keeping this boilerplate boot +code at the beginning of the flash: + +ftp://ftp.freecalypso.org/pub/GSM/FreeCalypso/compal-flash-boot-for-fc.bin + +Because neither FC Citrine nor FC Magnetite implements any phone UI or puts +anything at all on the LCD, when a C139 phone is flashed with one of our +firmwares, it will behave very oddly: + +* Whenever the phone is off but the battery is inserted, even a momentary + accidental press of the power button will launch a full power-on and firmware + boot - without any visible indication whatsoever as the LCD stays dark! + +* Once the firmware has booted from a press of the power button - even a + momentary accidental press - there is no way to make it shut down and power + off except by sending a power-off command via the headset jack serial port. + So it will just keep running until the battery runs down, once again with the + LCD dark and no visible indication of any kind that it's on. + +Additional considerations are: + +* Flashing a given phone back and forth between FreeCalypso and Mot/Compal's + official firmware is a royal pita, so if you are going to play with + FreeCalypso on a C139, it would be the easiest to dedicate a phone + specifically for FC experiments; + +* We haven't got firmware-controlled battery charging working yet, so you will + need another phone running one of the official fw versions to charge + batteries. + +Converting a phone to FreeCalypso +================================= + +Start by installing FreeCalypso host tools on your PC/laptop or whatever host +you will use to talk to C139 phones, if you haven't already. If you are +starting with an unhacked C139 phone running one of the official firmware +versions, the procedure for flashing and bringing up FreeCalypso for the first +time is as follows: + +* Note down your phone's factory IMEI. After you get FreeCalypso firmware + flashed and running, you will need to set your own IMEISV, as our fw doesn't + know how to grok Mot/Compal's flash data structures where they store theirs. + You can set whatever IMEISV you like, but if you would like to keep the + factory one, it would be the easiest to have it noted down on a piece of + paper. If you have a labelmaker, you can print a sticky label with the IMEI + and stick it on the side of the phone where you can easily see it later while + playing with FreeCalypso. + +* Get in with fc-loadtool, preceded with tfc139 if necessary - see FC host tools + documentation. + +* Once you are in with fc-loadtool, i.e., at the loadtool> prompt, reflash the + boot sector with the FreeCalypso version: + +loadtool> flash erase-program-boot compal-flash-boot-for-fc.bin + +* Flash the FC Magnetite firmware image you have compiled: + +loadtool> flash erase 0x10000 0x230000 +loadtool> flash program-bin 0x10000 fwimage.bin + +* Erase the flash sectors to be used for the FFS (flash file system) by + FreeCalypso firmwares: + +loadtool> flash erase 0x3C0000 0x30000 + +* Exiting fc-loadtool cleanly will cause it to power off the phone: + +loadtool> exit + +Reflashing between different FreeCalypso firmwares +================================================== + +By the conventions established in the FreeCalypso project, all of our firmwares +for the C139 target have the following in common: + +* They all stay out of the boot sector and expect to receive control from the + boot code in the same manner (boot entry point at 0x10058, exception vectors + at 0x10000), thus there is no need to reflash the dangerous boot sector when + going from one FC firmware to another. + +* They all use the same aftermarket FFS configuration of 3 sectors of 64 KiB + each (64x3) at 0x3C0000. This FFS location is deliberately different from + the one used by Mot/Compal's firmwares, eliminating the possibility of one fw + trying to use the FFS created by the other, and by putting our FFS toward the + end of the flash we maximize the amount of flash space available for our + firmware code images. But even though we don't share our FFS with + Mot/Compal's official firmwares, we do share the same FFS between all of + FreeCalypso firmware projects - thus once you have initialized your FFS (see + below) with one FC firmware version, it will work with the others as well. + +If you need to reflash your C139 from one FC firmware version to another, +simply get in with fc-loadtool -h compal (no more need for the inefficient +-c 1003 or -c 1004 options or for tfc139) and reflash just the fw image part: + +loadtool> flash erase 0x10000 0x230000 +loadtool> flash program-bin 0x10000 fwimage.bin + +First boot of the firmware +========================== + +Connect the serial cable, but instead of running fc-loadtool, run rvinterf. +Press the red power button on the phone briefly just like you would for +fc-loadtool entry. Because there is no fc-loadtool running on the host end of +the serial cable, the boot path will *not* be diverted in the bootloader, and +the main fw image will run - and this time it will be the FreeCalypso firmware +you have compiled and flashed. The phone's LCD will remain dark as there is no +LCD driver code in this firmware, but you will see trace output in the rvinterf +window, telling you that the fw is running. + +Before you do anything else, you will need to run fc-fsio and initialize the +aftermarket FFS for our firmware: + +fsio> format / +fsio> mk-std-dirs +fsio> set-imeisv fc XXXXXXXX-YYYYYY-ZZ (punctuation optional, place anywhere) +fsio> set-rfcap dual-eu (if you have 900+1800 MHz hardware) +or +fsio> set-rfcap dual-us (if you have 850+1900 MHz hardware) + +After you've initialized your FFS as above, you can exit fc-fsio, run fc-shell +and try some AT commands: + +AT+CMEE=2 -- enable verbose error responses +AT+CFUN=1 -- enable radio and SIM interfaces +AT+COPS=0 -- register to the default GSM network + +When you are done, you can power the phone off by sending a 'poweroff' command +through fc-shell. The only other way is to yank the battery, and doing the +latter is recommended anyway: when a phone with the present hack-firmware +flashed into it is powered off but still has the battery inserted, even a +momentary accidental press of the power button will cause it to power on and +boot, but there will be absolutely no visual indication, as the LCD stays dark.