// viz · mu-mimo beamforming pattern

MU-MIMO Beamforming Pattern

A uniform linear array of N elements. Drag the steering angle and watch the array factor pattern reshape in real time. Flip to MU-MIMO mode and place a second user — the array automatically nulls toward them so two beamformees can share the same time-frequency resource.

— Shankar K. · Source: IEEE 802.11ax-2021 §26.7 (HE sounding), §9.6.31.2 (HE Compressed BF Report frame) · Wireshark: wlan.fc.type_subtype == 0x15

// start here

The polar plot shows where the array radiates energy. Outer ring = 0 dB (peak), inner ring = -30 dB (deep null). The marker labelled U1 is the user you are pointing the main beam at. Drag the steering slider to re-aim. Switch to MU mode to add U2 — the array places a null toward U2 while keeping the beam on U1.

// mode
// array configuration
Elements (N) 8
Spacing (d / lambda) 0.50
0.25 (mutual coupling) 1.00 (grating lobes)
U1 steering angle (theta_0) 0 deg
-60 deg (left) boresight +60 deg (right)
// pattern inspector
// spec reference
HE Sounding Protocol
Section 26.7
NDP Announcement -> NDP -> (BF Report Poll) -> HE Compressed Beamforming Report. Single round-trip per sounding. Cadence is implementation-specific, typically every 100 ms to 1 s per beamformee. Subsections: 26.7.1 General, 26.7.2 protocol, 26.7.3 sequences, 26.7.4 segmented feedback, 26.7.5 NDP transmission.
HE Compressed Beamforming Report
9.4.1.65 (field) / 9.6.31.2 (frame)
Beamformee returns the V matrix as quantized phi and psi angles, with per-subcarrier-group resolution Ng = 4 or 16. SNR feedback per spatial stream included. Field format in 9.4.1.65; carried inside HE Compressed Beamforming/CQI frame (9.6.31.2, HE Action category, action code 0).
VHT/HE NDP Announcement
Section 9.3.1.19 (Control frame)
Carries STA Info per beamformee: AID12, partial BW info, feedback type (SU/MU/CQI), Ng, codebook size. This is a Control frame (type=1, subtype=5), NOT an Action frame. Wireshark COMPOSE_FRAME_TYPE = 0x15.
HE MU Operation
Section 26.5 (HE DL MU / UL MU)
Up to 8 spatial streams concurrently in HE downlink (26.5.1), scheduled across up to 8 STAs. UL MU operation in 26.5.2. Beamformer applies a precoding matrix Q derived from collected V matrices to null inter-user interference. Pre-HE MU operation lives in 802.11-2020 Section 19.3.11.
Beamforming Feedback Matrix V
Section 9.4.1.65 (HE)
Unitary N_TX x N_SS matrix carried in the HE Compressed Beamforming Report field. Beamformer multiplies data symbols by Q (derived from V across users) so each user receives its stream with a null toward all other concurrent users. Sounding flow that conveys V is in 26.7.
EHT Sounding (Wi-Fi 7)
IEEE 802.11be-2024 (clause 36 series)
16x16 MU-MIMO supported, finer angle quantization, EHT-LTF, EHT Compressed Beamforming Report. Same NDP-based sequence on EHT PHY. Exact subsection numbering not verified against primary source; check 802.11be-2024 PDF directly before quoting publicly.
Wireshark: wlan.fc.type_subtype == 0x15 finds VHT/HE NDP Announcement Control frames. wlan.fixed.category_code == 30 filters HE Action category (carries HE Compressed BF Report). wlan.fixed.category_code == 21 is VHT Action (legacy), == 7 is HT Action. CAT_HE = 30 follows Wireshark dissector convention (see packet-ieee80211.c CAT_* defines), verify against your local Wireshark.
See sounding sequences in your capture
WiFi Analyser locates NDP Announcements, decodes BF Report frames, and surfaces sounding cadence per beamformer / beamformee pair.
try it free ↑
// the two beamforming modes — ieee 802.11ax / 802.11be

Wi-Fi 6 and Wi-Fi 7 both support two distinct beamforming modes: SU (single user) where the array concentrates energy toward one beamformee, and MU (multi-user) where the beamformer transmits concurrent streams to multiple beamformees on the same time-frequency resource by placing nulls toward each non-target user. SU is universal; MU is the throughput multiplier in dense scenes.

SU Beamforming
One beam, full array gain
Array factor peaks toward U1. All N elements contribute coherently. Peak gain over isotropic: 10 log10(N) dBi for uniform amplitude. Used by every Wi-Fi 6/7 AP supporting beamforming.
MU-MIMO + Null
N_users concurrent streams
Beamformer combines V matrices from all targeted beamformees into a steering matrix Q. Each user receives its stream with a null toward every other user. Capacity scales (roughly) linearly with N_users until N_TX runs out.
Array factor (uniform linear array):
AF(theta) = (1/N) * sum_n exp(j * n * 2pi * d * (sin(theta) - sin(theta_0)))
N = elements, d = spacing in lambda, theta_0 = steering angle. Standard Balanis result. MU mode adds a null-constraint weighting so AF(theta_null) -> 0.
// learner's guide
from the field Conference room with 60 attendees, AP says BF enabled, throughput says no
// the scenario

Wi-Fi 6 enterprise AP, four spatial streams (4x4), MU-MIMO advertised in HE Capabilities. Conference room with 60 laptops on the same SSID. Aggregate throughput collapses to under 50 Mbps. Single-client speedtest from any one laptop reads 400 Mbps. So SU works fine and MU does not.

