Code Python pour Bluetooth lance une erreur après que j'ai dû réinitialiser l'adaptateur
 j'ai essayé la programmation bluetooth en python. Il fonctionnait bien jusqu'à hier. Ce matin, il y a eu une panne de courant et, pour une raison quelconque, le module bluetooth a été désactivé et il n'a pas pu être activé. Alors, j'ai fait un sudo hciconfig hci0 reset et puis de l'allumer. À partir de là, les programmes les plus simples échouent. Prendre celui-ci par exemple. Il est coincé à advertise_servicebluetooth module et envoie l'erreur suivante( FYI: virtualenv n'était pas un problème ici. Le python à l'échelle du système fait aussi la même chose). 
Traceback (most recent call last):
  File "bt.py", line 17, in <module>
    advertise_service( server_sock, "SampleServer", service_id = uuid, service_classes = [ uuid, SERIAL_PORT_CLASS ], profiles = [ SERIAL_PORT_PROFILE ])
  File "/home/machinename/.virtualenvs/py27/local/lib/python2.7/site-packages/bluetooth/bluez.py", line 242, in advertise_service
    raise BluetoothError (str (e))
bluetooth.btcommon.BluetoothError: (2, 'No such file or directory')
 parfois j'ai eu une erreur différente quand j'ai compilé et réinstallé Bluez pilote:
Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/bluetooth/bluez.py", line 268, in advertise_service
  bluetooth.btcommon.BluetoothError: error no advertisable device.
 mais tout cela a fonctionné comme un charme avant dans cette machine; en fait tout le programme fonctionne très bien avec mon autre machine ubuntu (14.04 LTS) pendant que j'écris ceci. J'ai vérifié le code source, et j'ai trouvé un _bluetooth.so fichier-qui est un code compilé, donc je ne savais plus quoi faire. 
tout pointeur sera très apprécié.
3 réponses
 cette erreur est due à des problèmes d'incompatibilité avec BlueZ 5 et SDP avec bluetoothd
Correctif pour 15.10 et BlueZ 5
assurez-vous de courir sdptool browse local donne l'erreur suivante:
Failed to connect to SDP server on FF:FF:FF:00:00:00: No such file or directory
il s'avère Que le coupable est bluetoothd, le démon Bluetooth. Utiliser SDP avec bluetoothd nécessite des fonctionnalités obsolètes pour une raison stupide, donc pour corriger cela, le démon doit être démarré en mode compatibilité avec bluetoothd -C (ou bluetooth --compat).
Trouver l'emplacement de bluetooth.service par:
systemctl status bluetooth.service
puis éditer bluetooth.service et cherchez 
ExecStart=/usr/libexec/bluetooth/bluetoothd
Append --compat à la fin de cette ligne, enregistrer, puis exécutez 
service bluetooth start
si tout va bien, vous devriez être capable de lancer avec succès
sudo sdptool browse local
enfin, réinitialisez l'adaptateur:
sudo hciconfig -a hci0 reset
les Choses fonctionnent bien maintenant
ancienne réponse
Juste à laisser les gens savent, je croire la dernière BlueZ la construction a été en quelque sorte brisée dans mon système. J'ai téléchargé, compilé et installé le  5.35 version, et rien ne fonctionnait. J'ai composé en bas d' 5.34, toujours la même. J'ai aussi remarqué que l'adaptateur bluetooth descendait automatiquement 3-4 minutes après l'avoir activé en utilisant,
sudo hciconfig hci0 up # hci0 is the bt adapter
j'ai utilisé un dongle bluetooth usb pour tester. Il n'est pas tombé automatiquement comme l'adaptateur intégré, mais les problèmes persister. Ensuite, j'ai utilisé apt-get réinstaller bluez,
apt-get install --reinstall bluez
et tout d'un coup tout est redevenu normal.
encore une fois, comme sidmeister l'a mentionné, Assurez-vous que la commande sdptool browse local affiche l'erreur suivante:
 échec de la connexion au serveur SDP sur FF:FF:FF:00:00:00: Aucun fichier ou répertoire
mais, pour ceux qui utilisent initd system manager, il est difficile de trouver une solution si vous voulez exécuter sdp_rfcomm_server/client le modèle et le terminal continueront à afficher la même erreur encore et encore. 
Donc, pour init.d suivez ces étapes:
- Arrêter bluetooth premier - $ / etc / init.d / bluetooth stop 
- vérification de l'État - $ / etc / init.d / statut bluetooth 
- Exécuter bluetooth en mode de compatibilité(n'oubliez pas esperluette,autrement invite à ne pas tourner ) - $ /usr/libexec/bluetooth/bluetoothd --compat& 
- démarrer bluetooth - $ / etc / init.d / bluetooth start 
- nouveau essayer de sdpbrowse - $ sdptool parcourir local 
les choses devraient marcher pour vous maintenant.
correction:
bluetooth.btcommon.BluetoothError: (2, 'Aucun fichier ou répertoire')
Vous avez besoin de:
- sudo nano /lib/systemd/system/bluetooth.service
-  changement de:ExecStart=/usr/lib/bluetooth/bluetoothd
- À: ExecStart=/usr/lib/bluetooth/bluetoothd --compat
- sudo systemctl daemon-reload