LDN services: Difference between revisions

Line 1,493: Line 1,493:
This is used for communicating with accessories over local wifi - in particular, [[Mario Kart Live: Home Circuit]] uses this.
This is used for communicating with accessories over local wifi - in particular, [[Mario Kart Live: Home Circuit]] uses this.


A beacon is broadcasted. The SSID in the beacon is hidden (all-zero with the same length as the original SSID). The beacon contains two custom Nintendo tags with OUI <code>00:22:aa</code>. The beacon is identical to ldn, except for the following (besides SSID length difference and the lp2p-only Nintendo tags):
A beacon is broadcasted.
* "Tag: Traffic Indication Map (TIM)": "DTIM count" for lp2p is 1, with ldn it's 0.
* "Tag: HT Capabilities (802.11n D1.10)": "HT Short GI for 20MHz" is set to "Not supported", for ldn it's "Supported".
* "Tag: Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element" "Ac Parameters ACI 0": "CW Min: 15" for lp2p, "CW Min: 63" for ldn.


Action frames are only sent when done so by [[#SendToOtherGroup]].
Action frames are only sent when done so by [[#SendToOtherGroup]].
Line 1,505: Line 1,502:


The DHCP server thread is started by the "nn.lp2p.StateMachine" thread eventually during group [[#CreateGroup|creation]].
The DHCP server thread is started by the "nn.lp2p.StateMachine" thread eventually during group [[#CreateGroup|creation]].
=== Beacon ===
The SSID in the beacon is hidden (all-zero with the same length as the original SSID). The beacon contains two custom Nintendo tags with OUI <code>00:22:aa</code>. The beacon is identical to ldn, except for the following (besides SSID length difference and the lp2p-only Nintendo tags):
* "Tag: Traffic Indication Map (TIM)": "DTIM count" for lp2p is 1, with ldn it's 0.
* "Tag: HT Capabilities (802.11n D1.10)": "HT Short GI for 20MHz" is set to "Not supported", for ldn it's "Supported".
* "Tag: Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element" "Ac Parameters ACI 0": "CW Min: 15" for lp2p, "CW Min: 63" for ldn.
Note that during group creation the beacon may be missing the Nintendo tags in some cases, since group creation didn't finish yet.
The first Nintendo tag contains the following data:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0 || 0x2 || Usually 06 00?
|-
| 0x2 || 0x2 || Usually 20 02?(Second byte depends on whether encryption is used?)
|-
| 0x4 || 0x2 || Usually 01 00 or 02 00?(varies)
|-
| 0x6 || 0x8 || Big-endian version of [[#GroupInfo]]+0x10.
|-
| 0xE || 0x10 || Same as [[#GroupInfo]]+0x0.
|-
| 0x1E || || Start of encrypted (and crypto-related) data if enabled. 0x22-bytes when encrypted, 0xE-bytes when plaintext.
|}
The second Nintendo tag contains the following data (data starting at +0x2 is encrypted if enabled, there's also an additional 0x14-bytes when encrypted):
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0 || 0x2 || Usually 06 01?
|-
| 0x2 || 0x1 || Plaintext: usually 21?
|-
| 0x3 || 0x1 || Plaintext: AdvertiseData size
|-
| 0x4 || {above size} || Plaintext: AdvertiseData
|}


=== ActionFrame ===
=== ActionFrame ===