Question

J'essaie de trouver des solutions de contournement pour un Bluetooth le bug sur OSX . En particulier, je veux savoir où OSX ne va pas en lisant la table Bluetooth Le Gatt. Ainsi, je vis les paquets L2CAP dans PacketLogger de matériel IO Outils pour Xcode .

Lorsque j'utilise Bluetooth Explorer pour se connecter au périphérique Bluetooth Le Dispositif, je m'attends à voir 3.4.4.9 Lire la demande de type de groupe (UUID= 0x2800 «Service primaire», Démarrage= 0x0001, Endhandle.= 0xFFFF) Pour découvrir les services primaires (ou Rechercher par type de demande de valeur (UUID= 0x2800, valeur: UUID du service)), suivi de 3.4.4.1 Lire la demande de type (UUID= 0x2803 «caractéristique») pour découvrir les caractéristiques. C'est ce que je vois lorsque je renifle les paquets d'un iPhone (à l'aide d'un CC2540).

Mais sur OSX, la seule demande L2CAP demande dans PacketLogger (et le CC2540) après la connexion:

  1. lire par type Demande (attributype= 0x2803, démarrage= 0x001a, endinghandle= 0x001a)
  2. Lire par type Demande (AttributType= 0x2802 «Inclure», Démarrer= 0x0001, Endinghandle= 0x0004)
  3. lire par type Demande (attributype= 0x2802, démarrage= 0x0005, endinghandle= 0x0009)
  4. lire par type Demande (AttributType= 0x2802, Débuthandle= 0x0010, Endhandle= 0x0019)
  5. Lire par type Demande (AttributType= 0x2802, Débuthandle= 0x001a, Endinghandle= 0x001a)
  6. lire par type Demande (attributype= 0x2803, démarrage= 0x001a, endinghandle= 0x001a)
  7. lire par type Demande (attributype= 0x2802, démarrage= 0x0021, endinghandle= 0x0027)
  8. lire par type Demande (attributype= 0x2802, Démarrage= 0x002b, Endinghandle= 0x002e)
  9. Ce ne sont pas suffisamment de demandes pour découvrir les services, mais Bluetooth Explorer répertorie tous les Uuids de service à ce stade. Cela indique que OSX sait déjà où les services sont sur ce périphérique Bluetooth le. Est-ce que les services de périphérique de cache blusqués et les lisent-ils au démarrage? Si oui, comment puis-je effacer le cache?

    J'ai essayé de désactiver Bluetooth, tuant des morts, et de redémarrer OSX, mais chaque fois que OSX ne redécouvre jamais les services.

Était-ce utile?

La solution

Oui, Blued cache la table Bluetooth Le Gatt.Si le cache est mauvais, procédez comme suit pour la supprimer, grâce à "Processus Blued tue ma CPU" :

  1. Supprimer /library/preferences/com.apple.Bluetooth.Plist.Cela supprimera la connaissance de tous les appareils Bluetooth Bluetooth et Bluetooth liés.
  2. tuer / usr / sbin / blued.Il sera redémarré par Launchd.
  3. exécutez à nouveau le programme Bluetooth Le programme.PacketLogger montrera désormais lu par type de groupe Demandes de redécouvrir les services principaux.
  4. La mise en cache est autorisée lorsque le centre a établi une "liaison" avec le périphérique (non seulement jumelé), selon Bluetooth 4.0 Volume 3 Partie G Section 2.5.2 Caching d'attribut.Je ne sais pas comment vérifier que la centrale est effectivement liée au périphérique, mais je suppose que c'était.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top