<> This page describes how to use a cell phone and a USB cable to connect your pc to the internet. For this example I used: * Ubuntu Breezy * a Nokia 6021 cell phone * a CA-42 cable * an Italian Vodafone provider The instructions should be valid with minimal modifications also for a Bluetooth or infrared connection and for other providers. I used the packages '''wvdial''' and '''netenv''', which can be installed by {{{ sudo apt-get install wvdial sudo apt-get install netenv }}} == 1. Configuring the cell phone == The cell phone is configured by chosing * Menù -> Impostazioni -> Connettività -> GPRS -> Impostazioni modem gprs * "Punto di accesso attivo": VO GPRS * "Punto di accesso gprs": web.omnitel.it (may be this is is not really necessary, but it was suggested by the Vodafone customer care and I have not tried without it). == 2. Connecting the cell phone to the pc == The cell phone is connected to the pc by the cable and a USB port. Observing the file '''/var/log/syslog''' we see that a file '''/dev/ttyACM0''' is created. It will be used to communicate with the cell phone: {{{ $ tail -F /var/log/syslog Apr 15 12:00:28 localhost kernel: [4299673.731000] usb 3-1: new full speed USB device using uhci_hcd and address 2 Apr 15 12:00:29 localhost kernel: [4299674.411000] drivers/usb/class/cdc-acm.c: This device cannot do calls on its own. It is no modem. Apr 15 12:00:29 localhost kernel: [4299674.411000] cdc_acm 3-1:1.0: ttyACM0: USB ACM device Apr 15 12:00:29 localhost kernel: [4299674.415000] usbcore: registered new drive r cdc_acm Apr 15 12:00:29 localhost kernel: [4299674.415000] drivers/usb/class/cdc-acm.c: v0.23:USB Abstract Control Model driver for USB modems and ISDN adapters Apr 15 12:00:29 localhost usb.agent[17575]: cdc-acm: loaded successfully }}} == 3. Finding the modem parameters == Using the command '''wvdialconf''' the cell phone modem is recognized and the relevant parameters are written in '''/etc/wvdial.conf''': {{{ $ sudo wvdialconf /etc/wvdial.conf Password: Scanning your serial ports for a modem. Port Scan<*1>: S0 S1 S2 S3 S4 S5 S6 S7 Port Scan<*1>: S8 S9 S10 S11 S12 S13 S14 S15 Port Scan<*1>: S16 S17 S18 S19 S20 S21 S22 S23 Port Scan<*1>: S24 S25 S26 S27 S28 S29 S30 S31 Port Scan<*1>: S32 S33 S34 S35 S36 S37 S38 S39 Port Scan<*1>: S40 S41 S42 S43 S44 S45 S46 S47 Port Scan<*1>: S48 S49 S50 S51 S52 S53 WvModem<*1>: Cannot get information for serial port. ttyACM0<*1>: ATQ0 V1 E1 -- OK ttyACM0<*1>: ATQ0 V1 E1 Z -- OK ttyACM0<*1>: ATQ0 V1 E1 S0=0 -- OK ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK ttyACM0<*1>: Modem Identifier: ATI -- Nokia ttyACM0<*1>: Speed 4800: AT -- OK ttyACM0<*1>: Speed 9600: AT -- OK ttyACM0<*1>: Speed 19200: AT -- OK ttyACM0<*1>: Speed 38400: AT -- OK ttyACM0<*1>: Speed 57600: AT -- OK ttyACM0<*1>: Speed 115200: AT -- OK ttyACM0<*1>: Speed 230400: AT -- OK ttyACM0<*1>: Speed 460800: AT -- ttyACM0<*1>: Speed 460800: AT -- ttyACM0<*1>: Speed 460800: AT -- ttyACM0<*1>: Max speed is 230400; that should be safe. ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK Found an USB modem on /dev/ttyACM0. Modem configuration written to /etc/wvdial.conf. ttyACM0: Speed 230400; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0" }}} == 4. Modifying the configuration file == The file '''/etc/wvdial.conf''' has to be manually modified to add the row with the initialization string '''Init3''', the Vodafone phone number ('''*99#''') and the empty string for '''Username''' and '''Password''': {{{ $ sudo cat /etc/wvdial.conf [Dialer Defaults] Modem = /dev/ttyACM0 Baud = 230400 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = AT+CGDCONT=1,"IP","web.omnitel.it" ISDN = 0 Modem Type = USB Modem Phone = *99# Username = '' }}} == 5. Modifying /etc/network/interfaces == The files '''/etc/network/interfaces''' and '''/etc/resolv.conf''' should be modified as follows: {{{ $ cat /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto ppp0 iface ppp0 inet wvdial }}} {{{ $ cat /etc/resolv.conf nameserver 83.224.66.134 nameserver 83.224.65.134 }}} (modifying /etc/resolv.conf is probably unnecessary but I have not tried without it) == 6. Connecting == Connect using the command '''wvdial'''. The correct establishment of the connection can be verified by observing the file '''/var/log/syslog'''. At the moment of the connection the Nokia 6021 screen shows that a GPRS connection is being established. All recent Vodafone cell phone cards in Italy have GPRS modem connection enabled by default, just call the number 190 to know the cost. {{{ $ sudo wvdial --> WvDial: Internet dialer version 1.54.0 --> Cannot get information for serial port. --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Sending: AT+CGDCONT=1,"IP","web.omnitel.it" AT+CGDCONT=1,"IP","web.omnitel.it" OK --> Modem initialized. --> Sending: ATDT*99# --> Waiting for carrier. ATDT*99# CONNECT ~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~ --> Carrier detected. Waiting for prompt. ~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~ --> PPP negotiation detected. --> Starting pppd at Sat Apr 15 12:02:02 2006 --> pid of pppd: 18018 --> Using interface ppp0 --> local IP address 83.225.55.243 --> remote IP address 10.6.6.6 --> primary DNS address 83.224.66.134 --> secondary DNS address 83.224.65.134 }}} {{{ $ tail -F /var/log/syslog Apr 15 12:02:02 localhost kernel: [4299768.004000] CSLIP: code copyright 1989 Regents of the University of California Apr 15 12:02:02 localhost kernel: [4299768.017000] PPP generic driver version 2. 4.2 Apr 15 12:02:02 localhost pppd[18018]: pppd 2.4.3 started by root, uid 0 Apr 15 12:02:02 localhost pppd[18018]: Using interface ppp0 Apr 15 12:02:02 localhost pppd[18018]: Connect: ppp0 <--> /dev/ttyACM0 Apr 15 12:02:08 localhost pppd[18018]: PAP authentication succeeded Apr 15 12:02:08 localhost kernel: [4299773.958000] PPP BSD Compression module registered Apr 15 12:02:08 localhost kernel: [4299774.038000] PPP Deflate Compression module registered Apr 15 12:02:10 localhost pppd[18018]: Cannot determine ethernet address for proxy ARP Apr 15 12:02:10 localhost pppd[18018]: local IP address 83.225.55.243 Apr 15 12:02:10 localhost pppd[18018]: remote IP address 10.6.6.6 Apr 15 12:02:10 localhost pppd[18018]: primary DNS address 83.224.66.134 Apr 15 12:02:10 localhost pppd[18018]: secondary DNS address 83.224.65.134 }}} == 7. Interrupting the connection == The connection can be interrupted by a '''Ctrl-C'''. The result is shown in '''/var/log/syslog''': {{{ Caught signal #2! Attempting to exit gracefully... --> Terminating on signal 15 --> Connect time 0.3 minutes. --> Disconnecting at Sat Apr 15 12:02:28 2006 }}} {{{ $ tail -F /var/log/syslog Apr 15 12:02:27 localhost pppd[18018]: Terminating on signal 15 Apr 15 12:02:27 localhost pppd[18018]: Connect time 0.3 minutes. Apr 15 12:02:27 localhost pppd[18018]: Sent 0 bytes, received 0 bytes. Apr 15 12:02:27 localhost pppd[18018]: Connection terminated. }}} == 8. Connecting using /etc/init.d/networking == The connection can be established and interrupted also by the following commands (if point 5 has been followed): {{{ $ sudo /etc/init.d/networking start * Configuring network interfaces... [ ok ] $ sudo /etc/init.d/networking stop * Deconfiguring network interfaces... [ ok ] }}} == 9. Connecting using netenv == The '''netenv''' package can be used to select different laptop network configurations. Just copy '''/etc/network/interfaces''' and '''/etc/resolv.conf''' to '''/etc/netenv/interfaces.netenv-ppp''' and '''/etc/netenv/resolv.conf.netenv-ppp''', and create '''/etc/netenv/setup-ppp''', '''/etc/netenv/-ppp''' in such a way that the ppp connection can be established by the command '''sudo netenv'''. Substitute '''''' with the name of the machine you are using. (The following example is Debian specific, see netenv documentation). {{{ $ cat setup-ppp #!/bin/sh if [ -r /etc/netenv/interfaces.netenv-ppp ]; then mv /etc/network/interfaces /etc/network/interfaces.netenv-old ln -s /etc/netenv/interfaces.netenv-ppp /etc/network/interfaces fi if [ -r /etc/netenv/resolv.conf.netenv-ppp ]; then mv /etc/resolv.conf /etc/resolv.conf.netenv-old ln -s /etc/netenv/resolv.conf.netenv-ppp /etc/resolv.conf fi }}} {{{ $ cat -ppp netenv_id=ppp }}} = Nokia 5500 Sport in Dapper Drake with USB = Getting it up and running was quite easy: 1. plug in your phone with the USB cable 2. select "PC Suite Mode" from you phone 3. the phone is autodetected 4. run the following commands: {{{ # sudo apt-get install wvdial # sudo wvdial # sudo nano /etc/wvdial.conf }}} Note lines with * Init3 = AT+CGDCONT=1,"IP","'''internet'''" * Phone = *99# * Username = '' The name of the connection may vary according to your GPRS provider. I use DNA Finland. For Elisa in Finland the username should be ''''rl''''. {{{ [Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = AT+CGDCONT=1,"IP","internet" Modem Type = USB Modem #Baud = 460800 Baud = 230400 New PPPD = yes Modem = /dev/ttyACM0 ISDN = 0 Phone = *99# Username = '' Password = '' # sudo nano /etc/network/interfaces auto ppp0 iface ppp0 inet wvdial # sudo /etc/init.d/networking restart }}} Check that your connection works with ''ping www.ubuntu.fi''