Je souhaite que le client Wi-Fi de Windows détecte la connexion sans fil en tant que raccordement au compteur . J'ai découvert que le protocole 802.11 prend en charge les éléments d'information (IE) spécifiques au fournisseur . Ces éléments d'information sont injectés dans les trames sans fil de réponse aux balises et aux sondes.
J'ai découvert que Microsoft a défini son propre IE spécifique pour informer les clients de la connexion mesurée sur Wi-Fi ( Élément de coût du réseau ) et l'adresse de mon point d'accès hostapd prend en charge les caractéristiques propres au fournisseur.
D'après la documentation de ( Élément de coût du réseau ), j'ai ajouté un champ spécifique au fournisseur à hostapd
sur mon routeur OpenWRT :
0xDD (Vendor-specific record)
0x08 (Record length : 8 bytes)
0x00 0x50 0xF2 (Vendor: Microsoft)
0x11 (OUI Type: Network Cost)
0x00 0x00 0x00 0x02 (Portable Hotspot Default: Metered network; limit unknown or not yet reached; matches Windows default for mobile broadband connections.)
hostapd sur les commandes openwrt :
ubus call hostapd.wlan24 set_vendor_elements '{"vendor_elements": "dd080050f21100000002"}'
ubus call hostapd.wlan24 update_beacon
使用する CommView Je capture le trafic sans fil et je vois qu'en Réponse de la sonde y Balise encadre les données que j'ai fournies à hostapd (10 derniers octets).
0x0000 80 00 00 00 FF FF FF FF-FF FF XX XX XX XX XX XX €...ÿÿÿÿÿÿXXXXXX
0x0010 EC 41 18 50 A7 35 00 8E-99 81 50 23 98 00 00 00 ìA.P§5.Ž™.P#˜...
0x0020 64 00 31 04 00 1B YY YY-YY YY YY YY YY YY YY YY d.1...YYYYYYYYYY
0x0030 YY YY YY YY YY YY YY YY-YY YY YY YY YY YY YY YY YYYYYYYYYYYYYYYY
0x0040 XX 01 08 82 84 8B 96 0C-12 18 24 03 01 0B 05 04 Y..‚„‹–...$.....
0x0050 00 02 00 00 2A 01 00 32-04 30 48 60 6C 30 14 01 ....*..2.0H`l0..
0x0060 00 00 0F AC 04 01 00 00-0F AC 04 01 00 00 0F AC ...¬.....¬.....¬
0x0070 02 0C 00 0B 05 04 00 08-00 00 3B 02 51 00 2D 1A ..........;.Q.-.
0x0080 EC 01 17 FF FF 00 00 00-00 00 00 00 00 00 00 01 ì..ÿÿ...........
0x0090 00 00 00 00 00 00 00 00-00 00 3D 16 0B 00 04 00 ..........=.....
0x00A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0x00B0 00 00 7F 08 04 00 00 00-00 00 01 40 DD 18 00 50 ...........@Ý..P
0x00C0 F2 02 01 01 01 00 03 A4-00 00 27 A4 00 00 42 43 ò......¤..'¤..BC
0x00D0 5E 00 62 32 2F 00 DD 08-00 50 F2 11 00 00 00 02 ^.b2/.Ý..Pò.....
Je me connecte à cet AP et je vérifie si la connexion est mesurée en utilisant MS Powershell sur un PC Windows :
[void][Windows.Networking.Connectivity.NetworkInformation, Windows, ContentType = WindowsRuntime]
[Windows.Networking.Connectivity.NetworkInformation]::GetInternetConnectionProfile().GetConnectionCost()
Et obtenir une réponse
ApproachingDataLimit : False
NetworkCostType : Unrestricted
OverDataLimit : False
Roaming : False
BackgroundDataUsageRestricted : False
Où NetworkCostType
est soit Unrestricted
o Unknown
au lieu de la valeur attendue Fixed
.
Lorsque je configure manuellement sur le PC Windows cette connexion comme étant mesurée, powershell dit NetworkCostType : Fixed
Quelque temps plus tard, j'ai trouvé un autre AP (pas le mien, caché) qui émet des balises. Dans ces balises, j'ai trouvé cette même extension spécifique au fournisseur 0x11
por Microsoft
a une longueur de 16 octets et est
DD 10 00 50 F2 11 | 01 10 02 28 2C 30 00 00 00 01 00 00
or
DD 10 00 50 F2 11 | 01 10 02 28 2C 30 00 00 00 00 00 00 (deffers 3rd byte from the end)
0x0000 80 00 00 00 FF FF FF FF-FF FF 62 45 BD 07 36 9A €...ÿÿÿÿÿÿbE½.6š
0x0010 62 45 BD 07 36 9A 80 71-87 80 70 00 00 00 00 00 bE½.6š€q‡€p.....
0x0020 64 00 31 C6 00 00 DD 10-00 50 F2 11 01 10 02 28 d.1Æ..Ý..Pò....(
0x0030 2C 30 00 00 00 01 00 00- ,0......
---
0x0000 80 00 00 00 FF FF FF FF-FF FF 62 45 BD 07 36 9A €...ÿÿÿÿÿÿbE½.6š
0x0010 62 45 BD 07 36 9A D0 B4-16 FE 38 03 00 00 00 00 bE½.6š.þ8.....
0x0020 64 00 31 C6 00 00 DD 10-00 50 F2 11 01 10 02 28 d.1Æ..Ý..Pò....(
0x0030 2C 30 00 00 00 00 00 00- ,0......
J'ai constaté que OUI 0x11
y Vendor 0x00 0x50 0xF2
sont les mêmes - peut-être que MS Docs est erroné ? J'ai essayé la même chose sur mon point d'accès avec le même résultat - les données sont dans les trames sans fil, mais Windows 10 ne définit pas la connexion comme étant mesurée.
Une aide ? Peut-être ai-je fait une erreur quelque part ? Peut-être que cela dépend du pilote de la technologie sans fil ? Peut-être que MS a des documents mais ne les a pas implémentés dans les systèmes de bureau ?
Paramètres Metered connection
manuellement n'est pas la façon dont je veux résoudre ce problème.