Year-end FreeCalypso project status

Mychaela Falconia falcon at ivan.Harhan.ORG
Tue Dec 29 08:32:54 CET 2015


Hello dear FC community,

Another year is almost behind us.  In 2015 our major accomplishments
have been:

* Sean Moss-Pultz of Openmoko agreed to release the original PCB
  design files for the GTA02 motherboard, and managed to dig up a
  survived copy.  We now have this PCB design (which we are hoping to
  reuse) in PADS and Gerber formats.

* The reconstruction of TI's GSM firmware in our own gcc-built tree,
  started in late 2013 and greatly fleshed out in 2014, has been
  finished in the first pass in the spring of this year.  Over the
  summer we got it working: first on the GTA02 modem, then on the
  Pirelli, and then finally on Mot C1xx, all building in the same
  source tree.  One difficult bug after another have been found and
  fixed until we got this fw to connect to live commercial GSM
  networks, send and receive SMS successfully, and connect calls.  But
  voice calls aren't usable in that the voice audio fails to pass
  through.

* By making a few deeper inroads into the very messy build system of
  TI's official TCS211 fw, we've been able to build it in configurations
  with the UI enabled, and thereby got a peek at TI's demo/prototype
  UI.  It is not quite usable as-is for a pocket/purse phone thanks to
  a few serious crashing and glitching bugs, but the foundation is
  definitely there.

* We have proven the Mot C139 (whose US version has been made and sold
  in such huge volume that they are *still* plentifully available) as
  a perfectly viable target for our libre fw (unlike the Pirelli, sadly)
  by bringing up our tcs211-c139 hack/demo port.

Now where do we go from here?  What are our goals?  Well, for me
personally, there are two goals: one quite distant, the other more
immediate.  My distant end goal is still the same: I wish to have a
FreeCalypso phone which could take the place of the proprietary
Pirelli DP-L10 in my purse.  But it is my *distant* goal.  If there
were a way to make it happen fast, I would have already done it by
now, but there is no "fast" solution that would satisfy me.  And since
the "libre phone in my purse" goal can only be a distant one, my
immediate-next goal has to be something else.

A hack like our present tcs211-c139 is not a solution that can satisfy
me because:

* Working within TI's configuration and build system is not healthy.
  The more changes we need to make relative to TI's baseline, the
  dirtier our hacks get.  I can put up with these hacks enough to do a
  proof of concept, but I am not willing to stay in this environment
  forever and ever while trying to develop the phone functionality I
  actually want.

* That same configuration and build environment cripples our ability
  to do sane project management.  If you look on Bitbucket, you will
  see that in the case of my TCS211-based hacks, I have a separate
  source repository for each hack.  Having to fork and maintain a
  separate source tree for each different target or each different
  functional hack is NOT a sane way to maintain a software project.

  Just a couple of weeks ago I talked to George at UberWaves, trying
  to get him to take a closer look at FreeCalypso, and he asked me
  about running our fw on Mot C155/156 in addition to C139/140.  I
  explained to him that there is an uncertainty with the undocumented
  SPMA100B chip for ringtone generation, but an uncertainty is just
  that - it is not a solid "No", and should not prevent people from
  trying.  However, supporting multiple targets in the same source
  tree while staying with TI's configuration and build environment
  would require so much hackery that I am not willing to go down that
  path, at least not now.

* The blob-laden copy of TCS211 we have available has FAX_AND_DATA and
  GPRS enabled.  These data functions can never be made use of on the
  C139 platform, yet they can't be disabled because the blobs have been
  compiled with them enabled.  The "clean design" software architect
  in me revolts against this dead code situation, and I won't be able
  to see our fw for handset targets like the C139 as proper until we
  gain the ability to enable or disable data functions by compiling L1
  and G23M from source with data services components included or
  excluded as desired.

Because of the above considerations, I have found that I am not
presently in the right emotional state to be working on fixing
tcs211-c139 to where it would be more usable as a pocket/purse phone.
I am not in the right emotional state for this work because for the
technical reasons explained above, this particular subproject won't
bring me the satisfaction I need, hence I lack the necessary emotional
motivation to be working on this particular subproject.

Because I am not in the right place emotionally to be working on C139
stuff right now, I have made other subprojects of FreeCalypso my
immediate-next goal.  Or more precisely, two possible immediate-next
goals: one more of a dream, the other more actionable.

The dream goal would be to obtain a more complete copy of TCS211 with
L1 in source form, or an L1-by-itself source of approximately right
version to where it could be integrated and made to work in TCS211.
If we got such a source and I could prove it working on the Freerunner
(my ultimate dream goal would be to build it for the D-Sample and make
it run there, but I'll settle for the FR modem), I would be willing to
put my hardware-building aspirations back on hold and get back onto
the firmware track.  I would use the better L1 source to fix the L1
breakage in our current gcc-built gsm-fw, and once that one works, I
will be in the right emotional state to get back to fixing UI bugs on
the C139 to make it usable - yay!

There is some work going on off-list regarding the search for such
TCS211 L1 sources, but of course there are no guarantees.  Furthermore,
this search involves more waiting than action, hence we need to be
doing something else, something more actionable in the meantime.  And
for me personally, the answer lies in the hardware-building subproject
of FreeCalypso, and this hw-building subproject is where I am going to
direct my focus - at least until and unless we find a TCS211 L1 source,
in which case I shall promptly switch back to the fw track as promised.

If we are not able to obtain a TCS211 L1 source, but we do get our
FCDEV3B board built, the latter will help us in the following ways:

1. I will start working on reconstructing a recompilable C form of L1
   from the disassembly of our available TCS211 binary objects.  In
   principle, this work can be started at any time including now, but
   I won't start working on it myself until we have the FCDEV3B - I
   would want a super-pleasant development platform to offset the
   major unpleasantness of the reconstruction work itself.

2. We may be able to locate some former TI employees who have worked
   on the L1 stuff we are having difficulty with.  They may not have
   the source we are looking for (remember that we need a version
   from a particular period in TI's history; a LoCosto or later source
   won't be of much help, as we already have that one), but they may
   have wetware memory of how things are supposed to work.  If we can
   give them our development boards (which will be pure pleasure to
   work with), perhaps we could convince someone to bring their wetware
   memory to use by helping find and fix the bugs in our currently
   broken L1 which is a backport from LoCosto to Calypso.

So these are my thoughts as we get near the New Year.  Off to bed now.

M~


More information about the Community mailing list