# HG changeset patch # User Mychaela Falconia # Date 1461392349 0 # Node ID 8b52011dc66a67583c07395f0ece215a8bbfb907 # Parent fab048ff04b883ef64cd16b58206a26172bd63c2 doc/Pirelli-Howto: update for the current situation diff -r fab048ff04b8 -r 8b52011dc66a doc/Pirelli-Howto --- a/doc/Pirelli-Howto Sat Apr 23 05:17:15 2016 +0000 +++ b/doc/Pirelli-Howto Sat Apr 23 06:19:09 2016 +0000 @@ -1,13 +1,60 @@ +About the Pirelli DP-L10 target +=============================== + +The Pirelli target is currently seen as a dead end for future FreeCalypso +development. The hardware is very attractive from an end user's perspective +(nice LCD, hands-free loudspeaker, USB port that combines charging with serial +data access by way of a built-in CP2102), thus we had high hopes for a long +time of being able to turn these Pirellis into libre phones by putting our own +aftermarket firmware on them. However, the following serious problems make +this prospect less and less likely: + +* The inexplicable behaviour around deep sleep will probably be a show-stopper + to any attempts at on-board UI integration. Experiments revealed that even + when running TCS211 fw with deep sleep that works on other targets, deep sleep + must be disabled on the Pirelli, otherwise the phone spontaneously reboots. + Obviously Pirelli's own fw does something to avoid this problem, as it uses + deep sleep just fine, but we don't have any source for their fw, hence it + doesn't help. However, if one disables deep sleep at compile time (in + cst_pei.c), then something else breaks - the DSP fails in non-understood ways + when trying to find a GSM network to connect to. So it's a "damned if you do, + damned if you don't" situation with deep sleep on the Pirelli target. The + only approach that works is to build the fw with deep sleep enabled at compile + time, but then disable it with AT%SLEEP=2 before issuing AT+COPS=0. This + method is tolerable for manual AT command operation, but I have very little + confidence in being able to make it work with phone UI integration. + +* We never attempted to play at all with Pirelli's Winbond W56940 MIDI player + and loudspeaker driver chip. Even if one is willing to sacrifice the hands- + free loudspeaker function (which is one of the main attractions of the Pirelli + over Mot C139), the loudspeaker is still needed in order to play ringtones - + a phone that can't ring won't be very useful. Whether we want to play MIDI + ringtones through the W56940 itself or put that chip into the same analog + pass-through mode in which Pirelli's own fw must put it for loudspeaker calls + and play Melody E1/E2 ringtones through the Calypso DSP, either way some + programming of the W56940 will almost certainly be required. When I tried to + trace out the PCB connections to this chip, a red flag was raised: its reset + line appears to be driven by what seems to be a GPIO off the SPCA552E camera + chip. There are no docs for the latter, hence it is not clear if we'll be + able to control the reset line to the W56940, and without it we may be out of + luck as far as emitting a ringtone from the loudspeaker. + +* There is a lot of complex and unwanted (from our perspective) hardware in the + Pirelli DP-L10 dealing with its non-GSM functions (WLAN and camera); this + hardware is completely undocumented and there are no schematics for the phone. + Trying to build a libre phone atop of an undocumented and poorly understood + hardware platform which just happens to include one familiar component (the + Calypso GSM chipset) would be building a house on quicksand. + +All of the above notwithstanding, a lot of work has already been put in toward +support for the Pirelli target in FreeCalypso, and the AT-command-controlled +voice+SMS pseudo-modem functionality of our current gcc-built GSM firmware +works no worse on the Pirelli than it does on Mot C1xx. Therefore, we shall +proceed with the howto: + How to play with FreeCalypso GSM firmware on a Pirelli DP-L10 ============================================================= -Our experimental FC GSM fw can now run on the Pirelli DP-L10 target. Our fw -cannot yet operate this phone in a useful manner, i.e., it is not currently -possible to replace Pirelli's proprietary fw with ours and use the phone as an -end user. Our current gsm-fw has working SMS functionality (voice calls are -still broken) when controlled by an external host via AT commands, but we -haven't even started working on the on-board user interface part yet. - One very useful special feature of the Pirelli DP-L10 is its very large RAM: 8 MiB. Having such large RAM allows us to run our experimental fw on this target entirely from RAM, without touching the flash. When you compile a @@ -63,20 +110,11 @@ being standard AT commands. Send the following sequence of AT commands to bring up GSM functionality: -AT%SLEEP=2 -- disable deep sleep (doesn't work yet) +AT%SLEEP=2 -- disable deep sleep (always required on the Pirelli) AT+CMEE=2 -- enable verbose error responses AT+CFUN=1 -- enable radio and SIM interfaces AT+COPS=0 -- register to the default GSM network -Our fw is currently able to exercise all SIM interface functions (at least the -obvious ones which I've tested), register with a live commercial GSM network -using a legitimate SIM, and send and receive SMS using standard GSM 07.05 AT -commands. Voice calls don't work yet: you can dial a MO call with the ATD -command and you can place a MT call to the device under test from the network -side and then answer it with ATA, these calls connect successfully, but the -voice audio fails to pass through: nothing but noise is heard in the earpiece -speaker. See the Firmware_Status write-up for more information. - When you are done playing with our experimental fw, you can either yank the battery and kill the host side rvinterf and fc-shell processes, or you can issue a 'tgtreset' command at the fc-shell prompt. The latter will cause the