Lire, recuperer les données bluetooth

Fermé
deskwisk Messages postés 7 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 17 juin 2010 - 25 févr. 2010 à 15:06
deskwisk Messages postés 7 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 17 juin 2010 - 2 mars 2010 à 17:19
Bonjour, je me tourne vers vous afin de trouver de l'aide

Mon but est de communiquer avec un appareil Bluetooth qui envoie automatiquement les données à l'ordinateur. Alors je ne sais pas si je dois essayer de récupérer les données en brute via des librairies Bluetooth ou devoir lire les paquets envoyer sur le port USB et les déchiffrer.

Système d'exploitation : Linux

Toute aide est le bien venu
A voir également:

8 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
26 févr. 2010 à 11:37
Ben je ne sais pas trop ce que tu fais mais a priori pour communiquer avec un périphérique bluetooth, il faut ouvrir une connexion bluetooth avec lui (ou que lui en établisse une avec toi).
2
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
25 févr. 2010 à 16:10
Il y a la librairie bluez sous linux en C pour travailler avec du bluetooth :
http://people.csail.mit.edu/albert/bluez-intro/c404.html

Bonne chance
0
deskwisk Messages postés 7 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 17 juin 2010
26 févr. 2010 à 11:29
Merci j'ai aussi trouvé quelque bons liens mais je n'arrive toujours pas à récupérer les données transmissent.

http://www.xgarreau.org/aide/divers/bluetooth/devel.php
http://people.csail.mit.edu/albert/b...tro/index.html
http://www.hanscees.com/bluezhowto.html

Donc si quelqu'un a une bonne connaissance dans le domaine je suis preneur de tout conseil ou d'explication complémentaire.

Sinon le problème qui je pense m'empêche de communiquer avec l'appareil est qu'il soit totalement "fermer", je ne peux rien envoyer, je peux juste écouter pour récupérer les données qu'il envoie aléatoirement. (dite moi si je fais erreur, puisque je suis partie dans la direction de la création d'un driver Bluetooth et j'avoue que la difficulté s'est accrue)
0
deskwisk Messages postés 7 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 17 juin 2010
26 févr. 2010 à 11:51
Disons que je récupère les informations envoyé par un appareil médical alors est ce possible d'ouvrir une connexion Bluetooth sachant que l'appareil est exclusivement maitre. A cela s'ajoute que je ne peux pas lui dire d'envoyer, il le fait automatique. Donc pas vraiment de possibilité de créer une application client-serveur Alors dois je persister et trouver le moyen d'utilisé l'api Bluetooth ou continuer dans la voix de création de "driver" grâce notamment à la bibliothèque usb.h
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
26 févr. 2010 à 15:16
Honnêtement je ne sais pas, je ne connais pas assez la problématique et ce type de matériel. En fait tout dépend de ce que tu veux faire. Si on regarde ce schéma :
https://upload.wikimedia.org/wikipedia/commons/3/3f/BluetoothCouches.png

... il faut savoir à quel niveau tu te places. En général on développe une application bluetooth (la zone verte/marron) qui s'appuie sur une librairie bluetooth (par exemple bluez) et qui permet d'établir une connexion rfcomm, l2cap etc... Cette couche logicielle (en rouge) et le module (le driver) de l'interface bluetooth s'occupe d'interagir avec le matériel et d'envoyer les messages.

Ainsi fonctionnellement parlant, ton application s'occupe d'établir une connexion bluetooth (l2cap, rfcomm...) avec l'appareil bluetooth. Comme avec des sockets ordinaires, l'un des périphériques attend des connexions entrantes (listen) tandis que d'autres tentent de s'y connecter (connect).

Afin de différencier les services bluetooth, chacun d'eux est identifié par un UUID qui est précisé lors de l'appel de listen (côté serveur) et de connect (côté client). C'est un peu l'équivalent d'un port.

Une fois la connexion établie il ne reste plus qu'à lire ou écrire dans le socket conformément aux informations que doivent s'échanger les deux machines.

Quand tu as terminé tu fermes la connexion (close) et c'est fini.

Dans ton cas il faut te demander ce que tu cherches à faire. Est-ce que ce que tu appelles un appareil maître est un appareil qui fait simplement un listen ? As-tu la main sur cet appareil ? Est-ce que tu as les informations pour communiquer avec lui (protocole utilisé, ...) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deskwisk Messages postés 7 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 17 juin 2010
26 févr. 2010 à 16:44
Disons que le matériel en lui même rencontre des difficultés à être reconnue par Linux (Windows aussi), c'est l'une des raisons qui me font penser que si je continue avec les api Bluetooth je risque de me trouver dans une impasse (notamment les commandes hcitool). Mais lorsque j'utilise WIRESHARK (un sniffer), on voit que des paquets sont envoyés/réceptionnés (pas tout à fait correctement) alors que l'appareil n'est pas couplé avec le système. Alors puisqu'on capte le signal Bluetooth via une clé USB, j'ai commencé à essayer de récupérer les paquets qui y circulent.... (pas encore fini...)

Par ailleurs j'ai ce fameux appareil sous la main ainsi que le protocole de communication de l'appareil. Il explique les types de paquets ainsi que la signification des bits et leurs places dans le paquet. Il ne parle en aucun cas des protocoles de communications tels que rfcomm, l2cap ni de fonction/bibliothèque en rapport avec bluez.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
28 févr. 2010 à 00:57
Mmmmh et c'est quoi ce protocole il a un nom ? C'est quel genre d'appareil ?

Car pour moi rfcomm c'est un peu comme tcp, c'est une couche réseau qui permet de transporter tes paquets et sur laquelle tu choisis ton propre protocole (et sur lequel tu peux faire circuler tel ou tel type de paquets). En fait ce serait pas mal de voir un peu ce qu'est ton fameux protocole, mais ça me paraît franchement ambitieux de vouloir réinventer la roue.

Je pense que si tu regardes avec wireshark, les paquets que tu récupères doivent être encapsulés dans un paquets rfcomm ou l2cap (ou un protocole bluetooth autre). Et le rôle de bluez, si j'ai bien compris, est de te fournir une api (parmi tant d'autre, par exemple microsoft à sa propre api) qui assure tout ceci. Du coup ce n'est pas forcément surprenant qu'il n'en soit pas question. En fait je ne sais pas trop, je peux me tromper, le bluetooth ce n'est pas vraiment ma spécialité.

