Working Principle of Bluetooth Devices
The
Bluetooth protocol operates at 2.4GHz in the same unlicensed ISM
frequency band where RF protocols like ZigBee and WiFi also exist. There is
a standardized set of rules and specifications that differentiates it from
other protocols.
Masters, Slaves, and Piconets:
Bluetooth networks
(commonly referred to as piconets) use a master/slave model to
control when and where devices can send data. In this model, a single master
device can be connected to up to seven different slave devices. Any slave
device in the piconet can only be connected to a single master.
Examples of Bluetooth master/slave piconet topologies.
The master coordinates
communication throughout the piconet. It can send data to any of its slaves and
request data from them as well. Slaves are only allowed to transmit to and
receive from their master. They can’t talk to other slaves in the piconet.
Bluetooth
Addresses and Names:
Every
single Bluetooth device has a unique 48-bit address, commonly abbreviated
BD_ADDR. This will usually be presented in the form of a 12-digit hexadecimal
value. The most-significant half (24 bits) of the address is an organization
unique identifier (OUI), which identifies the manufacturer. The lower 24-bits
are the more unique part of the address.
This address should be visible on
most Bluetooth devices. For example, on this RN-42 Bluetooth Module,
the address printed next to “MAC NO.” is 000666422152:
The “000666” portion of that
address is the OUI of Roving Networks,
the manufacturer of the module. Every RN module will share those upper 24-bits.
The “422152” portion of the module is the more unique ID of the device.
Bluetooth devices can also have
user-friendly names given to them. These are usually presented to the user, in
place of the address, to help identify which device it is.
The rules for device names are
less stringent. They can be up to 248 bytes long, and two devices can share the
same name. Sometimes the unique digits of the address might be included in the
name to help differentiate devices.
Connection
Process:
Creating a Bluetooth
connection between two devices is a multi-step process involving three
progressive states:
1. Inquiry – If two Bluetooth devices know absolutely nothing about
each other, one must run an inquiry to try to discoverthe other.
One device sends out the inquiry request, and any device listening for such a
request will respond with its address, and possibly its name and other
information.
2. Paging (Connecting) – Paging is the process of forming a
connection between two Bluetooth devices. Before this connection can be
initiated, each device needs to know the address of the other (found in the
inquiry process).
3. Connection – After a device has completed the paging process, it
enters the connection state. While connected, a device can either be actively
participating or it can be put into a low power sleep mode.
o Active Mode – This is the regular connected mode, where the device is
actively transmitting or receiving data.
o Sniff Mode – This is a power-saving mode, where the device is less
active. It’ll sleep and only listen for transmissions at a set interval (e.g.
every 100ms).
o Hold Mode – Hold mode is a temporary, power-saving mode where a
device sleeps for a defined period and then returns back to active mode when
that interval has passed. The master can command a slave device to hold.
o Park Mode – Park is the deepest of sleep modes. A master can command
a slave to “park”, and that slave will become inactive until the master tells
it to wake back up.
Bonding and Pairing:
When two Bluetooth
devices share a special affinity for each other, they can be bonded together.
Bonded devicesautomatically establish a connection whenever they’re
close enough. When I start up my car, for example, the phone in my pocket
immediately connects to the car’s Bluetooth system because they share a bond.
No UI interactions are required!
Bonds are created
through one-time a process called pairing. When devices pair up,
they share their addresses, names, and profiles, and usually store them in
memory. The also share a common secret key, which allows them to bond whenever
they’re together in the future.
Pairing usually
requires an authentication process where a user must validate
the connection between devices. The flow of the authentication process varies
and usually depends on the interface capabilities of one device or the other.
Sometimes pairing is a simple “Just Works” operation, where the click of a
button is all it takes to pair (this is common for devices with no UI, like
headsets). Other times pairing involves matching 6-digit numeric codes. Older,
legacy (v2.0 and earlier), pairing processes involve the entering of a common
PIN code on each device. The PIN code can range in length and complexity from
four numbers (e.g. “0000” or “1234”) to a 16-character alphanumeric string.