Bluetooth on GNU Linux

44
Utilisation de BlueTooth Utilisation de BlueTooth sous GNU Linux sous GNU Linux GAYET Thierry – octobre 2005 GAYET Thierry – octobre 2005 REF. OSP003 [email protected]

Transcript of Bluetooth on GNU Linux

Page 1: Bluetooth on GNU Linux

Utilisation de BlueToothUtilisation de BlueToothsous GNU Linuxsous GNU Linux

GAYET Thierry – octobre 2005GAYET Thierry – octobre 2005

REF. OSP003 [email protected]

Page 2: Bluetooth on GNU Linux

Plan de la présentationPlan de la présentation

HistoriqueHistorique Bande de fréquenceBande de fréquence Définition du protocoleDéfinition du protocole Les servicesLes services TopologieTopologie Présentation des profilesPrésentation des profiles La stack BluetoothLa stack Bluetooth Comparaison avec le modèle OSIComparaison avec le modèle OSI Format des paquetsFormat des paquets Installation de la stack BlueZInstallation de la stack BlueZ Fichiers importantsFichiers importants UtilisationUtilisation Autres outilsAutres outils ProgrammationProgrammation LiensLiens

Page 3: Bluetooth on GNU Linux

HistoriqueHistorique Son nom est directement inspiré du roi Son nom est directement inspiré du roi danoisdanois Harald IIHarald II surnommé Harald II Blåtand (« à la surnommé Harald II Blåtand (« à la

dent bleue »), connu pour avoir réussi à unifier les états du dent bleue »), connu pour avoir réussi à unifier les états du DanemarkDanemark, de , de NorvègeNorvège et de et de SuèdeSuède. Le logo de Bluetooth est d'ailleurs composé des runes nordiques H et B.. Le logo de Bluetooth est d'ailleurs composé des runes nordiques H et B.

19941994 : Création par le fabriquant suédois  : Création par le fabriquant suédois EricssonEricsson

19981998 : Plusieurs grandes sociétés ( : Plusieurs grandes sociétés (AgereAgere, , IBMIBM, , IntelIntel, , MicrosoftMicrosoft, , MotorolaMotorola, , NokiaNokia et et ToshibaToshiba) ) s'associent pour former le s'associent pour former le BluetoothBluetooth SpecialSpecial InterestInterest Group Group (SIG) (SIG)

juillet juillet 19991999 : Sortie de la spécification 1.0 : Sortie de la spécification 1.0

Page 4: Bluetooth on GNU Linux

Bande de Fréquence Bande de Fréquence 1/31/3

Les bandes ISM (industriel, scientifique, et médical) sont des bandes de fréquences qui ne sont pas soumises à des réglementations nationales et qui peuvent être utilisées librement (gratuitement, et sans autorisation) pour des applications industrielles, scientifiques et médicales.

Les seules obligations à observer sont :

• la puissance d'émission • les excursions en fréquence, ou la perturbation de fréquences voisines.

Les champs d'application typiques sont les dispositifs Bluetooth et les réseaux sans fil (Wi-Fi et WLAN).

La situation des bandes ISM n'est pas uniformément réglée dans le monde. Aux USA il y a par exemple trois bandes ISM (902 - 928 MHz ; 2400 - 2483,5 MHz et 5800 MHz), mais seule la bande des 2,4 GHz est libéré dans le monde entier.

Dans ces bandes, des téléphones sans-fil existent également. En Europe les téléphone sans-fil au standard DECT fonctionnent toutefois dans une bande de fréquence propre, qui est exclusivement disponible pour les appareils utilisant cette norme.

Les réseaux WLAN et les dispositifs Bluetooth émettent dans la bande des 2,4 GHz.Il y a également des réseaux et dispositifs WLAN dans la bande des 5 GHz (plus précisément 5,15 - 5,725 GHz en Europe) et à une puissance d'émission différente.

Page 5: Bluetooth on GNU Linux

Bande de Fréquence Bande de Fréquence 2/32/3

Les bandes de fréquences ISM publiques, publiées, sont :

• 6,765 - 6,795 MHz (soit 6,78 MHz ± 15,0 kHz) • 13,553 - 13,567 MHz (soit 13,56 MHz ± 7,0 kHz) • 26,957 - 27,283 MHz (soit 27,12 MHz ± 163,0 kHz) • 40,660 - 40,700 MHz (soit 40,68 MHz ± 20,0 kHz) • 433,05 - 434,79 MHz • 868 - 870 MHz • 902 - 928 MHz (soit 915 MHz ± 13,0 MHz) • 2,4 - 2,5 GHz (soit 2,450 MHz ± 50,0 MHz) • 5,725 - 5,875 GHz (soit 5,800 MHz ± 75,0 MHz) • 24 - 24,25 GHz (soit 24,125 MHz ± 125,0 MHz) • 61 - 61,5 GHz (soit 61,25 GHz ± 250,0 MHz) • 122 - 123 GHz (soit 122,50 GHz ± 500,0 MHz) • 244 - 246 GHz (soit 245,00 GHz ± 1,0 GHz)

Page 6: Bluetooth on GNU Linux

Bande de Fréquence Bande de Fréquence 3/33/3

En France:En France, la bande ISM principale utilisée est la bande de fréquences de la gamme des UHFallant de 2,4 à 2,4835 GHz (bande L).Cependant depuis peu des caméra sans fil fonctionnant autour des 1.2 Ghz ont fait leur apparition sur le marché français avec le certificat "CE". Cette bande n'apparaît pas comme un spectre gratuit et ouvert ou public.

Outre le Wifi, elle est réservée à de nombreuses applications publiques et grand public sans fil,les caméras de vidéo-surveillance professionnelles et domestiques, les webcams, les transmetteurs(émetteur/récepteur) de salon audio-vidéo, tous ces appareils fonctionnant en vidéo composite PAL.

Puissance autorisée, PIRE 10 mW ou 10 dBm. Polarisation au choix, circulaire, linéaire. L'ISM est partagée avec les radioamateurs jusqu'à 2450 MHz.

Nb : les appareils d'émission doivent comporter la mention « CE » (certificat de conformité européeen) pour pouvoir être utilisés réglementairement à l'extérieur des bâtiments comme à l'intérieur. (Voir : ART, Décision N° 02-1088 du 28.11.2002) Notons qu'en France metropolitaine il n'existe plus de restrictions départemantales, non levées en outre-mer.

Dans les zones urbaines la cohabitation devient difficile entre les différents utilisateurs, wifistes d'un côté et les usages domestiques utiles( video-surveillance) ou ludiques ( aérocam, astrocam, météocam etc..), de l'autre.

