web-dev-qa-db-fra.com

hcitool lescan montre une erreur d'E/S

J'essaye de faire un lescan en utilisant hcitool sur le Raspberry Pi. 

La commande imprime 

Set scan parameters failed: Input/output error. 

Je ne suis pas sûr de ce qui se passe exactement ici. Mon iPhone fait de la publicité ici. 

J'utilise un dongle BLE de IOGear. 

Toutefois, si je redémarre ma machine, elle affiche une adresse MAC après l’émission de la commande lescan et commence à afficher la même erreur après l’émission de la commande lescan à plusieurs reprises. Est-ce que c'est comme, la commande lescan ne peut pas être émise plus d'une fois? 

33
arpwal

Cela m'arrive souvent très souvent. Je développe avec elle et ça arrive juste de temps en temps. J'ai également pu reproduire votre erreur en moins de 5 minutes ;-) J'utilise bluez v.5.17 . Cependant, je peux exécuter lescan plusieurs fois sans cette erreur.

hcitool lescan
Set scan parameters failed: Input/output error

essayer:

hciconfig hci0 down
hciconfig hci0 up

et vérifiez le statut après.

si cela ne fonctionne pas ou s'il est bloqué en statut DOWN, essayez:

service bluetooth restart
service dbus restart

(toutes les commandes en tant que superutilisateur)

Et fermez toutes les applications pouvant accéder à Bluetooth. Par exemple, hcidump.

Si cela ne fonctionne pas, vous devez normalement le débrancher. Mais il y a un autre sale bidouillage à faire. Cela fonctionne en réglant le autorisé à 0 et supérieur à 1. Cela oblige le dongle usb à init.

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 0a5c:21e8 Broadcom Corp. 


cd /sys/bus/usb/devices/

grep -i -s -r 0a5c *
…
1-1.2/idVendor:0a5c
…

cd 1-1.2

echo 0 > authorized
echo 1 > authorized
38
Rob Anderson

La mise à niveau vers bluez v5.43 a résolu ce problème pour moi.

Pour passer à la dernière version de bluez, vous devez effectuer une installation "manuelle" (not apt-get), en effectuant le téléchargement à partir de le site Web de bluez . Je recommande cette solution vidéo si vous installez de nouveaux packages ou si vous avez besoin d'aide. 

Après avoir installé le dernier bluez, je devais exécuter quelques commandes avant que cela fonctionne.

  1. systemctl daemon-reload: redémarre le démon du système. 

  2. Sudo service bluetooth restart: redémarre le service Bluetooth.

  3. Sudo hciconfig hci0 up: Cela était nécessaire pour mon Raspberry Pi 3, avec le BT intégré trouvé à hci0.

Après ces commandes, Sudo hcitool lescan et ses variantes semblent tous fonctionner.

5
ZX9

Pour ceux qui trouvent cette question maintenant, elle est corrigée à partir de Bluez v5.41. Tout ce que vous avez à faire est de télécharger et d'installer. Vous pouvez télécharger la dernière version de http://www.bluez.org/download/ .

1
Daniel Margosian

J'ai eu la même erreur avec hcitool, alors que bluetoothctl fonctionnait parfaitement. Ensuite, je suis tombé sur cet article affirmant que tous les "outils utilisant un socket brut doivent être considérés comme obsolètes" (hcitool, hcicfg, etc.).

Vous pouvez donc simplement ouvrir bluetoothctl et émettre une commande scan on.

0
Jason Stewart

Il est possible que HCI soit actuellement utilisé. Dans mon cas, je dois arrêter Node-Red et cela fonctionne. Alors faites attention, que le HCI ne soit pas utilisé. 

Redémarrer le HCI est un moyen de résoudre le problème temporairement, mais cela ne résout pas le problème correctement.

0
Sean Stayn