changeset 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 fab048ff04b8
children 24440bc7cee8
files doc/Pirelli-Howto
diffstat 1 files changed, 55 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- 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