Nokia E50 GPRS on Linux (OrangePL)

Introduction

Some time ago i’ve bought Nokia E50. It’s a quite impressive phone, although the iphone made some not so right hype about itself nowadays. Anyway i’ve configured almost everything but the GPRS connectivity. When the Ethernet link was in a good shape i wasn’t  worry about it, and honestly i’ve got many more interesting ways to spend my free time 😉

Unfortunately some days ago a big storm hit Cracow, and my Internet provider has found himself on the knees with the storm’s damages. The Internet link wasn’t working and i’ve got something important to send by an email. After this i’ve considered once and for all to configure my linux box for gprs connection with this phone.

I’ve chosen Bluetooth and the GPRS/Edge connectivity. After some searching on the net i’ve found no easy solution (working on my computer/phone). Now i’ve finally made everything running smoothly and thus i’ll write something about it. I’m using Polish Orange provider (Orange Polska/Idea).

Bluetooth connection

  • Make sure you have connected phone and the linux box and exchange keys (it’s mentioned all over internet and i’m not going tell you how to do it).
  • All of examples provided below has last 3 hex pairs of bluetooth address masked with the xx:xx:xx for a privacy reason
  • Next find your phone with the command hcitool scan
    • response should be something like:
    • zorba@thinkpad:~$ hcitool scan
      Scanning ...
      00:19:B7:xx:xx:xx       Zorba
      zorba@thinkpad:~$
  • next search for Dial Up Network capability (DUN) with the command sdptool search dun
    • result should be like:
       zorba@thinkpad:~$ sdptool search dun
       Inquiring ...
       Searching for dun on 00:19:B7:xx:xx:xx ...
       Service Name: Dial-Up Networking
       Service RecHandle: 0x100a7
       Service Class ID List:
       "Dialup Networking" (0x1103)
       Protocol Descriptor List:
       "L2CAP" (0x0100)
       "RFCOMM" (0x0003)
      Channel: 2
       Language Base Attr List:
       code_ISO639: 0x454e
       encoding:    0x6a
       base_offset: 0x100
       Profile Descriptor List:
       "Dialup Networking" (0x1103)
       Version: 0x0100
      zorba@thinkpad:~$
  • It has found DUN on the channel 2 (mark as bold above)
  • Next configure rfcomm for the channel 2 with the command
    sudo rfcomm bind 0 00:19:B7:xx:xx:xx 2
  • It has binded your phone with the channel 2 for the 0’th rfcomm device
  • Now it’s all ready for the ppp communication !

PPPD  configuration

Save provided ppp configuration files below in your /etc/ppp/peers directory. I’ve found this configuration over the net and make some changes in order to make it works on the Nokia E50 phone.

Changes made are:

  • in gprs added:
    • connect-delay 6000
    • default-asyncmap
    • changed the user to “internet” as required on polish orange network
  • in the gprs-connect-chat make some changes in the names of the connection string

Example communication log

This is my communication log with the orange network. Please bear in mind, that some differences might be with your case, but not so substantial.

zorba@thinkpad:~$ pppd call gprsPress CTRL-C to close the connection at any stage!
 defining PDP context...
 rAT
 OK
 ATH
 OK
 ATE1
 OK
 AT+CGDCONT=1,"IP","internet","",0,0
 OK
 waiting for connect...
 ATD*99#
 CONNECT
 Connected.
 If the following ppp negotiations fail,
 try restarting the phone.
 Serial connection established.
 using channel 3
 Using interface ppp0
 Connect: ppp0 <--> /dev/rfcomm0
 rcvd [LCP ConfReq id=0x0 <auth pap> <mru 1500> <asyncmap 0xa0000>]
 sent [LCP ConfReq id=0x1 <magic 0xe36493ed>]
 sent [LCP ConfRej id=0x0 <asyncmap 0xa0000>]
 rcvd [LCP ConfRej id=0x1 <magic 0xe36493ed>]
 sent [LCP ConfReq id=0x2]
 rcvd [LCP ConfReq id=0x1 <auth pap> <mru 1500>]
 sent [LCP ConfAck id=0x1 <auth pap> <mru 1500>]
 rcvd [LCP ConfAck id=0x2]
 sent [PAP AuthReq id=0x1 user="internet" password="internet"]
 rcvd [PAP AuthAck id=0x1 ""]
 PAP authentication succeeded
 sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15>]
 sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
 rcvd [IPCP ConfReq id=0x0 <addr 10.6.6.6>]
 sent [IPCP ConfNak id=0x0 <addr 10.0.0.1>]
 rcvd [LCP ProtRej id=0x0 80 fd 01 01 00 0c 1a 04 78 00 18 04 78 00]
 Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
 rcvd [IPCP ConfNak id=0x1 <addr 91.94.171.116> <ms-dns1 194.9.223.79> <ms-dns3 217.17.34.10>]
 sent [IPCP ConfReq id=0x2 <addr 91.94.171.116> <ms-dns1 194.9.223.79> <ms-dns3 217.17.34.10>]
 rcvd [IPCP ConfReq id=0x1 <addr 10.0.0.1>]
 sent [IPCP ConfAck id=0x1 <addr 10.0.0.1>]
 rcvd [IPCP ConfAck id=0x2 <addr 91.94.171.116> <ms-dns1 194.9.223.79> <ms-dns3 217.17.34.10>]
 not replacing existing default route via 192.168.1.1
 Cannot determine ethernet address for proxy ARP
 local  IP address 91.94.171.116
 remote IP address 10.0.0.1
 primary   DNS address 194.9.223.79
 secondary DNS address 217.17.34.10
 Script /etc/ppp/ip-up started (pid 12460)
 Script /etc/ppp/ip-up finished (pid 12460), status = 0x0
After pressing Ctrl+C the rest is:
Terminating on signal 2
 Connect time 1.0 minutes.
 Sent 0 bytes, received 0 bytes.
 Script /etc/ppp/ip-down started (pid 12528)
 sent [LCP TermReq id=0x3 "User request"]
 Script /etc/ppp/ip-down finished (pid 12528), status = 0x0
 rcvd [LCP TermAck id=0x3]
 Connection terminated.
 Sending break to the modem
 PDP context detached
 Serial link disconnected.

Conclusion

Have fun! If you have questions, feel free to ask on the email provided on the main page of my site.

Files