Bluetooth sous Linux

Dernière mise à jour : 14/04/2003

    Cette page va tenter de vous guider dans l'installation d'un périphérique Bluetooth sous Linux et de la communication avec un autre périphérique non connecté à votre machine. J'ai pour cela utilisé un dongle USB (c'est le connecteur sur la droite de la photo ci-dessous) qui vous permet de transformer n'importe quelle machine ayant un port USB en carte Bluetooth. Le second périphérique est mon téléphone cellullaire Sony Ericsson Ti68i qui possède le bluetooth d'entrée. J'ai mis à jour la page pour incorporer les dernières évolutions du projet BlueZ (cette page est la seconde édition).



    Pour bien débuter, il faut télécharger quelques sources à installer sur votre machine. Pour cela connectez vous sur le site de bluez qui fournit tous les fichiers nécessaires au support Bluetooth sous Linux. Bien que le kernel contienne une portion de code pour le bluetooth, je vous recommande de ne pas le compiler mais d'insérer plutôt les modules bluez à la place. Dans la page de téléchargement, récupérez les sources suivants : kernel, libs, utils, sdp, hcidump et rfcomm. Tel que bluez le recommande, ajoutez ceci dans votre /etc/modules.conf :
    Vous devez pour commencez télécharger un kernel 2.4.20 (c'est le seul kernel que j'ai réussit à compiler car vous avez besoin de ce patch, à appliquer selon le sacro-saint : cd /usr/src/linux ; gzip -cd patch-2.4.20-mh6.gz |patch -p1 et sélectionnez Bluetooth en module ainsi qu'au minimum : rfcomm et usb_hci). Compilez à présent chacun des sources un par un en commencant par le kernel. Faîtes donc un tar xvzf bluez-kernel-xxxx.tar.gz ; cd bluez-kernel-xxxx ; ./configure ; make ; make install ; ldconfig. Le depmod est secondaire car le make install le fait tout seul. Faîtes de même pour bluez-libs et bluez-utils (dans cet ordre, c'est important). Compilez et installez en dernier les bluez-sdp et bluez-hcidump (toujours dans l'ordre énoncé). Vous avez à présent un système prêt à recevoir le bluetooth. Terminez par rfcomm pour lequel vous devez décompacter puis aller dans le sous répertoire ussp pour construire le module avec make ; make install et créer les périphériques à l'aide du script mkdev.ussp. Compilez ensuite l'utilitaire rfcomm par les commandes classiques.
    Connectez à présent votre périphérique USB. Votre système devrait alors le repérer tout seul si vous avez configuré votre kernel correctement avec USB et si vous avez suivit le début de ce tutoriel pour installer les modules. Voici ce que me dit /var/log/messages :

    Ici, tout s'est bien passé car mon système possédait les bons devices dans /dev. En effet, par défaut, votre périphérique (enfin en tout cas le mien ;) tente de s'initialiser sur /dev/ttyUB0. Si vous ne l'avez pas dans votre système, créez le à l'aide de la commande suivante : mknod /dev/ttyUB0 c 216 0. Attention : les possesseurs de distributions utilisant devfs devront utiliser leur fichier de configuration (généralement /etc/devfsd.conf) pour rentrer les paramètres nécessaires à la création du périphérique (lisez la documentation disponible sur le site des modules bluez, tout y est expliqué en Anglais). Vous devez ensuite vérifier que votre périphérique s'initialise correctement au niveau des modules, si votre système ne l'a déjà fait, chargez les dans cet ordre : modprobe bluez l2cap hci_dump. Attention : si vous avez compilé le support USB bluetooth, retirez le module de /lib/modules et refaîtes un depmod -a, les modules bluez ne peuvent pas utiliser ce module mais il risque d'être chargé par votre système et le dongle ne marchera alors pas.

    Il ne nous reste plus qu'à initialiser et interroger le dongle. Pour l'initialiser, faîtes un hciconfig hci up. S'il ne vous insulte pas, c'est bon signe. Pour le vérifier, faîtes un : hciconfig hci0. Il devrait alors vous retourner quelque chose de proche à ça :

    Il est ensuite venu le moment d'essayer la communication avec votre téléphone portable, pour se faire, lancez le menu découvrir sur votre téléphone (dans la section reception/envoi puis bluetooth. Et tapez ceci en ligne de commande : sdptool browse. Notez que vous pouvez aussi demander au portable de scanner les périphériques bluetooth disponibles près de lui, c'est le cas pour le mien qui a bien vu JACKDANIELS (le dongle USB :) Voici ce que retourne le mien :

    Assurez vous que le téléphone portable va accepter la connection du dongle, le mien par exemple m'a tout de suite indiqué une demande de connection lorsque j'essayais de faire un ping et proposais de le bloquer. Voici donc la commande pour faire 5 pings consécutifs sur votre téléphone : l2ping 00:80:37:99:A4:51 -c 5. Et voici le résultat en chiffres :

    Comme vous l'aurez (peut être) remarqué, le dongle USB a vu le téléphone portable et décrit un des services comme le dial-up networking, on devrait donc pouvoir se connecter dessus. Il faut donc charger le module rfcomm par la commande modprobe rfcomm. Attention : assurez vous d'avoir créé les devices ussp comme indiqué dans le source rfcomm/ussp/mkdev.ussp sinon cela ne marchera pas. Faîtes ensuite un : rfcomm 0 00:80:37:99:A4:51 1. Vous devez adapter cette commande à rfcomm 'commande' 'device tty' 'addresse du portable' 'service'. Le service est obtenu par le scan juste avant. Vous devriez alors obtenir ceci :

    La seconde commande devrait marcher si vous avez activé votre téléphone pour recevoir un transfert Bluetooth. S'il vous demande un mot de passe, vérifiez /etc/bluetooth/hcid.conf

    Bravo ! Vous venez de connecter votre téléphone par bluetooth avec votre dongle USB sur votre PC. Vous pouvez alors à partir de ce moment transférer des fichiers et sauver votre carnet de téléphone et adresses de votre téléphone vers votre PC. Recherchez sur le web pour découvrir quelques addresses. Voici notemment un projet qui a retenu mon attention : . Je vais completer cette page avec les méthodes de transfert dans les jours à venir.



Vous avez des questions ? Pourquoi ne pas les poser sur le forum ?


Notice Légale du site