Transport
Drivers for BlueDrekar(TM) Middleware
1. UART Transport driver
I. INTRODUCTION
This transport driver for BlueDrekar*(TM) middleware is a reference
implementation of the Bluetooth**(TM)
Host Controller Interface (HCI)
UART transport layer.
Bluetooth wireless technology is expected to emerge as a
key enabler
of mobile and wireless Internet services, mostly extending
Internet
connectivity over next generation cellular technologies into
a
collection of locally-connected devices.
BlueDrekar
protocol driver is IBM's new middleware based on the
Bluetooth specifications. BlueDrekar
middleware will allow Bluetooth
wireless devices - from phones to household appliances - to
reliably
communicate with each other. IBM intends to seek
certification from the
Bluetooth Special Interest Group to demonstrate that
the BlueDrekar
middleware along with this transport driver are compliant
with Bluetooth
Specifications.
II. OVERVIEW
The Bluetooth wireless technology is a short-range
wireless
connectivity technology with particular focus on a specification
that
lends itself to a low cost, low power and integrated
implementation.
The Bluetooth project team in IBM Research has been an
active
participant of the Bluetooth Special Interest Group (SIG)
since its
inception in early 1998 and has led IBM's involvement in
the
technical activities of the SIG. We have been developing a
reference implementation of the protocol stack. We are
making
our reference implementation and interfaces available to
the
Bluetooth adopter members and promoters in order to enable
them to
develop exciting applications and paradigms around this
technology.
We anticipate that short-range wireless technologies such as
the
Bluetooth wireless technology will revolutionize mobile
and pervasive
computing and wireless internet paradigms. Considering a wide
range
of computing and communication devices, including PDAs,
notebook
computers, pagers, cellular and cordless phones with
different
capabilities, a "smart" short-range wireless
connectivity solution
can be a major enabler for new and exciting usage scenarios. Our
goal
is to develop a community based on our offering and foster
pervasive
computing and wireless internet services and applications based
on
the Bluetooth wireless technology.
Our offering includes source code of the HCI UART transport
driver
for the BlueDrekar
middleware. The Host Controller Interface (HCI)
transport layer is defined in the Bluetooth standard
specification. Currently,
our offering only supports the HCI UART transport layer.
This can be
downloaded at IBM's developerWorks
site under the GNU public license.
This code can be referred to as a template to help one
write
a transport driver for other HCI transport layers such as for
USB.
This transport driver can be used with the BlueDrekar
software package. This
package can be downloaded
at IBM's alphaWorks
site under the alphaWorks
license.

