Digicom Palladio USB Bluetooth
Dongle (CSR chipset based)
Unofficial Linux Support Page
by NERvOus
Disclaimer
This is an unofficial support page for the Digicom Palladio USB
bluetooth dongle. I do not assume any responsibility for
errors
or omissions, or for damages resulting from the use of the information
contained herein.
No liability for the contents of this documents can be accepted. Use
the concepts, examples and other content at your own risk.
All copyrights are held by their by their respective owners, unless
specifically noted otherwise. Use of a term in
this document should not be regarded
as affecting the validity of any trademark or service mark. Naming of
particular products or brands should not be seen as endorsements.
Scenario
The goal of this document is to explain how to connect to Internet
through GPRS using a Bluetooth compatible mobile phone.
I tested the Palladio USB Dongle with the following setup:
Notebook: Acer Aspire 1300XV
Mobile Phone: Ericsson T39m / Ericsson T68
Bluetooth device: Palladio USB Dongle (CSR Chipset)
The notebook communicate with the Palladio dongle through the USB port.
The dongle connect to the mobile phone using the Bluetooth wireless
protocol. The mobile phone opens a PPP connection to Internet using
GPRS.
The Palladio USB Dongle is based on the CSR Chipset. Thus any
information available in this page should apply to any other CSR
based
bluetooth device.
The installation process
This document is not for beginners. I assume you are already familiar
with the Linux Operating System.
Download the very latest kernel from http://www.kernel.org.
Compile it with everything you usually need plus the following items:
Bluetooth support:
Bluetooth subsystem support
L2CAP protocol support
SCO links support
RFCOMM protocol
RFCOMM tty support
BNEP protocol support
Bluetooth device drivers:
HCI USB driver
HCI VHCI (Virtual HCI device) driver
WARNING: do NOT compile the USB
Bluetooth support in the USB support section. If you do, it will
prevent
the BlueZ support from working. Be careful about this. Do not compile
the
USB Bluetooth support! Use the HCI USB driver instead!!! You have been
warned!
After installing the new kernel you should have the following modules:
in /lib/modules/2.*/kernel/net/bluetooth/
bluez.ko bnep l2cap.ko sco.ko rfcomm
in /lib/modules/2.*/kernel/net/bluetooth/bnep/
bnep.ko
in /lib/modules/2.4.20-mh5/kernel/net/bluetooth/rfcomm/
rfcomm.ko
in lib/modules/2.4.20-mh5/kernel/drivers/bluetooth/
hci_usb.ko hci_vhci.ko
Get the following programs from http://bluez.sf.net:
bluez-hcidump
bluez-sdp
bluez-utils
bluez-lib
and compile them: usually it's just a matter of ./configure && make &&
make install.
Now you are ready to load the following modules using modprobe:
bluez
hci_usb
l2cap
rfcomm
You should see something like this in your kernel logs:
BlueZ Core ver 2.2 Copyright (C) 2000,2001 Qualcomm Inc
Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
BlueZ HCI USB driver ver 2.1 Copyright (C) 2000,2001 Qualcomm Inc
Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
usb.c: registered new driver hci_usb
BlueZ L2CAP ver 2.1 Copyright (C) 2000,2001 Qualcomm Inc
Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
hub.c: new USB device 00:11.2-2, assigned address 2
Check if the Bluetooth dongle is active using:
hciconfig
hciconfig is the equivalent of ifconfig for Bluetooth devices. This
is the output of hciconfig on my laptop:
hci0: Type: USB
BD Address:
00:E0:98:85:2C:70 ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:99 acl:0 sco:0
events:13 errors:0
TX bytes:296 acl:0 sco:0
commands:12 errors:0
Pay attention to the "UP" and "ISCAN" keywords. If there is no hci0 up,
then run:
hciconfig hci0 up
Place your mobile phone near the Bluetooth dongle and put it in
listening mode. On my Ericsson T39m I have to open the Extras/Bluetooth
menu and then choose the Discoverable option.
The words "Discoverable for 3 minutes" should appear on the display.
You'll see the Bluetooth logo on the bottom right of the main display
for the next 3 minutes at least.
Now it's time to discover your mobile phone's bluetooth hardware
address. Run:
hcitool scan
This is the output of hcitool scan when my Ericsson T39m is near my
laptop:
Scanning ...
00:80:37:FE:5F:72
NERvOus T39 Mobile Phone
Write down this hardware address for later use. Check the Bluetooth
connection by issuing:
l2ping 00:80:37:FE:5F:72
Here is the possible output of this command:
l2ping 00:80:37:FE:5F:72
Ping: 00:80:37:FE:5F:72 from 00:E0:98:85:2C:70 (data size 20) ...
0 bytes from 00:80:37:FE:5F:72 id 200 time 43.61ms
0 bytes from 00:80:37:FE:5F:72 id 201 time 43.84ms
0 bytes from 00:80:37:FE:5F:72 id 202 time 38.49ms
0 bytes from 00:80:37:FE:5F:72 id 203 time 47.52ms
CTRL+C
4 sent, 4 received, 0% loss
Create a /dev/rfcomm0 character device with major number 216 and minor
number 0:
mknod /dev/rfcomm0 c 216 0
In order to make your laptop and mobile phone communicate you have to
choose a unique number sequence. This "password" is supposed to provide
some degree
of security to the communication.
In your mobile phone go to the Extras/Bluetooth menu and choose:
Discover
You'll see "Searching..." for a while and then the Palladio USB Dongle
should appear in the list. Press "YES" and then choose:
Add to paired
Enter a Passkey (only numbers are allowed, e.g. 4398534). Write the
very
same Passkey inside the /etc/bluetooth/pin file. Check that you have
the following line in /etc/bluetooth/hcid.conf:
pin_helper /etc/bluetooth/pin-helper;
Restart hcid if you modify hcid.conf.
If you try and run /etc/bluetooth/pin-helper it should print the
following string:
PIN:4398534
If it does not, check its permissions. Here is an example pin-helper
script:
#!/bin/sh
PINFILE=/etc/bluetooth/pin
echo -n PIN:
cat $PINFILE
When you hit Discover, your mobile phone will show "Pairing" for a
while. If you entered the correct Passkey you'll be able to edit
the Name tag associated to the Palladio USB Dongle and the device will
appear in the paired devices list.
Hit "YES" and you'll see "Added to paired devices".
Now open a channel to the mobile phone:
rfcomm bind 0 00:80:37:FE:5F:72 1
where 00:80:37:FE:5F:72 is the hardware address we mentioned before
and the final 1 identifies the serial channel.
From now on, you can access your mobile phone through the /dev/rfcomm0
character file.
WARNING: you can't use it like a modem. If you do, you won't take
advantage of the GPRS connection. You'll be using a classical 9600bps
GSM expensive connection.
Before continuing, you need to configure a GPRS connection on your
mobile phone. You can get all the GPRS parameters by calling your telco
operator. This is what I did to setup a GPRS connection on my Ericsson
T39m with Wind S.p.A.
Settings/Data comm./Data accounts/Add account/GPRS Data:
Name: Wind GPRS
APN: internet.wind
UserID: empty
Password: empty
Save, then choose "Wind GPRS" and Edit:
Password request: Off
Allow calls: Automatic
IP address: empty
DNS address: 212.245.255.2
Adv. settings:
Authentication: Normal
Data compr.: on
Header compr: on
Quality of service: default values
In order to make your mobile phone connect to Internet through GPRS you
have to send it the following command through a chat script (exactly
like talking to a serial modem except for you are using /dev/rfcomm0
instead
of /dev/ttyS0):
AT+CGDATA="PPP",X
where X is the number indicating the GPRS profile to be used. Be
careful about this setting! To discover what is the correct value for X
take your mobile phone and go to the Settings/Data comm./Data accounts
menu. Choose the GPRS connection you previously setup and scroll till
you find a line beginning with CID=. That's the identification number
of your GPRS connection. E.g. if you find a line like:
CID=3
then you have to use:
AT+CGDATA="PPP",3
as the dialing string.
Now you can setup a standard PPP dialup connection and use it as usual.
However there are some things you have to take care of:
You have to disable hardware flow control and carrier detection. Add
the following lines to /etc/ppp/options.rfcomm0 (or /etc/ppp/options to
make them global)
-crtscts
local
Even if there is no password authentication needed to connect to
Internet you can't simply disable authentication at all.
Enable CHAP authentication and set the login and password to whatever
you want.
You won't receive lcp echo reply from your GPRS connection. Therefore
you'll have to disable lcp requests: if you don't, your connection will
always
go down within a few minutes.
Find the following lines in your /etc/ppp/options file:
#lcp-echo-interval XX
#lcp-echo-failure XX
and remove them (put a # in front of them).
You can view my connection scripts and configuration files here:
/etc/ppp/options
/etc/ppp/options.rfcomm0
/etc/ppp/options.ttyS0
/etc/ppp/chap-secrets
/etc/ppp/peers/gprs
/etc/chatscripts/gprs-chat
In order to connect, I simply use
pppd call gprs
Hints for Debian/GNU Linux users
TBD
Links
- Credits
Author: Luca 'NERvOus' Gibelli (nervous -at-
nervous -dot- it)
Thanks to: ???

This document is distributed under Creative
Commons Licence.
First release: 20 november 2002
Last update: 11 January 2006