Hybrid fw release for GTA01/02 modems

Mychaela Falconia mychaela.falconia at gmail.com
Sat Jul 14 18:42:00 UTC 2018


Hi David!

> For interest, do you still need to use wine and proprietary tools
> to build this or is it now gcc?

For the time being, the only FC firmware (for all hw targets) that is
actively maintained is Magnetite (all of the releases made over the
past 2 y have been built from the Magnetite tree in various different
configs), and while the hybrid config of Magnetite features compilation
from source for all of the actual GSM fw and system config components,
it still uses TI's TMS470 compiler under Wine.

Of course we will need to transition to building with gcc (like
FC Citrine) at some point in order to be truly free, which would also
require switching to the slightly different version of Nucleus which
we got in source form and to the reconstructed version of OSL, but I
am currently deferring this transition to a later time.  My primary
focus is on stability, i.e., FreeCalypso needs to offer rock-solid fw
(no less solid than the mainstream proprietary stuff from Qualcomm and
MTK etc) at all times, and if I were to produce my planned Selenite fw
(gcc-built successor to Magnetite) right now, it would not have this
level of stability.  Because it won't be a fit-for-production
replacement for Magnetite, I would have to maintain both in parallel,
and being the sole developer working in spare time (FC has no funding
to allow me to work on it full-time, let alone to hire additional
developers), I simply cannot afford to maintain two parallel fw trees.

To put it another way, right now I don't see the transition to gcc as
a high priority for the FreeCalypso family of projects.  Building with
gcc instead of TMS470 would surely feel good, but it would be too
difficult to support building with gcc (plus the different version of
Nucleus required for it) along with all of the existing configs within
the Magnetite source tree, hence a new source tree (which I've been
calling Selenite) would need to be created.  But retiring Magnetite at
this point in time is NOT an option, so I would have to maintain
Magnetite and Selenite fw source trees in parallel, which is a burden
I wish to avoid.

For anyone who feels disappointed that our Magnetite hybrid fw is not
"truly free" because it is compiled with a proprietary compiler and
uses a slightly older version of Nucleus in blob form rather than the
full source version from XVilka, please remember what the competition
is.  FC Magnetite hybrid fw does NOT seek to compete with fully free,
gcc-built toy/experimental firmwares like FC Citrine or OsmocomBB,
instead it seeks to compete with the mainstream commercial phones and
modems, the ones that people actually use with an end user hat on,
ranging from Motorola/Pirelli phones running their original proprietary
fw all the way to the "modern" Qualcomm/MTK stuff.  All of these
competitors (the stuff that people actually use when they use a phone
to call someone, as opposed to playing with toys in a lab) are
absolutely impenetrable solid blobs, hence what we have is already a
VAST improvement over that status quo, shortcomings notwithstanding.

On my end I will only feel comfortable with retiring Magnetite and
migrating to a new source tree (whether it be Selenite with the option
of building with gcc or some other intermediate step) when we build my
desired HSMBP (handset motherboard prototype), but not before.  What's
the connection?  One big reason why I currently need to maintain our
Magnetite tree as-is, with all of its multitude of possible build
configurations including the blob-laden ones, as opposed to making a
one-way migration to a pruned version that has those blob-laden configs
removed, is because the UI code targeting TI's D-Sample platform has
never been properly exercised and played with.  The problem is lack of
schematics for the D-Sample board and lack of tpudrv10.c RF driver
code for it, as well as a possible hardware defect in the D-Sample LCD
I got - although without schematics I can never tell for certain if it
is really defective or if I am doing something wrong.  Thus I need to
build my desired HSMBP that will serve as a D-Sample replacement for
the purpose of TI's UI code, run Magnetite on it, play with it in both
2092 and hybrid-ui configurations, and only then migrate from Magnetite
to a pruned tree that only supports hybrid configs.

It also needs to be noted that I get to set the priorities for the
FreeCalypso family of projects for as long as I am doing 100% of the
work (in my spare time without funding) *and* also covering 100% of
the costs for the hardware projects at the same time.  If someone
feels that putting together a modem fw version that builds with gcc
like Citrine but has the full functionality of Magnetite hybrid and is
up-to-date with all of the recent fixes in the latter should be a much
higher priority than I currently give it, I would be willing to do it
if someone makes a sufficiently large cash donation, as in at least 5
digits USD.

However, I need to make it clear that this new gcc-built fw will be
considered experimental from my perspective and won't be backed by the
same level of confidence as I have in Magnetite hybrid, and Magnetite
will remain the mainline for further development, although any simple
fixes should be easy to apply to both versions.

Hasta la Victoria, Siempre,
Mychaela aka The Mother


More information about the Community mailing list