1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
6 <meta name="author" content="Frederik Vanrenterghem" />
7 <meta name="Description" content="Personal homepage - GNU/Linux stuff - Connecting to GPRS network with iPAQ running Familiar Linux" />
8 <title>vanrenterghem.biz - GNU/Linux - Connecting to GPRS network with iPAQ PDA running Familiar Linux</title>
9 <link rel="stylesheet" href="/styles/header.css" type="text/css" />
10 <link rel="stylesheet" href="/styles/main.css" type="text/css" />
13 <!--#include virtual='/header.shtml' -->
15 <h1>GPRS network connection for the iPAQ</h1>
18 In this document, I outline the steps necessary to get an iPAQ running Familiar Linux on the net via GPRS using a Bluetooth-capable phone.
21 <h2>Hard- and software</h2>
23 <li>Compaq iPAQ 3955 (h3900 series)</li>
24 <li>Nokia Bluetooth CF Card DTL-1</li>
25 <li>Nokia 6131 camera phone</li>
26 <li><a href="http://familiar.handhelds.org/">Familiar Linux</a></li>
30 Belgian wireless carrier <a href="http://base.be/">Base</a>.
33 <h3>Get Bluetooth working</h3>
35 There's various HOWTO's available on getting Bluetooth functioning on (Familiar) Linux. Tip: use <a href="http://www.bluez.org/">Bluez</a>. If you are using the Opie image of Familiar 0.8.4,
36 you will have to replace <em>/bin/bluepin</em> with a shell script like this one:
41 cat /etc/bluetooth/pin<br />
44 <h3>Find the hardware address of the phone</h3>
46 Use hcitool to find the various bluetooth devices in your neighbourhood. Provided you've made the phone broadcast its presence, it should show up in the scan.
49 ~ # hcitool scan<br />
51 <address> <friendly name>
53 <h3>Find the channel for dial-up networking</h3>
55 Check on what channel the phone provides dial-up networking (DUN):
58 sdptool search --bdaddr <bd> DUN
61 where <em><bd></em> is the hardware address of your mobile phone as detected by hcitool scan.
65 I decided to bind <em>/dev/rfcomm0</em> to the DUN channel of my phone.
68 /etc/init.d # cat bind_dun<br />
69 rfcomm bind 0 <bdaddr> <channel><br />
70 mknod -m 666 /dev/rfcomm0 c 216 0<br />
72 <h3>Configure PPP</h3>
74 I assume you have the point-to-point protocol set up on your device already. If not, <code>ipkg search *ppp*</code> is your friend.
77 On Familiar 0.8.x, the pppd options were changed versus 0.7.x. The file now only contains a minimal <code>lock</code> as option. I
81 ---------------- cut and paste from here ----------------<br />
82 cat > /etc/ppp/options << EOF<br />
88 lcp-echo-interval 5<br />
89 lcp-echo-failure 3<br />
95 ------------------------ end cut ------------------------<br />
98 Now you'll need a chat script to tell the phone what to do.
101 ---------------- cut and paste from here ----------------<br />
102 cat > /etc/ppp/chat.gprs.base << EOF<br />
105 SAY "Resetting modem\n"<br />
107 SAY "Dialing\n"<br />
108 OK 'AT+cgdcont=1,"IP","gprs.base.be"'<br />
112 SAY "Connected\n"<br />
114 ------------------------ end cut ------------------------<br />
118 You'll also need to provide some additional options for <em>pppd</em>:
121 ---------------- cut and paste from here ----------------<br />
122 cat > /etc/ppp/peers/base_gprs << EOF<br />
126 /dev/rfcomm0 460800<br />
134 connect '/usr/sbin/chat -f /etc/ppp/chat.gprs.base -r /dev/console'<br />
136 ------------------------ end cut ------------------------<br />
138 <h3>Get connected</h3>
140 Start <em>pppd</em> as follows:
143 ~ # pppd call base_gprs
146 If all goes well (and only if you changed the <em>/etc/ppp/options</em> file), you should see something like this:
152 Serial connection established.<br />
153 using channel 13<br />
154 Using interface ppp0<br />
155 Connect: ppp0 <--> /dev/rfcomm0<br />
158 <h3>Check routing</h3>
160 As I had a default route already (via the USB connection in the cradle), I had to replace it:
163 route del default<br />
164 route add default ppp0<br />
167 <!--#include virtual='/footer.shtml' -->