http://www.art-telecom.fr/interactive/recherche/result.php?bandeau=/textes/avis/bandeau.htm&corps=/textes/avis/02/02-1088.htm

Page 7: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocoleLa pile de protocolesAfin d'assurer une compatibilité entre tous les périphériques Bluetooth, la majeure partie de la pile de protocoles est définie dans la spécification.

Les éléments fondamentaux d'un produit Bluetooth sont définis dans les deux premières couches protocolaires, la couche radio et la couche bande de base. Ces couches prennent en charge les tâches matérielles comme le contrôle du saut de fréquence et la synchronisation des horloges.

Page 8: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocoleLa couche radio (RF)La couche radio (la couche la plus basse) est gérée au niveau matériel. C'est elle qui s'occupe de l'émission et de la réception des ondes radio. Elle définit les caractéristiques telles que la bande de fréquence et l'arrangement des canaux, les caractéristiques du transmetteur, de la modulation, du receveur, etc.

La technologie Bluetooth utilise l'une des bandes de fréquences ISM (Industrial, Scientific & Medical) réservée pour l'industrie, la science et la médecine. La bande de fréquences utilisée est disponible au niveau mondial et s'étend sur 83,5 MHz (de 2,4 à 2,4835 GHz).

Cette bande est divisée en 79 canaux séparés de 1 MHz.

Le codage de l'information se fait par sauts de fréquence.

La période est de 625µs ce qui permet 1600 sauts par seconde.

Il existe 3 classes de modules radio Bluetooth sur le marché ayant des puissances différentes et donc des portées différentes :

10 mètres1 mW (0 dBm)3

15 à 20 mètres2,5 mW (4d Bm)2

100 mètres100 mW (20 dBm)1

PortéePuissanceClasse

La plupart des fabriquants d'appareils électroniques utilisent des modules de classe 3.

Page 9: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocole

Page 10: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocoleBluetooth opère dans la bande non-officièle des 2.5GHz aussi appelée Industrial-Scientific-Medical(ISM). Il y a déjà plusieurs type de devices dans cette bande de fréquence tel que les moniteurs Pour surveiller les enfants ou les télécommande de portes de garages.

Pour évites les interférences, les devices Bluetooth envoient un faible signal (environ 1 milliwatt). La limite de transmission ne dépasse pas 10 mètres. Il utilise aussi une technique de sauts de fréquence en espérant, avec 79 sauts aléatoires de1 MHz et cela 1600 fois par secondes .

Chaque piconet est synchronisé avec un modèle de saut de fréquency fréquence, donc chaquepiconet différent n’interfère pas avec les autres. Un piconet peut être soit statique ou bienDynamique:

Bluetooth Modulation

La modulation dans Bluetoothest de type “Gaussian Frequency Shift Keying (GFSK)”, avec un BTÉgal à 0.5 et un index de modulation compris entre 0.25et 0.35:

Page 11: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocoleLa bande de base (baseband)La bande de base (ou baseband en anglais) est également gérée au niveau matériel.

C'est au niveau de la bande de base que sont définies les adresses matérielles des périphériques (équivalent à l'adresse MAC d'une carte réseau).

Cette adresse est nommée BD_ADDR (Bluetooth Device Address) et est codée sur 48 bits.

Ces adresses sont gérées par la IEEE Registration Authority.

C'est également la bande de base qui gère les différents types de communication entre les appareils. Les connexions établies entre deux appareils Bluetooth peuvent être synchrones ou asynchrones.

La bande de base peut donc gérer deux types de paquets:

• les paquets SCO (Synchronous Connection-Orientated)

• les paquets ACL (Asynchronous Connection-Less)

Page 12: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocoleRéseau piconetUn piconet est un mini réseau qui se crée de manière instantanée et automatique quand plusieurs périphériques Bluetooth sont dans un même rayon.

Un piconet suit une topologie en étoile : 1 maître / plusieurs esclaves.

Un périphérique maître peut administrer jusqu'à :

• 7 esclaves actifs • 255 esclaves en mode parked

La communication est directe entre le maître et un esclave. Les esclaves ne peuvent pas communiquer entre eux.

Tous les esclaves du piconet sont synchronisés sur l'horloge du maître. C'est le maître qui détermine lafréquence de saut pour tout le piconet.

Page 13: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocoleRéseau scatternetLes périphériques esclaves peuvent avoir plusieurs maîtres, les différents piconets peuvent donc être reliés entre eux. Le réseau ainsi formé est appelé un scatternet (littéralement réseau chaîné).

Le contrôleur de liaisons (LC)Cette couche gère la configuration et le contrôle de la liaison physique entre deux appareils.

Bluetooth Scatternets and Piconets

Page 14: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocoleLe gestionnaire de liaisons (LM)Cette couche gère les liens entre les périphériques maîtres et esclaves ainsi que les types de liaisons (synchrones ou asynchrones).

C'est le gestionnaire de liaisons qui implémente les mécanismes de sécurité comme :

• l'authentification, • le pairage, • la création et la modification des clés, • et le cryptage.

L'interface de contrôle de l'hôte (HCI)Cette couche fournit une méthode uniforme pour accéder aux couches matérielles.

Son rôle de séparation permet un développement indépendant du hardware et du software.

Les protocoles de transport suivants sont supportés :

• USB (Universal Serial Bus) • PC-Card • RS-232 • UART

Page 15: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocole

Courtesy of Bluetooth SIG,HCI Specs

Page 16: Bluetooth on GNU Linux

Définition du protocoleDéfinition du protocole

La couche L2CAPL2CAP signifie Logical Link Control & Adaptation Protocol.

MultiplexageCette couche permet d'utiliser simultanément différents protocoles de niveaux supérieurs.Un mécanisme permet d'identifier le protocole de chaque paquet envoyé pour permettre à l'appareil distant de passer le paquet au bon protocole, une fois celui-ci récupéré.

Segmentation et réassemblageLa couche L2CAP gère également la ségmentation (et le réassemblage) des paquets de protocoles de niveaux supérieurs en paquets de liaison de 64 Ko.

Page 17: Bluetooth on GNU Linux

Les servicesLes servicesRFCOMMRFCOMM est un service basé sur les spécifications RS-232, qui émule des liaisons séries. Il peut notamment servir à faire passer une connexion IP par Bluetooth.

SDPSDP siginifie Service Discovery Protocol. Ce protocole permet à un appareil Bluetooth de rechercher d'autres appareils et d'identifier les services disponibles.

Il s'agit d'un élément particulièrement complexe de Bluetooth.

