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.