FreeCalypso status update

Mychaela Falconia falcon at ivan.Harhan.ORG
Thu Mar 31 06:12:33 CEST 2016

Hello FC community,

It's time for another status update.  Here are the current happenings:


The hardware subproject (producing our own FCDEV3B modem boards for
developers and tinkerers) is currently stalled.  There was/is an
anonymous company (anonymous as in I don't really know myself who they
are for certain) who did a major part of the hardware design for us,
but my last communication with them was on Feb 27, i.e., over a month
ago.  The most recent design files we got from them (on the FTP site,
look for 20160227 in the filenames) still have a few outstanding
defects in them - defects stemming from mistranslation in the
PADS->Altium conversion to which I strenuously objected, but upon
which they insisted - and my attempts to reach out to these folks and
convince them to fix these last few remaining defects have been

Thus before we can order physical fabrication of the first batch of
FCDEV3B PCBs, we need to find someone who would be able and willing to
fix the outstanding defects in the PCB design.  Specifically, we would
need a PCB layout engineer who is very familiar with Altium Designer
software (has to be Altium at this point because the almost-finished
design we've got is in Altium PcbDoc format) and who would be willing
to make a few edits to the FCDEV3B design under my guidance.

As usually happens with such things, my attempts to find an able and
willing person have been unsuccessful.  Therefore, unless someone
steps forward and volunteers their help, this subproject will remain
on hold until I can save up $4000 in personal cash to pay SDPCB to
redo the whole job from scratch in PADS, without Altium.  The good
news is that my personal financial situation has been improving, but
it will still be several months before I have the requisite amount to
spare.  And just to be clear, the expense in question is NOT for
physical PCB fabrication or parts or assembly or anything along those
lines - instead it is purely for the *desk job* of getting the PCB
design right.


On the sw/fw side, our greatest need right now is for a non-broken,
correctly-fitting version of L1 that targets Calypso C035 DSP ROM
version 3606 with Iota ABB and Rita RF and which we could integrate
into our gcc-built GSM fw version in the place of the half-broken L1
which we have in there right now, the one I produced back in 2014 by
taking the LoCosto L1 and massaging it until it *compiles* in the
Calypso configuration.

Fortunately though, I've been making really good progress with the
deblobbing of L1 in TCS211.  Anyone interested in following the
progress of this subproject can see it in the tcs211-l1-reconst Hg
repository on Bitbucket.  Our only available version of TCS211 (build
date 20070608, possibly the very last version which TI produced and
supported for the Calypso) has all of L1 in binary objects, no C
source, but it has all of the original *.h files (i.e., only *.c have
been deleted), and it has all of the infrastructure for recompiling L1
objects from sources if these source files are somehow restored.

So here is what I mean by L1 source reconstruction or deblobbing: I am
taking L1 *.c modules from the available LoCosto source, I drop them,
one module at a time, into the otherwise complete TCS211 environment
(correct TCS211 versions of TI's compiler, makefile with compiler
invokation lines and all header files), and I massage each individual
module until it compiles into an object that is identical in all
essential aspects (i.e., everything except timestamps and debug line
numbers and the like) to the corresponding reference binary blob.

If I can perform this reconstruction successfully for all modules that
comprise TCS211 L1 (53 modules in total), the result can be essentially
no worse than if we had the full original source for this TCS211
version of L1.  Out of the 53 modules in total, a somewhat reduced
subset with GPRS and L1TM excluded consists of 37 modules; once we
have this reduced subset of 37 modules, it will make sense to attempt
a migration of this reconstructed code into our gcc-built gsm-fw
environment.  And out of these needed 37 modules, I have 11 done so
far.  So it is not looking too bad.  Once again, if you would like to
see this work progress with your own eyes, follow the tcs211-l1-reconst
repository on Bitbucket.

How the community can help

Division of labor is a good thing.  Our overall project could certainly
reach the big goal of a 100% libre phone sooner if we had additional
developers besides just me.  The problem, however, is that the tasks
which I would be willing to hand off to others are the ones which no
else seems to be willing and qualified to take on.

The subproject I am working on right now - reconstruction of TCS211 L1
- is one which I would *not* be willing to hand off to anyone else.
There is no way that anyone else would be able to do it with the same
level of perfection which I produce in that realm and which I would
expect of any other; this part is really a guildmaster's work.  Same
goes for all other core modem firmware work that will follow.

Instead the subproject which I would be MOST willing and eager to hand
off to someone else is the one which the community seems to be the
LEAST interested in taking on: the hardware subproject, i.e., designing
PCBs for FreeCalypso hardware objectives.  If there were a qualified
and committed person willing to take ownership of the hardware
subdivision of FreeCalypso, I would gladly vest that person will full
decision-making powers as to which PCB design software is to be used,
whether to reuse an existing layout or to do a new one in each given
case, and so forth, as long as the end result will do what I envision
and as long as the person vested with these decision-making powers has
demonstrated both his/her commitment to the project and his/her
qualification to do the job right.  But so far no one has stepped
forth, hence I have to do double duty as both the sw/fw developer and
the person responsible for the hardware.

A lesser task which someone else could conceivably take on would be
bringing the UI part of tcs211-c139 up to par.  To refresh everyone's
memory, back in November I produced a hacked-up version of TCS211 fw
that runs on the Mot C139 in the phone UI configuration, i.e., it works
on an untethered phone, without requiring a PC to be connected.  But
it is TI's demo/prototype UI code, and this UI code is very much of
demo/prototype quality, *not* end product quality like their lower-
level modem code.  There are perfectly legitimate user operations like
bringing up the last dialed number or reading stored SMS that cause
the fw to crash and reboot the phone, and some essential features like
managing LCD on/off status and battery charging are missing altogether.

Barring a possible paid consulting arrangement (the cost of which would
NOT be affordable to an ordinary individual), I am not willing to work
on that stuff personally until I first finish what I perceive as being
more important, i.e., deblobbing L1 in TCS211 and getting our gcc-built
gsm-fw to work no worse than the Windows-built blob-laden one - in
other words, the work to fix the UI bugs is necessary toward the end
goal of a 100% libre dumbphone and I will get around to it eventually,
but my approach is to do other parts first.

Therefore, if you would like to contribute to FreeCalypso, you don't
have the most desired-by-me PCB design skills to take over the hardware
subproject, but do have some C coding skills, one smaller subproject
you could consider taking on would be improving the UI situation in
tcs211-c139.  This code is all C source, no blobs, hence no ARM
assembly or reverse engineering skills are needed, but you would need
to study the code and familiarize yourself with the architecture of
TI's UI code (the part which I haven't closely studied myself yet; I
only got the sans-UI modem fw architecture covered), and you would
need to be willing to work with the Wine environment required in order
to recompile TCS211-based firmwares.  You would need to be able to make
your experimental code changes, recompile the fw with them, flash your
experimental code into a C139 phone and test it there, and you would
need to be able to repeat these steps rapidly over and over on your
own, with me being there to hand-hold you only the first time.

Hasta la Victoria, Siempre,

More information about the Community mailing list