OBEXOBEX siginifie Object Exchange. Ce service permet de transférer des données grâce à OBEX, protocole d'échange de fichiers IrDA.

Page 18: Bluetooth on GNU Linux

Topologie Topologie 1/21/2

A wireless local area network, also referred to as 802.11, uses high-frequency radio waves instead of wires to communicate between nodes in a network. A wireless personal area network provides network connectivity without wires to devices (personal devices that are carried, worn, or located near the body) within a personal operating space. Wireless personal area networks differ from wireless local area networks in several areas, including interaction, packet format, type of devices, network build-out timeframe, relative cost, and general network architecture. The following table presents the comparison of WPAN and WLAN:

Page 19: Bluetooth on GNU Linux

Topologie Topologie 2/22/2

802.15 WPAN Task Group 1The 802.15 WPAN Task Group 1 (TG1) is using the Bluetooth v1.0 specifications to derive theWPAN standard. The scope and focus of TG1 are to define PHY and MAC specifications for wireless connectivity between devices that are either fixed or portable within the personal operating space. The goal will be to allow low complexity, low power consumption wireless connectivity to support data transfer to and from a WPAN device and an 802.11 device. The proposed standard will take into account coexistence with all 802.11 devices.

802.15 WPAN Task Group 2Task Group 2's (TG2) scope and focus is to address the coexistence of WPANs and WLANs. TG2 is developing a coexistence model to quantify the mutual interference of a WLAN and a WPAN. The Task Group is also developing a set of coexistence mechanisms to facilitate coexistence of WLAN and WPAN devices.

802.15 WPAN Task Group 3Task Group 3's (TG3) scope and focus is to publish a new standard for a high data rate, 20 Mbps or greater, for WPANs. TG3 will also be looking at providing a solution that is low powerand low cost, addressing the needs of digital imaging and multimedia applications. The newstandard will comply with the TG1 standard.

802.15 WPAN Task Group 4Task Group 4's (TG4) scope and focus is to determine a solution with a low data rate and longbattery life, potentially months to years, with very low complexity. The solution determinedwould need to operate within an unlicensed and global frequency band. The solution couldpotentially be applied to sensors, remote controls, appliances, toys, etc.

Page 20: Bluetooth on GNU Linux

Les profiles Les profiles 1/61/6Les profilsUn profil correspond à une spécification fonctionnelle d'un usage particulier.

Ils peuvent également correspondre à différents types de périphériques.

Les profils ont pour but d'assurer une interopérabilité entre tous les appareils Bluetooth.Ils définissent :

• la manière d'implémenter un usage défini • les protocoles spécifiques à utiliser • les contraintes et les intervalles de valeurs de ces protocoles • Les différents profils sont :• GAP: Generic Access Profile • SDAP: Service Discovery Application Profile • SPP: Serial Port Profile • HS Profile: Headset Profile • DUN Profile: Dial-up Networking Profile • LAN Access Profile • Fax Profile • GOEP: Generic Object Exchange Profile • SP: Synchronization Profile • OPP: Object Push Profile • FTP: File Transfer Profile • CTP: Cordless Telephony Profile • IP: Intercom Profile

Page 21: Bluetooth on GNU Linux

Les profiles Les profiles 2/62/6

Le profil d'accès générique (GAP)Le profil d'accès générique est le profil de base dont tous les autres profils héritent.

Il définit les procédures génériques de recherche d'appareils, de connexion et de sécurité.

Page 22: Bluetooth on GNU Linux

Les profiles Les profiles 3/63/6

Bluetooth overview

PPP

ICP

Term

inal

FA

X

CT

P

PA

N

GO

EP

OP

P

SY

NC

FT

P

BIP

BP

P

HS

DU

N

LA

N

GA

P

SD

AP

SP

P

L2CAP

RFCOMMSDP TCS

OBEXD

ata Term

inal

Gatew

ay

Term

inal

Gatew

ay

PA

N U

serG

rou

p A

d-h

oc N

Netw

ork A

ccess Po

int

Clien

tS

erver

P-C

lient

P-S

erver

IrMC

CIrM

CS

Clien

tS

erver

I Initiato

rI R

espo

nd

er

Sen

der

Prin

ter

A-P

artyB

-Party

Lo

c Dev

Rem

Dev

Head

setA

ud

io G

ateway

Data T

ermin

alG

ateway

Data T

ermL

AN

Acc P

Device A

Device B

IrmC

BNEP

HF

PH

and

s Free U

nit

Au

dio

Gatew

ay

HC

RP

Clien

tS

erver

GA

VD

PIn

itiator

Accep

tor

A2D

PS

ou

rceS

ink

VD

PS

ou

rceS

ink

RC

PC

on

troller

Targ

et

VC

PD

ata Term

inal

Gatew

ay

AVDTP AV-CTP

SA

PC

lient

Server

PA

PM

ob

ile Eq

uip

men

tT

ermin

al Eq

. Un

it

HID

HID

TCP/UDP

IP

Protocols Rev 1.1 Rev 0,95 Rev < 0,95

Profiles Rev 1.1 Rev 1.0 Rev < 1.0

EB

SCO = Synchronous Connection OrientedVoice exchange - 64 Kbips / canal

ACL = Asynchronous Connection LessData exchange - 432.6 Kbips symétrique - 721 Kbips/57.6 Kbips asymétrique

1-5m

3-10m

40-50m

Average range

1-10m

10-20m

70-100m

Max range

1 mW(0 dBm)

2.5 mW(4 dBm)

100 mW(20 dBm)

Max Output Power

3

2

1

PowerClass

Bluetooth overview

PPP

ICP

Term

inal

FA

X

CT

P

PA

N

GO

EP

OP

P

SY

NC

FT

P

BIP

BP

P

HS

DU

N

LA

N

GA

P

SD

AP

SP

P

L2CAP

RFCOMMSDP TCS

OBEXD

ata Term

inal

Gatew

ay

Term

inal

Gatew

ay

PA

N U

serG

rou

p A

d-h

oc N

Netw

ork A

ccess Po

int

Clien

tS

erver

P-C

lient

P-S

erver

IrMC

CIrM

CS

Clien

tS

erver

I Initiato

rI R

espo

nd

er

Sen

der

Prin

ter

A-P

artyB

-Party

Lo

c Dev

Rem

Dev

Head

setA

ud

io G

ateway

Data T

ermin

alG

ateway

Data T

ermL

AN

Acc P

Device A

Device B

IrmC

BNEP

HF

PH

and

s Free U

nit

Au

dio

Gatew

ay

HC

RP

Clien

tS

erver

GA

VD

PIn

