Josh Branning <[email protected]> wrote:

> If you choose to place your contributions into the public domain then 
> that's very nice of you.

Thank you. :)

There is also a practical matter in that copyrights and licenses are
completely worthless unless one is prepared to enforce them by suing
the violators.  I can never, ever, ever sue anyone - I have renounced
my citizenship in all "legitimate" countries and live as an outlaw;
according to countries with laws I have no right to live at all, nor
any other rights, hence no court of any law-based countries will ever
do anything in any case involving me, except maybe arrest me on the
spot and send me away to a supermax prison for the world's most wanted
and most dangerous terrorists.  So why bother putting copyright or
license statements on my work if they can never be enforced?  Hence I
don't bother.

> I see peeklinux has the original 
> http://svn.peeklinux.com/trunk/peek-build/m23/L1/layer1/tpu_drivers/source1/tpudrv61.c
>  
> Locosto driver that you use in your source tree. Peeklinux is presumably 
> under the GPL.

I never quite figured out exactly what the peeklinux project was trying
to do and exactly what they accomplished, and I don't understand their
licensing situation either.

However, the LoCosto firmware source code in question most certainly
does NOT originate with this peeklinux project.  I became aware of its
existence in 2013-05 when it came up in a Google search for "Condat
GSM stack"; prior to that find the only TI-chipset GSM firmware source
I was aware of was the famous TSM30 from 2003-2004.

When I "discovered" the LoCosto source in 2013-05, I got two hits: one
is the same svn.peeklinux.com you are referring to, and the other was
this:

http://scottn.us/downloads/peek/

It was the latter that I used as my starting point, and I archived it
on my own "GSM mini-Wikileaks" FTP site:

ftp://ftp.ifctf.org/pub/GSM/LoCosto/

(as a precaution against ScottN, whoever he is, taking his copy down :)

Digging in the peeklinux project's svn history, one can see that they
imported the same code (minus the removal of some generated files found
in ScottN's version) on 2010-06-26 as SVN revision r329.  (The original
code found at scottn.us targets TI's I-Sample reference board for the
LoCosto chipset; presumably peeklinux project's later changes were to
adapt the code from this I-Sample platform to their Peek hardware
target.)

But it should be obvious to anyone with a clue that the code in
question is a "pirate" source leak that almost certainly was NOT
released legally by Texas Instruments, the company that claimed (and
probably continues to claim) copyright on this code because it was
written by programmers who signed their rights over in exchange for a
paycheck.

The code in question must have leaked from TI some time between
2009-03-27 (the date on the SBuild_*.log files) and 2010-06-26 (the
date when peeklinux imported it), and based on my knowledge of TI's
history, I am leaning more toward 2009.  You see, 2009 was the year
when TI decided to completely exit the cellular baseband chipset
business: they stopped making and selling the chips in question, the
Wireless Terminal Business Unit was dissolved, all offices where that
work was done were closed, and all employees who did that work were
laid off.  (Some were given the option of remaining with TI if they
moved to Dallas, Texas - I personally know one of those laid-off TI
employees and she told me - but who wants to live in that hell-hole?)

When TI exited that business in 2009, all associated "intellectual
property", including all firmware sources, was basically thrown in the
trash can.  (Literally - maybe or maybe not, as I wasn't there to
witness, but certainly figuratively.)  It is perfectly reasonable to
assume that one or more of the 1000 or so laid-off employees did not
want to see their work perish, and so it got leaked in full disregard
of any copyrights held by TI's ghost.

I don't know how the peeklinux project handled the GPL situation.  It
is possible (IANAL) that they may be in violation of the letter of the
GPL by mixing GPL code with the "illegally pirated" code sans license,
but they most certainly did NOT violate the *spirit* of the GPL, which
is simply that you must not take GPL code and incorporate into a
product which you distribute sans source or with other bad restrictions.

A mixed pirate/FOSS developer who takes GPL code, combines it with some
other code that was illegally pirated in disregard of copyrights and
licenses, and releases the result as if it were free software (w/o
concern for legalities) is NOT doing anything bad or immoral, and is
NOT violating the spirit of the GPL - only the letter perhaps.  And
because I do not follow any laws other than my own, to me it is only
the spirit of the GPL that matters, and not the letter.

