802.11 Connection Failure: What Your PCAP Actually Shows
Every "I can't connect" complaint has a frame-level signature. A controller log tells you that something failed. A PCAP tells you why - and they're not always the same answer.
— Shankar K. · Source: IEEE 802.11-2020 + 15 years of field captures
| PHASE | WHAT PASSED | WHAT FAILED |
|---|---|---|
| 1 | Nothing | Client can't see the SSID |
| 1B | — | 6 GHz discovery failure |
| 2 | SSID visible | Client can't associate |
| 2B | Associated once | Roaming failure (FT/802.11r) |
| 3 | Associated | Security handshake failed |
| 4 | Security OK | No IP address (DHCP) |
| 5 | IP assigned | Can't reach gateway or internet |
Phase 1 - SSID Not Visible
Symptom: client can't see the target network. Other devices in the same location can.
wlan.fc.type_subtype == 8 Beacon frames. No beacons from target BSSID = AP problem, not client.
wlan.fc.type_subtype == 4 || wlan.fc.type_subtype == 5 Probe Requests (4) and Probe Responses (5). Requests with no Response = band or capability mismatch.
Client probes 2.4 GHz channels 1–11. AP beacons only appear on 5/6 GHz. No Probe Response ever received. Check the client's Probe Request → HE Capabilities IE - absent means the client cannot join a 6 GHz-only SSID.
IO graph the beacon inter-arrival time. Normal = 100 TUs (~102.4 ms). Gaps of 500 ms+ or irregular spacing = AP radio struggling. Missing 3–7 consecutive beacons → client stops scanning and reports "network not found."
Beacons present but SSID field is empty. Client sends directed Probe Requests with saved SSID string - if no Probe Response comes back, the saved name doesn't match exactly. Hidden SSIDs are case-sensitive. Check: wlan_mgt.ssid in the Beacon.
Phase 1B - 6 GHz Discovery Failure
Symptom: tri-band AP broadcasting on 6 GHz but certain clients stay on 5 GHz. No error - a completely silent miss.
In 2.4/5 GHz, clients actively probe every channel. In 6 GHz, unsolicited active scanning is prohibited. Clients discover 6 GHz via: RNR (Reduced Neighbor Report IE in 2.4/5 GHz beacons), FILS Discovery frames, or PSC channels (preferred scanning channels).
Filter: wlan_mgt.tag.number == 201 on 5 GHz Beacons. Tag 201 = Reduced Neighbor Report. If absent - clients relying on out-of-band discovery never know the 6 GHz radio exists. If present, verify the Operating Class and Channel Number match your actual 6 GHz channel.
PSC channels: 5, 21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197, 213, 229. If the AP is on a non-PSC channel (e.g., channel 49) and RNR is disabled - clients that only scan PSC channels will never find the AP. Completely silent in the capture.
6 GHz mandates WPA3 (SAE or OWE). A WPA2-only client either never sends an Auth Request after reading the Beacon's RSN IE, or gets Status Code 23/24. Filter: wlan_mgt.rsn.akms.type == 8 confirms the AP is advertising SAE-only.
Phase 2 - Association Failure
Symptom: client sees SSID, sends Association Request, gets rejected or no response.
wlan.fc.type_subtype == 0 || wlan.fc.type_subtype == 1 Assoc Request (0) and Response (1). Request with no Response = AP silently dropping. Response present = check Status Code.
wlan_mgt.fixed.status_code != 0 Any non-zero status code = rejected. See Status & Reason Codes for full lookup.
| 00-0F-AC:2 | WPA2-PSK |
| 00-0F-AC:3 | FT over 802.1X |
| 00-0F-AC:4 | FT-PSK |
| 00-0F-AC:6 | PSK-SHA256 |
| 00-0F-AC:8 | SAE (WPA3-Personal) |
| 00-0F-AC:11 | OWE (Enhanced Open) |
| 00-0F-AC:18 | SAE-EXT-KEY (WPA3 R3) |
Valid Assoc Request → Response with Status Code 17. RSN IE negotiation never happens. AP hit its max-association limit - a capacity planning failure, not a client issue.
Client proposed a cipher the AP won't accept. Open Assoc Request → RSN Information → Pairwise Cipher Suite List. Compare to AP Beacon RSN IE. OUIs must overlap. Classic WPA3 migration failure.
AP has PMF Required (MFPR bit set). Client Assoc Request has MFPC=0, MFPR=0. AP rejects silently or with Status Code 31. Filter: wlan_mgt.rsn.capabilities.mfpr == 1 on Beacons to confirm. Most common WPA3 migration failure for legacy IoT devices.
AP sends BSS Transition Management Request (WNM Action frame) immediately after a successful association to redirect the client to 5 GHz. Filter: wlan.fc.type_subtype == 13 - look for Category 10, Action 7. If client ignores it, the AP may deauth to force the move.
Phase 2B - Roaming Failure (802.11r Fast Transition)
Symptom: initial connection works. Client fails to roam, or roams but takes 3–5+ seconds. Controller dashboard may show "roam successful."
Auth Request (with FT IE) → Auth Response (with FT IE) → Reassoc Request → Reassoc Response (Status 0). No EAPOL 4-way handshake - PTK derived in the Auth exchange. Non-FT with PMKID caching = 8 frames. Full re-auth = 8+ frames including complete EAP exchange.
Controller log: "roam successful." PCAP: Reassoc Response with Status Code 53, followed by full re-auth from scratch. The controller counts the eventual re-auth. The user lost 500–2000 ms of connectivity in between. These are not the same roam.
wlan_mgt.fixed.status_code == 53 802.11r enabled on AP but client Assoc Request doesn't include MDIE (Tag 54) - client doesn't support FT. Filter: wlan_mgt.tag.number == 54. Absent = not attempting FT regardless of AP config.
Known issue with Intel AX200/AX210 on Windows: client sends two PMKIDs in Reassoc Request RSN IE during PMK cache operations. Some AP firmware deauths with EAPOL Invalid MIC. Filter: wlan_mgt.rsn.pmkid.count > 1
Phase 3 - Security Handshake Failure
Symptom: association succeeds (Status Code 0) but client disconnects within seconds - Reason Code 15 or 23.
eapol All EAPOL frames. Successful WPA2/WPA3-Personal = 4 messages (M1→M4). Enterprise adds EAP exchange first.
eap.code == 4 EAP-Failure frame. Find this and work backwards through the EAP exchange.
wlan.fc.retry == 1 && eapol EAPOL frames with Retry bit set = AP retransmitting handshake messages (M3 retry storm).
Assoc success → EAPOL M1 → M2 → M3 → no M4 → Deauth Reason 15. The wrong passphrase is invisible in the frames. Count EAPOL messages between association and deauth: 3 = wrong PSK. 4 = success.
| After Identity Response | RADIUS rejected the username |
| During TLS tunnel setup | Expired or untrusted certificate |
| After inner auth (MSCHAPv2) | Wrong password |
| No EAP exchange at all | RADIUS server unreachable |
RSN IE in Beacon must match RSN IE in EAPOL M3. A mismatch causes wpa_supplicant to abort the handshake. This is what an evil twin attack looks like in a PCAP - a rogue AP can't reliably reproduce the RSN IE across Probe Responses and handshake frames. WiFi Analyser checks this automatically.
See Status & Reason Codes for the complete reason code reference with field notes.
Phase 4 - DHCP / IP Layer Failure
Symptom: associated, handshake complete, but client shows 169.254.x.x (APIPA) or no IP.
bootp All DHCP traffic. Healthy = DORA (Discover, Offer, Request, Acknowledge). Missing frames show where the chain breaks.
bootp.option.type == 53 && bootp.option.value == 01 DHCP Discover only. Repeated Discovers with no Offer = DHCP server unreachable.
3–4 Discover retransmissions with exponential backoff (2s, 4s, 8s, 16s), then a 169.254 ARP probe. DHCP Discover never reached the server. Check VLAN trunking and ip helper-address.
Discover → Offer → Request → silence. Pool ran out between Offer and ACK. Cross-reference DHCP server logs with PCAP timestamps.
IoT devices kicked with Reason Code 4 (inactivity timeout) must restart the full connection including DHCP when they wake. Appears as a "failure" in monitoring but is actually an idle-timeout configuration decision. Check AP idle-timeout vs device sleep interval.
Phase 5 - Gateway / DNS / Internet Failure
Symptom: client has a valid IP, shows "connected," but can't reach resources.
icmp ICMP Echo Requests to default gateway. No reply = routing issue or client isolation.
dns DNS queries and responses. No response = unreachable or port 53 blocked. SERVFAIL = broken upstream.
AP client isolation (peer-to-peer blocking) can block client-to-gateway traffic if both are on the same VLAN. Gateway reachable from wired side, blocked by AP policy. Check AP peer-blocking setting.
Open DHCP Acknowledge → Option 6 (DNS Server). Wrong IP = every query times out. 3 retransmissions per query with no responses confirms server is unreachable. Fix is on the DHCP server, not the client.
HTTP requests return 302 Redirect to portal IP. HTTPS destinations fail silently - TLS can't be intercepted. Force http://neverssl.com to trigger the portal page and confirm.
IoT Device PCAP Patterns
IoT devices fail differently - no UI, no visible error, distinctive frame signatures.
Device woke from deep sleep, still has old session state in memory, sends data frames before re-associating. AP deauths immediately. In the capture: data frames from IoT transmitter address appear before any Association Request.
AP tries to rotate the Group Temporal Key while device is in deep sleep. No response → Reason 16 Deauth. When device wakes, all broadcast traffic (including DHCP) is broken until full re-association. In the capture: EAPOL Group Key frame (AP → client), no response, Reason 16 follows.
IoT device that lost its AP floods Probe Requests - can be hundreds per second. Creates measurable interference and may trigger AP rate-limiting.
wlan.ta == aa:bb:cc:dd:ee:ff && wlan.fc.type_subtype == 4 More than 10 Probe Requests per second = scan storm.
Quick Reference
| FAILURE | WHAT'S MISSING OR WRONG |
|---|---|
| No SSID visible | No Probe Response from AP |
| 6 GHz not found | No RNR IE in 5 GHz Beacon, or non-PSC channel |
| Association rejected | Status Code ≠ 0 in Assoc Response |
| Band steering loop | BSS Transition Action frame after Assoc success |
| Wrong PSK | EAPOL M4 missing → Deauth Reason 15 |
| 802.1X failed | EAP-Failure (code 4) present |
| FT roam rejected | Status Code 53 in Reassoc Response |
| No IP (DHCP) | No DHCP Offer → APIPA ARP probe |
| IoT idle kicked | Deauth Reason 4 while in PS mode |
| No gateway reply | ICMP Echo Request with no Reply |
| DNS broken | DNS Query with no response |
Managed-mode only captures data frames - you'll miss the entire auth/association sequence. You must be in monitor mode.
- → macOS: airport utility to set monitor mode before launching Wireshark
- → Windows: npcap 1.30+ required - most built-in adapters don't support monitor mode
- → Linux:
airmon-ng start <interface> - → Best option: WLAN Pi R4 - over-the-air capture without losing your own connection
- → 6 GHz: requires 6 GHz-capable adapter (e.g., NetGear A9000 / mt7925u chipset)
Upload a PCAP and every deauth reason code, status code, RSN IE mismatch, and EAPOL failure is flagged, explained, and linked to the relevant client session.
try it free ↗— Shankar K., Wi-Fi engineer, Irving TX
Building WiFi Analyser V2 · CWNA-109 in progress · one post every two weeks
Preparing for a Wi-Fi interview? - 71 questions, spoken engineer answers, free PDF.
Request the guide →Building WiFi Analyser V2 · CWNA-109 in progress · one post every two weeks