itiator

Accep

tor

A2D

PS

ou

rceS

ink

VD

PS

ou

rceS

ink

RC

PC

on

troller

Targ

et

VC

PD

ata Term

inal

Gatew

ay

AVDTP AV-CTP

SA

PC

lient

Server

PA

PM

ob

ile Eq

uip

men

tT

ermin

al Eq

. Un

it

HID

HID

TCP/UDP

IP

Protocols Rev 1.1 Rev 0,95 Rev < 0,95

Profiles Rev 1.1 Rev 1.0 Rev < 1.0

EBBluetooth overview

PPP

ICP

Term

inal

FA

X

CT

P

PA

N

GO

EP

OP

P

SY

NC

FT

P

BIP

BP

P

HS

DU

N

LA

N

GA

P

SD

AP

SP

P

L2CAP

RFCOMMSDP TCS

OBEXD

ata Term

inal

Gatew

ay

Term

inal

Gatew

ay

PA

N U

serG

rou

p A

d-h

oc N

Netw

ork A

ccess Po

int

Clien

tS

erver

P-C

lient

P-S

erver

IrMC

CIrM

CS

Clien

tS

erver

I Initiato

rI R

espo

nd

er

Sen

der

Prin

ter

A-P

artyB

-Party

Lo

c Dev

Rem

Dev

Head

setA

ud

io G

ateway

Data T

ermin

alG

ateway

Data T

ermL

AN

Acc P

Device A

Device B

IrmC

BNEP

HF

PH

and

s Free U

nit

Au

dio

Gatew

ay

HC

RP

Clien

tS

erver

GA

VD

PIn

itiator

Accep

tor

A2D

PS

ou

rceS

ink

VD

PS

ou

rceS

ink

RC

PC

on

troller

Targ

et

VC

PD

ata Term

inal

Gatew

ay

AVDTP AV-CTP

SA

PC

lient

Server

PA

PM

ob

ile Eq

uip

men

tT

ermin

al Eq

. Un

it

HID

HID

TCP/UDP

IP

Protocols Rev 1.1 Rev 0,95 Rev < 0,95

Profiles Rev 1.1 Rev 1.0 Rev < 1.0

EB

SCO = Synchronous Connection OrientedVoice exchange - 64 Kbips / canal

ACL = Asynchronous Connection LessData exchange - 432.6 Kbips symétrique - 721 Kbips/57.6 Kbips asymétrique

1-5m

3-10m

40-50m

Average range

1-10m

10-20m

70-100m

Max range

1 mW(0 dBm)

2.5 mW(4 dBm)

100 mW(20 dBm)

Max Output Power

3

2

1

PowerClassSCO = Synchronous Connection Oriented

Voice exchange - 64 Kbips / canal

ACL = Asynchronous Connection LessData exchange - 432.6 Kbips symétrique - 721 Kbips/57.6 Kbips asymétrique

1-5m

3-10m

40-50m

Average range

1-10m

10-20m

70-100m

Max range

1 mW(0 dBm)

2.5 mW(4 dBm)

100 mW(20 dBm)

Max Output Power

3

2

1

PowerClass

Page 23: Bluetooth on GNU Linux

Les profiles Les profiles 4/64/6

Transfert de fichiers:

Le modèle de transfert de fichier The file transfer usage model (cf file transfert profile) offre la capacité de transférer des objetsd’un device à un autre (e.g., PC, smart-phone, ou PDA).

Les types d’object peuvent être (mais n’y sont pas limités).xls, .ppt, .wav, .jpg, et .doc, contenu d’un répertoire, répertoire,ou format en streaming.

Aussi, ce modèle offre la possibilité de consulter le contenu d’unrépertoire distant.

Dans le schéma donne une vue de cette stack mais ne montre pas Les couches inférieures LMP, Baseband, et Radio. Stack pour les transferts de fichiers.

Page 24: Bluetooth on GNU Linux

Les profiles Les profiles 5/65/6

Synchronisation:

Stack pour la synchronisation

Le modèle synchronisation entre devices (téléphone, PDA, ordinateurs, etc…) de toute information de type PIM (personal Information management) : carnet d’adresses, calendrier, messagecalendar, message, et note d’information.

La synchronisation requière des cartes de visites (businesscard), calendriers (calendar), et tâches d’informations (task information) à transférer et à traiter par les téléphonesCellulaires et PDAs en utilisant des protoles et des formatsCommuns.

Le schéma ci-contre donne une vue de ce model.

Le bloc « synchronization application  » représente soit unClient/Serveur IrMC.

Page 25: Bluetooth on GNU Linux

Les profiles Les profiles 5/65/6

Three-in-One téléphones:

Stack pour les téléphones sans fils.

Les handsets réalisés avec ce profile doivent se connecterAvec 3 fournisseurs de services différents.

En premier, les téléphones doivent agir comme untéléphone sans-fils connecté à un réseau public(PSTN) à la maison ou au bureau. Ce scénario inclus unebase vocale de création d’appels en créant des appelsentre deux terminaux via la base et en accédant à desservices supplémentaires fournis par une réseau externe.

Après les téléphones peuvent se connecter à d’autrestéléphones en proposant des comportement tels que des “walkie-talkie” ou des handsets.

En troisièmen le téléphone peut agir comme un téléphonecellulaire en se connectant à une infrastructure GSM.

Le schéma ci-contre donne une vue de ce model.

Le flux audio se connecte directement à la couche Baseband via ta couche L2CAP.

Page 26: Bluetooth on GNU Linux

Les profiles Les profiles 6/66/6

Ultimate Headset

Stack des Headset.

Le modèle headset permet de connecter des devicestel que des entrée & sortie audio avec des possibilités d’actions. Il permet d’accroître les libertés deMouvements tout en garantissant la confidentialité.

Un exemple de scénario possible est un déport du sonet de la prise de l’appel d’un téléphone portable via un Handset alors que l’on marche dans la rue ou que l’onconduit un véhicule.

Le schéma ci-contre donne une vue de ce model.

Le flux audio en streaming est directement connecté à la couche Baseband via L2CAP.

Le headset doit être sapable d’envoyer des commandes AT (commandes d’urgence) et de reçevoir des codes deRetour. Cette capacité permet au headset de prendre des appels et de les terminer sans avoir à communiquer physiquementavec le téléphone.

Page 27: Bluetooth on GNU Linux

La Stack Bluetooth La Stack Bluetooth 1/31/3

Page 28: Bluetooth on GNU Linux

La Stack Bluetooth La Stack Bluetooth 2/32/3

La stack Bluez

Page 29: Bluetooth on GNU Linux