III. SYSTEM REQUIREMENTS
We have developed and tested the code using IBM compatible PCs
with
i486 or higher processors running Linux Kernel 2.2.12-20 (Red
Hat***(TM)
6.1), 2.2.14-5.0 (Red Hat 6.2), 2.2.16-22 (Red Hat 7) and 2.2.18
(with
modutils upgraded to 2.3.11).
The Bluetooth hardware module we have used to test the
code is
Ericsson's Bluetooth Hardware Module with HCI UART
transport layer,
firmware version P7C (v1.0A) and P3E (v1.0B). We have developed a
big Endian version of the code on a power PC platform using
MPC823
running embedded Linux (Kernel version 2.2.0-pre7) using
the iPengine****(TM) card from Bright Star
Engineering Co..
We have also developed a big Endian version of the code on
strongARM
processor using SA1110 running embedded Linux (Kernel version
2.4.1)
using the nanoengine*****(TM) card from Bright Start Engineering
Co..
System requirements:
- i486 or higher processor with a free serial port.
- Linux with Kernel 2.2.12-20 or higher with a standard serial
driver.
- Ericsson's Bluetooth Hardware Module with HCI UART
transport layer
or equivalent Bluetooth radio modules that is compliant to
the
Bluetooth standard version 1.0.
Note : * BlueDrekar
is a trademark of International Business Machine Co.
** The BLUETOOTH
trademarks are owned by their proprietor
and used by IBM Corp. under license.
*** Red Hat is a trademark of Red
Hat Software, Inc.
**** iPengine is a trademark of Bright Star
Engineering Co.
***** nanoengine is a trademark of Bright Star Engineering
Co.
IV. INSTALLATION
1) Initial Installation of the Package:
This installation requires root permissions.
Step 1) Untar the source tar file using
"tar xvf tp4bduart-xx.tar"
where xx is the software version number.
Step 2) Read README file in tp4bduart directory.
Step 3) Run "./install" without quotes in tp4bduart
directory.
(This will compile the code and copy the binary files and
script files to bin directory.)
2) Loading the Driver:
The driver must be loaded as root.
Step 1) Run "./start" without quotes in tp4bduart/bin/
directory.
Step 2) At this point, you may want to load a protocol
driver.
The BlueDrekar
protocol driver can be downloaded
at IBM's
alphaWorks
site under the alphaWorks license.
3) Unloading the Driver:
Ensure to unload the protocol driver first if a protocol driver
was loaded in addition to the UART transport driver.
Also, make sure the transport driver is not being used.
The driver must be unloaded as root.
Step 1) Run ./end in tp4bduart/bin/ directory.
V. DIRECTORY STRUCTURE
This package has the following tree structure --
- bin
|
|
tp4bduart --|
- man-----------man7
|
- src
Individual directories -
(1) bin :
Binaries generated by compiling the source will be copied here
at
the end of the build process.
This directory contains the "start" and
"end" script files.
These script files are placed here after having run the
"install"
(See Installation section above.)
(2) man :
man/man7: contains the manual page for the transport driver
for
the HCI UART transport layer.
(3) src :
This contains the source code of the UART transport driver,
"Makefile", "start" and "end"
scripts.
VI. PROGRAMMING
INTERFACE ROUTINES
There is a manual page for all supported programming
interface
routines. The install process installs the man pages in the
/usr/local/man directory.
Run "man tp4bduart" to see the details.
VII. HOW
TO WRITE YOUR OWN TRANSPORT DRIVER
We have provided the source code of the line discipline driver
that
contains the HCI UART transport layer under the GNU license.
This
module may be used as a reference in order to write your own
HCI
transport driver.
This package also includes a manual page that describes about
all
supported programming interface routines that are being used
to
communicate with the BlueDrekar
protocol driver.
Makefile for this driver is also available as a part of the
package.
Refer to the Bluetooth standard specification if
additional details
of the HCI Transport layers are needed.
VIII. FREQUENTLY
ASKED QUESTIONS (FAQ)
1) What is Bluetooth?
The BLUETOOTH trademarks are owned by their proprietor and
used
by IBM Corp. under license. The Bluetooth wireless
technology has
been standardized by a consortium formed by five initial promoter
companies, IBM, Ericsson, Nokia, Intel and Toshiba and supported
by over 1800 companies as of June 2000. This technology uses
ISM band radio frequency with fast hopping spread spectrum and
has
a range of 10 meters with a provision to increase it to 100m.
Within this range, one master device and up to seven active
member
devices form a piconet. A provision to communicate between
multiple
piconets is called a scatternet. The protocol stack includes,
the RF and baseband that is the physical layer, Link Manager,
Host Controller Interface (an optional layer in case there is
a split between the radio module and the host device),
Logical Link Control and Adaptation Protocol (L2CAP) layer,
RFComm layer, Telephony Control Protocol (TCS) layer, and
Service Discovery Protocol (SDP) layer.
The Bluetooth standard was named after Harald
Blaatand
"Bluetooth" II, a Viking king in Denmark during
940-981AD.
2) What is included in this package?
The IBM reference implementation of the Bluetooth HCI UART
transport
driver can be downloaded at
IBM's developerWorks
site under the
GNU public license.
The IBM reference implementation of the higher layer protocol
stack
called BlueDrekar
middleware can be downloaded
at IBM's alphaWorks
site under the alphaWorks license.
The UART transport driver can be used as a transport driver for
the
BlueDrekar protocol driver if you are using a Bluetooth
wireless
module with the HCI UART transport layer.
3) How compliant is it?
The code is written based on the Bluetooth wireless
standard version
1.0A and 1.0B. The reference implementation of the standard is
an
on-going project at IBM. The implementation could be enhanced
with
more features and functions and could be upgraded to a newer
version
of the standard without any notice as newer versions are
available.
IBM intends to seek certification from the Bluetooth
Special Interest
Group (SIG) to demonstrate that the first version of the
UART
transport driver is compliant with Bluetooth
Specifications.
At the time of release, this code was tested with the
Ericsson's
Bluetooth hardware module (UART version).
4) How do I install the driver?
The transport driver package includes a step by step
installation
procedure. Please refer to the README file.
The package contains a script called "start" (without
quotes) to
load a loadable module, ldisc_bt.o. This will load the
transport
driver only. After loading the transport driver, the BlueDrekar
protocol driver could be loaded in order to provide support
for
the higher protocol layers. The BlueDrekar
software package is
available at IBM's alphaWorks
site.
The source code for this UART transport driver is provided and
should be compiled using the provided "install" script.
5) How do I write my own transport driver?
This package includes source code and manual pages for
interface
routines as well as Makefile, include files and README
document.
One can use this as a template to write one's own transport
driver
that will work with the BlueDrekar
protocol driver. If more detail
information about the HCI transport layers of the Bluetooth
wireless
technology is necessary, you should refer to the Bluetooth
standard
specification.
6) Will this transport driver work with 2.4.* kernels?
The transport driver source code provided here works fine for
linux
kernels 2.2.12 through 2.2.18. For 2.4.* kernels, the following
change
has to be made to the source code:
"tp4bduart/src/ldisc_bt.h" Line 87 of 209:
#define N_BT 14
must be changed to:
#define N_BT 15
IX. BLUEDREKAR TEAM
The BlueDrekar
project team in IBM Research is a part of the
Pervasive Security and Networking Department led by
Mahmoud
Naghshineh. The team has been an active participant of the Bluetooth
Special Interest Group (SIG) since its inception in early 1998
and it
has led IBM's involvement in the technical activities of the SIG.
It
has contributed heavily to the development of the Bluetooth
1.0
specification. Team members have served as editors for the HCI
RS-232
transport and Service Discovery Application Profile (SDAP) parts
of
the specification. The team is a strong advocate of the Bluetooth
wireless technology both inside and outside IBM, where they have
been
invited to speak about the technology on several occasions.
The current members of the BlueDrekar team are:
Stefan
Berger
IBM
Corporation
stefanb@us.ibm.com
Chatschik Bisdikian IBM
Corporation
Frank
Janniello
IBM Corporation
Parviz
Kermani
IBM Corporation
Nathan J.
Lee
IBM Corporation njlee@us.ibm.com
Mahmoud Naghshineh IBM Corporation
Sumanth
Reddy
IBM Corporation
Jim
Rubas
IBM
Corporation
rubas@us.ibm.com