This page describes how to configure PPP dialup through a Bluetooth-compatible mobile phone. The emphasis is on using GPRS/EDGE services. These instruction were compiled and tested on Debian 4.0 (Etch) on an IBM ThinkPad T40p with a Samsung T809 phone using T-Mobile's "Unlimited Internet VPN" plan.
Configure mobile phone data profiles
Getting the data access profile
T-Mobile
T-Mobile accounts generally require separate data profiles for WAP and general data access. (Some people have had success running a regular data connection over the WAP profile.) Getting access to general data access requires a data access plan. Currently, the "Unlimited Internet VPN" is the best deal, as it costs the same as the "Unlimited Internet" plan but gives you a real, public IP address. Incoming connections are blocked on any T-Mobile data plan. T-Mobile does not seem to offer metered data plans anymore.
There are two ways to get the data service profile on your phone. Manual configuration is probably faster and better.
Automatic
T-Mobile can send the data services profile directly to your phone via SMS. Only the "wireless data" customer service people can send the data services profile to your phone. The regular service people can only send the WAP data profile, which will not work for general use. You will have to be transferred once or twice to reach the wireless data division. Once there, simply request that the data service profile for your plan be sent to your phone. (Of course, you'll need to be signed up for a data plan.)
Once you receive the plan information, your phone will ask you where you want to store it. T-Mobile uses profile 1 for the WAP profile, so don't overwrite it. I recommend using profile 2, as it's usually the first empty profile.
After storing the data services profile, your phone will probably set it as the default. This will probably cause your WAP (T-Zones/T-Mobile Internet) to fail for your on-phone browser. Set the WAP data profile (profile 1) to default fix this. See the configuration section below for your phone's brand. Setting the default profile is usually fairly obvious once you've reach the data services configuration screen.
Manual
Access the data profiles configuration for your phone's brand using the instructions under the configuration section below. The order and name for settings is for a Samsung T809. These settings are modified from the SMS T-Mobile sends Unlimited Internet VPN plan users. By adding the DNS and proxy information, you can use this profile for either T-Zones or general web browsing.
Use the following settings for the Unlimited Internet VPN plan:
Name: T-Mobile VPN
Home URL: http://www.t-mobile.com
Bearer: GPRS only
Proxy use: Enable
GPRS settings
Proxy: 216.155.165.50
Proxy Port: 8080
DNS1: 216.155.175.105
DNS2: 216.155.175.106
APN: internet3.voicestream.com
Login ID: Empty
Password: Empty
Other companies
Call your mobile service provider and request information about data plans. Many charge by the megabyte, but unlimited plans are increasingly available. Most of the instruction for T-Mobile will probably apply.
Configuration
Sony Ericsson GSM
This is from my memory of using a T610, but it should apply to any Sony Ericsson phone. Choose the lower-left icon from the main menu.
Samsung GSM
This is tested on a T809, but should apply to any Samsung GSM phone. Enter code *#87927# from the main screen. Select "Current profile" to choose the default profile. Select "Profile settings" to manage profiles.
LG GSM
This is tested on a CU 320 and works. If you have problems authenticating from the machine, discover it from the phone.
Nokia GSM
This is tested on a 5300 XpressMusic with Vodafone Live The Netherlands. I didn't change any settings on the phone.
Installing Bluetooth and dialup packages
If you have the ubuntu-desktop package installed, you can skip to the next section
Otherwise, run the following at a shell prompt; this should install the basic Bluetooth and PPP packages
sudo apt-get install bluez-utils bluez-pin ppp
Listing Bluetooth devices
Make your phone Bluetooth discoverable.
Run the following at a shell prompt:
hcitool scan
Copy the MAC address (the text with the capital letters, numbers, and ':'s) somewhere convenient. You'll need it many times.
Pairing
You can skip this section if you've already paired your phone with your computer. However, consider the final optional step, as your phone might otherwise nag you every time you use if for dialup.
Run the following, replacing your-phone-mac-address with the proper data
sudo hcitool cc your-phone-mac-address
Run the following, replacing your-phone-mac-address with the proper data
sudo hcitool auth your-phone-mac-address
If this command doesn't work, try the pairing instructions on other Bluetooth wiki pages; it seems 5.10 and older have issues with the PIN wrapper
Enter a numeric code into the dialog box that pops up. If no dialog box pops up, run the following in another window
sudo passkey-agent --default /usr/bin/bluez-pin
Accept the pairing from your phone handset.
Enter the same number on your phone
Run the hcitool auth your-phone-mac-address command again if it fails
You can remove your handset's Bluetooth discoverability now
Some phones (notably Samsungs) require further authorization for certain Bluetooth activities, including dialup; consult your phone's user manual to avoid confirming your computer's dialup action on your phone every time
Note: I couldn't pair using the above instructions in Edgy. I had to install bluez-passkey-gnome, launch bt-applet (it's invisible when waiting), then initiate pairing from the phone.
Note: I couldn't pair using the above instructions in Feisty. The pairing instead took place when I dialed the connection for the first time. I could not pair from the phone since my computer was hidden.
Configuring the rfcomm device
Get the channel number for your phone's dialup service by running the following, replacing your-phone-mac-address with the proper data
sdptool browse your-phone-mac-address
Look under "Service Name: Dial-up Networking"
Under "Protocol Descriptor List:" and "RFCOMM", there should be a number after "Channel:"
Remember that number; you'll need it for the rfcomm configuration
Run
gksudo gedit /etc/bluetooth/rfcomm.conf
Paste the following into the file, replacing your-phone-mac-address and your-phone-rfcomm-channel with appropriate values
rfcomm0 {
bind yes;
device your-phone-mac-address;
channel your-phone-rfcomm-channel;
comment "Bluetooth PPP Connection";
}
Save and close the rfcomm.conf file
Run the following, which will create the rfcomm0 device
sudo /etc/init.d/bluez-utils restart
Note that on Edgy and Feisty the correct command is:
sudo /etc/init.d/bluetooth restart
Note: On the Nokia N95 (and possibly other Symbian S60 phones) the RFCOMM channel number is not consistent, but seems to change from time to time. If you have a phone that behaves like this, and you find youself unable to connect, you will need to re-run sdptool as described above to see if the channel number has changed. Rather than edit rfcomm.conf (and hence have RFCOMM bind to the channel at startup) you may find it more convenient to bind the RFCOMM channel on the command line:
rfcomm bind 0 your-phone-mac-address your-phone-rfcomm-channel
If you get the wrong channel (or if the wrong channel was bound at startup as a result of rfcomm.conf) then you need to release it before you can bind it again:
rfcomm release 0
Configuring PPP
Run the following
gksudo gedit /etc/ppp/peers/BluetoothDialup
Paste the following into the file (the file should start out blank)(I found that on my Motorola V360 that I had to comment out #lcp-echo-failure 0 useing T-Mobile.)
debug
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/BluetoothDialup"
usepeerdns
/dev/rfcomm0 115200
defaultroute
crtscts
lcp-echo-failure 0
Save and close the BluetoothDialup file
Run the following
gksudo gedit /etc/chatscripts/BluetoothDialup
Paste the following into the file (the file should start out blank), replacing your-apn-here with the APN from your data services profile and your-data-profile-number-here with the number you stored the profile into on the phone (probably 2).
TIMEOUT 35
ECHO ON
ABORT '\nBUSY\r'
ABORT '\nERROR\r'
ABORT '\nNO ANSWER\r'
ABORT '\nNO CARRIER\r'
ABORT '\nNO DIALTONE\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
'' \rAT
OK 'AT+CGDCONT=2,"IP","your-apn-here"'
OK ATD*99***your-data-profile-number-here#
CONNECT ""
Carrier specific configuration info
Phone specific configuration details
Samsung SGH-X820
This phone seems to have problems with various PPP options. Adding the following options to the relevant file in /etc/ppp/peers seemed to make it work.
nopcomp
noaccomp
nomagic
receive-all
noccp
novj
novjccomp
Authorizing dialout
Run the following at a shell prompt, replacing your-username-here with your username:
sudo adduser your-username-here dialout
This concludes the one-time setup
Connecting
Begin here on subsequent connections.
If you have NetworkManager installed, right-click the applet and uncheck "Enable Wireless"; this will keep it from hopping onto wireless networks and botching your dialup DNS and default route settings
N.b. I do have NetworkManager installed and have found a work-around so that it doesn't mess with my connection over Bluetooth. I have not tried this in an environment where there are multiple WiFi connections _and_ yet I'm still trying to use the phone as a modem. The work-around is to edit the file /etc/network/interfaces and to add a line at the end of the file that reads:
iface hci0 inet static
Run the following
pon BluetoothDialup
Wait about 30-60 seconds
You should now be able to ping ubuntu.com; expect latencies of around one second for most GPRS services
If pinging fails, see the troubleshooting section below
See the disconnect section below when you're finished using the connection
PPP and TCP/IP troubleshooting
Try these troubleshooting sections in order.
Using the correct data plan
Check that you're indeed using a real data profile, as WAP-only profiles generally disallow pinging, instant messaging, file sharing, and some web browsing
Try setting the unrestricted data profile as your default data profile on your phone
This will only work if the profile has proper DNS settings
If you use the T-Mobile automatic profile setup listed above, it will not have proper on-phone DNS settings
The manual method will work for T-Zones
Use the built-in WAP browser to test the profile
If it works, it's probably not your data plan (though it could be); continue troubleshooting below
PPP connection
Monitor /var/log/syslog for dialup status information
The following indicates PPP success, where xxxs can be anything
xxx localhost pppd[xxx]: Script /etc/ppp/ip-up finished (pid xxx), status = 0x0
Solution if problem
Make sure there's not a PPP connection with rfcomm0 already in session; run poff BluetoothDialup to disconnect one in session
Find where the error is in either the chatscripts or peers file
Consult other help sources and update this page
IP address configuration
Run ifconfig to check your PPP connection
The ppp0 section should be as below, where xxx is anything
ppp0 Link encap:Point-to-Point Protocol
inet addr:xxx.xxx.xxx.xxx P-t-P:xxx.xxx.xxx.xxx Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:xxx errors:0 dropped:0 overruns:0 frame:0
TX packets:xxx errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:xxx
RX bytes:xxx (xxx b) TX bytes:xxx (xxx b)
P-t-P:xxx.xxx.xxx.xxx should match the address on the /var/log/syslog line xxx localhost pppd[xxx]: remote IP address xxx.xxx.xxx.xxx
inet addr:xxx.xxx.xxx.xxx should match the address on the /var/log/syslog line xxx localhost pppd[xxx]: local IP address xxx.xxx.xxx.xxx
If the addresses match, then your IP address configuration is probably fine
Solution if problem
If a /var/log/syslog line seems absent, try reconnecting via poff BluetoothDialup and pon BluetoothDialup
Make sure you're using the right data profile on your phone
Default route configuration
Ping a valid public hostname on a connected computer, then (if it worked) try pinging the actual IP address from your PPP-connected computer
If it didn't work, try pinging a different hostname; some block pings
If this works, then your routing table is probably fine
Check the routing table by running route -n
Your routing table should look like the following, where xxx is anything
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
xxx.xxx.xxx.xxx * 255.255.255.255 UH 0 0 0 ppp0
default * 0.0.0.0 U 0 0 0 ppp0
The xxx.xxx.xxx.xxx should match the P-t-P:xxx.xxx.xxx.xxx in the ifconfig command's ppp0 block above
If the routing table checks out, routing is probably not the problem
Solutions if problem
Preferred method: Manually fix routing table
This needs instructions, as it should be the preferred method
Alternate method: Remove other interfaces
Run the following
poff BluetoothDialup
Remove any non-loopback and ppp0 connections by running the following, replacing your-extra-interface with the appropriate names
sudo ifconfig your-extra-interface down
Run the following
pon BluetoothDialup
DNS configuration
Try pinging the DNS servers
Try running dig hostname-here, where hostname-here is a valid hostname
If it resolves, DNS is probably not the problem
Check /etc/resolv.conf to check your DNS configuration
Your routing table should look like the following, where xxx is anything
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
The lines above should match the /var/log/syslog lines like the following
xxx localhost pppd[xxx]: primary DNS address xxx.xxx.xxx.xxx
xxx localhost pppd[xxx]: secondary DNS address xxx.xxx.xxx.xxx
Solution if problem
If a /var/log/syslog line seems absent, try reconnecting via poff BluetoothDialup and pon BluetoothDialup
Manually configure /etc/resolv.conf to point to your provider's DNS servers (or a public DNS server)
Try pinging the manually-configured DNS servers; if it fails only on the Bluetooth dialup machine, double-check the routing configuration
Disconnecting
Run the following
poff BluetoothDialup
Re-enable NetworkManager's connections, if you use NetworkManager
Re-enable any other connections, as needed
Other useful guides
pGPRS - pyGTK GUI for easy configuration of a GPRS connection, in polish only
1 comment:
pGPRS 0.9 version should show messages in English also
Post a Comment