La Stack Bluetooth La Stack Bluetooth 3/33/3

Page 30: Bluetooth on GNU Linux

Comparaison avec le modèle OSIComparaison avec le modèle OSI

Page 31: Bluetooth on GNU Linux

Format des paquets Format des paquets 1/21/2Les données dans un piconet sont encodées en paquets. En général ils ont la forme suivante:

 

Code d’accèsLe code d’Accès est utilisé pour synchroniser, le décalage de compensation et d’identification:

Format d’un code d’accès d’un packet Bluetooth.

Format des paquets bluetooth.

Il y a 3 genre de codes d’accès. Le canal destinés au code d’accès (Channel Access Code or CAC) est utilisé pour identifié un piconet. Tous les pquets envoyés à travers le canal d’un piconet comprend l’adresse du device Master. Le code d’accès (Access Code ou DAC) est utilisé pour signaler des procédures comme une demande de paging ou pour lire la réponse d’un paging. Un DAC pour un paging pour l’adresse de la page du device.

Chaque device Bluetooth possède une adresse unique appelée BD_ADDR. Elle est constituée en deux parties: Un ID constructeur unique à travers le monde and un second ID lié au device lui aussi unique et correspondant au modèle du produit réalisé par le constructeur (comme une adresse MAC). La partie “Sync”Word” du code d’accès est dérivée de l’adresse BD_ADDR en utilisant des blocs de (64,30) avec un PN de sequence de 64-bits.

La section “preamble”est simplement fixée à “0101” ou “1010” dépendant soit du LSB du “sync word” suivant. S’il n’y a pas d’entête suivant le code d’accès ne contiendra pas de zone “trailer”.

PayloadIl y a deux types de payload: voice et data. Les paquets SCO ont un champs destinés uniquement pour la voix, tandis que les paquets ACL ont un champs destinés uniquement aux données.

Page 32: Bluetooth on GNU Linux

Format des paquets Format des paquets 2/22/2

L’entête:L’entête fait partie du packet et est utilisé par le cannal logique de contrôle des liaisons (LC)

Format d’un Header d’un paquet Bluetooth.

AM_ADDR: adresse temporaire assignée à un membre actif du piconet. Elle est utilisée dans tousPaquets envoyés et reçus entre le maître (master) et les adresses esclave (slave). Si AM_ADDR Est entièrement assigné à zéro cela permet de communiquer en boadcast vers tous les escalves.

TYPE: type de paquet. Il y a 12 types de packets pour chaque liaison physique SCO et ACL, et 4 types de controle générique pour les deux.

FLOW: pour le contôle des flux

ARQN: pour les handshaking (ack).

SEQN: contient un numéro de séquence pour l’ordre des paquets.

HEC: vérification de l’intégrité.

Page 33: Bluetooth on GNU Linux

Installer la stack BlueToothInstaller la stack BlueToothSite officiel:

http://www.bluez.org/

Lien de téléchargement:http://www.bluez.org/download.html

Téléchargement des packages officiels:

• bluez-libs-2.21.tar.gz• bluez-utils-2.21.tar.gz• bluez-pin-0.26.tar.gz• bluez-firmware-1.0.tar.gz• bluez-hcidump-1.25.tar.gz• bluez-hciemu-1.2.tar.gz

Installation:

•./configure•make•sudo make install ou su puis make install

Sous GNU LinuX

Sous GNU Debian, Ubuntu ou Kubuntu tout est si facilement installable en quelques minutes:

# apt-cache search bluez

bluez-cups - Bluetooth printer driver for CUPSbluez-hcidump - Analyses Bluetooth HCI packetsbluez-pcmcia-support - PCMCIA support files for BlueZ 2.0 Bluetooth toolsbluez-pin - Bluetooth PIN helper with D-BUS supportbluez-utils - Bluetooth tools and daemonskernel-patch-2.4-bluez - Linux Bluetooth protocol stack kernel patcheskernel-patch-2.6-bluez - Linux Bluetooth protocol stack kernel patcheslibbluetooth1 - Library to use the BlueZ Linux Bluetooth stacklibbluetooth1-dev - Development files for using the BlueZ Linux Bluetooth librarylibsdp2 - Dummy package for BlueZ SDP library.libsdp2-dev - Dummy package for BlueZ SDP library development files.

Page 34: Bluetooth on GNU Linux

Fichiers importantsFichiers importants

/etc/bluetooth/hcid.conf

Saved link key used for crypt data and communicate with paired devices

Il contient la liste des adresses MAC des devices apairés avec notre piconet. Pour relire ce fichier (binaire) il faut utiliser la structure de fichier définie dans le header bluetooth.h (file:/usr/src/linux/include/net/bluetooth) :

typedef struct { __u8 b[6]; } __attribute__((packed)) bdaddr_t;

/etc/bluetooth/link_key

Detail the auto PIN code used for each Bluetooth device MAC address/etc/bluetooth/pincode

Bluetooth PIN code used in the auto pairing mode (le code par défaut étant 1234)/etc/bluetooth/pin

Configuration of RFCOMM bindings : associate MAC/Channel to a rfcomm dev

/etc/bluetooth/rfcomm.conf

Fichier de configuration du Démon HCI

Une fois les packages de la stack Bluez installés, tout est prêt à l'emploi : les fichiers de config dans/etc/bluetooth, les binaires dans /bin et les devices dans /dev/rfcommx (avec x comprisEntre 0 et 9 au minimum).

Page 35: Bluetooth on GNU Linux

Utilisation Utilisation 1/41/4

RFCOMM configuration utilityRFCOMM = protocol providing emulation of serial ports (RS232) over the L2CAP protocol.

Usage ex. : rfcomm connect /dev/rfcomm0 00:80:98:64:A6:CD 4 rfcomm listen /dev/rfcomm0 4

/bin/rfcomm

Control and interrogate SDP local and remote servers SDP = Service Discovery Protocol

Usage ex.: sdptool browse 00:80:98:64:A6:CD sdptool add --channel=4 SP

/bin/sdptool

Configure Bluetooth connections HCI = Host Control Interface

Usage ex. : hcitool scan

/bin/hcitool

nb: concernant l'utilisation des devices /dev/rfcomm, il est recommandé d'utiliser le démon udev qui crée à la volée les devices en cas de besoin.

Page 36: Bluetooth on GNU Linux

Utilisation Utilisation 2/42/4

SCO test toolSCO = Synchronous Connection-Oriented packet (used in TCS)

/bin/scotest

RFCOMM test tool/bin/rctest

HeadSet test tool/bin/hstest

L2CAP test tool/bin/l2test

