comparison doc/Compal-calibration @ 300:0cfb2e3aeda4

started documenting c1xx-calextr
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 19 Nov 2017 21:45:12 +0000
parents
children e05563f0dfcf
comparison
equal deleted inserted replaced
299:7fefa4f73c6a 300:0cfb2e3aeda4
1 Reading factory RF calibration values out of Mot C1xx phones
2 ============================================================
3
4 Motorola C1xx phones are based on the Calypso+Iota+Rita chipset from TI and
5 their firmware is also loosely based on TI's reference, but Compal (Motorola's
6 ODM and the maker of these phones) have made lots and lots of changes moving
7 away from TI's canonical way of doing things. When it comes to RF calibration,
8 Mot/Compal have performed it on each individual unit on their factory production
9 line just like all other GSM phone and modem manufacturers, but instead of
10 storing the results of this calibration in TI's flash file system, Mot/Compal
11 have put these calibration values into a completely different flash data
12 structure of their own invention.
13
14 We don't know the proper name for Mot/Compal's flash data structure that has no
15 counterpart in TI's canonical solution, but we know its location in the flash:
16
17 * On C1xx phones with 2 MiB flash (most C11x/12x variants), it is the 8 KiB
18 flash sector at 0x1FC000;
19
20 * On C139/140 phones and the rare C11x/12x variants with 4 MiB flash, it is the
21 8 KiB flash sector at 0x3FC000;
22
23 * On C155/156 phones with 8 MiB flash, the data structure in question is
24 contained in the first 8 KiB of the 64 KiB physical flash sector at 0x7E0000.
25
26 The flash sector in question contains record-structured data; we don't know the
27 meaning of most of these records, but we have been able to find the RF
28 calibration records among them and locate the actual calibration values of
29 interest inside those records.
30
31 In order to extract the RF calibration values from your C1xx phone for use with
32 FreeCalypso, you will need a dump of your phone's flash, or at least a dump of
33 the specific 8 KiB sector at the model-dependent offset given above. As a
34 specific example, if your phone is a C139/140 or a C11x/12x variant with 4 MiB
35 flash and you have a complete dump of that flash, execute a command like the
36 following:
37
38 c1xx-calextr -b rfbin flashdump.bin 0x3FC000
39
40 The c1xx-calextr utility locates the RF calibration records in the flash dump
41 binary, extracts the specific calibration values of primary importance (Rx
42 "magic gain" and Tx APC DAC values), and converts them to TI's canonical format
43 for use with FreeCalypso firmware. The numeric argument after the flash image
44 filename is the offset within that image file where the magic sector should be
45 sought, and the -b option directs the tool to save the converted RF calibration
46 tables in binary format (the alternative is -a for ASCII format) in the
47 directory named after the option, named rfbin in this example.
48
49 If you use the binary output option as recommended here, the resulting output
50 directory will have two subdirectories in it, named rx and tx. The rx
51 subdirectory will have two files named agcparams.BAND where BAND is 900 and 1800
52 for EU-band phones or 850 and 1900 for US-band ones, and the tx subdirectory
53 will have two files named levels.BAND. This directory structure and these
54 names for the binary files correspond directly to the /gsm/rf directory subtree
55 in the flash file system (FFS) of TI's canonical solution, hence once the C1xx
56 phone in question is converted to FreeCalypso (i.e., runs FreeCalypso fw with
57 an aftermarket FFS created for it), you can upload the extracted and converted
58 RF calibration values into it like this:
59
60 fc-fsio upload-subtree rfbin /gsm/rf
61
62 Limitations
63 ===========
64
65 In the traditional RF calibration procedure performed by most GSM phone and
66 modem manufacturers including Motorola, the Rx "magic gain" and the Tx APC DAC
67 values (Tx power levels) are calibrated for the center frequency of each band
68 at first, and then additional measurements are performed at other frequencies
69 within the band to arrive at channel-dependent corrections for both Rx and Tx.
70 On devices that follow TI's canonical way of doing things, you can find these
71 channel correction tables in /gsm/rf/rx/calchan.* and /gsm/rf/tx/calchan.*
72 files in the FFS.
73
74 However, in the case of C1xx phones, Mot/Compal have changed the way in which
75 they do these channel corrections (both Rx and Tx) from TI's canon, and the
76 channel correction values stored in their factory calibration records do not
77 naturally translate to TI's Rx calchan and Tx calchan tables.
78
79 In the case of Rx calibration, Mot/Compal have calibrated the channel
80 corrections with much finer granularity than is called for in TI's canonical
81 version. In TI's canon each band is divided into up to 10 subbands for the
82 purpose of Rx channel compensation, but Mot/Compal used much narrower subbands
83 of only 6 ARFCNs each, resulting in 21 subbands in the narrowest GSM850 band
84 and 63 subbands in the widest DCS (1800 MHz) band. We can see where the
85 channel correction values for each of these tiny subbands are stored, but
86 making use of them in FreeCalypso is not easy.