Wi-Fi implémentation du jumelage direct
Cette section fournit des instructions de conception et des conditions requises pour qu’un périphérique participe aux cas d’usage Appuy et Configuration et Appuy et Reconnecter.
Notes
L’implémentation de jumelage décrite dans cette rubrique est actuellement prise en charge dans Windows 8.1, pour le couplage avec des périphériques d’imprimante uniquement.
Windows 10 et les versions ultérieures prennent en charge nfc pour Wi-Fi transfert de connexion statique direct via l’enregistrement de configuration de l’opérateur P2P Wi-Fi de l’alliance Wi-Fi. Pour plus d’informations, consultez Wi-Fi Alliance.
Appairage d’appareils direct Wi-Fi périphérique
Pendant l’appui, NFP reçoit des informations d’appairage à partir de l’appareil qui se connecte. NFP transmet les informations de jumelage à Windows. Wi-Fi appareils direct suivent la procédure de jumelage hors bande (OOB) de Wi-Fi Alliance et les recommandations du forum NFC. Windows s’appuie sur un message de jumelage propriétaire, comme défini ci-dessous.
Windows invite l’utilisateur à donner son consentement et, le cas échéant, Windows tente de se connecter à chacune des adresses, dans l’ordre, jusqu’à ce que l’une d’elles réussisse. Il n’y a plus d’interaction entre un fournisseur NFP dans le PC et l’appareil de connexion.
En utilisant NFC comme exemple, l’installation unidirectionnelle s’effectue en stockant les informations de couplage dans une balise NFC statique ou passive (une balise NFC active en mode d’émulation statique peut également être utilisée). Windows s’abonne à ces informations de jumelage. Un fournisseur NFP compatible NFC sur le PC reçoit les informations de connexion de la balise et les transmet à Windows en tant qu’abonné. À la réception des informations de connexion, Windows effectue l’installation réelle de l’appareil in-band à l’aide de techniques spécifiques à la classe d’appareil.
Exigences d’interopérabilité
Pour garantir l’interopérabilité entre les fournisseurs NFP, les informations de jumelage doivent être encapsulées dans un format de message spécifique au fournisseur.
Comme décrit ailleurs dans ce document, il n’existe aucune exigence spécifique pour les technologies de proximité autres que pour les fournisseurs NFP compatibles NFC.
Windows nécessite des fournisseurs NFP compatibles NFC pour prendre en charge un mécanisme spécifique défini par le forum NFC pour transmettre les informations de couplage OOB direct Wi-Fi pour le couplage unidirectionnel. Le message NDEF contient un premier enregistrement avec une valeur de champ TNF de 0x01 et un champ TYPE égal à « Hs », ainsi qu’un autre enregistrement de transporteur qui pointe vers un Wi-Fi Enregistrement de configuration de l’opérateur direct. Dans cette méthode, seule la CHARGE UTILE de l’enregistrement NDEF sera utilisée.
Appairage unidirectionnel à l’aide de NFC pour Wi-Fi Direct
Cette section fournit plus d’informations sur la façon dont NFC, Wi-Fi Direct et Windows fonctionnent ensemble pour prendre en charge le couplage sans fil unidirectionnel pour Wi-Fi appareils Direct tels que les imprimantes.
Références de fournisseur NFP
Wi-Fi Appairage direct s’effectue à l’aide d’un type de message select de transfert de connexion standardisée du forum NFC. Le graphique ci-dessous fournit une vue d’ensemble de la façon dont un message de sélection de transfert de connexion est appliqué pour Wi-Fi appairage d’appareils Direct, en particulier les enregistrements NDEF 3 et 4. Le message De sélection de transfert décrit un ou plusieurs enregistrements « ac » ou « Autre transporteur ». Ces enregistrements suivent l’enregistrement De sélection de transfert séquentiellement et ont chacun un type bien défini. Enfin, le message contient un enregistrement de jumelage d’appareils défini par Microsoft qui fournit à Windows des informations sur la façon de traiter l’opération de jumelage.
Wi-Fi message de jumelage direct d’appareils
Dans les exemples de cas d’usage qui suivent, les balises NFC de type 2 sont utilisées à titre d’exemple. S’il est nécessaire d’utiliser un autre type de balise NFC, le message NDEF doit être correctement encapsulé conformément à cette définition de balise.
Champ | Valeur | Description |
---|---|---|
TNF | 0x02 | Format du champ Type qui suit. Type de média tel que défini dans RFC 2046. |
Type | 'application/vnd.ms-windows.wfd.oob' | Nouvelle chaîne de type que nous définissons pour ce scénario. |
Taille des données OOB | WORD | Jusqu’à 64 Ko de données OOB prises en charge. |
Wi-Fi données OOB directes | <blob de taille indiquée par le champ précédent> | Wi-Fi données OOB directes, comme défini ci-dessous. |
Wi-Fi format OOB direct
Le tableau suivant décrit le format des données OOB WiFi Direct. Les données unidirectionnelles OOB peuvent être transmises par n’importe quel appareil OOB P2P unidirectionnel.
Attributs | ID d’attribut | Obligatoire ou facultatif | Notes |
---|---|---|---|
En-tête OOB Consultez la table de format de l’attribut d’en-tête OOB. |
N/A | Obligatoire | L’attribut OOB Header doit être présent dans l’objet blob de données OOB P2P et sa valeur De type OOB doit être définie sur « Données d’approvisionnement unidirectionnelles OOB ». |
Informations sur l’appareil OOB Consultez la table de format des attributs d’informations sur l’appareil OOB. |
1 | Obligatoire | Cet attribut doit être présent. Il fournit des informations sur cet appareil P2P. |
Informations d’approvisionnement OOB | 2 | Obligatoire | Cet attribut doit être présent. Il fournit des informations d’approvisionnement que cet appareil P2P s’attend à utiliser. |
Délai d’expiration de la configuration OOB | 5 | Obligatoire | Cet attribut doit être présent. Il fournit des informations sur la durée pendant laquelle cet appareil P2P attend une réponse sur Wi-Fi Direct. |
Format de l’attribut d’en-tête OOB
Nom du champ | Taille (octets) | Valeur | Description |
---|---|---|---|
Longueur totale des données | 2 | Variable | Longueur de l’objet blob de données OOB entier (en-tête compris). |
Longueur | 2 | Variable | Longueur des champs suivants dans l’en-tête OOB. |
Version | 1 | 0x10 | Valeur identifiant la version de cet enregistrement OOB P2P. |
OOB Type | 1 | Variable | Valeur identifiant le type de transaction OOB. La valeur spécifique est définie dans la table Types de transactions OOB . |
OUI | 0 ou 3 | Variable | OUI propre au fournisseur. Cette étape est facultative. Doit être présent uniquement lorsque le type OOB est spécifique au fournisseur. |
OUI Type | 0 ou 1 | Variable | Type spécifique au fournisseur. Cette étape est facultative. Doit être présent uniquement lorsque le type OOB est spécifique au fournisseur. |
Types de transactions OOB
Type OOB (Hex) | Description |
---|---|
0x00 | Données de provisionnement unidirectionnelles OOB |
0x01 | Données de l’écouteur d’approvisionnement OOB |
0x02 | Données du connecteur d’approvisionnement OOB |
0x03 | OOB Reinvoke Data |
0x04-0xDC | Réservé |
0xDD | Spécifique au fournisseur |
0xDE-0xFF | Réservé |
Format d’attribut d’informations sur l’appareil OOB
Nom du champ | Taille (octets) | Valeur | Description |
---|---|---|---|
ID d’attribut | 1 | 1 | Identification du type d’attribut OOB P2P. La valeur spécifique est définie dans la table Attributs OOB P2P. |
Longueur | 2 | Variable | Longueur des champs suivants dans l’attribut . |
Adresse de l’appareil P2P | 6 | Comme défini dans spécification P2P. | Identificateur utilisé pour référencer de manière unique un appareil P2P. |
Méthodes de configuration | 2 | Comme défini dans spécification P2P. | Méthodes WSC prises en charge par cet appareil. Note: L’ordre des octets dans le champ Méthodes de configuration doit être big-endian. |
Type d’appareil principal | 8 | Comme défini dans spécification P2P. | Type d’appareil principal de l’appareil P2P. Contient uniquement la partie Données de l’attribut WSC Primary Device Type (à l’exclusion des champs ID d’attribut et Longueur). Note: L’ordre des octets dans le champ Type d’appareil principal doit être big-endian. |
Bitmap de capacité d’appareil | 1 | Comme défini dans spécification P2P. | Ensemble de paramètres indiquant les fonctionnalités de l’appareil P2P. |
Nom de l’appareil | Variable | Comme défini dans spécification P2P. | Nom convivial de l’appareil P2P. Contient l’intégralité du format TLV de l’attribut Nom de l’appareil WSC. Note: L’ordre des octets dans le champ Nom de l’appareil doit être big-endian. |
Attributs OOB P2P
Type OOB (Hex) | Description |
---|---|
0x00 | État OOB |
0x01 | Informations sur l’appareil OOB |
0x02 | Informations d’approvisionnement OOB |
0x03 | ID de groupe OOB |
0x04 | Canal d’écoute OOB |
0x05 | Délai d’expiration de la configuration OOB |
0x06-0xDC | Réservé |
0xDD | Attribut spécifique au fournisseur |
0xDE-0xFF | Réservé |
Format d’attribut d’informations d’approvisionnement OOB
Nom du champ | Taille (octets) | Valeur | Description |
---|---|---|---|
ID d’attribut | 1 | 1 | Identification du type d’attribut OOB P2P. La valeur spécifique est définie dans la table Attributs OOB P2P . |
Longueur | 2 | Variable | Longueur des champs suivants dans l’attribut . |
Bitmap des paramètres d’approvisionnement | 1 | Variable | Ensemble d’options de paramètres d’approvisionnement, tels que définis dans la table Paramètres d’approvisionnement . |
Méthode de configuration sélectionnée | 2 | Comme défini dans spécification P2P. | Méthode WSC sélectionnée par cet appareil P2P pour l’approvisionnement. |
Longueur de l’épingle | 1 | 0 - 8 | Nombre d’octets dans le champ données du code confidentiel suivant. Ce champ défini sur 0 n’indique aucune donnée de code confidentiel supplémentaire. |
Épingler des données | Variable | n | Ce champ est facultatif. Ce champ est présent uniquement si le champ Longueur du code confidentiel n’est pas 0 et contient un tableau d’octets qui représente un code confidentiel à utiliser pour l’approvisionnement. |
Paramètres d’approvisionnement
Bits | Information | Notes |
---|---|---|
0 | Créer un groupe | Le bit Créer un nouveau groupe est défini sur 1 si ces informations d’approvisionnement sont destinées à former un nouveau groupe avec l’appareil P2P cible. Sinon, ces informations d’approvisionnement sont destinées à rejoindre un groupe existant. |
1 | Appliquer le paramètre de type de groupe | Le bit Appliquer le paramètre de type de groupe est défini sur 1 si le bit Type de groupe souhaité doit être appliqué, sinon, le bit Type de groupe souhaité est simplement une préférence. |
2 | Type de groupe souhaité | Le bit type de groupe souhaité doit être défini sur 0 si le type de groupe souhaité est temporaire, et doit être défini sur 1 si le type de groupe souhaité est persistant. |
3 - 7 | Réservé |
Format de l’attribut de délai d’expiration de la configuration OOB
Nom du champ | Taille (octets) | Valeur | Description |
---|---|---|---|
ID d’attribut | 1 | 5 | Identification du type d’attribut OOB P2P. La valeur spécifique est définie dans la table Attributs OOB P2P . |
Longueur | 2 | 1 | Longueur des champs suivants dans l’attribut . |
Délai d’expiration de la configuration de l’écouteur | 1 | 0 - 255 | Durée d’attente de cet appareil P2P pour Wi-Fi communication directe après le transfert de données OOB, en unités de 100 millisecondes. (Maximum de 25,5 secondes). |
Enregistrement de jumelage d’appareils Windows
L’enregistrement de jumelage d’appareils Windows suit la spécification NDEF. Il fournit des informations supplémentaires à Windows sur la façon de traiter le message de sélection de transfert de connexion. Les champs TNF et Type doivent être spécifiés conformément à la spécification NDEF. Les autres champs ci-dessous sont répertoriés séquentiellement dans le champ Charge utile de l’enregistrement NDEF.
Nom du champ | Valeur | Valeur de longueur | Description |
---|---|---|---|
TNF | 0x02 | 3 bits | Format du champ Type qui suit. Type de média tel que défini dans RFC 2046. |
Type | 'application/vnd.ms-windows.devicepairing' | 0x28 octets | Nouvelle chaîne de type que nous définissons pour ce scénario. |
MajorVersion | 0x1 | 2 octets | La version principale doit être 0x1. |
MinorVersion | 0x0 | 2 octets | La version mineure doit être 0x0. |
Indicateurs | 0x0 ou 0x01 | 4 octets | Définissez sur 0x0 pour essayer tous les transports. Définissez sur 0x1 de tenter l’installation de façon séquentielle et de s’arrêter après la première réussite. La préférence pour les transports est indiquée par la séquence d’enregistrements de transporteur alternatifs. Note Les valeurs 0x0002 via 0x0064 sont réservées. |
Longueur du nom convivial de l’appareil | Longueur du champ nom convivial de l’appareil. | 1 octet | Longueur du nom convivial de l’appareil. |
Nom convivial de l'appareil | Chaîne encodée UTF-8 jusqu’à 255 octets. | Longueur du nom convivial de l’appareil | Nom convivial de l’appareil qui sera affiché dans l’interface utilisateur de consentement sur le client. |
Wi-Fi Direct just works cérémonie, format de balise de transfert de connexion statique
Par exemple, voici une implémentation classique pour une balise passive NFC. Cela correspond à un cas de transfert de connexion statique avec un enregistrement de support direct Wi-Fi, une imprimante de partage réseau et l’enregistrement de couplage ms-device.
Ce premier tableau illustre le format de la partie Wi-Fi appairage direct de la balise.
Offset | Contenu | Longueur | Explication |
---|---|---|---|
0 | 0x91 | 1 | En-tête d’enregistrement NDEF : MB=1b, ME=0b, CF=0b, SR=1b, IL=0b, TNF=001b |
1 | 0x02 | 1 | Longueur du type d’enregistrement : 2 octets |
2 | 0x0A | 1 | Longueur du type d’enregistrement : 10 octets |
3 | 0x48 0x73 | 2 | Type d’enregistrement : « Hs » |
5 | 0x12 | 1 | Numéro de version : Majeur = 1, Mineur = 2 |
6 | 0xD1 | 1 | En-tête d’enregistrement NDEF : MB=1b, ME=1b, CF=0b, SR=1b, IL=0b, TNF=001b |
7 | 0x02 | 1 | Longueur du type d’enregistrement : 2 octets |
8 | 0x04 | 1 | Longueur de la charge utile : 4 octets |
9 | 0x61 0x63 | 2 | Type d’enregistrement : « ac » |
11 | 0x01 | 1 | Indicateurs de l’opérateur : CPS=1, « active » |
12 | 0x01 | 1 | Longueur de référence des données de support : 1 octet |
13 | 0x30 | 1 | Référence des données de support : « 0 » |
14 | 0x00 | 1 | Nombre de références de données auxiliaires : 0 |
15 | 0x1A | 1 | En-tête d’enregistrement NDEF : MB=0b, ME=0b, CF=0b, SR=1b, IL=1b, TNF=010b |
16 | 0x22 | 1 | Longueur du nom du type d’enregistrement : 34 octets |
17 | 0x3E | 1 | Longueur de la charge utile : 62 octets |
18 | 0x01 | 1 | Longueur de l’ID : 1 octet |
19 | 0x61 0x70 0x70 0x6C 0x69 0x63 0x61 0x74 0x69 0x6F 0x6E 0x2F 0x76 0x6E 0x64 0x2E 0x6D 0x73 0x2D 0x77 0x69 0x6E 0x64 0x6F 0x77 0x73 0x2E 0x77 0x66 0x64 0x2E 0x6F 0x6F 0x62 |
34 | Nom du type d’enregistrement : 'application/vnd.ms-windows.wfd.oob' |
53 | 0x30 | 1 | ID : « 0 » |
54 | 0x3E 0x00 | 2 | Wi-Fi longueur des données OOB directes : 62 octets. La longueur est lue sous la forme d’un court-métrage non signé et comprend l’ensemble de l’objet blob. Comprend 2 octets de longueur. Cette valeur doit être stockée dans un format little endian. |
56 | 0x02, 0x00 | 2 | Longueur de l’en-tête : 2 octets |
58 | 0x10 | 1 | Version : 0x10 |
59 | 0x00 | 1 | Type OOB : 0x00 (unidirectionnel) |
60 | 0x01 | 1 | Attribut : 0x01 (Attribut d’informations sur l’appareil) |
61 | 0x22 0x00 | 2 | Longueur des informations sur l’appareil : 34 octets |
63 | 0x01 0x23 0x34 0xab 0xcd 0xef |
6 | Wi-Fi adresse MAC de l’appareil Direct P2P : « 01 :23 :34 :ab :cd :ef » |
69 | 0x01 0x00 | 2 | Type de configuration |
71 | 0x00 0x01 0x00 0x50 0xF2 0x00 0x00 0x00 |
8 | Type d’appareil principal |
79 | 0x12 | 1 | Fonctionnalité |
80 | 0x10 0x11 | 2 | Attribut : Nom de l’appareil |
82 | 0x00 0x0d | 2 | Longueur du nom de l’appareil : 13 octets |
84 | 0x43 0x6f 0x6e 0x74 0x6f 0x73 0x6f 0x20 0x4d 0x6f 0x75 0x73 0x65 |
13 | Nom convivial de l’appareil dans UTF-8. Notez qu’il n’existe aucun caractère de fin NULL et que UTF-8 peut contenir un ou deux octets par caractère. Cet exemple montre comment lire « Contoso Mouse » |
97 | 0x02 | 1 | Attribut : informations d’approvisionnement |
98 | 0x0c 0x00 | 2 | Longueur des informations d’approvisionnement : 12 octets |
100 | 0x07 | 1 | Définition de bitmap : nouveau groupe, application persistante |
101 | 0x01 0x00 | 2 | Méthode config : entrée de code pin |
103 | 0x08 | 1 | Longueur de la broche : 8 octets |
104 | 0x05 0x06 0x07 0x08 0x01 0x02 0x03 0x04 |
8 | Épingle : « 12345678 » |
112 | 0x05 | 1 | Attribut : informations sur le délai d’expiration de la configuration |
113 | 0x01 0x00 | 2 | Durée du délai d’expiration de la configuration |
115 | 0x64 | 1 | 10 secondes, en unités de 100 millisecondes |
Ce deuxième tableau illustre le format de la partie de jumelage d’imprimantes réseau de la balise.
Offset | Contenu | Longueur | Explication |
---|---|---|---|
116 | 0x12 | 1 | En-tête d’enregistrement NDEF : MB=0b,ME=0b, CF=0b, SR=1b, IL=0b,TNF=010b |
117 | 0x29 | 1 | Champ de longueur de type |
118 | 0x19 | 1 | Champ longueur de charge utile |
119 | 0x61 0x70 0x70 0x6c 0x69 0x63 0x61 0x74 0x69 0x6f 0x6e 0x2f 0x76 0x6e 0x64 0x2e 0x6d 0x73 0x2d 0x77 0x69 0x6e 0x64 0x6f 0x77 0x73 0x2e 0x6e 0x77 0x73 0x2e 0x6e 0x77 0x70 0x72 0x69 0x6e 0x74 0x69 0x6e 0x67 0x2e 0x6f 0x6f 0x62 |
41 | Nom du type d’enregistrement : « application/vnd.ms-windows.nwprinting.oob » |
160 | 0x5c 0x5c 0x70 0x72 0x69 0x6e 0x74 0x53 0x65 0x72 0x76 0x65 0x72 0x5c 0x70 0x72 0x69 0x6e 0x74 0x65 0x72 0x4e 0x61 0x6d 0x65 |
25 | Nom de l’imprimante : « \printServer\printerName » |
Ce troisième tableau illustre le format de la partie de jumelage MS-Device de la balise.
Offset | Contenu | Longueur | Explication |
---|---|---|---|
185 | 0x52 | 1 | En-tête d’enregistrement NDEF : MB=0b, ME=1b, CF=0b, SR=1b, IL=0b,TNF=010b |
186. | 0x28 | 1 | Champ De longueur de type |
187 | 0x15 | 1 | Champ Longueur de charge utile |
188 | 0x61 0x70 0x70 0x6c 0x69 0x63 0x61 0x74 0x69 0x6f 0x6e 0x2f 0x76 0x6e 0x64 0x2e 0x6d 0x73 0x2d 0x77 0x69 0x6e 0x64 0x6f 0x77 0x73 0x2e 0x64 0x65 0x76 0x69 0x63 0x65 0x70 0x61 0x69 0x72 0x69 0x6E 0x67 |
40 | Nom du type d’enregistrement : « application/vnd.ms-windows.devicepairing » |
228 | 0x00 0x00 0x01 0x00 |
4 | Version : Majeure = 1, Mineure = 0 |
232 | 0x00 | 1 | Indicateurs : défini sur 0, essayez tous les transports |
233 | 0x0F | 1 | Longueur du nom convivial de l’appareil |
234 | 0x43 0x6f 0x6e 0x74 0x74 0x65 0x72 0x50 0x72 0x69 0x6e 0x43 0x6f 0x6e 0x74 0x6f 0x73 0x6f 0x20 |
15 | Nom convivial de l’appareil affiché à l’utilisateur : « Contoso Printer » |
Wi-Fi Exigences de connectivité directe
La Wi-Fi radio doit être activée sur les appareils et les clients. Si ce n’est pas le cas, le jumelage échoue.
Gestion des cas de périphérie
Si un utilisateur a déjà appairé un appareil, mais supprime ensuite manuellement l’appareil de la liste des appareils, appuyez de nouveau sur une tentative d’installation ou de jumelage.
Si un utilisateur entre dans la plage d’actionnement, puis s’en va soudainement avant que les informations hors bande (OOB) ne soient transférées, l’appareil peut devenir connectable, mais le PC ne recherche pas l’appareil. Dans ce cas, il n’y aura pas d’interface utilisateur de consentement à partir du PC et l’utilisateur devra appuyer à nouveau. Si l’appareil est déjà détectable lorsqu’il est à nouveau appuyé, il doit rester détectable et doit réinitialiser le délai d’expiration.
Pour Wi-Fi appareils direct, si la radio Wi-Fi s’éteint, l’installation ne réussit pas.
Si un utilisateur appuie sur deux appareils à peu près en même temps, seul le jumelage des premières informations OOB reçues est tenté.
Toute tentative d’appui sur l’appareil sur un système exécutant un système d’exploitation qui ne prend pas en charge l’appui sur l’installation ou l’appui pour se reconnecter peut entraîner la mise en mode connectable de l’appareil, mais le jumelage n’aura pas lieu. Les utilisateurs devront utiliser une interface utilisateur de jumelage fournie pour Bluetooth et utiliser le bouton de jumelage pour lancer le jumelage.