L2CAP ping toolL2CAP = Logical Link Control and Adaptation Protocol

/bin/l2ping

HCI Emulator/sbin/hciemu

Bluetooth pairing tool called for asking pin code in the not auto user mode/bin/bluepin

Attach serial devices via UART HCI/sbin/hciattach

Bluetooth Host Controller Interface daemon/sbin/hcid

PAN network daemon : implement PAN profile with BNEP protocol/bin/pand

Dial-Up network daemon : implement LAN access over PPP RFCOMM connection/bin/dund

Configure Bluetooth devices/sbin/hciconfig

Sniff HCI data communication/sbin/hcidump

Page 37: Bluetooth on GNU Linux

Utilisation Utilisation 3/43/4

sdptool browse 00:07:3A:05:D5:07 sdptool browse 00:07:3A:05:D5:07 (1)(1)

Service Name: Network Access PointService Name: Network Access PointService RecHandle: 0x10005fa0Service RecHandle: 0x10005fa0Service Class ID List:Service Class ID List:"Network Access Point" (0x1116)"Network Access Point" (0x1116)Protocol Descriptor List:Protocol Descriptor List:"L2CAP" (0x0100)"L2CAP" (0x0100)PSM: 15PSM: 15"BNEP" (0x000f)"BNEP" (0x000f)Version: 0x0100Version: 0x0100SEQ16: 800 806SEQ16: 800 806Profile Descriptor List:Profile Descriptor List:"Network Access Point" (0x1116)"Network Access Point" (0x1116)Version: 0x0100Version: 0x0100

Service Name: Dial-Up NetworkingService Name: Dial-Up NetworkingService RecHandle: 0x10005fb0Service RecHandle: 0x10005fb0Service Class ID List:Service Class ID List:"Dialup Networking" (0x1103)"Dialup Networking" (0x1103)"Generic Networking" (0x1201)"Generic Networking" (0x1201)Protocol Descriptor List:Protocol Descriptor List:"L2CAP" (0x0100)"L2CAP" (0x0100)"RFCOMM" (0x0003)"RFCOMM" (0x0003)Channel: 1Channel: 1Profile Descriptor List:Profile Descriptor List:"Dialup Networking" (0x1103)"Dialup Networking" (0x1103)Version: 0x0100Version: 0x0100

Browsing 00:07:3A:05:D5:07 ...Browsing 00:07:3A:05:D5:07 ...

Service Name: SDP ServerService Name: SDP ServerService Description: Bluetooth service discovery serverService Description: Bluetooth service discovery serverService Provider: BlueZService Provider: BlueZService RecHandle: 0x0Service RecHandle: 0x0Service Class ID List:Service Class ID List:"SDP Server" (0x1000)"SDP Server" (0x1000)Protocol Descriptor List:Protocol Descriptor List:"L2CAP" (0x0100)"L2CAP" (0x0100)PSM: 1PSM: 1Version: 0x0001Version: 0x0001

Service Name: Public Browse Group RootService Name: Public Browse Group RootService Description: Root of public group hierarchyService Description: Root of public group hierarchyService Provider: BlueZService Provider: BlueZService RecHandle: 0x10005000Service RecHandle: 0x10005000Service Class ID List:Service Class ID List:"Browse Group Descriptor" (0x1001)"Browse Group Descriptor" (0x1001)

Service Name: Serial PortService Name: Serial PortService RecHandle: 0x10005f80Service RecHandle: 0x10005f80Service Class ID List:Service Class ID List:"Serial Port" (0x1101)"Serial Port" (0x1101)Protocol Descriptor List:Protocol Descriptor List:"L2CAP" (0x0100)"L2CAP" (0x0100)"RFCOMM" (0x0003)"RFCOMM" (0x0003)Channel: 1Channel: 1Profile Descriptor List:Profile Descriptor List:"Serial Port" (0x1101)"Serial Port" (0x1101)Version: 0x0100Version: 0x0100

(1) just change with the correct MAC address.(1) just change with the correct MAC address.

Service Name: OBEX Object PushService Name: OBEX Object PushService RecHandle: 0x10005f90Service RecHandle: 0x10005f90Service Class ID List:Service Class ID List:"OBEX Object Push" (0x1105)"OBEX Object Push" (0x1105)Protocol Descriptor List:Protocol Descriptor List:"L2CAP" (0x0100)"L2CAP" (0x0100)"RFCOMM" (0x0003)"RFCOMM" (0x0003)Channel: 4Channel: 4"OBEX" (0x0008)"OBEX" (0x0008)Profile Descriptor List:Profile Descriptor List:"OBEX Object Push" (0x1105)"OBEX Object Push" (0x1105)Version: 0x0100Version: 0x0100

Service Name: LAN Access PointService Name: LAN Access PointService RecHandle: 0x10005fc0Service RecHandle: 0x10005fc0Service Class ID List:Service Class ID List:"LAN Access Using PPP" (0x1102)"LAN Access Using PPP" (0x1102)Protocol Descriptor List:Protocol Descriptor List:"L2CAP" (0x0100)"L2CAP" (0x0100)"RFCOMM" (0x0003)"RFCOMM" (0x0003)Channel: 1Channel: 1Profile Descriptor List:Profile Descriptor List:"LAN Access Using PPP" (0x1102)"LAN Access Using PPP" (0x1102)Version: 0x0100Version: 0x0100

(Récupération de la liste des profiles sur un device)

Page 38: Bluetooth on GNU Linux

UtilisationUtilisation 4/4 4/41. Lister les devices disponibles :

# hcitool scanScanning ... 00:13:70:E1:DC:66 Nokia 6230 00:80:98:64:60:35 computer2-0

2. Lister des profiles disponible sur un device :

# sdptool browse 00:80:98:64:60:35Browsing 00:80:98:64:60:35 ...

Service Name: SDP ServerService Description: Bluetooth service discovery serverService Provider: BlueZService RecHandle: 0x0Service Class ID List: "SDP Server" (0x1000)Protocol Descriptor List: "L2CAP" (0x0100) PSM: 1 Version: 0x0001Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100

Service Name: Public Browse Group RootService Description: Root of public browse hierarchyService Provider: BlueZService RecHandle: 0x804d008Service Class ID List: "Browse Group Descriptor" (0x1001)Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x1003. connexion avec le device trouvé (ce dernier doit écouter sur le même canal) :

# rfcomm connect /dev/rfcomm0 00:80:98:64:60:35 4Connected /dev/rfcomm0 to 00:80:98:64:60:35 on channel 4Press CTRL-C for hangup

Le serveur écoutait avec la commande suivante :

