diff options
authorClaudio Takahasi <>2012-02-29 16:13:18 -0300
committerClaudio Takahasi <>2012-02-29 16:13:18 -0300
commit08445788da0f03f4d3e61e9646fc042a532364ba (patch)
parent31ed17665825d41ec51ac17f7481da49ac3f5da7 (diff)
bluez: add kernel architecture
1 files changed, 27 insertions, 0 deletions
diff --git a/bluez.tex b/bluez.tex
index bf63124..1f27fcd 100644
--- a/bluez.tex
+++ b/bluez.tex
@@ -49,6 +49,33 @@ manage adapter, devices and services.
\section{Linux Bluetooth kernel architecture}
+Linux Bluetooth kernel subsystem consist of several layers:
+\item Bluetooth Core
+\subitem HCI device and connection manager, scheduler
+\subitem SCO audio links
+\subitem L2CAP (Logical Link Control and Adaptation Protocol)
+\subitem SMP (Security Manager Protocol) on LE (Low Energy) links
+\item HCI Device drivers (Interface to the hardware)
+\item RFCOMM Module (RFCOMM Protocol)
+\item BNEP Module (Bluetooth Network Encapsulation Protocol)
+\item CMTP Module (CAPI Message Transport Protocol)
+\item HIDP Module (Human Interface Device Protocol)
+Low Energy support changed the Bluetooth Core layer only. SMP and Signaling
+L2CAP fixed channels are not exposed to the userspace.
+Connection Parameter Update Procedure is handled completely inside the kernel.
+Acting as a master, BlueZ kernel accepts all valid parameters. At the moment,
+there isn't API to allow the userspace to initiate or reject the procedure.
+Security Manager is exposed to the userspace through the Management Interface.
+Pairing procedure can be triggered from the userspace by changing socket
+security level, sending HCI commands, or sending Pair Management Command.
+However, the exchanged keys are available through the Management events only,
+making this new Bluetooth kernel interface mandatory if security is required.
\section{Linux Bluetooth userspace architecture}
BlueZ userspace is composed by {\em bluetoothd}, libbluetooth, and command