D'ailleurs dans ton travail tu n'as pas un collègue, un contact ou un encadrant qui pourrait te donner quelques tuyaux, histoire d'avoir un point de départ ?

Bonne chance
0
deskwisk Messages postés 7 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 17 juin 2010
1 mars 2010 à 10:45
L'appareil en question est un tensiomètre émettant un signal après mesure, et le protocole n'a pas vraiment de nom vu que c'est relativement du bas niveau. (vu qu'il explique l'ordre et la place des bits).

Sinon une simple écoute en récupérant les paquets envoyés sont-ils possibles avec rfcomm ou l2cap ? Parce que d'après ce que j'ai compris, il doit créer une communication pour envoyer/ réceptionner les paquets et donc d’avoir un programme serveur qui tourne. A cela s'ajoute que pour la plus part des cas (voir tous),je détecte même pas l'appareil et récupère aucune données avec les programmes rfcomm ou l2cap (cf. source du lien ci-dessous)
(http://people.csail.mit.edu/albert/bluez-intro/c404.html exemple de détection avec le protocole hci aucun résultat mais pourtant il marche puisque j'arrive à voir mon portable en Bluetooth).

Sinon wireshark (de tête, je suis que 2 jours en entreprise) récupère des paquets urb : control, bluck, interrrupt et je crois bien que c'est spécifique au USB et non au Bluetooth. Il arrive aussi que wireshark n'arrive pas non plus à communiquer et réceptionner les paquets (corrompu/endommagé) mais cela reste relativement rare.

Malheureusement dans l'entreprise personne ne peut vraiment m'aider, on est laissé un peu seul mais étant encore à l'école je vais voir si je peux trouver un peu d'aide chez des professeurs. Mais je reste preneur de conseils.

Mais c'est bien ça le problème je ne sais pas dans quel direction me lancer vu que je n'ai pas vraiment de base en Bluetooth, aucun point de departs et donc un peu perdu ....
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
1 mars 2010 à 19:38
Mais c'est bien ça le problème je ne sais pas dans quel direction me lancer vu que je n'ai pas vraiment de base en Bluetooth, aucun point de depart et donc un peu perdu ....

Je me doute bien et ce n'est pas vraiment mon domaine non plus. Il faudrait chercher les spécifications de ton appareil, chercher sur google, entrer en contact avec les constructeurs etc...

Enfin moi j'ai parlé de l2cap et de rfcomm parce que c'est ce que je connais mais peut-être que ça fonctionne différemment...

Tu as regardé des exemples ?
http://people.csail.mit.edu/albert/bluez-intro/c404.html

Bonne chance
0
deskwisk Messages postés 7 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 17 juin 2010
2 mars 2010 à 17:19
Oui j'ai regardé les exemples, et je les ai testé et justement aucun résultat avec le tensiomètre. De même j'ai téléphoné au constructeur et je suis tombé sur un "technicien" qui ne comprenait rien à mes questions et dont sa seule solution est le redémarrage et de ressayer. (D’ailleurs j'attends toujours une réponse de ces collègues à mes questions) ... et du coté des professeurs pour l'instant aucun ne peut me répondre.
Mais bon je continu à chercher et je tiendrais au courant de mes avancés et des autres problèmes :) en attendant, je suis toujours preneur d’informations
0