La technologie sans fil Bluetooth sert à connecter entre eux plusieurs périphériques (téléphones cellulaires, agendas personnels, dispositifs périphériques, ordinateurs portables) ou des composants système (clavier ou souris). Son nom vient du roi danois Harald Blaatand, surnommé « Harald la Dent bleue » (Bluetooth), qui a unifié en un seul royaume plusieurs factions ennemies de Scandinavie. Le logo Bluetooth est composé des runes correspondant aux initiales « H » (sorte d'étoile) et « B ».
La technologie Bluetooth se différencie sur plusieurs points importants de la technologie IrDA. Premièrement, les périphériques n'ont pas besoin de « se voir » les uns les autres directement et, deuxièmement, il possible de connecter plusieurs périphériques en réseau. Toutefois, le taux de transfert de données est au maximum de 720 Kbits/s (version 1.2 actuelle). En théorie, avec la technologie Bluetooth, il est même possible de communiquer à travers des murs. En pratique, cependant, cela dépend des propriétés du mur et de la classe de périphériques. Il existe trois classes de périphériques avec des portées de transmission allant de dix à cent mètres.
Les sections suivantes soulignent les principes de base du fonctionnement de la technologie Bluetooth. Vous obtiendrez des renseignements sur les configurations logicielles requises, sur l'interaction entre Bluetooth et votre système, ainsi que sur le fonctionnement des profils Bluetooth.
Pour pouvoir utiliser la technologie Bluetooth, vous avez besoin d'un adaptateur Bluetooth (intégré ou externe), de pilotes et d'une pile de protocoles Bluetooth. Le noyau Linux contient déjà les pilotes de base pour utiliser Bluetooth. Le système Bluez est utilisé comme pile de protocoles. Pour garantir le fonctionnement des applications avec Bluetooth, vous devez installer les paquetages de base bluez-libs et bluez-utils. Ces paquetages fournissent des services et des utilitaires requis. De plus, certains adaptateurs (Broadcom ou AVM BlueFritz!, par exemple) requièrent l'installation du paquetage bluez-firmware. Le paquetage bluez-cups permet d'imprimer via des connexions Bluetooth.
Un système Bluetooth se compose de quatre couches interdépendantes qui fournissent les fonctionnalités voulues :
L'adaptateur et un pilote approprié pour une prise en charge par le noyau Linux.
Pour contrôler le système Bluetooth.
Services contrôlés par les fichiers de configuration qui fournissent des fonctionnalités.
Les applications permettent à l'utilisateur d'utiliser et de contrôler les fonctionnalités fournies par les démons.
Lorsque vous insérez un adaptateur Bluetooth, son pilote est chargé par le système d'enfichage à chaud. Une fois le pilote chargé, le système recherche dans les fichiers de configuration des informations pour déterminer si le système Bluetooth doit être démarré. Si tel est le cas, il détermine les services à lancer. En fonction de ces informations, les démons correspondants sont lancés. Les adaptateurs Bluetooth sont examinés pendant leur installation. Si au moins un adaptateur est détecté, le système Bluetooth est activé. Sinon, le système Bluetooth est désactivé. Si vous ajoutez ultérieurement un périphérique Bluetooth, vous devez l'activer manuellement.
Avec la technologie Bluetooth, les services sont définis au moyen de profils (par exemple, le profil de transfert de fichiers, le profil d'impression de base et le profil de réseau personnel). Pour permettre à un périphérique d'utiliser les services d'un autre périphérique, ils doivent tous les deux comprendre le même profil. Or, cette information est souvent omise dans le paquetage et le manuel du périphérique. Malheureusement, certains fabricants ne respectent pas strictement les définitions de chaque profil. Malgré tout, la communication entre les périphériques fonctionne généralement sans problèmes.
Dans le texte suivant, les périphériques locaux sont ceux reliés physiquement à l'ordinateur. Tous les autres périphériques qui ne sont accessibles que via des connexions sans fil sont appelés périphériques distants.
Cette section sert d'introduction à la configuration Bluetooth. Vous apprendrez quels fichiers de configuration entrent en jeu, quels outils sont nécessaires et comment configurer Bluetooth avec YaST ou manuellement.
Pour configurer la prise en charge de Bluetooth sur votre système, utilisez le module YaST Bluetooth, illustré à la Figure 22.2, « Configuration YaST Bluetooth ». Dès que le système d'enfichage à chaud détecte un adaptateur Bluetooth sur votre système (par exemple, pendant le démarrage ou lorsque vous branchez un adaptateur), Bluetooth est automatiquement lancé selon les paramètres configurés dans ce module.
À la première étape de la configuration, déterminez si les services Bluetooth doivent être lancés sur votre système. Si vous avez activé les services Bluetooth, vous pouvez configurer deux éléments. Premièrement, le . Il s'agit du nom affiché par les autres périphériques une fois que votre ordinateur a été détecté. Il existe deux variables d'emplacement : %h, qui remplace le nom d'hôte du système (pratique, par exemple, s'il est assigné de manière dynamique par DHCP), et %d, qui insère le numéro d'interface (utile uniquement si plusieurs adaptateurs Bluetooth sont installés sur votre ordinateur). Par exemple, si vous entrez Laptop %h dans le champ et si DHCP assigne le nom unit123 à votre ordinateur, les autres périphériques distants vont identifier votre ordinateur comme Laptop unit123.
Le paramètre est lié au comportement du système local lorsqu'un périphérique distant tente de se connecter. La différence se situe au niveau de la gestion du code PIN (Personal Identification Number - numéro d'identification personnelle). Soit vous autorisez tout périphérique à se connecter sans code PIN, soit vous déterminez comment choisir le code PIN approprié si ce numéro est requis. Vous pouvez entrer un code PIN (enregistré dans un fichier de configuration) dans le champ de saisie approprié. Si un périphérique tente de se connecter, il commence par utiliser ce code PIN. S'il échoue, il change de comportement et n'utilise plus de code PIN. Pour une sécurité maximale, la meilleure option est . Cette option permet d'utiliser différents codes PIN pour différents périphériques (distants).
Cliquez sur pour ouvrir la boîte de dialogue dans laquelle vous sélectionnez et configurez les services disponibles (appelés profils dans Bluetooth). Tous les services disponibles s'affichent dans une liste. Vous pouvez les activer ou les désactiver en cliquant sur ou . Cliquez sur pour ouvrir la boîte de dialogue dans laquelle vous indiquez des arguments supplémentaires pour le service sélectionné (démon). N'effectuez des modifications que si vous êtes familiarisé avec ce service. Une fois les démons configurés, cliquez sur pour quitter cette boîte de dialogue.
De retour dans la boîte de dialogue principale, cliquez sur pour ouvrir la boîte de dialogue de la sécurité. Indiquez les paramètres de chiffrement, d'authentification et d'analyse. Quittez la boîte de dialogue de la sécurité pour revenir à la boîte de dialogue principale. Cliquez sur pour fermer la boîte de dialogue principale. Votre système Bluetooth est alors prêt.
Dans la boîte de dialogue principale, vous pouvez également accéder à la boîte de dialogue . Les périphériques Bluetooth sont regroupés en différentes classes de périphériques. Dans cette boîte de dialogue, choisissez la classe appropriée pour votre ordinateur ( ou , par exemple). La classe de périphérique n'est pas un élément très important, contrairement à la classe de service, que vous définissez également dans cette boîte de dialogue. Parfois, les périphériques Bluetooth distants, tels que les téléphones cellulaires, n'autorisent que certaines fonctions s'ils peuvent détecter la classe de service appropriée définie sur votre système. C'est souvent le cas des téléphones cellulaires qui attendent une classe intitulée pour autoriser le transfert des fichiers depuis ou à partir de l'ordinateur. Vous pouvez choisir plusieurs classes. Il n'est pas utile de sélectionner tous les classes « juste au cas où ». La sélection par défaut doit convenir à la plupart des cas.
Pour utiliser Bluetooth pour configurer un réseau, activez dans le boîte de dialogue et définissez le mode du démon à l'aide du menu . Pour une connexion réseau Bluetooth fonctionnelle, un démon de réseau personnel doit fonctionner en mode et son homologue en mode . Par défaut, le mode est prédéfini. Adaptez le comportement de votre démon de réseau personnel. De plus, configurez l'interface bnepX (X est le numéro du périphérique au sein du système) dans le module de YaST.
Les fichiers de configuration de chaque composant du système Bluez se trouvent dans le répertoire /etc/bluetooth. La seule exception est le fichier /etc/sysconfig/bluetooth servant au lancement des composants, qui est modifié par le module YaST.
Seul l'utilisateur root peut modifier les fichiers de configuration décrits ci-après. Actuellement, il n'existe pas d'interface graphique pour modifier tous les paramètres. Vous pouvez définir les principaux dans le module YaST Bluetooth, conformément à Section 22.2.2.1, « Configuration de la technologie Bluetooth avec YaST ». Tous les autres paramètres ne représentent un intérêt que pour les utilisateurs expérimentés, pour des cas particuliers. Les paramètres par défaut sont généralement suffisant.
Un code PIN fournit une protection de base contre les connexions indésirables. Les téléphones portables demandent généralement un code PIN lors de l'établissement du premier contact (ou lors de la configuration d'un contact de périphérique sur le téléphone). Pour que deux périphériques puissent communiquer entre eux, ils doivent s'identifier avec le même code PIN. Sur l'ordinateur, le code PIN se trouve dans le fichier /etc/bluetooth/pin.
![]() | Sécurité des connexions Bluetooth |
|---|---|
Malgré les codes PIN, la transmission entre deux périphériques n'est pas toujours totalement sécurisée. Par défaut, l'authentification et le chiffrement des connexions Bluetooth sont désactivés. Si vous activez l'authentification et le chiffrement, cela peut générer des problèmes de communication avec certains périphériques Bluetooth. | |
Vous pouvez modifier plusieurs paramètres, tels que le nom des périphériques et le mode de sécurité, dans le fichier de configuration /etc/bluetooth/hcid.conf. Les paramètres par défaut sont généralement suffisant. Ce fichier contient des commentaires décrivant les options des différents paramètres.
Deux sections dans le fichier inclus sont intitulées options et device. La première contient des informations générales que hcid utilise pour le démarrage. La deuxième contient les paramètres de chaque périphérique Bluetooth local.
L'un des paramètres les plus importants de la section options est security auto; (sécurité automatique). Si sa valeur est auto, hcid tente d'utiliser le code PIN local pour les connexions entrantes. En cas d'échec, sa valeur devient none (aucun) et il établit de toute façon la connexion. Pour une sécurité optimale, vous devez définir la valeur user (utilisateur) pour ce paramètre par défaut afin de garantir que le système demande à l'utilisateur d'entrer un code PIN chaque fois qu'il établit une connexion.
Définissez le nom sous lequel l'ordinateur s'affiche à l'autre extrémité, dans la section device (périphérique). Définissez dans cette section la classe de périphérique : Desktop (ordinateur de bureau), Laptop (ordinateur portable) ou Server (serveur). Vous pouvez également activer ou désactiver l'authentification et le chiffrement dans cette section.
L'opérabilité de Bluetooth dépend de l'interaction de plusieurs services. Au moins deux démons d'arrière-plan sont requis : hcid (pour « host controller interface daemon » ou démon d'interface du contrôleur hôte), qui sert d'interface pour le périphérique Bluetooth et qui contrôle ce dernier, et sdpd (pour « service discovery protocol daemon » ou démon de protocole de détection des services), grâce auquel un périphérique peut rechercher les services rendus disponibles par l'hôte. S'ils ne sont pas activés automatiquement au démarrage du système, vous pouvez activer les deux démons hcid et sdpd à l'aide de la commande rcbluetooth start. Cette commande doit être exécutée par un utilisateur root.
Les paragraphes suivants décrivent brièvement les outils de shell les plus importants que vous pouvez utiliser pour travailler avec Bluetooth. Même si plusieurs composants graphiques sont maintenant disponibles pour contrôler Bluetooth, cela peut valoir la peine de s'intéresser à ces programmes.
Certaines de ces commandes ne peuvent être exécutées que par l'utilisateur root. Cela concerne notamment la commande l2ping qui permet de tester la connexion à un périphérique distant.
adresse_du_périphérique
Utilisez hcitool pour déterminer si les périphériques locaux et distants sont détectés. La commande hcitool dev permet d'établir la liste des périphériques locaux. Comme résultat, une ligne au format nom_de_l'interface adresse_du_périphérique est générée pour chaque périphérique local détecté.
Recherchez les périphériques distants à l'aide de la commande hcitool inq. Trois valeurs sont renvoyées pour chaque périphérique détecté : l'adresse du périphérique, le décalage d'horloge et la classe du périphérique. L'adresse du périphérique est importante, car les autres commandes s'en servent pour identifier le périphérique cible. Le décalage d'horloge sert principalement pour des opérations techniques. La classe indique le type de périphérique et le type de service en tant que valeur hexadécimale.
Vous pouvez utiliser la commande hcitool name pour déterminer le nom d'un périphérique distant. Dans le cas d'un ordinateur distant, la classe et le nom du périphérique correspondent aux informations du fichier adresse_du_périphérique/etc/bluetooth/hcid.conf correspondant. Les adresses de périphériques locaux génèrent un message d'erreur.
La commande /usr/sbin/hciconfig propose d'autres informations sur le périphérique local. Si vous exécutez hciconfig sans arguments, vous obtenez des informations sur le périphérique, telles que son nom (hciX), l'adresse du périphérique physique (nombre à 12 chiffres au format 00:12:34:56:78), ainsi que des informations sur la quantité de données transmises.
La commande hciconfig hci0 name affiche le nom renvoyé par votre ordinateur lorsqu'il reçoit des requêtes depuis des périphériques distants. En plus d'effectuer des requêtes sur les paramètres d'un périphérique local, la commande hciconfig permet de modifier ces paramètres. Par exemple, hciconfig hci0 name TEST définit la valeur TEST pour le nom.
Vous pouvez utiliser le programme sdptool pour vérifier quels services sont rendus disponibles par un périphérique spécifique. La commande sdptool browse renvoie tous les services d'un périphérique. Utilisez la commande sdptool adresse_du_périphériquesearch pour rechercher un service spécifique. Cette commande recherche le service demandé sur tous les périphériques accessibles. Si l'un des périphériques propose ce service, le programme imprime le nom complet du service renvoyé par le périphérique avec une brève description. Utilisez la commande sdptool sans paramètres pour afficher la liste de tous les codes de service possibles.
code_du_service
Dans Konqueror, entrez l'adresse URL bluetooth:/ pour afficher la liste des périphériques Bluetooth locaux et distants. Double-cliquez sur un périphérique pour afficher la présentation des services qu'il propose. Si vous placez le pointeur de la souris sur l'un des services spécifiés, la barre d'état du navigateur indique le profil utilisé pour ce service. Si vous cliquez sur un service, une boîte de dialogue s'ouvre, avec un message qui vous demande quelle opération effectuer : enregistrer, utiliser le service (il faut alors démarrer une application) ou annuler cette opération. Cochez la case correspondante si vous ne voulez plus que cette boîte de dialogue s'affiche, mais si vous voulez que l'opération sélectionnée soit systématiquement exécutée. Certains services ne bénéficient pas encore d'une prise en charge. Pour d'autres, il se peut qu'il faille installer des paquetages supplémentaires.
Cette section propose deux exemples types des scénarios Bluetooth possibles. Le premier indique comment établir une connexion réseau entre deux hôtes via Bluetooth. Le second illustre une connexion entre un ordinateur et un téléphone portable.
Dans le premier exemple, une connexion réseau est établie entre les hôtes H1 et H2. Ces deux hôtes ont les adresses de périphérique Bluetooth badr1 et badr2 (déterminées sur les deux hôtes avec la commande hcitool dev, conformément à la description ci-avant). Les hôtes doivent être identifiés avec les adresses IP 192.168.1.3 (H1) et 192.168.1.4 (H2).
La connexion Bluetooth est établie à l'aide du démon pand (pour « personal area networking daemon » ou démon de réseau personnel). Les commandes suivantes doivent être exécutées par l'utilisateur root. Cette description se concentre sur les opérations propres à Bluetooth et ne propose pas une explication détaillée de la commande de réseau ip.
Entrez pand -s pour lancer le démon pand sur l'hôte H1. Vous pouvez ensuite établir une connexion sur l'hôte H2 à l'aide de pand -c . Si vous entrez ip badr1link show sur l'un des hôtes pour afficher la liste des interfaces réseau disponibles, vous obtenez des résultats qui doivent contenir une entrée comparable à celle ci-après :
bnep0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:12:34:56:89:90 brd ff:ff:ff:ff:ff:ff
À la place de 00:12:34:56:89:90, la sortie doit contenir l'adresse du périphérique local badr1 ou badr2. Maintenant, vous devez assigner une adresse IP à cette interface et activer cette dernière. Pour H1, vous pouvez exécuter ces opérations à l'aide des deux commandes suivantes :
ip addr add 192.168.1.3/24 dev bnep0 ip link set bnep0 up
Pour H2 :
ip addr add 192.168.1.4/24 dev bnep0 ip link set bnep0 up
Maintenant, vous pouvez accéder à H1 depuis H2 via l'adresse IP 192.168.1.3. Utilisez la commande ssh 192.168.1.4 pour accéder à H2 depuis H1, en considérant que H2 exécute un sshd, activé par défaut sous SUSE Linux. La commande ssh 192.168.1.4 peut également être exécutée par un utilisateur normal.
Ce second exemple montre comment transférer une photo prise avec un téléphone portable doté d'un appareil photo intégré vers un ordinateur (sans que des frais supplémentaires ne soient appliqués pour l'envoi d'un message multimédia). Même si la structure des menus peut varier d'un téléphone portable à l'autre, la procédure est généralement la même. Reportez-vous au manuel de votre téléphone, si nécessaire. Cet exemple décrit le transfert d'une photo depuis un téléphone portable Sony Ericsson vers un ordinateur portable. Le service Obex-Push doit être disponible sur l'ordinateur qui doit accorder des droits d'accès au téléphone portable. À la première étape, le service est rendu disponible sur l'ordinateur portable. Pour ce faire, utilisez le démon opd du paquetage bluez-utils. Lancez ce démon à l'aide de la commande suivante :
opd --mode OBEX --channel 10 --daemonize --path /tmp --sdp
Deux paramètres importants sont utilisés : --sdp, qui enregistre le service auprès de sdpd, et --path /tmp, qui indique au programme où enregistrer les données reçues (dans le cas présent, dans /tmp). Vous pouvez également indiquer un autre répertoire pour lequel vous disposez des droits d'écriture.
Maintenant, le téléphone portable doit « apprendre » à identifier l'ordinateur. Pour ce faire, ouvrez le menu du téléphone et sélectionnez . Si nécessaire, cliquez sur avant de sélectionner . Sélectionnez et laissez votre téléphone rechercher l'ordinateur portable. S'il détecte un périphérique, il en affiche le nom à l'écran. Sélectionnez le périphérique associé à l'ordinateur portable. Si votre code PIN vous est demandé, entrez celui spécifié dans le fichier /etc/bluetooth/pin. Maintenant, votre téléphone reconnaît l'ordinateur portable et ils peuvent échanger des données. Quittez le menu en cours et accédez à celui des images. Sélectionnez l'image à transférer et appuyez sur . Dans le menu suivant, appuyez sur pour sélectionner un mode de transmission. Sélectionnez . L'ordinateur portable doit s'afficher dans la liste des périphériques cibles. Sélectionnez l'ordinateur portable pour lancer la transmission. L'image est ensuite enregistrée dans le répertoire indiqué dans la commande opd. Procédez de la même manière pour transférer des pistes audio vers l'ordinateur portable.
Si vous rencontrez des difficultés pour établir une connexion, procédez comme suit. N'oubliez pas que l'erreur peut provenir d'une extrémité ou l'autre de la connexion, ou des deux. Si possible, exécutez de nouveau la procédure qui pose problème avec un autre périphérique Bluetooth pour vérifier que ce n'est pas le périphérique qui est défectueux.
dev ?
Si le périphérique local ne s'affiche pas dans cette liste, hcid n'a pas été lancé ou le périphérique n'est pas reconnu en tant que périphérique Bluetooth. Plusieurs causes sont possibles. Il se peut que le périphérique soit défectueux ou que le pilote approprié soit absent. Les ordinateurs portables avec technologie Bluetooth intégrée sont souvent doté d'un interrupteur marche/arrêt pour les périphériques sans fil, tels que WLAN et Bluetooth. Reportez-vous au manuel de votre ordinateur portable pour vérifier s'il est doté d'un tel interrupteur. Redémarrez le système Bluetooth avec la commande rcbluetooth restart et vérifiez si des erreurs sont signalées dans /var/log/messages.
Si oui, installez bluez-bluefw et redémarrez le système Bluetooth à l'aide de la commande rcbluetooth restart.
inq renvoie-t-elle d'autres périphériques ?Testez plusieurs fois cette commande. La connexion peut être perturbée par des interférences, car d'autres périphériques utilisent également la bande de fréquences Bluetooth.
Vérifiez si le code PIN de l'ordinateur (dans /etc/bluetooth/pin) est le même que celui du périphérique cible.
Tentez d'établir la connexion depuis le périphérique portable. Vérifiez si ce périphérique voit l'ordinateur.
Il se peut que la configuration décrite à Section 22.2.5.1, « Connexion réseau entre deux hôtes » ne fonctionne pas, et ce pour plusieurs raisons. Par exemple, il se peut que l'un des deux ordinateurs ne prenne pas en charge le protocole ssh. Essayez la commande ping 192.168.1.3 ou ping 192.168.1.4. Si cette opération fonctionne, vérifiez si sshd est actif. Autre problème possible : l'un des deux périphériques a déjà des paramètres réseau qui génèrent un conflit avec l'adresse 192.168.1.X de l'exemple. Si tel est le cas, essayez avec d'autres adresses, telles que 10.123.1.2 et 10.123.1.3.
Dans , sélectionnez le périphérique correspondant et affichez la liste des . Si Obex-Push ne s'affiche pas (même après la mise à jour de la liste), le problème vient d'opd sur l'ordinateur portable. opd est-il actif ? Disposez-vous de droits d'écriture sur le répertoire spécifié ?
Si le paquetage obexftp est installé, vous pouvez utiliser la commande obexftp -b sur certains périphériques. Des tests ont été menés sur plusieurs modèles Siemens et Sony Ericsson qui sont fonctionnels. Reportez-vous à la documentation indiquée dans adresse_du_périphérique -B 10 -p image/usr/share/doc/packages/obexftp.
Pour obtenir une présentation détaillée de différentes instructions pour utiliser et configurer Bluetooth, reportez-vous au site http://www.holtmann.org/linux/bluetooth/. Autres informations et instructions pratiques :
Mode d'emploi officiel de la pile de protocoles Bluetooth intégrée au kernel : http://bluez.sourceforge.net/howto/index.html
Connexion à un assistant personnel PalmOS : http://www.cs.ucl.ac.uk/staff/s.zachariadis/btpalmlinux.html