FreeCalypso > hg > freecalypso-sw
diff doc/Firmware_Status @ 998:7d3f0910aeb2
doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Sat, 05 Mar 2016 20:50:37 +0000 |
parents | |
children | 0ee75fdf082f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/Firmware_Status Sat Mar 05 20:50:37 2016 +0000 @@ -0,0 +1,83 @@ +The goal of the gcc-built Calypso GSM firmware project contained in the gsm-fw +directory of this source tree is to replace the Windows-built firmwares which +have been produced in other subprojects under the FreeCalypso umbrella - see +leo2moko and tcs211-c139. Our leo2moko project has produced a production +quality modem fw image for the Openmoko GTA02, while a C139 reflashed with +tcs211-c139 is the first dumbphone in history that can still function as an +untethered phone after having had its fw replaced with an indie one that bears +no relation to the manufacturer's original - but those TCS211-based +Windows-built projects have severe limitations. Much of the firmware code base +in those versions is in the form of unmodifiable binary object libraries, and +the Windows-based configuration and build system is incompatible with the +long-term needs of FreeCalypso development. + +The present FreeCalypso GSM fw project seeks to rectify the situation by +replacing the blob-laden, Windows-built firmware with a version that is built +from full source (no binary blobs) with gcc, with an entirely different +configuration mechanism that actually suits our needs. Because one of the key +goals of this project is to build the firmware from *full source*, the binary +object versions of L1 (GSM Layer 1) and G23M (layers 2&3 of the protocol stack) +featured in our reference TCS211 fw could not be reused. Instead this project +uses versions of L1 and G23M (and some other pieces) that have been lifted from +the firmware for TI's other chipset (LoCosto) and backported to Calypso. + +The current state of the project is that we have made remarkable progress, but +are unfortunately nowhere near the goal of actually being able to replace TCS211 +for practical use. Specifically: + +* Only the bare minimal modem functionality for the voice+SMS subset has been + integrated so far. "Modem" means our fw can only be controlled via AT + commands; no UI code (as in LCD+keypad) has been integrated at all. But it + is not a true modem either as none of the data functions have been integrated + yet: no CSD, no fax, no GPRS. Thus it is an AT-command-controlled voice+SMS + pseudo-modem. + +* The firmware can be built for the following targets: + + Mot C11x/12x + Mot C139/140 + Mot C155/156 + Openmoko GTA01/02 + Pirelli DP-L10 + + All configurations are built from the same source tree. The firmware + functions identically on all supported targets. Because there is no UI code + integrated yet, the LCD stays dark and the buttons do nothing on those target + devices that have such hardware. + +* Most of our supported target devices have only one practically accessible + serial port (UART). Our firmware presents TI's RVTMUX interface on this + UART; the operator is expected to interface to it by running our rvinterf + tools on the host PC/laptop. One of the utilities in the rvinterf suite is + fc-shell; this tool is used to send AT commands to the running firmware, + which is the only way to control its operation. + +* With a valid SIM card inserted and a valid IMEISV configured, a GSM device + running our firmware can successfully connect to live commercial GSM networks + and send and receive SMS. + +* Voice calls are broken: using appropriate AT commands, one can dial outgoing + calls and answer incoming ones, and they connect as they should. However, + the voice audio path is broken: nothing but noise is heard in the earpiece + speaker. We reason that the problem must be somewhere in L1, which has been + backported from LoCosto to Calypso in a rather Frankensteinian manner. + +* Deep sleep is broken and needs to be disabled with AT%SLEEP=2; the breakage + is likewise assumed to be somewhere in L1. + +The two current points of breakage in L1 (broken deep sleep and broken voice +calls) are deemed to be show-stoppers, i.e., we are not going to progress this +work in any other direction until these two are fixed. And we currently see +only two possible ways to fix these L1 issues: + +Option 1: find and obtain another copy of TCS211 that has its L1 component in +source form, or a separate L1-by-itself source that would be compatible with +Calypso DSP ROM 3606 and with the TCS211 fw architecture. + +Option 2: painstakingly reconstruct a TCS211-fitting version of L1 from the +disassembly of the available binary objects, by taking LoCosto L1 sources and +massaging them until they compile into object code that matches our TCS211 +reference. + +Option 1 involves more prayer than actionable work, while Option 2 is currently +being worked on in another subproject of FreeCalypso - see tcs211-l1-reconst.