Gentoo Logo

Guide du Bluetooth sous Gentoo Linux

Table des matières :

1.  Introduction

Qu'est-ce que Bluetooth ?

Bluetooth est une spécification industrielle permettant à l'utilisateur de connecter et d'échanger des informations entre des périphériques tels des ordinateurs, des assistants personnels (PDA) ou des téléphones portables. L'utilisateur bénéficie ainsi d'une méthode sans fil abordable pour la transmission de données entre des périphériques. Il est également possible de créer de petits réseaux locaux et de synchroniser des périphériques via Bluetooth.

Contenu du guide

La première partie de ce guide consistera à configurer le noyau Linux et nous identifierons les divers périphériques Bluetooth connectés au système. Nous installerons enfin les principaux outils nécessaires au fonctionnement du Bluetooth.

La seconde partie couvrira la détection des périphériques distants ainsi que l'établissement d'une connexion entrante ou sortante pour ces périphériques. Nous utiliserons pour ce faire une communication par fréquence radio (RFCOMM, N.D.T. : Radio Frequency COMMunication).

La dernière partie détaillera les diverses applications qui peuvent tirer parti de la technologie Bluetooth.

2.  Configuration du système

Configuration du noyau

Nous n'expliquons ici que la configuration d'un noyau Linux 2.6. La plupart des périphériques Bluetooth étant connectés à un port USB, le support de l'USB doit également être activé. Veuillez vous référer pour cela au guide de l'USB sous Gentoo Linux.

Exemple de code 2.1 : Configuration pour un noyau 2.6

Networking --->

<*> Bluetooth subsystem support  --->

--- Bluetooth subsystem support
<M>   L2CAP protocol support
<M>   SCO links support
<M>   RFCOMM protocol support
[*]     RFCOMM TTY support
<M>   BNEP protocol support
[*]     Multicast filter support
[*]     Protocol filter support
<M>   HIDP protocol support