// what's actually happening

Capture the air. Look for HE Compressed Beamforming Report frames coming back from clients in response to NDP Announcements. Common failure: a chunk of clients respond with feedback type = SU only, or with very coarse Ng = 16 quantization, or never respond at all. Cheap or older client chipsets often advertise MU support but produce useless V matrices. Result: the AP can only schedule SU transmissions, falling back to one user per TXOP.

// how this feature helps

Once you know the problem is feedback quality, you can act. Force MU-friendly clients (or just the AP) into 2x2 SU + scheduled OFDMA which pairs well with limited beamforming, instead of relying on 4-user MU-MIMO that needs four good V matrices simultaneously. In Wi-Fi 7 the picture improves: EHT mandates better feedback resolution and 16x16 MU-MIMO support, and the air-side overhead of asking and receiving the V matrix is amortized across more users.

// still watch out for

MU-MIMO needs accurate, recent V matrices. If users move (laptops in a meeting room are mostly stationary, but phones in a hand are not), the V matrix you sounded 200 ms ago no longer matches the current channel. Sounding too aggressively eats airtime; sounding too rarely degrades MU performance toward SU. Vendors tune this and rarely expose the cadence.

basic What is beamforming?

A normal omnidirectional antenna radiates in every direction equally. Most of that energy reaches no useful receiver: it heats walls, ceilings, and people. Beamforming is the trick of replacing one antenna with several (an array) and applying a small, controlled phase shift to each one before transmission. The shifts are tuned so the radio waves from the elements add up in one chosen direction and cancel each other out in the others.

The result is a directional beam pointed at a specific user. The same total transmit power, but more of it arrives at the intended receiver and less of it disturbs everything else. For a uniform array of N elements, the gain at the chosen direction is roughly N times higher than a single element — that is +6 dB for a 4-element array, +9 dB for 8 elements, +12 dB for 16 elements.

Wi-Fi 6 and Wi-Fi 7 access points have multiple antennas (4, 8, sometimes 16) and beamform automatically once they learn what the channel looks like. The learning happens via a sounding sequence: the AP sends a known training signal (the NDP), the client measures it and replies with a compressed description of the channel (the V matrix), and the AP uses that to compute its phase weights.

intermediate Array factor, HPBW, sidelobes

For a uniform linear array (ULA) with N isotropic elements spaced d wavelengths apart, the array factor is the sum of the per-element responses with progressive phase. When all elements feed equal amplitude and the beam is steered to theta_0, the half-power beamwidth (the angular width where the pattern is at -3 dB) is approximately HPBW ≈ 0.886 / (N * d * cos(theta_0)) radians. At 8 elements with 0.5 wavelength spacing and boresight (theta_0 = 0), HPBW comes out near 12.7 degrees.

Steering off boresight makes the beam wider (the cos term in the denominator). At 60 degrees off boresight, the beamwidth is 2x what it is at boresight. That is why Wi-Fi APs with end-fire mounting struggle with clients well off-axis and why 6 GHz handhelds with limited array sizes do not always benefit much from MU-MIMO when users sit at the edges of the cell.

Sidelobes are the smaller bumps either side of the main beam. For uniform amplitude, the first sidelobe sits roughly 13.3 dB below the peak, regardless of N. Real arrays apply a tapered amplitude (Taylor, Chebyshev, Hamming) to suppress sidelobes at the cost of widening the main beam — commercial Wi-Fi APs typically pick a mild taper around -20 to -25 dB sidelobe level.

advanced Null steering and the V matrix in MU-MIMO

SU beamforming uses a single steering vector pointed at one user. MU-MIMO requires a different construction. Given V matrices from all K targeted users (each V_k is the unitary spatial signature of user k), the beamformer computes a precoding matrix Q such that the channel-times-precoder product H_i * Q_k = 0 for i != k. The classic algebraic solution is zero-forcing (ZF): Q = V * (V_H * V)^-1, where V is the stacked feedback. Real APs use regularized variants (MMSE, regularized ZF) to avoid noise amplification when V matrices are ill-conditioned.

The visualizer above approximates this with a simpler 2-user constraint: place a beam at theta_0 (U1) while forcing AF(theta_null) = 0 (U2). For a ULA this works out to weights w_n = c1 * exp(j * n * k * d * sin(theta_0)) - c2 * exp(j * n * k * d * sin(theta_null)), with c1 and c2 chosen so the constraints hold. The geometry is correct; the algebra in a real beamformer extends across all subcarriers and all spatial streams.

Practically: every dB of null depth toward a non-target user is a dB less inter-user interference. A null of -25 dB (typical for 8x8 enterprise APs in benign channels) means user 1 hears 1/316th of user 2's stream — usually below the noise floor. A null of -10 dB (common in moving or multipath-heavy environments where V matrices age fast) means user 1 sees significant inter-user crosstalk and the MU benefit collapses. This is why MU-MIMO is sounding-cadence-sensitive and why Wi-Fi 7's tighter angle quantization (more bits per phi/psi) directly improves MU efficacy.

// share this page
// also on this site
viz
OFDMA RU Allocator
viz
BSS Color SR
rf
Antennas & MIMO
← previous
viz
Preamble Puncturing
next →
ie
Beacon IE Decoder
SK
Shankar K., Wi-Fi engineer, Irving TX
Building WiFi Analyser V2 · CWNA-109 in progress · one post every two weeks
// leave a comment