view pirelli/rfcal @ 181:bf4286245c74

Pirelli's RF calibration cracked
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 13 Jul 2014 01:11:22 +0000
parents
children 827b8977d3c2
line wrap: on
line source

The 64 KiB flash sector at 0x027F0000 (the last sector of the 2nd flash bank)
contains per-unit factory data, including the IMEI and RF calibration values.
The location of the IMEI record (at offset 0x504) was found back in 2013-07 and
its encryption was figured out in 2013-11, but it took a bit longer to find the
RF calibration data.  But I finally found the latter as well.  Here they are:

Hex offset	Corresponding FFS file in TI's canonical version
----------------------------------------------------------------
072B		/gsm/rf/tx/ramps.900
092B		    checksum byte
092C		/gsm/rf/tx/levels.900
09AC		    checksum byte
09AD		/gsm/rf/tx/calchan.900
0A2D		    checksum byte
0A2E		/gsm/rf/tx/ramps.1800
0C2E		    checksum byte
0C2F		/gsm/rf/tx/levels.1800
0CAF		    checksum byte
0CB0		/gsm/rf/tx/calchan.1800
0D30		    checksum byte
0D31		/gsm/rf/tx/ramps.1900
0F31		    checksum byte
0F32		/gsm/rf/tx/levels.1900
0FB2		    checksum byte
0FB3		/gsm/rf/tx/calchan.1900
1033		    checksum byte

10AF		/gsm/rf/rx/agcparams.900
10D7		    checksum byte
10D8		/gsm/rf/rx/calchan.900
10E0		    checksum byte
10E1		/gsm/rf/rx/agcparams.1800
1109		    checksum byte
110A		/gsm/rf/rx/calchan.1800
1112		    checksum byte
1113		/gsm/rf/rx/agcparams.1900
113B		    checksum byte
113C		/gsm/rf/rx/calchan.1900
1144		    checksum byte

Each calibration record is followed by a checksum byte.  It is a simple ripple-
carry sum of all bytes in the preceding record.  Note that this checksum byte
is always 0 for the ramps records, as each correctly-formed ramp adds up to 128
(0x80), and the array has an even number of ramps in total.

The following still remain to be located:

/gsm/rf/afcdac
/gsm/rf/afcparams

I don't expect major difficulty in finding them; I just haven't got around to
studying this part of the calibration system yet.