FreeCalypso > hg > freecalypso-sw
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. |