New phone discovery: Sony Ericsson J120

Mychaela Falconia falcon at freecalypso.org
Sat Dec 9 01:28:10 UTC 2023


Hello FC community,

As Vadim has been experimenting further with Sony Ericsson J120 and
K2x0 phones, uncovering more of their quirks, I couldn't shake the
feeling that SE J120 seemed familiar, that I had seen something very
similar before.  So I took a closer look at SE J120 flash dumps
(provided by Vadim - I don't have one of those phones here), and sure
enough, I see the damning evidence I was looking for: SE J120 was made
by the same ODM (Chi-Mei) as Motorola C168 and W220, with many of the
same design decisions in terms of technical architecture.

Let's rewind for a moment to 2019-May.  This time point was prior to
my discovery of iWOW TR-800, I had a desire to produce a proper
FreeCalypso modem module in a form factor like BenQ M32 or Huawei
GTM900 (this desire has now been satisfied by rebranding iWOW TR-800
into FC Tango), and I was considering the possibility of using Si4210
RF transceiver instead of TI Rita for quadband GSM.  (Remember the
timeframe - prior to discovery of iWOW, we had no source of confidence
for TI's legendary Leonardo+ design.)  I was looking for some existing
phone that used Si4210 (Aero II), and I knew about Motorola C168 and
W220 from this wiki page:

https://osmocom.org/projects/baseband/wiki/PotentialCalypsoTargets

Some time around 2019-May I obtained samples of both C168 and W220.
C168 was a disappointment: I had no success in gaining bootloader
entry, or any other signs of life on the headset jack.  W220 was more
successful: I got in with fc-loadtool and dumped the flash.  I also
found schematics for W220; here they are, together with some flash
dumps:

https://www.freecalypso.org/pub/GSM/Mot_W220/

But the phone (Mot W220) was a disappointment in a different way.  I
was hoping to find a Calypso+Si4210 phone whose firmware architecture
was pristine-unchanged from TI, except for integration of RF support
for the different Silabs transceiver - then I could do some disassembly
to see how Si4210 support was fitted into mostly-unchanged TI fw arch,
then try running FC fw on the same hw, reusing original factory RF
calibration, and test the whole thing on my CMU200...  But nope, no
such luck - the fw architecture of Chi-Mei (Mot W220 and others, as
will be seen shortly) is altered beyond recognition, even worse than
Compal.  There is no TIFFS, no other identifiable FFS format, and I
couldn't even tell from the flash dump where the boundaries lie between
fw image vs factory data (RF cal etc) vs user data.  My venture into
Si4210 idea was set aside then, and later lost all relevance when we
discovered iWOW TR-800, containing nothing less than a mass-produced
version of TI's own legendary Leonardo+ core.

Back to Sony Ericsson J120 - let's review some basic properties it
shares in common with Motorola W220:

* Silabs Aero II RF transceiver;
* Calypso and Iota chips are in 0.5 mm ZPH/ZQW packages, rather than
  more classic 0.8 mm GHH/GGM;
* Intel W18 MCP flash (28F640W18T on W220, 28F320W18T on J120);
* Same incomprehensible fw structure seen in the flash dump: no TIFFS,
  no clear picture of where different parts are.

At this point I knew I had to either prove or disprove my suspicion -
so I did a little disassembly, comparing fw code around the flash boot
entry point between Mot W220 and SE J120.  And here is what I see:

* The highly idiomatic nature of code around the flash boot entry
  point is exactly the same between these two non-TI firmwares: both
  use flash boot mode 0 (contrary to TI fw design), followed by code
  that disables the boot ROM mapping and executes a swi instruction,
  as if they are trying to be compatible with the old broken boot ROM
  version in Calypso C05 chips.  The swi handler then jumps to the real
  flash boot entry point, and there once again we see the same highly
  idiomatic (won't arise by chance) code structure between the two
  firmwares.

* The only significant diff in this boot entry code between the two
  firmwares is that SE J120 version includes a call to an extra
  function (Thumb code at 0x20E0, ARM call veneer at 0x348C) very early
  in the boot path.  A quick look at this function (I didn't dig deep)
  strongly suggests that it is Ericsson-style EROM bootloader - I
  reason that Chi-Mei implemented this function for SE as a contractual
  requirement, whereas no similar requirement existed for Motorola.

And now comes the smoking gun: both firmwares expect the external
off-chip RAM (which I call XRAM in FC) to be at 0x02XXXXXX rather than
the usual 0x01XXXXXX location - meaning that XRAM on SE J120 must be
wired to Calypso nCS3 (instead of TI-standard nCS1) just like it is
depicted on the schematics we found for Mot W220!  This same oddball
choice of XRAM chip select wiring cannot arise by chance, so we know
that Mot W220 and SE J120 *had* to have been made by the same ODM.
And we know that this ODM was Chi-Mei: Motorola's published (for
service/repair shops) schematics helpfully name their ODM. :)

So what about SE K200/K220?  We still don't know which ODM made this
phone, but it does NOT look like either Compal or Chi-Mei.  Given some
similarities to Pirelli DP-L10, it could have been Foxconn - but even
then, the only *real* similarity between Pirelli DP-L10 and SE K2x0 is
that both designs stick fairly close to TI's original, as opposed to
changing it beyond recognition - hence with the common pieces coming
from TI, it is entirely possible that the designers of SE K2x0 were
some other conservative (in terms of fw arch changes) team that had no
relation to the designers of Pirelli DP-L10 at Foxconn.  So who knows...
(There is a Russian expression for *exactly who* may know, but it
contains a word that should not be used in polite company...)

Hasta la Victoria, Siempre,
Mychaela aka The Mother


More information about the Community mailing list