annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
998
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
1 The goal of the gcc-built Calypso GSM firmware project contained in the gsm-fw
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
2 directory of this source tree is to replace the Windows-built firmwares which
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
3 have been produced in other subprojects under the FreeCalypso umbrella - see
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
4 leo2moko and tcs211-c139. Our leo2moko project has produced a production
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
5 quality modem fw image for the Openmoko GTA02, while a C139 reflashed with
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
6 tcs211-c139 is the first dumbphone in history that can still function as an
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
7 untethered phone after having had its fw replaced with an indie one that bears
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
8 no relation to the manufacturer's original - but those TCS211-based
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
9 Windows-built projects have severe limitations. Much of the firmware code base
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
10 in those versions is in the form of unmodifiable binary object libraries, and
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
11 the Windows-based configuration and build system is incompatible with the
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
12 long-term needs of FreeCalypso development.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
13
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
14 The present FreeCalypso GSM fw project seeks to rectify the situation by
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
15 replacing the blob-laden, Windows-built firmware with a version that is built
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
16 from full source (no binary blobs) with gcc, with an entirely different
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
17 configuration mechanism that actually suits our needs. Because one of the key
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
18 goals of this project is to build the firmware from *full source*, the binary
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
19 object versions of L1 (GSM Layer 1) and G23M (layers 2&3 of the protocol stack)
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
20 featured in our reference TCS211 fw could not be reused. Instead this project
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
21 uses versions of L1 and G23M (and some other pieces) that have been lifted from
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
22 the firmware for TI's other chipset (LoCosto) and backported to Calypso.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
23
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
24 The current state of the project is that we have made remarkable progress, but
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
25 are unfortunately nowhere near the goal of actually being able to replace TCS211
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
26 for practical use. Specifically:
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
27
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
28 * Only the bare minimal modem functionality for the voice+SMS subset has been
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
29 integrated so far. "Modem" means our fw can only be controlled via AT
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
30 commands; no UI code (as in LCD+keypad) has been integrated at all. But it
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
31 is not a true modem either as none of the data functions have been integrated
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
32 yet: no CSD, no fax, no GPRS. Thus it is an AT-command-controlled voice+SMS
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
33 pseudo-modem.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
34
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
35 * The firmware can be built for the following targets:
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
36
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
37 Mot C11x/12x
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
38 Mot C139/140
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
39 Mot C155/156
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
40 Openmoko GTA01/02
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
41 Pirelli DP-L10
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
42
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
43 All configurations are built from the same source tree. The firmware
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
44 functions identically on all supported targets. Because there is no UI code
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
45 integrated yet, the LCD stays dark and the buttons do nothing on those target
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
46 devices that have such hardware.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
47
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
48 * Most of our supported target devices have only one practically accessible
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
49 serial port (UART). Our firmware presents TI's RVTMUX interface on this
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
50 UART; the operator is expected to interface to it by running our rvinterf
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
51 tools on the host PC/laptop. One of the utilities in the rvinterf suite is
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
52 fc-shell; this tool is used to send AT commands to the running firmware,
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
53 which is the only way to control its operation.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
54
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
55 * With a valid SIM card inserted and a valid IMEISV configured, a GSM device
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
56 running our firmware can successfully connect to live commercial GSM networks
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
57 and send and receive SMS.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
58
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
59 * Voice calls are broken: using appropriate AT commands, one can dial outgoing
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
60 calls and answer incoming ones, and they connect as they should. However,
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
61 the voice audio path is broken: nothing but noise is heard in the earpiece
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
62 speaker. We reason that the problem must be somewhere in L1, which has been
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
63 backported from LoCosto to Calypso in a rather Frankensteinian manner.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
64
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
65 * Deep sleep is broken and needs to be disabled with AT%SLEEP=2; the breakage
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
66 is likewise assumed to be somewhere in L1.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
67
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
68 The two current points of breakage in L1 (broken deep sleep and broken voice
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
69 calls) are deemed to be show-stoppers, i.e., we are not going to progress this
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
70 work in any other direction until these two are fixed. And we currently see
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
71 only two possible ways to fix these L1 issues:
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
72
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
73 Option 1: find and obtain another copy of TCS211 that has its L1 component in
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
74 source form, or a separate L1-by-itself source that would be compatible with
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
75 Calypso DSP ROM 3606 and with the TCS211 fw architecture.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
76
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
77 Option 2: painstakingly reconstruct a TCS211-fitting version of L1 from the
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
78 disassembly of the available binary objects, by taking LoCosto L1 sources and
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
79 massaging them until they compile into object code that matches our TCS211
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
80 reference.
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
81
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
82 Option 1 involves more prayer than actionable work, while Option 2 is currently
7d3f0910aeb2 doc: Firmware_Status written, Freerunner-Howto & Pirelli-Howto updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
83 being worked on in another subproject of FreeCalypso - see tcs211-l1-reconst.