68 votes

Utiliser "Bluetooth Bonjour" sur iOS GameKit avec d'autres plateformes

Je suis intéressé par la connexion à la base iOS via Bluetooth. Je peux voir que le "Réseau Local" le service est exposé, mais je ne trouve aucune information supplémentaire à ce sujet. Biens entreposés sous clé 0x0204 ressemble à un Bonjour de la clé.

Le protocole qui est utilisé? Comment peut-on parler à l'appareil iOS à l'aide de Linux, Mac ou son propre dispositif intégré équipé d'une puce Bluetooth?

Voici SDP données extraites à l'aide de l'Explorateur Bluetooth sous OS X lorsque l'appareil iOS fonctionne Gameloft Étoile du Bataillon.

    {
        0x0000 = uint32(1330188565),
        0x0200 = uint32(2),
        0x0202 = string(004wD7l1A..0|0|0|ivucic-À'),
        0x030a = uint32(0),
        0x0009 = { { uuid16(11 15), uint16(256) } },
        0x0201 = string(_657o30a6rmst07À),
        0x0005 = { uuid16(10 02) },
        0x0100 = string(Local Network),
        0x0001 = { uuid16(11 15) },
        0x0203 = string(004wd7l1a..0|0|0|ivucic-_657o30a6rmst07À
        0xf000 = uint8(2),
        0x0204 = string(    txtvers=1state=A),
        0x0008 = uint8(255),
        0x0006 = { uint16(25966), uint16(106), uint16(256), uint16(26226), uint16(106), uint16(272), uint16(25701), uint16(106), uint16(288), uint16(27233), uint16(106), uint16(304) },
        0x0004 = { { uuid16(01 00), uint16(15) }, { uuid16(00 0f), uint16(256), { uint16(2048), uint16(2054) } } },
        0x0002 = uint32(0)
    },

D'autres partiellement questions pertinentes:


Recherche en outre avec Apple Bluetooth Explorer dans OS X et sdptool sous GNU/Linux, j'ai découvert que la clé 0x0001 (pour "protocole"), contenant la valeur de 0x1115, est la "PANU" variante de "PAN" - un peer2peer variante. Il est notable que OS X ne fournit pas de côté service ("hébergement") support de ce protocole, en dépit de soutien à la création d'un 0x1116 réseau, qui est la "SIESTE", variante de "PAN" - un client/serveur de type variant.

Ce pourrait être une bonne nouvelle, mais seulement si GameKit du protocole de session ne doit pas être utilisé. Le détournement de la part des médias-couche de la connexion établie par GameKit afin d'envoyer d'autres le trafic UDP serait l'idéal.

Je vais encore chercher à savoir si ou non de cette GameKit connexion est vraiment 0x1115; qui est, si c'est vraiment "PANU". Quelqu'un aurait-il tout complément d'information?


Note lors de la Bonjour automatiquement a annoncé ce service Bluetooth après iOS 3, ce qui a changé avec iOS 5. Voir la réponse que j'ai posté sur la façon d'établir une connexion Bluetooth sans GameKit, où j'ai bien documentée de la part d'Apple de la Technique Q&A QA1753.


Une petite quantité de la recherche avec GNU/Linux n'a pas permis un succès de la connexion. Il peut être dû à un manque de connaissances sur la façon d'utiliser correctement l' pand. Elle peut également être due à des périphériques Bluetooth MAC blocage. J'aimerais des infos que vous pourriez avoir à offrir. Si je recherche cet plus loin et tomber sur quelque chose d'intéressant, je vais mettre à jour cette réponse.


Résultats sous Ubuntu. Le service s'affiche uniquement lorsque la fonction Bluetooth Bonjour est active.

ivucica@ivucica-MacBook:~$ sdptool browse $ADDR #relevant data only
Browsing ADDRESS_HERE ...
Service Name: Local Network
Service RecHandle: 0x4f491115
Service Class ID List:
  "PAN User" (0x1115)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 15
  "BNEP" (0x000f)
    Version: 0x0100
    SEQ8: 0 6
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
  code_ISO639: 0x6672
  encoding:    0x6a
  base_offset: 0x110
  code_ISO639: 0x6465
  encoding:    0x6a
  base_offset: 0x120
  code_ISO639: 0x6a61
  encoding:    0x6a
  base_offset: 0x130
Profile Descriptor List:
  "PAN User" (0x1115)
    Version: 0x0100

... and so on ...

Voici la tentative de connexion:

ivucica@ivucica-MacBook:~$ pand --connect $ADDR -n
pand[3237]: Bluetooth PAN daemon version 4.98
pand[3237]: Connecting to ADDRESS_HERE
pand[3237]: Connect to ADDRESS_HERE failed. Connection refused(111)

Est une sorte d'autorisation requis? Activer le cryptage, l'authentification, la connexion sécurisée et de les forcer à devenir un maître ne semble pas faire de différence (-AESM options dans diverses combinaisons).

Quelqu'un a des idées?


Hein!

ivucica@ivucica-MacBook:~$ sudo hcidump
HCI espion - Bluetooth analyseur de paquets ver 2.2
appareil: hci0 snap_len: 1028 filtre: 0xffffffff
 HCI Événement: État de la Commande (0x0f) plen 4
 Créer une Connexion (0x01|0x0005) statut 0x00 ncmd 1
> HCI Événement: Changement de Rôle (0x12) plen 8
 statut 0x00 bdaddr ADDRESS_HERE rôle 0x01
 Rôle: Esclave
> HCI Événement: Connexion Complète (0x03) plen 11
 statut 0x00 poignée 12 bdaddr ADDRESS_HERE type ACL chiffrer 0x00
 HCI Événement: État de la Commande (0x0f) plen 4
 Lire à Distance les Fonctions prises en charge (0x01|0x001b) statut 0x00 ncmd 1
> HCI Événement: Lecture à Distance des Fonctionnalités prises en charge (0x0b) plen 11
 statut 0x00 poignée 12
 Caractéristiques: 0xbf 0xfe 0x8f 0xfe 0x9b 0xff 0x79 0x83
 HCI Événement: État de la Commande (0x0f) plen 4
 Lire à Distance des Fonctionnalités Étendues (0x01|0x001c) statut 0x00 ncmd 1
> HCI Événement: Max Fentes de Changement (0x1b) plen 3
 poignée 12 slots 5
> HCI Événement: Lecture à Distance des Fonctionnalités Étendues (0x23) plen 13
 statut 0x00 poignée 12 page 1 max 1
 Caractéristiques: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
 HCI Événement: État de la Commande (0x0f) plen 4
 Nom distant Demande (0x01|0x0019) statut 0x00 ncmd 1
> HCI Événement: Nom Distant Req Complète (0x07) plen 255
 statut 0x00 bdaddr ADDRESS_HERE nom de "Mal iPad"
 HCI Événement: État de la Commande (0x0f) plen 4
 L'authentification Demandée (0x01|0x0011) statut 0x00 ncmd 1
> HCI Événement: Lien de Demande de Clé (0x17) plen 6
 bdaddr ADDRESS_HERE
 HCI Événement: Commande Complète (0x0e) plen 10
 Lien de Demande de Clé de Réponse (0x01|0x000b) ncmd 1
 statut 0x00 bdaddr ADDRESS_HERE
> HCI Événement: Auth Complète (0x06) plen 3
 statut 0x00 poignée 12
 HCI Événement: État de la Commande (0x0f) plen 4
 Jeu de Cryptage de Connexion (0x01|0x0013) statut 0x00 ncmd 1
> HCI Événement: Chiffrer le Changement (0x08) plen 4
 statut 0x00 poignée 12 chiffrer 0x01
 HCI Événement: Nombre de Paquets (0x13) plen 5
 poignée 12 paquets de 1
> ACL de données: poignée 12 drapeaux 0x02 dlen 16
 L2CAP(s): Info rsp: type 2 résultat 0
 Fonction étendue masque 0x02a8
 Amélioré la Retransmission mode
 FCS Option
 Les Canaux Fixes
 Unicast Connectless La Réception Des Données
 HCI Événement: Nombre de Paquets (0x13) plen 5
 poignée 12 paquets de 1
> ACL de données: poignée 12 drapeaux 0x02 dlen 20
 L2CAP(s): Info rsp: type 3 résultat 0
 Fixe la liste des canaux 0x00000006
 L2CAP Canal de Signalisation
 L2CAP Connless
 HCI Événement: Nombre de Paquets (0x13) plen 5
 poignée 12 paquets de 1
> ACL de données: poignée 12 drapeaux 0x02 dlen 16
 L2CAP(s): Connectez rsp: dcid 0x0000 scid 0x0040 résultat 2 0
 Connexion refusée - PSM pas pris en charge
> HCI Événement: Déconn Complète (0x05) plen 4
 statut 0x00 poignée 12 raison 0x13
 Raison: La Télécommande Utilisateur A Terminé De Connexion

Cette?

> ACL de données: poignée 12 drapeaux 0x02 dlen 16
 L2CAP(s): Connectez rsp: dcid 0x0000 scid 0x0040 résultat 2 0
 Connexion refusée - PSM pas pris en charge

8voto

James Roeiter Points 463

Selon ce site intéressant: http://code.google.com/p/btstack/wiki/iPhoneBluetooth Apple utilise une puce spéciale en plus de sa puce RF Bluetooth qui interdit toute connexion pour un appareil sans cette puce - cela signifie qu'il s'agit d'un verrou au niveau du matériel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X