FreeCalypso > hg > freecalypso-sw
comparison doc/Pirelli-Howto @ 1021:8b52011dc66a
doc/Pirelli-Howto: update for the current situation
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Sat, 23 Apr 2016 06:19:09 +0000 |
parents | 7d3f0910aeb2 |
children |
comparison
equal
deleted
inserted
replaced
1020:fab048ff04b8 | 1021:8b52011dc66a |
---|---|
1 About the Pirelli DP-L10 target | |
2 =============================== | |
3 | |
4 The Pirelli target is currently seen as a dead end for future FreeCalypso | |
5 development. The hardware is very attractive from an end user's perspective | |
6 (nice LCD, hands-free loudspeaker, USB port that combines charging with serial | |
7 data access by way of a built-in CP2102), thus we had high hopes for a long | |
8 time of being able to turn these Pirellis into libre phones by putting our own | |
9 aftermarket firmware on them. However, the following serious problems make | |
10 this prospect less and less likely: | |
11 | |
12 * The inexplicable behaviour around deep sleep will probably be a show-stopper | |
13 to any attempts at on-board UI integration. Experiments revealed that even | |
14 when running TCS211 fw with deep sleep that works on other targets, deep sleep | |
15 must be disabled on the Pirelli, otherwise the phone spontaneously reboots. | |
16 Obviously Pirelli's own fw does something to avoid this problem, as it uses | |
17 deep sleep just fine, but we don't have any source for their fw, hence it | |
18 doesn't help. However, if one disables deep sleep at compile time (in | |
19 cst_pei.c), then something else breaks - the DSP fails in non-understood ways | |
20 when trying to find a GSM network to connect to. So it's a "damned if you do, | |
21 damned if you don't" situation with deep sleep on the Pirelli target. The | |
22 only approach that works is to build the fw with deep sleep enabled at compile | |
23 time, but then disable it with AT%SLEEP=2 before issuing AT+COPS=0. This | |
24 method is tolerable for manual AT command operation, but I have very little | |
25 confidence in being able to make it work with phone UI integration. | |
26 | |
27 * We never attempted to play at all with Pirelli's Winbond W56940 MIDI player | |
28 and loudspeaker driver chip. Even if one is willing to sacrifice the hands- | |
29 free loudspeaker function (which is one of the main attractions of the Pirelli | |
30 over Mot C139), the loudspeaker is still needed in order to play ringtones - | |
31 a phone that can't ring won't be very useful. Whether we want to play MIDI | |
32 ringtones through the W56940 itself or put that chip into the same analog | |
33 pass-through mode in which Pirelli's own fw must put it for loudspeaker calls | |
34 and play Melody E1/E2 ringtones through the Calypso DSP, either way some | |
35 programming of the W56940 will almost certainly be required. When I tried to | |
36 trace out the PCB connections to this chip, a red flag was raised: its reset | |
37 line appears to be driven by what seems to be a GPIO off the SPCA552E camera | |
38 chip. There are no docs for the latter, hence it is not clear if we'll be | |
39 able to control the reset line to the W56940, and without it we may be out of | |
40 luck as far as emitting a ringtone from the loudspeaker. | |
41 | |
42 * There is a lot of complex and unwanted (from our perspective) hardware in the | |
43 Pirelli DP-L10 dealing with its non-GSM functions (WLAN and camera); this | |
44 hardware is completely undocumented and there are no schematics for the phone. | |
45 Trying to build a libre phone atop of an undocumented and poorly understood | |
46 hardware platform which just happens to include one familiar component (the | |
47 Calypso GSM chipset) would be building a house on quicksand. | |
48 | |
49 All of the above notwithstanding, a lot of work has already been put in toward | |
50 support for the Pirelli target in FreeCalypso, and the AT-command-controlled | |
51 voice+SMS pseudo-modem functionality of our current gcc-built GSM firmware | |
52 works no worse on the Pirelli than it does on Mot C1xx. Therefore, we shall | |
53 proceed with the howto: | |
54 | |
1 How to play with FreeCalypso GSM firmware on a Pirelli DP-L10 | 55 How to play with FreeCalypso GSM firmware on a Pirelli DP-L10 |
2 ============================================================= | 56 ============================================================= |
3 | |
4 Our experimental FC GSM fw can now run on the Pirelli DP-L10 target. Our fw | |
5 cannot yet operate this phone in a useful manner, i.e., it is not currently | |
6 possible to replace Pirelli's proprietary fw with ours and use the phone as an | |
7 end user. Our current gsm-fw has working SMS functionality (voice calls are | |
8 still broken) when controlled by an external host via AT commands, but we | |
9 haven't even started working on the on-board user interface part yet. | |
10 | 57 |
11 One very useful special feature of the Pirelli DP-L10 is its very large RAM: | 58 One very useful special feature of the Pirelli DP-L10 is its very large RAM: |
12 8 MiB. Having such large RAM allows us to run our experimental fw on this | 59 8 MiB. Having such large RAM allows us to run our experimental fw on this |
13 target entirely from RAM, without touching the flash. When you compile a | 60 target entirely from RAM, without touching the flash. When you compile a |
14 FreeCalypso gsm-fw image for the Pirelli target, by default a ramImage will be | 61 FreeCalypso gsm-fw image for the Pirelli target, by default a ramImage will be |
61 already running rvinterf process via a local socket, and it will enable you to | 108 already running rvinterf process via a local socket, and it will enable you to |
62 send various commands to the running fw on the target, the most important ones | 109 send various commands to the running fw on the target, the most important ones |
63 being standard AT commands. Send the following sequence of AT commands to | 110 being standard AT commands. Send the following sequence of AT commands to |
64 bring up GSM functionality: | 111 bring up GSM functionality: |
65 | 112 |
66 AT%SLEEP=2 -- disable deep sleep (doesn't work yet) | 113 AT%SLEEP=2 -- disable deep sleep (always required on the Pirelli) |
67 AT+CMEE=2 -- enable verbose error responses | 114 AT+CMEE=2 -- enable verbose error responses |
68 AT+CFUN=1 -- enable radio and SIM interfaces | 115 AT+CFUN=1 -- enable radio and SIM interfaces |
69 AT+COPS=0 -- register to the default GSM network | 116 AT+COPS=0 -- register to the default GSM network |
70 | |
71 Our fw is currently able to exercise all SIM interface functions (at least the | |
72 obvious ones which I've tested), register with a live commercial GSM network | |
73 using a legitimate SIM, and send and receive SMS using standard GSM 07.05 AT | |
74 commands. Voice calls don't work yet: you can dial a MO call with the ATD | |
75 command and you can place a MT call to the device under test from the network | |
76 side and then answer it with ATA, these calls connect successfully, but the | |
77 voice audio fails to pass through: nothing but noise is heard in the earpiece | |
78 speaker. See the Firmware_Status write-up for more information. | |
79 | 117 |
80 When you are done playing with our experimental fw, you can either yank the | 118 When you are done playing with our experimental fw, you can either yank the |
81 battery and kill the host side rvinterf and fc-shell processes, or you can | 119 battery and kill the host side rvinterf and fc-shell processes, or you can |
82 issue a 'tgtreset' command at the fc-shell prompt. The latter will cause the | 120 issue a 'tgtreset' command at the fc-shell prompt. The latter will cause the |
83 target to reset and boot back into its regular firmware. | 121 target to reset and boot back into its regular firmware. |