J'essaie de configurer un port série virtuel via un adaptateur USB-Bluetooth sous Linux et de lui envoyer un message via un appareil Android. Je suis sur le noyau 3.6. Je suis capable de coupler l'appareil avec succès à l'aide de gnome-bluetooth et également de lui envoyer des fichiers.
Pour configurer le port série, j'ajoute d'abord un canal avec un profil SP à mon adaptateur :
sdptool add --channel=22 SP
Ensuite, j'appelle "écoute" avec rfcomm :
rfcomm listen /dev/rfcomm0 22
qui bloque sur
Waiting for connection on channel 22
Apparemment, rfcomm créera /dev/rfcomm0 lors d'une connexion réussie. Une fois que cela se produit, j'aimerais utiliser quelque chose comme cutecom pour envoyer des messages dans les deux sens à l'appareil connecté.
Sur mon appareil Android, j'ouvre un terminal Bluetooth SPP (il y en a plusieurs, j'en ai essayé plusieurs) et j'essaie de me connecter. Ils échouent tous.
Étant donné que je peux coupler avec succès et envoyer des fichiers sans aucun problème, je sais que le couplage et la communication Bluetooth fonctionnent.
Je ne sais pas trop ce que je peux essayer d'autre. J'ai utilisé "sdptool parcourir" sur mon appareil local et l'appareil Android pour m'assurer qu'il n'y a pas de conflits de canal RFCOMM.
Réponse acceptée :
Il me semble que cela fonctionne maintenant. Bluetooth semble un peu capricieux. Je récapitule mes étapes dans leur intégralité au cas où quelqu'un d'autre le trouverait utile (bien que ce soit à peu près ce que j'ai essayé au départ). Ceci est pour Android JB (4.2.2) sur un Nexus 4 et Arch Linux 3.6.7-1, avec bluez 4.101 sur Gnome 3.6 (avec gnome-bluetooth).
(cette étape peut ne rien faire d'utile) Désactivez Bluetooth sur Android et déconnectez votre adaptateur USB/Bluetooth de votre machine Linux (ou si vous en avez un intégré, réinitialisez-le à l'aide de hcitool devname reset)
Connectez/allumez votre adaptateur Bluetooth sous Linux. Assurez-vous que votre adaptateur est visible (peut être configuré dans gnome-bluetooth - vous devriez voir une icône de barre d'état système Bluetooth).
Activez le Bluetooth sur votre appareil Android. Utilisez Android pour coupler l'adaptateur (je n'ai pas pu coupler l'inverse à partir de Linux). Une boîte de dialogue apparaîtra vous demandant une clé. Entrez n'importe quel code PIN que vous voulez. Gnome devrait afficher une notification vous demandant une clé ; entrez le même code PIN que vous avez entré précédemment. Votre appareil Android et la clé doivent être couplés à ce stade.
Sous Linux, ouvrez un terminal et vérifiez quels services Bluetooth sont disponibles en tapant
sdptool browse local
Si vous disposez déjà d'un service de port série, notez de quel canal il s'agit. Si ce n'est pas le cas, vous pouvez ajouter le service :
sdptool add --channel=22 SP
Écoutez maintenant sur cette chaîne en utilisant rfcomm :
sudo rfcomm listen /dev/rfcomm0 22
rfcomm bloquera, à l'écoute d'une connexion avec un message comme
Waiting for connection on channel 22
De retour sur Android, j'ai utilisé l'application BlueTerm (http://pymasde.es/blueterm/, également disponible gratuitement sur le Google Play Store) bien que toute application similaire devrait fonctionner. Ouvrez BlueTerm, allez dans les options> Connecter l'appareil :sélectionnez l'adaptateur jumelé.
Connexe :Freebsd – Comment démarrer FreeBSD en mode console ?Espérons que l'application a pu se connecter. Vous verrez une vérification supplémentaire dans le terminal où vous avez bloqué l'écoute avec un message comme :
Waiting for connection on channel 22
Connection from 22:22:22:22:22:22 to /dev/rfcomm0
Press CTRL-C for hangup
Tout ce que vous tapez dans l'application BlueTerm doit être dirigé vers /dev/rfcomm0. Vous pouvez voir des choses apparaître au fur et à mesure que vous tapez en ouvrant un nouveau terminal et en faisant quelque chose comme :
cat /dev/rfcomm0