FC audio mode progress

Mychaela Falconia mychaela.falconia at gmail.com
Tue Oct 12 02:21:08 UTC 2021

Hi DS!

> I did solder fine wires (AWG30 probably?) on the back of a C118 phone that
> had all the pads connected, allowing be to test the JTAG and UART on this
> particular phone.

Were you able to reinsert the regular battery after adding those extra
wires, or did you have to implement some more difficult powering
arrangement?  I am thinking that 30AWG wires are probably thin enough
to fit in tiny gaps around the reinserted battery, but what was your

> Soldering is not super hard but it requires an iron with
> a fine tip.

In my case I would ask my friends at Technotronix to do the soldering
(I sometimes very rarely do my own soldering, but this case feels like
too delicate of a job to me), but the main problem would be time delay:
first order 30AWG wires in 3 different colors from Digi-Key, then wait
for the parts to arrive, then assemble the crimped end, then schedule
a visit to Technotronix for the soldering job...

> IIRC that was before FCDEV3B which is much easier to work with
> wrt/ JTAG.

Yes, I remember you playing a lot with Mot C11x phones before we got
FCDEV3B.  For newcomers on this list or those who don't remember
history, I developed FCDEV3B to provide a replacement for Openmoko's
modem.  Unlike OsmocomBB folks, I never accepted any of Mot C1xx phones
as a primary platform, for me they were always an additional platform
to learn from and possibly support to some degree, but never primary.
Prior to our own FC hardware (and prior to discovery of Huawei and
iWOW modules which came even later than FCDEV3B), my canonical Calypso
platform was Openmoko's modem - but the exhausted supply of Openmoko
devices made it impossible to share my work with others, and OM's
modem wasn't a very convenient development platform either, being
tucked away behind the extra layer of an application processor, as
opposed to directly accessible.  So I designed FCDEV3B as a replacement,
and a principal design goal was to make it as close as possible to
OM's modem for firmware purposes: our learning of TI's TCS211 platform
and the process of taking ownership of it were in the early stages,
thus changes needed to be kept to a minimum.

JTAG was thrown in on FCDEV3B, copied from TI's Leonardo, because it
would have been non-sensical to go through the whole process of building
a Calypso dev board starting from just chips, but omit JTAG.  My
experience with fw development over the years proved very little actual
need for JTAG, but it still feels very empowering to be able to take
control of the chip at such low level, especially once we figured out
how to achieve halt directly out of reset.

> I did also solder the UART on at least two C139 phones, it is much easier
> than the C1138 JTAG hack since only three wires are needed. I'd be happy
> to give you a hand with reading the audio config :-)

Take a look in the compal/audio directory in freecalypso-reveng Hg
repository, particularly my most recent omr-guide and omr-via-headset
articles.  The new discovery which I made since my previous post is
that we don't need to kill the fw with tfc139 in order to read
registers, instead we can send omr commands via rvinterf and fc-tmsh
to Compal's running fw, and we can use this omr mechanism to read bits
from DSP API RAM.  Bits that can be read from DSP API RAM naturally
include AEC config and FIR coefficients, but also include Iota VBC
register settings which Compal's fw writes in the same manner as TI's
reference fw, going through the DSP.

The best readouts are obtained if one does these omr sniffs during an
active call - thus you would need to boot the UART-equipped C139 phone
with a SIM inserted, a SIM that corresponds to an active GSM service
with voice call capability.  Because you won't be killing the fw with
tfc139, only non-invasively reading bits from it with omr commands, it
is perfectly safe to boot the phone with a SIM, connect to a GSM
network and make a call.

Run rvinterf -B57600 on the UART connected to the pads inside the
battery compartment, and boot the phone *without* anything inserted
into the headset jack.  Wait for the running fw to establish a
successful GSM network connection, and make sure that there is no
headset icon displayed on the home screen.  Then make a test call, and
while the call is actively connected, run these readout commands:

fc-tmsh omr ffd001ec 2
fc-tmsh omr ffd001d6 2
fc-tmsh omr ffd001dc 4
fc-tmsh omr ffd00238 2
fc-tmsh omr ffd0084a 10
fc-tmsh omr ffd00908 3e
fc-tmsh omr ffd00946 3e

Post the output you get from these omr commands, and I will provide
detailed analysis. :-)

Hasta la Victoria, Siempre,
Mychaela aka The Mother

More information about the Community mailing list