# rfcomm listen /dev/rfcomm0 4

Page 39: Bluetooth on GNU Linux

Autres outilsAutres outils Obextool : OBEX-OPP server.Obextool : OBEX-OPP server.

Pairingd : Wifi/Bluetooth pairing authorization server management.Pairingd : Wifi/Bluetooth pairing authorization server management.

CTP server for TCS protocol connected with hphone H323 VoIP server.CTP server for TCS protocol connected with hphone H323 VoIP server.

Le deamon Bluetooth pour KDE (Kbluetooth).Le deamon Bluetooth pour KDE (Kbluetooth).

http://www.xmailserver.org/ussp-push.htmlhttp://www.xmailserver.org/ussp-push.html

http://http://rosko.netrosko.net//osposp//

http://http://www.geektown.dewww.geektown.de//develdevel//blue-cmd.plblue-cmd.pl

http://freshmeat.net/search/?q=bluetooth&section=projects&Go.x=0&Go.y=0

Page 40: Bluetooth on GNU Linux

Programmation Programmation 1/21/2include <s t d i o . h>#include <s t d l i b . h>#include <uni s td . h>#include <sys / s o c k e t . h>#include <blue to o th / blue to o th . h>#include <blue to o th / hc i . h>#include <blue to o th / h c i l i b . h>int main ( int argc , char argv ){i n q u i r y i n f o i i = NULL;int max rsp , num rsp ;int dev id , sock , len , f l a g s ;int i ;char addr [ 1 9 ] = { 0 } ;char name [ 2 4 8 ] = { 0 } ;dev id = h c i g e t r o u t e (NULL) ;sock = hc i open dev ( dev id ) ;i f ( dev id < 0 | | sock < 0) {pe r r o r ( ” opening s o c k e t ” ) ;e x i t ( 1 ) ;}l en = 8 ;max rsp = 2 5 5 ;f l a g s = IREQ CACHE FLUSH;i i = ( i n q u i r y i n f o )mal loc (max rsp sizeof ( i n q u i r y i n f o ) ) ;num rsp = h c i i n q u i r y ( dev id , len , max rsp, NULL, &i i , f l a g s ) ;i f ( num rsp < 0 ) pe r r o r ( ” h c i i n q u i r y” ) ;for ( i = 0 ; i < num rsp ; i++) {ba 2 s t r (&( i i+i ) >bdaddr , addr ) ;−memset (name , 0 , s izeof (name ) ) ;i f ( hc i r ead r emo t e name ( sock , &( i i+i) >bdaddr , s izeof (name ) ,−name , 0) < 0)s t r cpy (name , ” [ unknown ] ” ) ;p r i n t f ( ”%s %s \n” , addr , name ) ;42}f r e e ( i i ) ;c l o s e ( sock ) ;return 0 ;}

Ce premier listing réserve les ressources BlueTooth, puis effectueun scan des devices alentours en affichant leurs noms.

typedef struct {u i n t 8 t b [ 6 ] ;} a t t r i b u t e ( ( packed ) ) bdaddr t ;

Page 41: Bluetooth on GNU Linux

Programmation Programmation 2/22/2

#include <s t d i o . h>#include <uni s td . h>#include <sys / s o c k e t . h>#include <blue to o th / blue to o th . h>#include <blue to o th /rfcomm . h>int main ( int argc , char argv ){struct s o c k addr r c l o c addr = { 0 } , rem addr= { 0 } ;char buf [ 1 0 2 4 ] = { 0 } ;int s , c l i e n t , by t e s r e ad ;int opt = s izeof ( rem addr ) ;// a l l o c a t e s oc k e ts = s o c k e t (AF BLUETOOTH, SOCK STREAM,BTPROTORFCOMM) ;// bind s oc k e t to por t 1 of the f i r s t a v a il a b l e// l o c a l b l u e t o o t h adapt e rl o c addr . r c f ami l y = AF BLUETOOTH;l o c addr . r c bdaddr = BDADDRANY;l o c addr . r c channe l = ( u i n t 8 t ) 1 ;bind ( s , ( struct sockaddr )&lo c addr , s izeof (l o c addr ) ) ;// put s oc k e t int o l i s t e n i n g model i s t e n ( s , 1 ) ;// ac c ept one conne c t ionc l i e n t = a c c ept ( s , ( struct sockaddr )&remaddr , &opt ) ;ba 2 s t r ( &rem addr . rc bdaddr , buf ) ;f p r i n t f ( s tde r r , ” accepted conne c t ionfrom %s \n” , buf ) ;memset ( buf , 0 , s izeof ( buf ) ) ;// read data from the c l i e n tby t e s r e ad = read ( c l i e n t , buf , s izeof (buf ) ) ;i f ( by t e s r e ad > 0 ) {p r i n t f ( ” r e c e i v e d [%s ] \ n” , buf ) ;}// c l o s e conne c t ionc l o s e ( c l i e n t ) ;c l o s e ( s ) ;return 0 ;}

L'utilisation des connexions RFCOMM fonctionne sur le même principes que lessockets BSD.

La seule différence est la structured'adresse ; les fonctions de gestion dubyte order sont toujours d'actualité.

L'exemple suivant montre commentétablir une connexion via une socketRFCOMM, en transférant des donnéeset en se déconnectant.

Pour simplifier le code source, l'adresseMAC du client a été hardcodé.

Page 42: Bluetooth on GNU Linux

Liens Liens 1/21/2

