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.