view doc/Modem-configs @ 490:a996d0429c59

OSL os_com_ir.c: system protect/unprotect are macros, not functions
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 22 Jun 2018 16:43:25 +0000
parents c433cca731a3
children 0582d1267e16
line wrap: on
line source

Modem configurations
====================

If you would like to build our Magnetite firmware for the Standard Modem
functionality (voice, SMS, CSD, fax and GPRS services enabled, control via AT
commands, no UI, two UARTs are expected to be available for the AT command
interface and for the RVTMUX binary packet interface), you have 3 specific
configurations to choose from, differing in the level of deblobbing:

classic		This configuration replicates classic TCS211, just like
		leo2moko from 2013.  Almost all of the original binary blob
		libraries are used; the only components that are recompiled
		from source are those which we got in source form with our copy
		of TCS211 from Sotovik.  This config can only be built for the
		fcdev3b and gtamodem targets, not any others.

l1reconst	In this configuration the Layer1 component of the firmware
		(which came as a blob in our copy of TCS211) is recompiled from
		reconstructed source, and the same is done for the system
		initialization code in main.lib.  The entire chipsetsw division
		of the firmware (now in src/cs) is thus recompiled from source,
		either original or reconstructed, and the only components that
		are used as blobs are the G23M PS, GPF and Nucleus.  This
		config can be built for all targets.

hybrid		This configuration is a TCS2/TCS3 hybrid.  Instead of using the
		TCS211 version of the G23M protocol stack which we got only as
		binary blobs, this config uses the G23M PS version from the
		TCS3.2/LoCosto source, backported to work with L1 and the fw
		foundation layers from TCS211.  ACI also had to be replaced with
		the TCS3 version, and a special hybrid version of the cdginc
		headers had to be constructed.  L1 and the init code are also
		deblobbed as in l1reconst.  Like l1reconst, this config can be
		built for all targets, and it is currently the most deblobbed
		(closest to full source) Magnetite config: the only remaining
		blobs are GPF and Nucleus.

All 3 of the above configurations have CSD, fax and GPRS enabled; this
functionality can only be exercised on those hardware targets on which both
Calypso UARTs are brought out, with the MODEM UART presenting a standard ASCII
AT command interface including data functions, while the IrDA UART carries the
RVTMUX interface for debug trace and other development functions.  If you are
interacting with your Calypso target modem or pseudo-modem solely through
RVTMUX, without access to the ASCII AT command interface on the dedicated MODEM
UART, then the data functions of the firmware are inaccessible and act as dead
weight.

Having fully deblobbed all of L1, we now have the ability to build our hybrid
firmware not only for the Standard Modem functionality with all data services
enabled as above, but also in a stripped-down "voice pseudo-modem"
configuration - see the Voice-pseudo-modem article.

The deblobbing of L1 has been done in a very meticulous manner, ensuring that
each individual reconstructed C module compiles into a strict functional
equivalent of the original binary blob, sometimes even matching bit for bit -
thus no regressions are expected with the classic->l1reconst transition, and no
extensive testing is deemed necessary beyond the basic tests that have already
been done.  However, the transition from l1reconst to hybrid involves wholesale
replacement of two major firmware components (G23M PS and ACI) and some
important associated support pieces with entirely different versions from a
different TI program, hence it can certainly benefit from more thorough testing.

So far the most-deblobbed hybrid config looks very promising: voice, SMS and
GPRS work perfectly in my (Mother Mychaela's) lab environment, and even CSD has
finally been proven to work as well on 2018-06-21.  CSD functionality has been
extremely difficult to test because it has been very unreliable lately on the
network side in my geographical location (T-Mobile USA), with CSD calls failing
something like 99.9% of the time with a NO CARRIER response to the ATD command,
using exactly the same modem hardware and firmware that worked flawlessly for
CSD several years earlier, which makes it extremely difficult to test CSD calls
with new firmware - but I finally succeeded in making a CSD call from an FCDEV3B
running FC Magnetite hybrid on 2018-06-21, proving that the new hybrid fw is
good for CSD functionality in addition to the better-tested voice, SMS and GPRS.