http://www.holtmann.org/lecture/bluetooth/Bluetooth.pdfhttp://www.holtmann.org/lecture/bluetooth/Bluetooth.pdf http://www.holtmann.org/linux/bluetooth/http://www.holtmann.org/linux/bluetooth/ http://www.linux-kongress.org/2002/papers/lk2002-yang.pdfhttp://www.linux-kongress.org/2002/papers/lk2002-yang.pdf http://www.bluez.org/faq.htmlhttp://www.bluez.org/faq.html http://fr.wikipedia.org/wiki/Bluetoothhttp://fr.wikipedia.org/wiki/Bluetooth http://www.imc.org/pdi/http://www.imc.org/pdi/ http://freshmeat.net/projects/bluez/http://freshmeat.net/projects/bluez/ http://bluez.sourceforge.net/contrib/HOWTO-PANhttp://bluez.sourceforge.net/contrib/HOWTO-PAN http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci525695,00.htmlhttp://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci525695,00.html http://www.tutorial-reports.com/wireless/bluetooth/http://www.tutorial-reports.com/wireless/bluetooth/ http://www.niksula.cs.hut.fi/~jiitv/bluesec.htmlhttp://www.niksula.cs.hut.fi/~jiitv/bluesec.html https://www.bluetooth.org/https://www.bluetooth.org/ http://www.palowireless.com/infotooth/tutorial.asphttp://www.palowireless.com/infotooth/tutorial.asp http://www.palowireless.com/bluetooth/http://www.palowireless.com/bluetooth/ https://www.bluetooth.org/spec/https://www.bluetooth.org/spec/ http://www.omimo.be/magazine/00q4/2000q4_p028.pdfhttp://www.omimo.be/magazine/00q4/2000q4_p028.pdf http://www.bluetooth.org/foundry/adopters/document/Bluetooth_Specification_Guidelines/en/2/Bluetooth_Specification_Guidelines.pdfhttp://www.bluetooth.org/foundry/adopters/document/Bluetooth_Specification_Guidelines/en/2/Bluetooth_Specification_Guidelines.pdf http://www.bluetooth.org/foundry/adopters/document/Using_eSCO_in_Profiles_Whitepaper/en/1/Using_eSCO_in_Profiles_Whitepaper.pdfhttp://www.bluetooth.org/foundry/adopters/document/Using_eSCO_in_Profiles_Whitepaper/en/1/Using_eSCO_in_Profiles_Whitepaper.pdf http://upload.wikimedia.org/wikipedia/fr/3/3f/BluetoothCouches.pnghttp://upload.wikimedia.org/wikipedia/fr/3/3f/BluetoothCouches.png http://www.caside.lancs.ac.uk/java_bt.phphttp://www.caside.lancs.ac.uk/java_bt.php http://fr.wikipedia.org/wiki/Bande_de_fr%C3%A9quenceshttp://fr.wikipedia.org/wiki/Bande_de_fr%C3%A9quences http://www.pentest.co.uk/documents/wbf_slides.pdfhttp://www.pentest.co.uk/documents/wbf_slides.pdf http://www.pentest.co.uk/documents/wicon_2004.pdfhttp://www.pentest.co.uk/documents/wicon_2004.pdf http://www.bluetooth.com/upload/24Security_Paper.PDFhttp://www.bluetooth.com/upload/24Security_Paper.PDF http://fr.wikipedia.org/wiki/Bandes_de_fr%C3%A9quences_ISMhttp://fr.wikipedia.org/wiki/Bandes_de_fr%C3%A9quences_ISM http://www-128.ibm.com/developerworks/library/wi-checking/http://www-128.ibm.com/developerworks/library/wi-checking/ http://progtutorials.tripod.com/Bluetooth_Technology.htm#_Toc41989843http://progtutorials.tripod.com/Bluetooth_Technology.htm#_Toc41989843 http://www.holtmann.org/linux/bluetooth/rfcomm.htmlhttp://www.holtmann.org/linux/bluetooth/rfcomm.html

Page 43: Bluetooth on GNU Linux

Liens Liens 2/22/2

http://http://www.holtmann.org/linux/bluetoothwww.holtmann.org/linux/bluetooth// http://www.bluez.org/faq.htmlhttp://www.bluez.org/faq.html http://www-128.ibm.com/developerworks/wireless/library/wi-enable.htmlhttp://www-128.ibm.com/developerworks/wireless/library/wi-enable.html http://www.embedded.com//showArticle.jhtml?articleID=23901657http://www.embedded.com//showArticle.jhtml?articleID=23901657 http://www.embedded.com/2000/0007/0007ia1.htmhttp://www.embedded.com/2000/0007/0007ia1.htm http://www.embedded.com//showArticle.jhtml?articleID=23901596http://www.embedded.com//showArticle.jhtml?articleID=23901596 http://www.embedded.com//showArticle.jhtml?articleID=23901647http://www.embedded.com//showArticle.jhtml?articleID=23901647 http://www.embedded.com/showArticle.jhtml?articleID=14704720http://www.embedded.com/showArticle.jhtml?articleID=14704720 http://www.embedded.com/showArticle.jhtml?articleID=10700186http://www.embedded.com/showArticle.jhtml?articleID=10700186 http://www.embedded.com/showArticle.jhtml?articleID=9900985http://www.embedded.com/showArticle.jhtml?articleID=9900985 http://www.embedded.com/showArticle.jhtml?articleID=10700180http://www.embedded.com/showArticle.jhtml?articleID=10700180 http://www.embedded.com/showArticle.jhtml?articleID=9900867http://www.embedded.com/showArticle.jhtml?articleID=9900867 http://csdl.computer.org/comp/proceedings/hicss/2004/2056/09/205690306b.pdfhttp://csdl.computer.org/comp/proceedings/hicss/2004/2056/09/205690306b.pdf http://www.ece.ubc.ca/~johnsonl/Lee_Johnson_496FinalReport.pdfhttp://www.ece.ubc.ca/~johnsonl/Lee_Johnson_496FinalReport.pdf http://ieeexplore.ieee.org/iel5/10000/32117/01493717.pdf?arnumber=1493717http://ieeexplore.ieee.org/iel5/10000/32117/01493717.pdf?arnumber=1493717 http://www.hanscees.com/bluezhowto.htmlhttp://www.hanscees.com/bluezhowto.html http://www.jeremythompson.uklinux.net/RH8-0/bluezhowto.pdfhttp://www.jeremythompson.uklinux.net/RH8-0/bluezhowto.pdf http://www.holtmann.org/papers/bluetooth/wtc2003_slides.pdfhttp://www.holtmann.org/papers/bluetooth/wtc2003_slides.pdf http://www.item.ntnu.no/fag/ttm4705/kollokvie_presentasjoner_2004/bluetooth_security.ppthttp://www.item.ntnu.no/fag/ttm4705/kollokvie_presentasjoner_2004/bluetooth_security.ppt ftp://sdk-livebox.gforge.rd.francetelecom.fr/pub/sdk-livebox/linux-docs/Bluez-HowTo.pdfftp://sdk-livebox.gforge.rd.francetelecom.fr/pub/sdk-livebox/linux-docs/Bluez-HowTo.pdf See See http://http://www.bluetooth.orgwww.bluetooth.org/spec//spec/ for complete Bluetooth specifications. for complete Bluetooth specifications. http://www.holtmann.org/papers/bluetooth/wtc2003_slides.pdfhttp://www.holtmann.org/papers/bluetooth/wtc2003_slides.pdf http://people.csail.mit.edu/people/albert/pubs/ashuang-sm-thesis-2005.pdfhttp://people.csail.mit.edu/people/albert/pubs/ashuang-sm-thesis-2005.pdf

Page 44: Bluetooth on GNU Linux

- FIN -- FIN -