http://mobilementalism.com/imageSnag/796-44f38577dbbaf.jpg

Since January 2007 I own the Sony Ericsson P990 Smartphone. Also the idea of a powerful smartphone which you could use to connect to the internet, read and write mails, use Google Maps while being on the road and so and so on is really great I have to say that I am somehow disappointed by that phone. The phone is slow, the firmware is still buggy and still SE decided to stop further developpement of it. But instead of repeating all what is written in all the SE dedicated Forums, I will give you some nice hints and tricks for this phone.

1. Alarm Problem

I had for a very long time the problem of ghost alarms. This means even though I had programed no alarm the phone was still ringing and unfortunately at 5am. There were two indications of this problem

  • The little bell on the left to the current time was still displayed even if in the alarm menu all alarms were switched off.
  • If I used the More menu in the flip closed mode an alarm time was displayed which was not necesseraly corresponding to any of the alarm times displayed in the alarm menu.

Several people were reporting this problem and it was never removed with any of the new firmware versions. However, I finally recognized that when ever I updated the firmware the little bell next to the current time was not there anymore. But when I restored my backup which I performed before updating the bell came back. Therefore to solve the problem I the did a master reset of the phone (Main Menu -> Tools -> Control Panel -> Other -> Master Reset) which removed most of the user data from the phone and puts it in the condition it is in after an update. After that I restored my backup but I did not check the small box saying settings. This removed the problem and it did not come back yet.

2. Backup Problem

After I performed a couple of backups with the Sony Ericsson PC Suite backup tool flawlessly some problem showed up. Each time I tried to generate a backup of the phone it cancelled the operation with some a message of the kind phone does not respond. Thus I was unable to make a backup before performing the next update. Funny enough I recognized by chance that by deleting all backups I made before on my PC solved the problem. However, it did not help to just delete one or so. I really had to delete all. This seems to be a strange bug.

Afterwards I found that in the options menu of the backup tool you can set a maximum number of backups allowed to be made on your PC. On my computer this was set to 6. I am not sure but I believe that I already made six backups before. So it might be that setting this number to 10 or something might would have solved the problem as well. But in the end I think it is quite disappointing that there was no warning message that the maximum number of backups was reached. The error message I got instead at least does not suggest anything like this.

3. Using the P990i as an UMTS Modem

Quite recently I got an UMTS flatrate for Germany through my provider eplus for 25€ per month. This comes in quite handy when you travelling a lot, especially as with the installed Opera browser you can use quite a lot services:

