G23M protocol stack and its deblobbing

Mychaela Falconia mychaela.falconia at gmail.com
Sun May 7 17:16:19 UTC 2017


Hello FreeCalypso community,

It has been brought to my attention that even some of our long-timers
do not fully understand the difference between our Citrine and
Magnetite firmwares and between the classic/l1reconst and hybrid
configurations of FC Magnetite in terms of the G23M protocol stack
(a major firmware component), hence I am making this explanatory post.

In terms of our starting point, we have two versions of G23M: one
dated 20070608 and in the form of binary libs (came with our TCS211
semi-src), the other dated 20090327 (newer) in the form of C source
(came with TCS3/LoCosto source).  Well, OK, for the sake of
completeness we also have a third version, the one from TSM30, also in
full source form, but it dates from 2003 and has been heavily mutilated
by Purple Labs who did not like TI's fw architecture and changed it to
their own.  Prior to the discovery of the LoCosto/Peek leak (back in
early 2013 when FreeCalypso was no more than an idea and a cute name)
I was looking at the TSM30 version as the only available C source to
replace the blobs, but once we found the LoCosto version, TSM30 became
unnecessary.  The TSM30 source did help a little bit in the
reconstruction of TCS211 L1 where we needed to reverse TI's
Calypso->LoCosto changes, but G23M is chipset-independent, thus in the
case of G23M the full C source version from 20090327 is the only one
we need, no need to even look at the TSM30 version from 2003.

The 20090327 version of G23M is used in Citrine and in the TCS2/TCS3
hybrid config of Magnetite, and the current official status of both
firmwares is still "experimental, not for production use".  The
20070608 all-blobs version of G23M is used in the classic and l1reconst
configurations of Magnetite, and this is the version that is currently
considered fit for production use, thanks to having been proven for
the latter kind of use by Openmoko.  Obviously a major goal of the
FreeCalypso family of projects is to have a fit-for-production-use
firmware version that is blob-free, but this goal has not been
achieved yet.

The next step on the road to blob-free, fit-for-production-use fw is
to thoroughly exercise the TCS2/TCS3 hybrid config of Magnetite, shake
out its bugs (no known major ones, but probably a slew of little ones)
and get to a point where it can be used with confidence in the place
of the currently-stable l1reconst config that uses the 20070608 blob
version of G23M.  I created this TCS2/TCS3 hybrid config in Magnetite
and proved it basically working back in the fall of 2016, but further
work on this version was paused until we have proper hardware.  Now
that we finally do have proper hw in the form of FCDEV3B, it is now a
good time to start exercising this TCS2/TCS3 hybrid config and
comparing against the stable l1reconst version.

Who can do the above?  I am still busy with FCDEV3B hardware and
calibration issues and not really available for sw/fw work, Serg has
his own project (a specialized application of FreeCalypso hw and sw),
but we also have one more community member with developer
qualifications: Das Signal.  He does not have an FCDEV3B yet, but I am
in the process of preparing a board to send to him, and when he gets
this board, it is possible that he might be able to help us a little
on the sw/fw side of things.  And if not DS or Serg, then I'll tackle
it myself at a later time after I'm done with FCDEV3B hardware and
calibration issues I'm currently working on.

Hasta la Victoria, Siempre,
Mychaela aka The Mother


More information about the Community mailing list