AP doesn't work at 5 GHz after upgrading hostapd from 2.10 to 2.11
Tomáš Trnka
tomastrnka at gmx.com
Mon Sep 29 01:48:00 PDT 2025
Hello,
One of my APs just stopped working after an upgrade to 2.11 with the exact
issue described in this thread. (Sorry for the noise if the issue already got
fixed in the meantime.)
This is the "tagged parameters" section of the resulting beacon frame captured
off the air:
0000 00 0a 4f 73 6c 69 48 6e 69 7a 64 6f 01 08 8c 12 ··OsliHn izdo····
0010 98 24 b0 48 60 6c 07 22 43 05 04 00 01 00 00 5a ·$·H`l·" C······Z
0020 20 22 01 00 24 01 14 26 01 14 28 01 14 2a 01 14 "··$··& ··(··*··
0030 2c 01 14 2e 01 14 30 05 14 64 0b 14 95 05 14 00 ,··.··0· ·d······
0040 30 14 01 00 00 0f ac 04 01 00 00 0f ac 04 01 00 0······· ········
0050 00 0f ac 02 0c 00 2d 1a 6e 08 1f ff ff 00 00 00 ······-· n·······
0060 00 00 00 00 00 2c 01 01 00 00 00 00 00 00 00 00 ·····,·· ········
0070 00 00 3d 16 38 07 00 00 00 00 00 00 00 00 00 00 ··=·8··· ········
0080 00 00 00 00 00 00 00 00 00 00 bf 0c 00 00 00 00 ········ ········
0090 fa ff 63 03 fa ff 63 03 c0 05 00 00 00 fc ff c3 ··c···c· ········
00A0 03 01 28 28 dd 18 00 50 f2 02 01 01 81 00 03 a4 ··((···P ········
00B0 00 00 27 a4 00 00 42 43 5e 00 62 32 2f 00 ··'···BC ^·b2/·
Starting from offset 16h, there's a Country Information element (tag = 07h,
len = 22h), with the first letter of the country code "C" suddenly interrupted
by six bytes (05 04 00 01 00 00) that look like a perfectly valid TIM element
in the wrong place, and only after that (offset 1fh) there's the second letter
of the country code "Z" followed by the rest of the country info data. Because
of the 6-byte insertion, the last two triplets of the country info element (64
0b 14 95 05 14 starting at offset 39h) overrrun its announced length, throwing
everything out of sync and making the decoding of the rest of the beacon fail.
For example, Android reports the AP as using WEP (probably because the RSN
info can't be decoded) and wavemon on Linux reports the SSID as
"\xac\x02\x0c\x00…" because it misinterprets a part of the RSN info as the
SSID param set.
For comparison, this is the same section of a beacon from the same AP running
2.10:
0000 00 0a 4f 73 6c 69 48 6e 69 7a 64 6f 01 08 8c 12 ··OsliHn izdo····
0010 98 24 b0 48 60 6c 03 01 38 05 04 00 01 00 02 07 ·$·H`l·· 8·······
0020 22 43 5a 20 22 01 00 24 01 14 26 01 14 28 01 14 "CZ "··$ ··&··(··
0030 2a 01 14 2c 01 14 2e 01 14 30 05 14 64 0b 14 95 *··,··.· ·0··d···
0040 05 14 00 30 14 01 00 00 0f ac 04 01 00 00 0f ac ···0···· ········
0050 04 01 00 00 0f ac 02 0c 00 2d 1a 6e 08 1f ff ff ········ ·-·n····
0060 00 00 00 00 00 00 00 00 2c 01 01 00 00 00 00 00 ········ ,·······
0070 00 00 00 00 00 3d 16 38 07 00 00 00 00 00 00 00 ·····=·8 ········
0080 00 00 00 00 00 00 00 00 00 00 00 00 00 bf 0c 00 ········ ········
0090 00 00 00 fa ff 63 03 fa ff 63 03 c0 05 00 00 00 ·····c·· ·c······
00A0 fc ff c3 03 01 28 28 dd 18 00 50 f2 02 01 01 81 ·····((· ··P·····
00B0 00 03 a4 00 00 27 a4 00 00 42 43 5e 00 62 32 2f ·····'·· ·BC^·b2/
00C0 00 ·
Note it's three bytes longer, there's the DSSS param set (03 01 38) starting
at offset 16h followed by the TIM element in the exact same spot as in the
corrupted 2.11 beacon, followed by a valid country info element.
So it looks as if omitting the DSSS params shifts the country info by three
bytes but the TIM is still written to the same place. Curiously enough, this
confusion is not present in the data printed by the debug output of hostapd
2.11:
nl80211: Beacon tail - hexdump(len=162): 07 22 43 5a 20 22 01 00 24 01 14 26
01 14 28 01 14 2a 01 14 2c 01 14 2e 01 14 30 05 14 64 0b 14 95 05 14 00 30 14
01 00 00 0f ac 04 01 00 00 0f ac 04 01 00 00 0f ac 02 0c 00 2d 1a 6e 08 1f ff
ff 00 00 00 00 00 00 00 00 2c 01 01 00 00 00 00 00 00 00 00 00 00 3d 16 38 07
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bf 0c 00 00 00 00
fa ff 63 03 fa ff 63 03 c0 05 00 36 00 fc ff c3 03 01 28 28 dd 18 00 50 f2 02
01 01 01 00 03 a4 00 00 27 a4 00 00 42 43 5e 00 62 32 2f 00
So something is badly confused. No idea if that's something in hostapd writing
the TIM after the debug info is printed above, or the driver (8812au) messing
the beacon up afterwards.
This is on a target for which I don't have a toolchain/build system set up
(it's a TV set-top box running openATV) so I can't just poke around with a
debugger or recompile hostapd with extra debug prints easily. I can do it in
principle if absolutely necessary, but I'm quite short on time.
Full pcap of the beacons and full debug output from hostapd is available on
request (I'm not sure the list likes attachments).
Hope this helps diagnose the issue.
Best,
2T
More information about the Hostap
mailing list