> I guess to find your modifications,

My modifications are a backport from the LoCosto chipset to the earlier
Calypso.  Of course TI back in the day had the working firmware (in
full source code form inside their company) for Calypso well before
they had it for LoCosto, but unfortunately no such leak exists, or at
least I never found one.  Instead we have these two:

1. The LoCosto source discussed earlier - it is the complete firmware
   that runs on the I-Sample reference board, and almost all of it is
   real C source, with very few binary object pieces.

2. The Leonardo semi-source:

ftp://ftp.ifctf.org/pub/GSM/TI_src/Sotovik/

The latter version runs on the Calypso chipset (Leonardo board), is
fully functional, but only about 50% source, the other half being
binary object libraries.  (Of course the leak is just as unauthorized
as the LoCosto one.)

I considered going the LoCosto route.  For the LoCosto we have not
only the firmware source, but also the schematics and even the PCB
design file for the I-Sample board:

http://scottn.us/downloads/peek/HW%20doc/I-Sample%20ref.%20design/

I could easily make gerber files that that PCB file, send them to fab,
and have a nice shiny physical I-Sample board in my hands.  But I
decided against this route because two things are missing:

1. The protocol for feeding firmware images to the LoCosto chip's Boot
   ROM over its native USB interface.  TI never released the protocol
   description, only their tool in the form of a M$ Windows binary
   sans source, and I don't even have a copy of the latter - ScottN's
   site has what looks like empty directories there:

http://scottn.us/downloads/peek/Tool/CSST/

2. The weird "Sbuild" tools needed for the process of rebuilding the
   LoCosto fw from source are also missing.  One would have to do a
   ton of work creating a new build system (writing Makefiles etc)
   before one can rebuild that source.  Peeklinux seems to have done
   some of this, but I don't know how they handled the firmware
   loading problem.

So I took a different approach.  I decided to produce a fully liberated
GSM firmware suite targeting the older Calypso chipset instead of
LoCosto.  Calypso has no native Unusable Serial Botch interface, uses
a plain UART instead, and the protocol for feeding code to the Calypso
Boot ROM over its UART is very simple and well-understood.  (See
freecalypso-sw/loadtools for the implementation which was written by
me from scratch and is therefore in the public domain.)

I do plan on building my own hardware (modems and dumbphones) with the
Calypso chipset - the reason there have been no updates to
freecalypso-sw since 2014-10 is because I'm been focusing on the hw
work in these recent months.  However, there are several existing
Calypso hardware targets which I've been using for gsm-fw development.

On the firmware side, my approach has been to follow the skeletal
structure of the known-well-working Leonardo semi-src version, the one
that is half source, half blobs.  In all places where the Leonardo
semi-src had real C source, I took the latter.  In places where the
Leonardo version had binary objects only whereas the LoCosto version
had C source, I took the LoCosto source and backported it to Calypso,
using disassembly of Leonardo objects as a guide where necessary.

Both Calypso and LoCosto firmwares are based on the Nucleus RTOS, and
both semi-src finds have it in binary object form only.  However, I
found FreeNucleus by Comrade XVilka, and used it successfully.  There
is also a layer of code between Nucleus and TI/Condat's GPF for which
we also got binary objects, but no source in either version - I had to
reconstruct it by writing new C code based on disassembly of the
binary objects.  As you can see, turning liberated ex-proprietary
firmware into something that can be truly free is no easy task.

> I'd have to get a diff between tpudrv12.c and tpudrv61.c

I produced tpudrv12.c by doing a sort of "diff" between tpudrv61.c and
a disassembly of tpudrv12.obj binary object from Leonardo.  No other
way was available to me: LoCosto's built-in RF block is quite different
from Rita, and the only source of knowledge for how to drive the latter
within the framework of TI's fw architecture was contained in the
tpudrv12.obj COFF object.

I hope that with this explanation you now have a somewhat better
picture of the mess we have on our hands, and maybe even a little
better appreciation for the work involved in turning this mess into a
practically available and usable dumbphone with free firmware.

Hasta la Victoria, Siempre,
SF
_______________________________________________
Replicant mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/replicant

Reply via email to