Guide du Bluetooth sous Gentoo Linux
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
<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
<M> HCI VHCI (Virtual HCI device) driver
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 |
# cat /proc/bus/usb/devices | grep -e^[TPD] | grep -e Cls=e0 -B1 -A1
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
# 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 |
# /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 |
# HCId options
options {
# Automatically initialize new devices
autoinit yes;
# 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;
# PIN helper
pin_helper /etc/bluetooth/pin-helper;
}
# Default settings for HCI devices
device {
# 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;
# 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 |
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
# 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 |
# 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 |
rfcomm0 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
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 |
# rfcomm connect 0
Connected /dev/rfcomm0 to 00:0A:0B:0C:0D:0E on channel 1
Press CTRL-C for hangup
# 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
# rfcomm -i hci0 connect 0 00:0A:0B:0C:0D:0E 1
|
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.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|