View Single Post
Posts: 1,425 | Thanked: 983 times | Joined on May 2010 @ Hong Kong
#1
1 Background

Tethering is the use of a mobile device such as a mobile phone to supply Internet access for another device. The following is to show you how to make N900 to supply Internet access to a PC via Bluetooth-PAN (Personal Area Network). This is the reverse idea of Bluetooth PAN: Tethering N900 from another phone.

There're already three commonly used tethering methods around: USB tethering (Nokia PC-Suite), WiFi hotspot (Mobile Hotspot, Joikuspot) and Bluetooth DUN (Dial-Up Network, bluetooth-dun). The advantages and disadvantages to use Bluetooth-PAN are as listed in next section.

2 Advantages and Disadvantages

2.1 The advantage of Bluetooth-PAN tethering:

2.1.1 Bluetooth-PAN doesn't require cable as in USB tethering
2.1.2 Bluetooth-PAN consumes much less battery power than WiFi hotspot, even when setting WiFi power to 10mW (Most important factor in my opinion)
2.1.3 Bluetooth-PAN is supposed to be faster than Bluetooth-DUN
2.1.4 The tethering method of Bluetooth-DUN might not work with some mobile carriers

2.2 The disadvantage of Bluetooth-PAN tethering:

2.2.1 Not all mobile devices supports Bluetooth-PAN, though PC and Mac are usually supported
2.2.2 The effective distance of use is shorter than Wifi
2.2.3 No security implementation (but WiFi's WEP is next to nothing anyway, see aircrack-ng)
2.2.4 Peer-to-Peer connection (verse one-to-many connection in Wifi Hotspot)

3 Prerequisites

3.1 Install rootsh
3.2 Install Kernel Power (or any other kernel that support iptables)
3.3 Install iptables
3.4 Install pc-connectivity-manager - Tablet PC-Connectivity Manager
3.5 Install bluezwitch (Optional)
3.6 Turn off WiFi, unless you're very familiar with IP routing

4 Detail Instructions

4.1 Pairing PC and N900 as Bluetooth-PAN

Pairing Bluetooth-PAN is as easy as pairing a bluetooth headphone.

4.1.1 (On N900) Switch on Bluetooth in N900 and make it search-able
4.1.2 (On PC) Discover the Bluetooth device, define a password and then pair up
4.1.3 (On PC) Join the Personal Area Network. The joining method depends on your Bluetooth device, e.g. EagleTec Bluetooth USB will has an icon on the taskbar on which PAN can be found by right clicking it. You mileage may vary.
4.1.4 (On PC) You might require to choose among PANU, GN or NAP under PAN. You should choose NAP, but it actually makes no difference for our purpose.

4.2 Setup IP network for client (PC or Mac)

After pairing up, and the PAN between your PC and N900 is established, then you should setup an IP network on top of it.

4.2.1 A Bluetooth Network Connection should appear in the Connection Setting of your PC (or Mac). Setup the network with the following information: Choose to acquire IP and DNS automatically from the server. (Thanks to mauron85's suggestion)


Code:
IP: 192.168.3.2
Netmask: 255.255.255.0
Gateway: 192.168.3.1
DNS: 192.168.3.1


4.3 Setup IP network for server (N900)

4.3.1 Create a script under /home/user/ and save it as bluetooth-pan-tethering.sh

Code:
#!/bin/sh

# by 9000 @ talk.maemo.org

# Prompt you to select the Internet connection. You may choose gprs or wifi
run-standalone.sh dbus-send --system --type=method_call --dest=com.nokia.icd_ui /com/nokia/icd_ui com.nokia.icd_u

# Selecting and establishing connection takes time
sleep 10

# Verbose mode. You can remove it when you're using widget to activate this script

set -x

IP_ADDR="192.168.3.1"
NETMASK="255.255.255.0"
DHCP_RANGE="192.168.3.100,192.168.3.127"
RUNFILE="/var/run/btpan_tethering.pid"
DNSMASQ="/usr/sbin/dnsmasq"

# Load modules
modprobe ipt_MASQUERADE

# flush old rules
iptables -F
iptables -t nat -F

iptables -t nat -A POSTROUTING -o gprs0 -j MASQUERADE

# forward IPs
echo 1 > /proc/sys/net/ipv4/ip_forward

# Setup bnep0
ifconfig bnep0 down
ifconfig bnep0 up
ifconfig bnep0 $IP_ADDR netmask $NETMASK up

# Setup DNS and DHCP
start-stop-daemon -S -p $RUNFILE -m -b -x $DNSMASQ -- -k -I lo -z -a $IP_ADDR -F $DHCP_RANGE -b

run-standalone.sh dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:'Bluetooth PAN Activated'
Note that if your N900 is connecting to Internet via WiFi(wlan0) instead of GPRS(gprs0), you must change the "iptables" command above accordingly.

(Note to users in talk.maem.org: you may also download the tarball attached and extract it under /home/user/ in xterminal)

4.3.2 Make the script executable

Code:
chmod u+x /home/user/bluetooth-pan.sh
4.3.3 Run the script with root privilege

Code:
echo "/home/user/bluetooth-pan.sh" | sudo gainroot
The script will first ask you to establish the Internet connection. Choose your Internet service provider or WiFi.

Wait 10 second until you see "Bluetooth PAN Tethering Activated". Now you PC can access the Internet via your N900's Internet Connection.


5 Troubleshooting

5.1 DNS - in Step 4.2.1 points the DNS to 192.168.3.1, expecting the N900 answers to your DNS queries. However, if that doesn't work for you:
5.1.1 Add an DNS entries into the /etc/resolv.conf, the following is an example of the resolv.conf using Google Public DNS, you may enter the DNS of your Internet service provider:

Code:
nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
5.1.2 OR you may enter the DNS server address provided by your Internet Service Provider directly into the client.

5.2 After pairing up the PC and N900 in Step 4.1, a bnep0 device should appear in N900. There's a chance that bnep0 device was not created automatically. You may use the following command under Xterminal of N900 to verify:

Code:
sudo ifconfig bnep0
If bnep0 did not appear after pairing up, you may try reconnecting PAN with different profiles like PANU or GN in Step 4.1.4 instead of NAP, until bnep0 appears.

Reinstall libicd2 if you still couldn't find your bnep0 (JadeH)
Code:
apt-get install libicd2 --reinstall
5.3 The module ipt_MASQUERADE isn't loaded after upgrading to kernel-power v47

The module works fine in v46. Downgrade your kernel-power. (at your own risk)

6 References
6.1 Bluetooth PAN: Tethering N900 from another phone: http://talk.maemo.org/showthread.php?t=37710
6.2 HOWTO : Bluetooth Tethering with Nokia N900 (by DUN): http://syntacticsugar.nl/2009/12/03/...th-nokia-n900/
6.3 HowTo set up common PAN scenarios with BlueZ's integrated PAN support: http://bluez.sourceforge.net/contrib/HOWTO-PAN


7 Feedback
Please send me feedback or suggestion so that I can improve the steps.

EDIT: Inserted 3.3. It seems that pc-connectivity-manager is essential for PAN to work for most configuration.
EDIT: Attached the tarball of the script in 4.3.1
EDIT: Added procedures to setup sudoers added under 4.3.3
EDIT: Inserted 3.3 for iptables installation. It is now a standalone package that need to be installed explicitly.
EDIT: Added 3.6 such that WiFi will not get in the way of PAN routing
EDIT: Removed the method to setup sudoers in section 4.3.3, and directly run as root, to make the procedures simpler
EDIT: Added iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
(commented) in the script 4.3.1 for internet via WiFi instead of GPRS.
EDIT: Thanks to mauron85's suggestion in setting up DHCP and DNS. Main script in 4.3.1 modified.
EDIT: Troubleshooting updated (JadeH)
EDIT: dnsmasq will not run as daemon. Script edited. Use network 192.168.3 instead of 192.168.1 as the latter is used by WiFi
EDIT: ipt_MASQUERADE isn't loaded after upgrading to kernel-power v47
Attached Files
File Type: tar bluetooth-pan-tethering.tar (3.0 KB, 889 views)

Last edited by 9000; 2011-06-22 at 01:19.
 

The Following 52 Users Say Thank You to 9000 For This Useful Post: