GPRS Connection with Sony Ericsson w800i

Important Update: You don't need or want to do the following steps written here for a decent GNU/Linux distros now! Please refer to this new post for doing this with a decent Ubuntu (at least 9.04).

My Sony Ericsson w800i phone. Photo taken with another Sony Ericsson w800i.

I have setup my Sony Ericsson w800i as a USB modem for GPRS connection. Here's how I have done it in GNU/Linux. (You should be able to do it in Windows by using the drivers/scripts provided. But I haven't tried it yet.) I setup the files more or less from scratch, and I can't guarantee that it works at all! (They do work for me, however.) The configuration files should work fine but may not be optimal. Tell me if you achieve better performance with a modified setup. Note that while the scripts work for w800i, they should also work with other models with similar hardware such as K750, K758.

1. Requirement

You need

  • Sony Ericsson w800i. Of course!
  • A GNU/Linux box with utilities pppd (normally included and installed by default in many distros) and wvdial (not always installed by default).
  • A USB cable for connecting the phone and the GNU/Linux box.

2. Configuration Files

First, create the following file /etc/ppp/peers/gprs-wvdial.conf for wvdial to dial up the modem.

[Dialer gprs]
Init1 = ATH
Init2 = ATE1
Init3 = AT+CGDCONT=1,"IP","APN_name","",0,0
Dial Command = ATD
Phone = *99#
Username = username
Password = password

Get the APN (Access Point Name), user name, and password from your service provider. For example, the values for DiGi Malaysia are diginet, digi, and digi respectively.

Then, create the following file /etc/ppp/peers/gprs for establishing the GPRS connection.

# Debug info
debug
show-password

# Keep pppd attached to the terminal
nodetach

# USB Modem
/dev/ttyACM0
460800
crtscts
local

# Connect
noauth
connect "/usr/bin/wvdial --chat --config /etc/ppp/peers/gprs-wvdial.conf gprs"

# Network settings
defaultroute
usepeerdns
0.0.0.0:0.0.0.0
noipdefault
ipcp-accept-local

# Disable all possible PPP compression protocols between the phone and the PC
# as it's basically useless.
novj
nobsdcomp
novjccomp
nopcomp
noaccomp

# Others
lcp-echo-failure 0
lcp-echo-interval 0
#user "none"
#password "none"
mtu 552
mru 552

3. Connection Invocation

To establish the connection, connect the phone to the GNU/Linux box with the USB cable provided when you bought the phone. You can check the syslog message to ensure that the USB modem has been detected and accessible via /dev/ttyACM0. Then, issue:

$ pppd call gprs

If it works, the pppd command will not exit, and you should be able to surf any web site now. To disconnect, issue Ctrl-C to the pppd program, or simply unplug the phone from the USB cable.