Bluetooth est une technologie radio qui permet de connecter plusieurs appareils entre eux : téléphones mobiles, PDA, périphériques ou composants système tels que clavier ou souris, ordinateurs portables. Le nom provient du roi danois Harold Blatand (« Harold Bluetooth » en anglais) qui a unifié au dixième siècle différentes factions se combattant entre elles en Scandinavie. Le logo de Bluetooth est basé sur les runes représentant les lettres « H » (qui ressemble à une étoile) et « B ».
Bluetooth se distingue de l'IrDA en plusieurs points essentiels : d'une part, les différents appareils n'ont pas besoin de se « voir » directement pour échanger des données, d'autre part il est possible de mettre au point des réseaux entiers en rassemblant plusieurs appareils. Cette technologie ne permet toutefois d'atteindre que des débits de 720 Kbit/s maximum (dans la version 1.1 actuelle). En théorie, on peut, avec Bluetooth, envoyer des données par radio à travers les murs. Dans la pratique, cela dépend fortement des murs en question et du type des appareils. Enfin, la portée maximale d'envoi est répartie en trois classes qui varient de dix à cent mètres.
Les sections suivantes présentent les principes de base du fonctionnement de Bluetooth. Vous y apprendrez à quels besoins logiciels vous devez satisfaire, quelles sont les interactions de Bluetooth avec votre système et comment les profils Bluetooth fonctionnent.
Pour pouvoir utiliser Bluetooth, vous avez besoin d'un adaptateur Bluetooth
(intégré à l'appareil ou sous la forme d'une périphérique externe),
de pilotes et de ce que l'on appelle une « pile de protocoles
Bluetooth ».
Le noyau Linux contient déjà les pilotes de base permettant d'utiliser
Bluetooth. On utilise comme pile de protocoles le système
Bluez. Afin que les différentes applications
puissent fonctionner avec Bluetooth, vous devez, en outre, installer les
paquetages de base suivants :
bluez-libs et
bluez-utils qui préparent
quelques services et utilitaires nécessaires. Pour quelques
adaptateurs (Broadcom, AVM
BlueFritz!), il est par ailleurs nécessaire d'installer
bluez-firmware. Le paquetage
bluez-cups permet l'impression via
une connexion Bluetooth.
Un système Bluetooth est constitué de quatre couches imbriquées de manière à fournir en bout de chaîne les fonctions souhaitées :
L'adaptateur et le pilote approprié qui assure la prise en charge par le noyau Linux.
Le paramétrage du système Bluetooth
Services qui, par l'intermédiaire des commandes du fichier de configuration, mettent à disposition les fonctionnalités.
Programmes qui permettent à l'utilisateur d'utiliser et de piloter les fonctionnalités mises à disposition par les démons.
À l'insertion de l'adaptateur Bluetooth, le pilote correspondant est chargé par le système Hotplug. Une fois le pilote chargé, les fichiers de configuration permettent de vérifier si Bluetooth doit être démarré. Si tel est le cas, le système détermine également quels services doivent être démarrés. Les démons correspondants sont alors lancés en conséquence. Les adaptateurs Bluetooth sont recherchés lors de l'installation. Si un ou plusieurs sont trouvés, Bluetooth est activé. Sinon, le système Bluetooth est désactivé. Chaque périphérique Bluetooth ajouté ultérieurement doit être activé manuellement.
Dans Bluetooth, les services sont définis au moyen de ce que l'on appelle des profils. On définit ainsi dans le standard Bluetooth des profils pour le transfert de données (« File Transfer »), l'impression (« Basic Printing ») et les connexions réseau (« Personal Area Network »). Pour qu'un appareil puisse utiliser le service d'un autre, ces deux appareils doivent pouvoir comprendre le même profil—information qui, souvent, n'est malheureusement disponible ni sur l'emballage ni dans le manuel des appareils concernés. Cela est d'autant plus compliqué que tous les fabricants ne respectent pas scrupuleusement les définitions des différents profils. En règle générale toutefois, la compréhension entre les appareils fonctionne plutôt bien.
Dans le texte qui suit, les périphériques locaux sont ceux connectés physiquement à l'ordinateur. Tous les autres périphériques auxquels on ne peut accéder qu'à travers des connexions sans fil sont appelés des périphériques distants.
Cette section présente la configuration Bluetooth. Vous y apprendrez quels sont les fichiers de configuration impliqués, quels outils sont nécessaires et comment configurer Bluetooth à l'aide de YaST ou manuellement.
Avec le module Bluetooth de YaST, tel que dans la figure Figure 17.2, « Configuration Bluetooth dans YaST », vous pouvez configurer la prise en charge de Bluetooth sur votre système. Dès que Hotplug reconnaît un adaptateur Bluetooth connecté à votre système (par exemple, lors de l'amorçage ou si vous enfichez un adaptateur), Bluetooth est automatiquement démarré suivant les paramètres configurés dans ce module.
La première étape de la configuration vous permet de définir si des
services Bluetooth doivent être démarrés sur votre système.
Si vous avez activé les services Bluetooth, vous pouvez configuré deux choses.
Tout d'abord, le . Ceci est le nom
que d'autres périphériques affichent lorsque votre ordinateur a été détecté.
Il y a deux marques de réservation possibles—%h symbolise
le nom d'hôte du système (utile, par exemple, s'il est assigné dynamiquement par DHCP)
et %d insère le numéro d'interface (utile uniquement si vous il y a
plus d'un adaptateur Bluetooth dans votre ordinateur). Par exemple, si vous
entrez Laptop %h dans le champ de saisie et si DHCP assigne
le nom unit123 à votre ordinateur, d'autres périphériques distants
reconnaitront votre ordinateur comme Laptop unit123.
Le second paramètre est lié au comportement du système local lorsqu'un périphérique distant essaie de se connecter. La différence réside dans le traitement du numéro d'identification (pin). Soit vous autorisez tout périphérique à se connecter sans PIN, soit vous définissez comment le PIN correct est choisi s'il est nécessaire. Vous pouvez entrer un PIN (enregistré dans un fichier de configuration) dans le champ de saisie correspondant. Si un périphérique essaie de se connecter, il utilise d'abord ce PIN. Si cela ne fonctionne pas, il n'utilise pas de PIN. Pour assurer un sécurité maximale, il est préférable de choisir la troisième option, « Toujours demander le PIN ». Cette option vous permet d'utiliser des PIN différents pour des périphériques (distants) différents.
Cliquez sur le bouton pour entrer dans le dialogue de sélection et de configuration des services proposés (également connus dans Bluetooth sous le nom de Profils). Tous les services à votre disposition sont donnés dans une liste, et les boutons et permettent d'effectuer sur chaque service l'opération correspondante. Le bouton ouvre une nouvelle fenêtre dans laquelle vous pouvez fournir des arguments supplémentaires au service (démon) sélectionné. N'effectuez des modifications que dans les services que vous connaissez suffisamment bien. Lorsque la configuration du démon est terminée, vous quittez la boîte de dialogue en cliquant sur .
De retour dans la fenêtre principale, vous ouvrez un dialogue de configuration de la sécurité en cliquant sur qui vous permet de configurer les paramètres de chiffrement, d'authentification et de balayage. Fermez la fenêtre de configuration de la sécurité pour retourner à la boîte de dialogue principale. Quittez celle-ci en cliquant sur le bouton , votre système Bluetooth est prêt à être utilisé.
Depuis le dialogue principal, vous pouvez aussi atteindre le dialogue . Les périphériques Bluetooth sont groupés dans différentes « Classes de périphériques ». Dans ce dialogue, faites la sélection correcte pour votre ordinateur, par exemple « Bureau » ou « Portable ». La classe de périphériques n'est pas très importante contrairement à la « Classe de services » définie également ici. Quelquefois, des périphériques Bluetooth distants, tels que des téléphones portables, ne permettent certaines fonctions que s'ils peuvent détecter la classe de services correcte définie sur votre système. Ceci est souvent le cas de téléphones portables qui exigent une classe appelée « Transfert d'objet » avant de permettre le transfert de fichiers depuis ou vers l'ordinateur. Vous pouvez choisir des classes multiples. Il n'est pas utile de sélectionner toutes les classes « juste au cas où ». Dans la plupart des cas, la sélection par défaut devrait suffire.
Pour utiliser Bluetooth dans la construction d'un réseau,
activez dans la boîte de dialogue
puis, en choisissant
, ajustez le mode du démon. Pour que la
connexion réseau Bluetooth fonctionne, il est nécessaires qu'une instance
de pand fonctionne en mode
et que le récepteur soit en mode
. Par défaut, le mode
est préconfiguré. Ajustez le comportement de votre instance locale de
pand. De plus, vous pouvez, au moyen du module
de YaST, configurer l'interface
bnepX (X représente le numéro du
périphérique dans le système).
Les fichiers de configuration pour les composants individuels du système
Bluez se trouvent dans le répertoire
/etc/bluetooth. La seule exception à
cette règle est le fichier /etc/sysconfig/bluetooth
pour le démarrage des composants modifié par le module de YaST.
Vous ne pouvez modifier les fichiers de configuration présentés ci-après
qu'en tant qu'utilisateur root. Il
n'existe pour l'instant malheureusement pas encore d'interface utilisateur
graphique pour changer tous les paramètres.
Les plus importants peuvent être définis à l'aide du module Bluetooth de YaST
décrit dans Section 17.2.2.1, « Configuration Bluetooth avec YaST ».
Tous les autres paramètres ne sont relevants que pour des utilisateurs expérimentés
dans des cas spéciaux. Toutefois, en règle générale, les réglages d'origine devraient
suffire.
Une première protection contre les connexions indésirables consiste à
utiliser une protection par un numéro d'identification personnel (PIN). Les
téléphones portables demandent généralement à l'utilisateur de saisir son
numéro d'identification personnel lors du premier contact (ou de la
création d'un contact pour l'appareil sur le téléphone). Pour que deux
appareils puissent échanger des informations, ils doivent tous les deux
s'identifier avec le même numéro d'identification personnel. Ce dernier se
trouve dans le fichier /etc/bluetooth/pin sur
l'ordinateur.
![]() | Sécurité des connexions Bluetooth |
|---|---|
Malgré le numéro d'identification personnel, il faut garder à l'esprit qu'une connexion entre deux appareils n'est absolument pas garantie contre les écoutes. Prenez garde au fait qu'en mode d'émission, l'authentification et le chiffrement des connexions Bluetooth sont désactivées. Activer l'authentification et le chiffrement peut causer des problèmes de communication avec certains périphériques Bluetooth. | |
Le fichier de configuration /etc/bluetooth/hcid.conf
permet de modifier différents paramètres tels que les noms des
périphériques et le mode de sécurité. Normalement, les réglages par
défaut doivent suffire. Le fichier contient des commentaires qui décrivent
les options des différents paramètres. Nous évoquons ici rapidement deux
réglages particuliers.
Dans le fichier fourni se trouvent deux sections désignées par
options et device. La première
contient toutes les informations générales utilisées au démarrage
d'hcid, la seconde contient les réglages pour
les périphériques Bluetooth locaux individuels.
L'un des réglages les plus importants de la partie
options est security auto;. Il permet
d'activer la nécessité d'un numéro d'identification personnel.
auto, en cas de problème, permet de passer à
none (pas de numéro d'identification personnel nécessaire)
et d'établir la connexion dans tous les cas.
Pour un niveau de sécurité plus élevé, il est conseillé de régler cet
élément sur user, de façon à ce que l'utilisateur
doive fournir un numéro d'identification personnel à chaque connexion.
La section device est intéressante car elle permet de
définir le nom sous lequel l'ordinateur apparaît face à ses
correspondants. Les classes des appareils, telles que Desktop
(ordinateur de bureau), Laptop (ordinateur portable) et
Server (serveur), sont également définis ici, ainsi que l'authentification
et le chiffrement.
Ce n'est qu'après avoir combiné plusieurs services que Bluetooth peut
véritablement être utilisé. Vous avez besoin d'au moins deux démons à
exécuter en tâche de fond : d'une part,
hcid (host controller interface) qui sert d'interface
avec l'appareil Bluetooth et le pilote et d'autre part, sdpd (service
discovery protocol).
sdpd permet à un appareil de découvrir quels
services l'ordinateur propose. Aussi bien hcid que
sdpd peuvent, si cela ne se produit pas
déjà automatiquement lors du démarrage du système, être mis en
service avec la commande
rcbluetooth start. Cependant,
cette commande doit être exécutée par l'utilisateur root.
Dans la suite nous traiterons brièvement des plus importants outils en mode ligne de commande qui peuvent être utilisés pour travailler avec Bluetooth. Même si Bluetooth peut être utilisé par le biais de différents composants graphiques, nous vous recommandons de jeter un œil à ces programmes.
Certaines commandes ne peuvent être lancées qu'en tant qu'utilisateur root.
C'est le cas de l2ping
qui permet de tester la connexion avec un périphérique distant.
device_address
hcitool permet de déterminer facilement si des
périphériques locaux et des périphériques distants ont été détectés. La commande
hcitool dev permet d'afficher les
périphériques locaux. Le résultat génère, pour chaque
périphérique local trouvé, une ligne de la forme suivante :
nom-interface
adresse-périphérique.
Utilisez la commande hcitool inq
pour rechercher des périphériques distants. Vous obtenez ici trois valeurs
par périphérique trouvé : l'adresse du périphérique, le décalage horaire
et la classe du périphérique. La plus importante est
l'adresse du périphérique. Elle est utilisée par d'autres commandes pour
identifier le périphérique cible. La décalage horaire n'est normalement
intéressant que d'un point de vue technique. Dans la classe, le type de
périphérique et le type de service sont codés en valeur hexadécimale.
Vous pouvez utiliser la commande hcitool name
pour obtenir le nom d'un appareil distant.
S'il s'agit alors d'un ordinateur distant, la classe et le nom de l'appareil
obtenus correspondent alors aux informations contenues dans le fichier
adresse-périphérique/etc/bluetooth/hcid.conf de celui-ci. Les adresses
d'appareils locaux génèrent une erreur en sortie.
/usr/sbin/hciconfig fournit des informations
supplémentaires pour les périphériques locaux. L'appel de
hciconfig sans argument fournit des informations sur le
périphérique comme le nom du périphérique (hciX),
l'adresse physique du périphérique (12 chiffres sous la forme
00:12:34:56:78) ainsi que des informations sur la quantité de
données transmises.
hciconfig hci0 name
renvoie le nom qui est renvoyé par votre ordinateur à toute demande
d'appareils distants.hciconfig ne sert cependant pas
qu'à répondre aux requêtes des appareils vers l'appareil local, mais
permet également de modifier les paramètres. La commande
hciconfig hci0 name TEST
permet de donner à l'appareil le nom TEST.
Utilisez le programme sdptool pour savoir quel service est mis à disposition par
un appareil donné. La commande sdptool browse
fournit une liste de tous les services d'un appareil, tandis que sdptool
adresse_périphériquesearch
permet de rechercher un service donné. Cet appel interroge tous les appareils qui
peuvent être joints pour leur demander s'ils proposent le service recherché. S'il est
effectivement proposé par un appareil, le programme indique le nom du service
complet proposé par l'appareil et une brève description. Pour obtenir une liste de
tous les codes de services possibles, exécutez la commande
sdptool sans paramètre particulier.
code_service
Konqueror vous permet d'afficher la liste des périphériques Bluetooth locaux et
distants grâce à l'URL bluetooth:/. Un double clic sur le périphérique
vous affiche une vue d'ensemble des services proposés par ce périphérique. Si vous
passez la souris sur un des services fournis, vous pouvez voir dans la barre
d'état du navigateur le profil utilisé pour ce service. Cliquez sur un
service, une fenêtre apparaît alors pour vous demander ce que vous désirez
faire : enregistrer, utiliser le service (il faut pour cela qu'un
programme utilisateur soit lancé) ou annuler votre action. Vous pouvez aussi
cocher une case pour que cette fenêtre ne s'affiche plus mais exécute
toujours une action que vous aurez choisie. Attention : pour certains
services il n'existe pas encore de prise en charge, et pour d'autres des
paquetages supplémentaires doivent éventuellement être installés.
Cette section présente deux exemples typiques de scénarios Bluetooth possibles. Le premier montre comment une connexion réseau entre deux hôtes peut être établie via Bluetooth. Le second montre une connexion entre un ordinateur et un téléphone portable.
Dans le premier exemple, on doit construire une connexion réseau entre deux
ordinateurs O1 und O2. Chacun des
deux ordinateurs possède une adresse de périphérique Bluetooth,
respectivement baddr1 et baddr2,
laquelle, comme il a été décrit ci-dessus, peut être définie à l'aide
de la commande hcitool dev sur
chaque ordinateur. Les ordinateurs doivent être identifiés par leur
adresse IP respective soit 192.168.1.3
(O1) et192.168.1.4
(O2).
La connexion Bluetooth a lieu grâce à pand (personal area networking). Les
commandes suivantes doivent être lancées par l'utilisateur root. Nous omettons délibérement
toute explication détaillée de la commande réseau ip
pour nous concentrer sur les actions propres à Bluetooth :
Sur l'ordinateur O1, on démarre pand avec la commande
pand -s. Sur le deuxième ordinateur
O2, on peut alors construire une connexion avec la
commande pand -c
. Si vous demandez
maintenant, sur l'un ou les deux ordinateurs, une liste des interfaces réseau à disposition,
avec la commande ip baddr1link show, vous
devez obtenir une réponse de la forme suivante :
bnep0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:12:34:56:89:90 brd ff:ff:ff:ff:ff:ff
L'adresse de périphérique locale baddr1 ou
baddr2doit figurer à la place de
00:12:34:56:89:90. Il faut à présent associer à cette
interface une adresse IP et l'activer.
Utilisez pour ce faire, sur O1, les deux commandes :
ip addr add 192.168.1.3/24 dev bnep0 ip link set bnep0 up
ou, de la même manière, sur O2 :
ip addr add 192.168.1.4/24 dev bnep0 ip link set bnep0 up
O1 peut ainsi être joint par O2
sous l'adresse IP 192.168.1.3. Avec la commande
ssh 192.168.1.4, vous pouvez à
présent vous connecter sur O2 à partir
d'O1, dans la mesure où sshd fonctionne sur
O2 comme c'est le cas par défaut
sous SUSE LINUX. La commande ssh
192.168.1.4 fonctionne du reste
désormais aussi en tant qu'utilisateur normal.
Le deuxième exemple consiste à transférer sur un ordinateur une image
prise par un téléphone portable doté d'un appareil photo (sans coûts
supplémentaires liés à l'envoi d'un message multimédia). Notez que
chaque téléphone portable possède une arborescence de menus qui lui est
propre mais que le processus est la plupart du temps analogue. Consultez si
nécessaire le mode d'emploi de votre téléphone. Vous trouverez ci-après
une description du transfert d'une photo d'un téléphone Sony Ericsson vers
un ordinateur portable. Il faut, pour ce faire, que le service
Obex-Push soit disponible sur l'ordinateur et
d'autre part que l'ordinateur autorise l'accès au téléphone portable. La
première étape consiste à rendre disponible le service sur l'ordinateur
portable. Utilisez pour cela le démon opd
extrait du paquetage bluez-utils.
Démarrez-le avec :
opd --mode OBEX --channel 10 --daemonize --path /tmp --sdp
Deux paramètres sont utilisés : --sdp déclare le
service auprès de sdpd et --path /tmp indique au programme
où il doit enregistrer les données reçues—dans le cas présent, dans
/tmp. Vous pouvez indiquer d'autres
chemins exactement de la même manière. Il vous suffit de disposer des
droits d'écriture dans le répertoire concerné.
À présent, le téléphone portable doit reconnaître l'ordinateur. Cherchez
alors le menu du téléphone et choisissez
l'option . Allez dans avant de choisir l'option . Choisissez et laissez
votre téléphone chercher l'ordinateur portable. Lorsqu'un appareil est
trouvé, son nom s'affiche à l'écran. Choisissez l'appareil correspondant
à l'ordinateur portable. Une demande de numéro d'identification personnel
doit ensuite s'afficher, dans laquelle vous devez saisir le numéro
d'identification personnel extrait de
/etc/bluetooth/pin. Cela permet ainsi au téléphone de
reconnaître le portable et donc d'échanger des données avec celui-ci.
Quittez à présent ce menu et cherchez le menu des photos. Choisissez une
photo que vous souhaitez transférer, puis appuyez sur le bouton
. Dans le menu qui s'affiche à présent,
, vous disposez d'un choix de différents modes
d'expédition. Choisissez . Le portable doit
à présent pouvoir être choisi comme appareil cible. Une fois l'ordinateur
sélectionné, le transfert a lieu et la photo est placée dans le
répertoire indiqué par la commande opd. Vous
pourriez procéder de la même manière bien entendu pour transférer un
morceau de musique.
En cas de problème de connexion, veuillez vérifier les points de la liste suivante. N'oubliez cependant pas que le problème peut se trouver de part et d'autre de la connexion, et dans le pire des cas des deux côtés. Dans la mesure du possible, vous devez essayer de comprendre le problème en utilisant un appareil Bluetooth supplémentaire afin de pouvoir écarter les problèmes liés au matériel.
dev ?
Si le périphérique local n'est pas affiché, c'est que soit
hcid n'est pas démarré, soit que l'appareil
n'est pas reconnu en tant qu'appareil Bluetooth (soit parce que le pilote
ne le reconnaît pas, soit parce que l'appareil est défectueux).
Les ordinateurs portables avec Bluetooth intégré sont souvent équipés d'un
interrupteur pour des périphériques sans fil tels que WLAN et Bluetooth. Vérifiez le manuel
de votre ordinateur portable pour voir si votre appareil a un tel interrupteur. Utilisez
la commande rcbluetooth restart
pour redémarrer le démon et consultez
/var/log/messages pour rechercher d'éventuelles
erreurs.
Dans ce cas, veuillez installer
bluez-bluefw et redémarrer le
système Bluetooth avec la commande
rcbluetooth restart.
inq
renvoie-t-elle d'autres appareils ?Testez cette commande plusieurs fois. Il peut arriver que la connexion ait des interférences parce que la bande de fréquence utilisée par Bluetooth est également utilisée par d'autres appareils.
Vérifiez si le numéro d'identification personnel (dans
/etc/bluetooth/pin) correspond à celui de l'appareil
cible utilisé.
Essayez d'établir la connexion à partir de l'autre périphérique. Vérifiez si cet appareil voit l'ordinateur.
Si le premier exemple (connexion réseau) ne fonctionne pas, il existe
plusieurs causes possibles : tout d'abord, cela peut être dû au
fait que l'un des deux ordinateurs ne comprend pas le protocole
ssh. Essayez de voir si
ping 192.168.1.3 ou
ping 192.168.1.4 fonctionnent.
Dans l'affirmative, vérifiez si sshd
fonctionne. Un autre problème peut être que l'un des deux périphériques a des
paramètres qui entrent en conflit avec l'adresse 192.168.1.X
citée dans l'exemple. Essayez tout
simplement avec d'autres adresses, telles que
10.123.1.2 et 10.123.1.3.
Allez dans le menu de l'appareil concerné et affichez la . Si Obex-Push n'y figure pas (même après la mise à jour de la liste), le problème vient alors d'opd sur le portable. opd est-il démarré ? Disposez-vous des droits d'écriture dans le répertoire indiqué ?
Si vous avez installé le paquetage obexftp, la commande obexftp
-b peut être utilisé pour quelques appareils.
Différents modèles des marques Siemens et Sony
Ericsson ont été testés et fonctionnent. Veuillez pour cela consulter
la documentation du paquetage
adresseappareil -B 10 -p
image/usr/share/doc/packages/obexftp.
Vous trouverez une bonne vue d'ensemble des différentes procédures à suivre pour utiliser et configurer Bluetooth à l'adresse suivante : http://www.holtmann.org/linux/bluetooth/ Autres informations et instructions utiles :
Howto officiel pour la pile de protocoles Bluetooth intégrée au noyau (page en anglais) : http://bluez.sourceforge.net/howto/index.html
Connexion avec un assistant numérique personnel PalmOS (page en anglais) : http://www.cs.ucl.ac.uk/staff/s.zachariadis/btpalmlinux.html