There are even more option that are only intersting for computer nerds like me, e.g. a ssh client for the P990 to have a look onto your server while you are travilling (s. http://coredump.fi/putty ).

However, this service is even more useful if you travel together with your laptop and P990i which actually means you can use the P990i as an UMTS modem for your laptop and work where ever you are. The P990i can be connected to your laptop via the provided USB cable/cradle or wireless via bluetooth. For Windows user there is certainly a bunch of proprietary software packages to do the job of connecting to your laptop. Some folks might think for linux this will be hard way to go but as I found out quickly it is fairly easy!

I checked this out with my IBM Thinkpad T42p which runs under Kubuntu Linux (Feisty Fawn 7.04). There you already have everything you need installed. I used the KPPP software as graphical dialer which also provides some functionality to monitor traffic and costs.

3.1. Setting up the connection between laptop and the phone

This is really a piece of cake! In case you want to use the USB cable you only have to plug the cable to the phone and the laptop and you are ready and chose the phone mode when asked. Feisty will automatically setup the proper device links which you can use to communicate with the phone.

After you plugged in the phone you should be able to see the P990 on the USB bus:

you@yourbox:~$ lsusb
Bus 004 Device 018: ID 0fce:d030 Sony Ericsson Mobile Communications AB
Bus 004 Device 002: ID 05e3:0606 Genesys Logic, Inc.
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

and the following device nodes should exist (if they do not try to unplug and plug it again):

you@yourbox:~$ ls -l /dev/ttyACM*
crw-rw---- 1 root dialout 166, 0 2007-10-06 01:54 /dev/ttyACM0
crw-rw---- 1 root dialout 166, 1 2007-10-06 01:54 /dev/ttyACM1
crw-rw---- 1 root dialout 166, 2 2007-10-06 01:54 /dev/ttyACM2

For the USB case this is already everything you need. In case you want to setup the connection via bluetooth you should have setup bluetooth already. Because there are many howtos on this I will skip this and just show you what you need to connect the P990i. First enable bluetooth both on the phone and on your laptop. The phone should also be set to visible for other devices. Then you need to find out the MAC adress of your phone:

you@yourbox:~$ hcitool scan
Scanning ...
        00:17:E5:B5:A4:84       E65
        00:19:63:B1:75:F2       P990i
        00:1C:43:EE:9E:E8       SGH-L760

Note down the MAC adress of your P990i which is 00:19:63:B1:75:F2 in my case. Then we need to find out the channel number on which the P990i provides the Dial-up Networking service. You can browse all services on your phone with the command sdptool:

you@yourbox:~$ sdptool browse 00:19:63:B1:75:F2
Browsing 00:19:63:B1:75:F2 ...

[...]

Service Name: Dial-up Networking
Service Description: Symbian OS,UIQ phone
Service Provider: Sony Ericsson
Service RecHandle: 0x10026
Service Class ID List:
  "Dialup Networking" (0x1103)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 7
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100

[...]

In my case it was channel 7. We need this information to setup a file that tells your laptop to which bluetooth device it should connect when a modem is needed. The file is called /etc/bluetooth/rfcomm.conf and you should edit to look like this

#
# RFCOMM configuration file.
#

rfcomm0 {
        # Automatically bind the device at startup
        bind yes;

        # Bluetooth address of the device (replace by your MAC adress)
        device 00:19:63:B1:75:F2; 

        # RFCOMM channel for the connection (replace by your Dial-Up network channel)
        channel 7;

        # Description of the connection
        comment "P990";
}

Ok after this we are also set to use the P990i as an UMTS modem over bluetooth!

3.2. Setting up KPPP

For this you only need to know the setup for your provider. KPPP itself is already installed by default in Feisty. First you have to setup an access point by providing the proper username, password and dial-in number. For German providers I found always the same number to dial for all German providers (s. e.g. http://www.teltarif.de/i/gprs-config.html), for your own country you only have to google a little bit probably.

The setup window looks like this (sorry, my version is in German):

provider data

Then you setup the phone as modem like this:

modem setup1

<!> The only thing you need to consider here is that if you want to use your phone over USB you have to the proper device node for this /dev/ttyACM*, in my case it was /dev/ttyACM1. For use with bluetooth the device is /dev/rfcomm0.

There is a second tab calleld modem in the setup for the modem and there you have to press the button modem commands and you should fill in the init string 2 with at&f+cgdcont=1,"IP","internet.eplus.de". Hoever, I was never sure if this is really necessary, it just provides the information of your accesss point, therefore you should replace internet.eplus.de with yours. It looks like this:

modem setup2

Now, you are set to give it a try. If you are using bluetooth again, do not forget to switch in bluetooth on your phone and on your laptop. If you did never authenticate your phone with your laptop your are probably asked for a pin on both devices which you can choose by yourself. If you press connect you will see the phone dial (little earth symbol will appear and start to blink). This means that you are actually connected when you have no error in KPPP. However you will recognize that you are connected, but that you cannot ping anybody or open a webpage.

You will see that your connection is established and that your ppp0 network device for dial-up networking is up:

you@yourbox:~$ ifconfig 
[...]
ppp0      Protokoll:Punkt-zu-Punkt Verbindung
          inet Adresse:10.161.18.59  P-z-P:10.64.64.64  Maske:255.255.255.255
          UP PUNKTZUPUNKT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:3
          RX bytes:58 (58.0 b)  TX bytes:113 (113.0 b)

[...]

So you will have an ip adress but you cannot transfer any data. The problem is that KPPP does not set a up a proper route for your connection. I do not know if this is a KPPP bug, but I think it is rather a problem if the P990i. The P990 does not provide the information for the gateway (P-z-P entry in the ifconfig table) for the point to point connection and therefore KPPP sets up a route to a default adress P-z-P:10.64.64.64 which does not exist. You can see this by typing (while you are still connected over the phone):

you@yourbox:~$ ifconfig 

Ziel            Router          Genmask         Flags Metric Ref    Use Iface
10.64.64.64     *               255.255.255.255 UH    0      0        0 ppp0
192.168.12.0    *               255.255.255.0   U     0      0        0 eth2
link-local      *               255.255.0.0     U     1000   0        0 eth2
default         192.168.12.1    0.0.0.0         UG    0      0        0 eth2

The first entry in the routing table of the kernel is the route for the network to which the P990i is connected to. So obviously we just need to setup the proper gateway. I found out that if you set you default gateway to the IP of the ppp0 device (the P990i) then the connection works perfectly. We do this by typing (you have to this as a root or with sudo in ubuntu linux):

you@yourbox:~$ sudo route del default
you@yourbox:~$ sudo route add default gw 10.161.18.59 

<!> You have to change the IP adress to the adress you find in your ifconfig output for the ppp0 device.

After this you can enjoy surfing! If you disconnect, and you connect to another network you default route should be changed back automatically.

3.3. Automatic setup of the proper route

Because like this you always have to manually tweak your routing table each time you connect via UMTS I wrote two little shell scripts which will do this job in combination with KPPP. In the KPPP setup there is a tab which allows you to define 4 programs/scripts to be run automatically before connecting, after connecting, before disconnecting and after disconnecting which just suits our needs perfectly here.

I have this script to be run automatically after the connection is established:

#script to set proper route for ppp0 P990 device
#get IP of ppp0 device
IP=`ifconfig ppp0 | grep 'inet Adresse:'  | cut -d: -f2 | awk '{print $1}'`
#get ip of current default gateway and write it to file 'default-gw'
route | fgrep default | awk '{print $2}' > default-gw
#set route to ppp0 device
route del default
route add default gw $IP

If you want to use it copy it in a text file (I called it p990_set_route) and make it executable (chmod +x filename). It finds the ip adress of the ppp0 device after it connected and sets up a route to it, further it will store the old default gateway's ip adress in the text file default-gw.

The second scipt looks like this and has to be run after disconnecting: { #!/bin/bash #script to set back usual default route after disconnection from umts #read back default gateway IP from file which was generated by script p990_set_route GW=tail -n 1 default-gw #reset gateway route del default route add default gw $GW }

Also save this in the same directory (I called it reset_route) and make it executable. It reads out the stored old default gateway's ip and resets to default route to this old gateway. So you only have to provide KPPP with the pathes to this scripts and KPPP will do the job for you.

<!> There is only one further hint. The scripts have to be run as root to work properly. The easiest way to achieve this is to run KPPP as root by

you@yourbox:~$ kdesu kppp &

You are asked for you password then before KPPP starts up.

P990 (last edited 2008-11-15 11:38:32 by wired)

Edit and actions menu

  • Immutable Page
  • Info
  • Attachments