Bluetooth device drivers  --->
<M> HCI USB driver
[*]   SCO (voice) support
<M> HCI UART driver
[*]   UART (H4) protocol support
[*]   BCSP protocol support
[*]   Transmit CRC with every BCSP packet
<M> HCI BCM203x USB driver
<M> HCI BPA10x USB driver
<M> HCI BlueFRITZ! USB driver
(Les quatre pilotes ci-dessous concernent les périphériques Bluetooth
connectés à un port PCMCIA et ne sont disponibles que si vous avez sélectionné
le support PCMCIA dans votre noyau.)
<M> HCI DTL1 (PC Card) driver
<M> HCI BT3C (PC Card) driver
<M> HCI BlueCard (PC Card) driver
<M> HCI UART (PC Card) device driver
(Le pilote ci-dessous est prévu pour les émulateurs HCI (Host Controller
Interface, N.D.T. : interface de contrôle de l'hôte).)
<M> HCI VHCI (Virtual HCI device) driver

(Retournez à section « Device Drivers » et vérifiez que le support
de l'USB soit coché. Cela est nécessaire si vous utilisez un dongle Bluetooth,
ceux-ci étant le plus souvent connectés via l'USB.)
USB support  --->

<*> Support for Host-side USB
--- USB Host Controller Drivers
<M> EHCI HCD (USB 2.0) support
[ ]   Full speed ISO transactions (EXPERIMENTAL)
[ ]   Root Hub Transaction Translators (EXPERIMENTAL)
<*> OHCI HCD support
<*> UHCI HCD (most Intel and VIA) support
< > SL811HS HCD support

Nous pouvons maintenant redémarrer avec notre nouveau noyau. Si tout c'est bien passé, notre sytème supporte à présent Bluetooth.

Important : Vos périphériques USB sont peut-être configurés par défaut pour utiliser le mode HID plutôt que HCI. Si tel est le cas, utilisez hid2hci pour passer au mode HCI. Votre système ne se souviendra pas de ce changement au prochain redémarrage.

Exemple de code 2.2 : Identifier les périphériques Bluetooth

(Une façon d'identifier les périphériques Bluetooth.)
# cat /proc/bus/usb/devices | grep -e^[TPD] | grep -e Cls=e0 -B1 -A1
(Cls=e0(unk. ) correspond à l'adaptateur Bluetooth.)
T:  Bus=02 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0a12 ProdID=0001 Rev= 5.25
(Certains périphériques peuvent apparaître en utilisant la commande lsusb
disponible dans le paquet sys-apps/usbutils.)
# lsusb
Bus 003 Device 002: ID 046d:c00e Logitech, Inc. Optical Mouse
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 0db0:1967 Micro Star International Bluetooth Dongle

3.  BlueZ - La pile Bluetooth

Installer BlueZ

Nos périphériques étant reconnus par le noyau, nous devons à présent installer la couche logicielle nécessaire à la communication entre les périphériques et nos applications. BlueZ est la pile Bluetooth officielle pour Linux. Nous avons donc besoin des ebuilds bluez-libs et bluez-utils. Les périphériques qui requièrent un microcode Broadcom ou similaire peuvent avoir besoin du paquet bluez-firmware.

Exemple de code 3.1 : Installer bluez-libs et bluez-utils

# emerge net-wireless/bluez-libs net-wireless/bluez-utils

Configuration de BlueZ et pairage des codes PIN

Il est temps de voir si les périphériques Bluetooth ont bien été détectés par le système. Nous devons au préalable démarrer les services Bluetooth.

Exemple de code 3.2 : Lancement de hciconfig

(Démarrage du Bluetooth.)
# /etc/init.d/bluetooth start
* Starting Bluetooth ...
*     Starting hcid ...                                                 [ ok ]
*     Starting sdpd ...                                                 [ ok ]
*     Starting rfcomm ...                                               [ ok ]

# hciconfig
hci0:   Type: USB
        BD Address: 00:01:02:03:04:05 ACL MTU: 192:8  SCO MTU: 64:8
        DOWN
        RX bytes:131 acl:0 sco:0 events:18 errors:0
        TX bytes:565 acl:0 sco:0 commands:17 errors:0

Ceci montre que les périphériques Bluetooth ont été reconnus. Comme vous pouvez le voir, le périphérique est pour l'instant DOWN. Configurons-le afin de l'activer. Le fichier de configuration est /etc/bluetooth/hcid.conf. Les modifications à apporter au fichier de configuration vous sont indiquées ci-dessous. Pour de plus amples informations, veuillez vous référer au manuel man hcid.conf.

Exemple de code 3.3 : Éditer /etc/bluetooth/hcid.conf

(Les modifications recommandées à effectuer vous sont indiquées.)

# HCId options
options {
        # Automatically initialize new devices
        autoinit yes;

(Sélectionnez « auto » pour sécurité.)
        # Security Manager mode
        #   none - Security manager disabled
        #   auto - Use local PIN for incoming connections
        #   user - Always ask user for a PIN
        #
        security auto;

        # Pairing mode
        pairing multi;

(Vous n'avez besoin d'un assistant à la saisie du code PIN que si vous utilisez
<=bluez-libs-2.x et <=bluez-utils-2.x.)
(Modifier pin_helper afin d'utiliser /etc/bluetooth/pin-helper.)
        # PIN helper
        pin_helper /etc/bluetooth/pin-helper;
}

# Default settings for HCI devices
device {
(Spécifiez ici le nom de vos périphériques.
Vous pouvez choisir ce que vous voulez.)
        # Local device name
        #   %d - device id
        #   %h - host name
        name "BlueZ at %h (%d)";

        # Local device class
        class 0x3e0100;

        # Inquiry and Page scan
        iscan enable; pscan enable;

        # Default link mode
        lm accept;

        # Default link policy
        lp rswitch,hold,sniff,park;

(Laissez tel quel, sauf si vous savez exactement ce que vous faites.)
        # Authentication and Encryption (Security Mode 3)
        #auth enable;
        #encrypt enable;
}

À présent, nous devons configurer le code PIN du périphérique Bluetooth. Cela facilitera le pairage avec d'autres périphériques.

Exemple de code 3.4 : Éditer /etc/bluetooth/pin

(Remplacez 123456 par le code PIN de votre choix.)
123456

Important : Ce nombre (que vous avez choisi) doit impérativement être le même pour tous vos ordinateurs accueillant des périphériques Bluetooth. De cette façon, ils pourront être appariés. Ce nombre doit également être tenu secret car toute personne l'ayant en sa possession pourra établir une connexion avec vos périphériques.

Note : À partir de >=bluez-libs-3.x et >=bluez-utils-3.x, les assistants à la saisie du code PIN ont été remplacés par des gestionnaires de mots de passe. Il existe un certain nombre de gestionnaires de mots de passe qui vous aideront à gérer votre code PIN, bluez-gnome et kdebluetooth par exemple. Vous pouvez également utiliser passkey-agent (fourni par bluez-utils) en ligne de commande.

Configuration des services

Nous en avons terminé de la configuration de BlueZ, nous pouvons redémarrer les services nécessaires.

Exemple de code 3.5 : Démarrer le démon Bluetooth

# /etc/init.d/bluetooth restart
(Nous pouvons également l'ajouter au niveau d'exécution par défaut.)
# rc-update add bluetooth default
 * bluetooth added to runlevel default
 * rc-update complete.

Vérifiez que les démons Bluetooth soient bien démarrés. Si hcid et sdpd sont bien démarrés, alors vous avez correctement configuré Bluetooth. Ceci étant fait, vous pouvez vérifier si vos périphériques sont bien activés et qu'ils utilisent les paramètres que vous avez configuré.

Exemple de code 3.6 : Vérifier le bon démarrage des démons Bluetooth

(Vérifiez que les services fonctionnent correctement.)
# ps -ae | grep hcid
26050 ?        00:00:00 hcid
# ps -ae | grep sdpd
26054 ?        00:00:00 sdpd

# hciconfig -a
hci0:   Type: USB
        BD Address: 00:0A:0B:0C:0D:0E ACL MTU: 192:8 SCO MTU: 64:8
        UP RUNNING PSCAN ISCAN
        RX bytes:125 acl:0 sco:0 events:17 errors:0
        TX bytes:565 acl:0 sco:0 commands:17 errors:0
        Features: 0xff 0xff 0x0f 0x00 0x00 0x00 0x00 0x00
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
        Link policy: RSWITCH HOLD SNIFF PARK
        Link mode: SLAVE ACCEPT
        Name: 'BlueZ at bluehat (0)'
        Class: 0x3e0100
        Service Classes: Networking, Rendering, Capturing, Object Transfer,
        Audio
        Device Class: Computer, Uncategorized
        HCI Ver: 1.1 (0x1) HCI Rev: 0x1e7 LMP Ver: 1.1 (0x1) LMP Subver: 0x1e7
        Manufacturer: Cambridge Silicon Radio (10)

4.  Détecter et se connecter aux périphériques distants

Détecter les périphériques Bluetooth des autres ordinateurs

À ce stade, nous sommes en mesure de détecter les périphériques Bluetooth installés sur d'autres machines. La détection est indépendante du système d'exploitation sur lequel est installé le périphérique. Nous allons utiliser pour cela la commande hcitool.

Exemple de code 4.1 : Détecter les périphériques locaux

# hcitool dev
Devices:
        hci0    00:01:02:03:04:05

Exemple de code 4.2 : Scanner les périphériques distants

# hcitool scan
Scanning ...
        00:0A:0B:0C:0D:0E       Grayhat

Exemple de code 4.3 : Récupérer les informations sur les périphériques distants

# hcitool inq
Inquiring ...
        00:0A:0B:0C:0D:0E       clock offset: 0x5579    class: 0x72010c

Nous connaissons maintenant l'adresse MAC des périphériques Bluetooth distants. Nous pouvons donc vérifier si le pairage s'est effectué correctement.

Exemple de code 4.4 : Exécuter l2ping

# l2ping 00:0A:0B:0C:0D:0E
Ping: 00:0A:0B:0C:0D:0E from 00:01:02:03:04:05 (data size 20) ...
20 bytes from 00:0A:0B:0C:0D:0E id 200 time 69.85ms
20 bytes from 00:0A:0B:0C:0D:0E id 201 time 9.97ms
20 bytes from 00:0A:0B:0C:0D:0E id 202 time 56.86ms
20 bytes from 00:0A:0B:0C:0D:0E id 203 time 39.92ms
4 sent, 4 received, 0% loss

Configurer la communication par fréquence radio (RFCOMM)

Note : Cette étape est facultative.

Il est possible d'établir une connexion par fréquence radio avec d'autres périphériques Bluetooth grâce à la commande rfcomm. Cette étape ne sera que plus simple si quelques modifications sont apportées au fichier /etc/bluetooth/rfcomm.conf, en particulier pour ceux qui ont plusieurs périphériques supportant Bluetooth.

La section commençant par rfcomm0 { et se terminant par } est dédiée à la configuration du périphérique qui établira une connexion apparaissant sous /dev/rfcomm0. Dans notre exemple n'apparaît la connexion que pour un périphérique, mais vous pouvez en ajouter d'autres selon vos besoins.

Exemple de code 4.5 : Éditer /etc/bluetooth/rfcomm.conf

(Seules les modifications nécessaires sont indiquées.)
rfcomm0 {
        # Automatically bind the device at startup
        (Crée le noeud périphérique /dev/rfcomm0 au démarrage.)
        bind yes;

        # Bluetooth address of the device
        (Entrez l'adresse du périphérique auquel vous voulez vous connecter.)
        device 00:0A:0B:0C:0D:0E;

}

La configuration de RFCOMM étant terminée, cela rend possible la connexion à n'importe quel périphérique Bluetooth. Si l'étape de configuration du fichier/etc/bluetooth/rfcomm.conf a été faite, il suffit d'exécuter la commande ci-desous. Sinon, il existe une méthode alternative qui vous est indiquée à la suite de la commande précédente.

Exemple de code 4.6 : Établir une connexion RFCOMM

(Le « 0 » fait référence à rfcomm0 du fichier de configuration.)
# rfcomm connect 0 
Connected /dev/rfcomm0 to 00:0A:0B:0C:0D:0E on channel 1
Press CTRL-C for hangup

(Si /etc/bluetooth/rfcomm.conf n'a pas été édité.)
# rfcomm connect 0 00:0A:0B:0C:0D:0E 1
Connected /dev/rfcomm0 to 00:0F:DE:69:50:24 on channel 1
Press CTRL-C for hangup

Le premier paramètre après la commande de connexion correspond au nœud périphérique TTY qui sera utilisé pour RFCOMM (habituellement « 0 »). Le second paramètre est l'adresse MAC du périphérique distant. Le troisième paramètre est facultatif et indique quel canal doit être utilisé. Notez que la connexion ne peut se faire que si le périphérique fait partie des connexions entrantes. De ce fait, nous devons préciser explicitement qu'il faut écouter les connexions entrantes. La communication peut être interrompue à tout moment en appuyant sur CTRL+C.

Exemple de code 4.7 : Écouter les connexions RFCOMM entrantes

# rfcomm listen 0 1
Waiting for connection on channel 1

Tout comme la commande de connexion, la commande d'écoute peut recevoir deux paramètres. Le premier indique quel nœud périphérique TTY doit être utilisé (habituellement « 0 ») pour accepter la connexion RFCOMM, le second correspond au canal qui sera utilisé.

Chaque fois que vous utilisez la commande rfcomm, vous pouvez préciser quel périphérique matériel vous voulez utiliser. Ci-dessous, un exemple montrant comment indiquer le périphérique à utiliser pour les deux commandes précédentes.

Exemple de code 4.8 : Spécifier les périphériques à utiliser pour les connexions RFCOMM

# rfcomm -i hci0 listen 0 1
Waiting for connection on channel 1
(Pour écouter un périphérique spécifique.)
# rfcomm -i hci0 connect 0 00:0A:0B:0C:0D:0E 1
(Pour utiliser un périphérique spécifique lors de la
connexion à un autre périphérique.)

5.  Applications de bureau pour Bluetooth

Introduction

Un grand nombre d'applications de bureau pour Bluetooth sont disponibles. Nous avons donc choisi de diviser ce chapitre en trois parties, une pour Gnome, une pour KDE et une pour diverses applications.

Applications pour Gnome

Si vous êtes un utilisateur de Gnome, vous préférerez sûrement utiliser gnome-bluetooth. Il permet les opérations de base les plus courantes, comme vous pouvez le voir ci-dessous.

  • gnome-bluetooth-manager : Gestion des périphériques Bluetooth distants.
  • gnome-obex-send : Envoi de fichiers à d'autres périphériques.
  • gnome-obex-server : Réceptions de fichiers.

Exemple de code 5.1 : Installer gnome-bluetooth

# emerge gnome-bluetooth

Une entrée est rajoutée dans le menu Applications > Outils système à partir de laquelle vous pouvez facilement lancer « Bluetooth Manager » ou « Bluetooth File Sharing » afin de transférer des fichiers entre des périphériques.

Pour transférer des fichiers (la méthode simple) :

  • Du téléphone vers l'ordinateur - Envoyez le fichier depuis le téléphone via Bluetooth, il sera systématiquement stocké dans votre /home.

gnome-phone-manager est une fabuleuse application qui pourra vous servir à envoyer des messages vers votre téléphone et à en recevoir depuis ce dernier, tout cela uniquement à partir de votre ordinateur. Vous n'avez pas besoin de toucher à votre téléphone pour recevoir ou envoyer des messages puisque tout se passe au niveau de l'application. vous pouvez aussi être informé de vos nouveaux messages sur votre écran, si vous avez activé l'option dans Préférences. L'installation est comme toujours très simple.

Exemple de code 5.2 : Installer gnome-phone-manager

# emerge gnome-phone-manager

Application pour KDE

KDE utilise kdebluetooth qui, comme nous allons le voir, fournit plus d'outils que son homologue pour Gnome.

  • kbluetoothd : Méta-serveur Bluetooth.
  • kbtsearch : Utilitaire de recherche de périphériques/services Bluetooth.
  • khciconfig : Moniteur Bluetooth de KDE.
  • kioclient : Programme en ligne de commande pour KIO.
  • qobexclient : Le couteau suisse pour tester/developper le protocole obex.
  • kbtobexclient : Le Framework Bluetooth de KDE.
  • kioobex_start
  • kbtserialchat
  • kbemusedsrv : Serveur Bemused de KDE.
  • kbtobexsrv : Serveur OBEX Push pour Bluetooth de KDE.
  • kbluepin : Une application KPart de KDE.
  • auth-helper : Un assistant pour kbtobexsrv qui envoie une requête d'autentification pour un lien ACL donné.

Exemple de code 5.3 : Installer kdebluetooth

# emerge kdebluetooth

Autres applications intéressantes

  • app-mobilephone/obexftp : Transfert de fichiers par OBEX pour des téléphones portables.
  • app-mobilephone/bemused : Bemused est un système qui vous permet de contrôler la collection de musique de votre téléphone en utilisant Bluetooth.
  • app-pda/multisync : Multisync vous permet de synchroniser les contacts, le calendrier et les notes de votre téléphone portable avec ceux de votre ordinateur grâce à une connexion Bluetooth (ou autre connexion). Il permet par exemple la sauvegarde et la restauration de ces informations et la synchronisation avec le client de courriel Evolution. Le support de Bluetooth par multisync nécessite le mot-clé irmc dans votre variable USE.
  • net-wireless/opd et net-wireless/ussp-push sont des outils en ligne de commande (serveur et client) qui peuvent être utilisés pour envoyer des fichiers vers votre téléphone portable.

6.  Remerciements

Nous remercions particulièrement Marcel Holtmann pour son temps et son dévouement consacré au développement de Bluetooth et à la vérification de ce guide. Nous remercions également très fortement Douglas Russell pour avoir accompli des tests matériel complémentaires et amélioré ce guide.



Imprimer

Dernière mise à jour le 16 juillet 2009

La version originale de cette traduction n'est plus maintenue

Résumé : Ce guide explique comment réussir l'installation de périphériques Bluetooth sur son ordinateur, notamment la configuration du noyau. Il expose toutes les possibilités qu'offre une connexion Bluetooth afin de profiter pleinement des périphériques disposant de cette interface.

Ioannis Aslanidis
Auteur

Douglas Russell
Contributeur

Marcel Holtmann
Contributeur

Shyam Mani
Auteur

Łukasz Damentko
Correcteur

Joshua Saddler
Correcteur

Guillaume Bouzillé
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.