comparison README @ 863:78c894c7c471

top README: project status update
author Space Falcon <falcon@ivan.Harhan.ORG>
date Sun, 10 May 2015 05:28:05 +0000
parents 615fb8847d3f
children e8bdd3d0c4c2
comparison
equal deleted inserted replaced
862:1b63cc243341 863:78c894c7c471
1 What this project is about 1 What this project is about
2 ========================== 2 ==========================
3 3
4 Welcome to FreeCalypso. The goal is this project is to produce a Free Dumb 4 You are looking at the software/firmware subproject of FreeCalypso. The goal
5 Phone - not yet another smartphone (free or otherwise), but a "dumbphone", 5 of this subproject is to produce a fully functional firmware version for the
6 i.e., a traditional cellular telephone handset just like we all had and enjoyed 6 Calypso GSM baseband chipset from Texas Instruments that is fully controlled
7 back in the 1990s - a device with just enough hardware resources to make and 7 by We the People (recompilation with a free compiler from full source code
8 receive traditional phone calls on a standard GSM network, and not one iota 8 which is freely published and maintained by us, as opposed to a frozen
9 more. No power-hungry application processors, just have one baseband processor 9 impenetrable binary blob from some long-defunct vendor) and which we can use in
10 that does everything from running the GSM protocol stack to responding to the 10 two ways:
11 user pressing buttons on the traditional numeric dialpad. No big screens with
12 power-hungry backlights, just a little LCD to display who is calling and the
13 current date and time - I use my cellphone as a pocketwatch too, so my wrists
14 stay free.
15 11
16 But we seek to build a "dumbphone" with one VERY SPECIAL twist: namely, 12 a) replace the original proprietary firmware of certain pre-existing phone
17 operational firmware for the phone (which includes everything from the UI down 13 models based on this chipset, thereby turning these historical devices into
18 to GSM Layer 1, as there is no separate baseband processor) available to every 14 libre phones;
19 end user in the form of full source code. Hence it will be a Free Dumb Phone.
20 We seek to achieve this "special twist" by doing the following:
21 15
22 * We'll use the ancient TI Calypso chipset for our Free Dumb Phone instead of 16 b) use as the official firmware for new phones and modems which we design and
23 whatever is the current offering from MTK or other cellular chipset company 17 build ourselves, using the same Calypso chipset.
24 du jour. TI stopped making these chips ages ago, and got out of the cellular
25 baseband chipset business altogether, but we can still source these chips in
26 5-digit quantities on the Chinese surplus market.
27 18
28 * Because we'll be using a baseband chipset from the surplus market made by a 19 Origin of the source
29 company that long bit the dust, we will not be getting any official firmware 20 ====================
30 releases from any vendor. Therefore, there is no one to sign any NDAs with,
31 and there is no one to tell us what we can or cannot do with the firmware as
32 we won't be getting any official firmware in the first place.
33 21
34 * Our Free Dumb Phone will run free firmware which we put together ourselves. 22 We are *not* attempting to reimplement a fully functional and practically
35 When TI completely exited the cellular baseband chipset business, closed all 23 usable GSM protocol stack from scratch in this project - such a task would be
36 their offices involved with that work and laid off all of the responsible 24 far beyond the capabilities of our very small and woefully underfunded team,
37 employees, they broke their firmware into pieces and threw the pieces in the 25 and in the opinion of project leader Space Falcon, such a from-scratch
38 trash. We have picked these shattered pieces out of the trash dumpster, and 26 reimplementation would be an egregious and morally impermissible waste of human
39 like anything else found in a dumpster, these abandonware pieces are 27 talent. Instead, we are using the L1 and G23M protocol stack code for TI's
40 effectively in the public domain, and any person in the world is free to do 28 LoCosto chipset that was included in the chipset.zip public release made by the
41 with them as she pleases. 29 CEO of Peek, Inc. (the Peek mobile email device company) as that company went
30 under, and porting it from the LoCosto-based Peek platform to our Calypso target
31 devices of interest.
42 32
43 The "shattered pieces" aspect of the firmware needs to be re-emphasized. TI's 33 Where we came from
44 complete firmware suite for their Calypso chipset, also known as TCS2.1.1 or 34 ==================
45 TCS211, has *not* survived the disbanding of its maker company in an intact
46 form. Shattered bits and pieces are all we've been able to gather through our
47 dumpster diving efforts.
48 35
49 Reconstructing fully-functional firmware for the Calypso from the available 36 Just because we are reusing most components from TI's original firmware releases
50 broken pieces is where the bulk of the hard work in our project is. There is 37 does not mean that our project is trivial or devoid of our own original work.
51 another project (bb.osmocom.org) seeking to produce similarly-functional fw by 38 When we started the GSM firmware subproject in the fall of 2013 (that was when
52 rewriting it completely from scratch with a totally different architecture, but 39 we obtained the last missing piece of required starting source material), the
53 the lead developer of the present FreeCalypso project has chosen the 40 available TI firmware sources consisted of:
54 reconstruction approach as more reliable and more likely to produce the desired
55 result.
56 41
57 Hardware vs. software 42 * A TCS211 semi-src deliverable that could be compiled into a working fw image
58 ===================== 43 for the GSM modem in the Neo Freerunner. While this version includes
44 recompilable source for most of the supporting components, the actual GSM
45 protocol stack is 100% linkable binary libraries sans source. These binary
46 object components necessitate the use of TI's proprietary compiler tools to
47 rebuild the fw. The build environment is set up for Windows only.
59 48
60 Our goal is to produce a complete and usable cellphone product. Such a product 49 * The source from Peek (TCS3.2_N5.24_M18_V1.11_M23BTH_PSL1_src.zip) for TI's
61 requires both hardware and software (firmware). We need to produce both. We 50 I-Sample board with the LoCosto chipset. Mostly real source (about 95%), but
62 could do the hw and fw subprojects in either order, but we have chosen to work 51 still has a few required components which exist only as linkable binary
63 on the firmware first. By doing the fw first, we will get to exercise it on 52 libraries sans source. The use of TI's proprietary compiler tools is still
64 some existing phones that use the same Calypso chipset; doing the hw ahead of 53 required for the same reason, and the build environment is set up to use a
65 the fw would give us a fancy paperweight. 54 bunch of other Windows-only tools.
66 55
67 Current status 56 * The Peek Linux project (svn.peeklinux.com) replaced the Windows-based build
68 ============== 57 system with a Linux-based one, but the binary-only libraries are still there,
58 hence the compiler toolchain is still the same proprietary one from TI.
59
60 The above sorry state of affairs (absolute dependency on binary object code
61 sans source, on proprietary compiler toolchains and on Windows) was very far
62 from what we sought to accomplish (compilation from full source with gcc under
63 GNU/Linux or other free Unix), hence we set out on a firmware reintegration
64 project that took a year and a half.
65
66 What we've done
67 ===============
68
69 By a process of painstaking reintegration piece by piece, we have put together
70 our own firmware suite for the Calypso that builds into a flashable image (but
71 doesn't work properly yet - see below) and has the following essential
72 features/qualities/attributes:
73
74 * Targets Calypso rather than LoCosto. This decision is somewhat controversial,
75 i.e., one could make a valid argument that we should have gone with LoCosto
76 instead. But in our defense, we already have several pre-existing devices
77 with the Calypso chipset on which we would like to run libre firmware; as for
78 LoCosto, we don't have a hardware platform to use as a bring-up vehicle, and
79 when we started the project, we were missing a copy of some of TI's Windows
80 tools for LoCosto.
81
82 * The overall architecture of our firmware (what components are included) mimics
83 that of TCS211 (TI's official fw for Calypso platforms for which we only have
84 a semi-src): e.g., we use real RiViera rather than RV emulation atop GPF.
85 In the case of RiViera, FFS and other components for which our copy of TCS211
86 has real source, we have used that TCS211 source.
87
88 * L1 and all of G23M (including ACI, CCD and AIM/SAP definitions) are the
89 version from the LoCosto source - which has an unfortunate quality of being
90 completely untested.
91
92 * Configured for a feature set matching TCS211, i.e., most of the newer features
93 appearing in TCS3.2 are *not* enabled. The GSM protocol stack is also
94 configured for the minimal voice+SMS feature set, i.e., CSD, fax and GPRS
95 haven't been integrated or enabled yet.
96
97 * Everything builds from full source with gcc, i.e., *nothing* is used in the
98 form of a precompiled binary object or library. Some parts of GPF, L1 and
99 system initialization code had to be reconstructed from disassembly of TCS211
100 binary objects, as no original or suitable substitute source could be found.
101
102 * The version of Nucleus we use comes from a non-TI source; all TI GSM fw
103 sources we found have their Nucleus in binary-only libs.
104
105 * To reiterate: our compiler is gcc, *not* TI's proprietary TMS470!
106
107 Current status (2015-05)
108 ========================
69 109
70 We are currently using the Calypso GSM modem in the Openmoko GTA02 smartphone 110 We are currently using the Calypso GSM modem in the Openmoko GTA02 smartphone
71 as our bring-up vehicle. We have our own firmware suite, compiled 100% from 111 as our bring-up vehicle. This target has been chosen as the BUV because it is
72 source with gcc (no blobs or proprietary compiler toolchains!), but we have not 112 very close to TI's reference hardware platform (Leonardo) on which TI's TCS211
73 yet reintegrated the full GSM protocol stack in this project. (The leo2moko 113 reference firmware was designed to run. Because our own firmware, despite
74 side project doesn't count.) But we are getting close: we've got the 114 having been reintegrated and rebuilt by us, is still based on TI's reference
75 FreeNucleus RTOS by XVilka as a working replacement for the binary-only version 115 design and is only slowly diverging from that origin, it makes the most sense
76 of Nucleus used by TI, and we've got the following parts of TI's original 116 to bring our fw up on the most "vanilla" hw platform first, and only then port
77 firmware suite integrated and working: 117 to other hw targets of interest (Motorola and Pirelli phones) that exhibit
118 noticeable differences from TI's "canon".
78 119
79 * RiViera framework and everything that runs under it, including TI's original 120 Our current gcc-built GSM firmware image runs on this gtamodem target. But it
80 FFS (flash file system), RVTMUX serial channel and ETM (Enhanced Test Mode). 121 doesn't work properly yet: getting this firmware *built* was the first half of
81 This part has been found in a TCS211 semi-src package. 122 the project (took a year and a half), and now we enter the second stage:
123 debugging problems one by one until we make it work. Right now one can flash
124 our firmware image into a GTA02 modem and boot it; the modem running our fw
125 will then present a working AT command interface: one can exercise trivial
126 functions like version queries and even bring up SIM communication; one can
127 successfully query the SIM for its IMSI and phone numbers, for example. But
128 attempting to bring the radio interface up fails. There is also some weird
129 interaction with a hardware power cycling issue which we still need to
130 characterize further.
82 131
83 * GPF (Condat's protocol stack framework) - TI used it mostly as binary libs, 132 We are confident that we can fix whatever issues currently prevent our gcc-built
84 even internally, and we had to reconstruct it from pieces. Some parts of GPF 133 firmware from working, and get it to work no worse than the original half-src,
85 had to be reconstructed from disassembly. But it works beautifully now. 134 half-binary TCS211 - at least in the voice+SMS functional subset, without CSD,
86 135 fax or GPRS. Once we reach that point, we will then port our FreeCalypso fw to
87 * GSM Layer 1 code - we took the version from the LoCosto source (no official 136 our non-Openmoko targets of interest (Motorola C1xx and Pirelli DP-L10), and
88 Calypso L1 source could be found) and backported it from LoCosto to Calypso. 137 start reintegrating TI's reference UI code - our current fw is controlled by AT
89 138 commands only. Then later re-add CSD, fax and GPRS.
90 We are now working on reintegrating the rest of the GSM protocol stack code,
91 also taking it from the LoCosto source (the only available full source) and
92 reintegrating it to build in our FreeCalypso environment, targeting Calypso
93 instead of LoCosto.
94 139
95 We have also produced some host tools for loading firmware into Calypso GSM 140 We have also produced some host tools for loading firmware into Calypso GSM
96 devices, for communicating with running firmwares over the RVTMUX interface, 141 devices, for communicating with running firmwares over the RVTMUX interface,
97 and for manipulating TI's flash file system. See README.hosttools for the 142 and for manipulating TI's flash file system. See README.hosttools for the
98 details. 143 details.
119 toolchain Scripts and patches for building the gcc+binutils toolchain 164 toolchain Scripts and patches for building the gcc+binutils toolchain
120 targeting ARM7, the CPU core of the Calypso GSM/GPRS baseband 165 targeting ARM7, the CPU core of the Calypso GSM/GPRS baseband
121 processor. You'll need to build and install this toolchain 166 processor. You'll need to build and install this toolchain
122 first before you can build gsm-fw or target-utils. 167 first before you can build gsm-fw or target-utils.
123 168
124 If you like this project and would like to see it continue to fruition, please 169 Website and mailing list
125 consider making a Bitcoin donation to the human family behind it: 170 ========================
126 171
127 https://blockchain.info/address/159Yx6JRJ4oMLPTYrh1jW7fQ5D5tPHdnoM 172 Please see our website at www.freecalypso.org for information on:
173
174 * The overall FreeCalypso libre phone project, beyond this specific sw/fw
175 subproject;
176
177 * Our community mailing list and how you can subscribe to it;
178
179 * How you can help the human family behind the project with donations and how
180 you can accelerate the progress of our project by funding it.