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).

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.
You need
pppd (normally included and installed by default in many distros) and wvdial (not always installed by default).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
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.