Distributed line-of-sight MIMO

A constellation is a better antenna array than a building.

Pure line-of-sight is supposed to be the worst environment for MIMO. It has no scattering, so the channel matrix collapses to rank 1 and you get one stream no matter how many antennas you own. And yet the most plausible near-term home for coherent distributed MIMO is a LEO constellation — because there, and almost nowhere else, you get to choose where the antennas are.

Everything below is live. Drag the antennas, move the sliders, watch the singular values. The one equation you should leave able to re-derive is dtx·drx = λR/N.

Section 1

The ceiling that spectrum can't lift

Starlink's Ku-band user downlink has a fixed, countable number of non-colliding slots over a given patch of ground. Eight channels of 240 MHz, times two orthogonal polarisations:

8 ch × 240 MHz × 2 pol  =  16 orthogonal channel/pol slots  =  1920 MHz × 2

One ~380 km² ground cell can therefore absorb at most 16 simultaneous beams before two of them are trying to occupy the same slot in the same place. At roughly 2 bits/s/Hz of realised spectral efficiency that is about 7.8 Gbps into the cell — and it does not matter how many satellites are overhead.

Orthogonal slots per cell
16
Cell throughput ceiling
7.8 Gbps
Cell area
380 km²
Areal capacity
20.5 Mbps/km²

7.8 Gbps ÷ 380 km² = 20.5 Mbps/km². For scale: a single suburban street with 30 households on gigabit fibre would want more than one whole Starlink cell to itself.

Three levers move the number. One changes its shape.

You can push the ceiling up. More spectrum (Ka, V, E-band), smaller cells (narrower beams from lower orbits or larger apertures), better modulation and coding. Stack them and something like 30× is defensible. But every one of those is a multiplier on a constant — the capacity of a patch of ground still scales with how much spectrum you own, not with how many satellites you fly.

Capacity per ground cell — what each lever buys

The first three bars are multipliers on a spectrum-bound constant, and they compound to about 30×. The fourth bar is not the same kind of thing: with distributed MIMO the ceiling stops being set by spectrum and starts being set by satellite count. Its height on this chart is a placeholder for "a different axis" — see the caveats in §8 before believing any specific number for it.
The idea. Have several satellites transmit to several terminals on the same frequency at the same time, with their waveforms jointly precoded so that each terminal receives its own stream cleanly and the others cancel. The satellites' physical separation becomes one enormous virtual aperture. Capacity per cell then scales with the number of cooperating satellites — a fundamentally different shape of limit.
Section 2

This is a fifteen-year-old idea that was right too early

Steve Perlman — WebTV, OnLive, Mova's facial capture — published the DIDO (Distributed-Input Distributed-Output) white paper around 2011, and demoed it as pCell through Artemis Networks in San Francisco around 2014. The pitch was exactly the one above, on the ground: a scattering of cheap, unsynchronised-looking radios, jointly precoding so that a "personal cell" of constructive interference forms around each handset, every user getting the full channel rather than a slice of it.

The physics was real and the demos were real. The commercial traction never came — carrier integration, backhaul, the sheer institutional weight of the cellular standards process. Rearden still holds the patents. What killed it was not the equation.

The idea did not die; it changed names. It is now mainstream academic work under "cell-free massive MIMO", and it is one of the headline candidate technologies for 6G. The interesting question is no longer does it work — it is where does it work first. And the answer may not be on the ground.

Section 3

The paradox: MIMO is supposed to hate line-of-sight

Classical MIMO gets its multiple spatial streams from rich scattering. Walls, furniture, cars, buildings — each scatterer creates another path, and if the paths are numerous and independent enough, the channel matrix H fills up with effectively independent random entries. A random matrix is full rank almost surely. Full rank means N usable streams.

Pure line-of-sight is the opposite. One path per antenna pair, all of them nearly parallel, all of them nearly the same length. Every entry of H has almost the same phase, so every column of H is almost the same vector. The matrix is rank 1. You can bolt on sixteen antennas and still get one stream.

A satellite link is about as pure-LOS as radio gets: no scatterers, a clean vacuum path, and a range so long that every ray from a satellite to a terminal is essentially parallel. By the textbook story, LEO should be the worst possible place to try this.

Three channels, same array, wildly different rank

A · Pure LOS, compact array
κ = · rank ≈
B · Same array + scattering
κ = · rank ≈
C · Pure LOS, spread apart
κ = · rank ≈
transmit antennas receive antennas scatterers
κ is the condition number σ12 — how far the channel is from carrying two equal streams. κ = 1 is perfect; κ in the hundreds is rank-1 in all but name. "rank" is the participation ratio (Σσ²)²/Σσ⁴, a continuous stand-in for effective rank that runs 1 → 2. Panel C is the whole point of this page: it has no scatterers at all, and it is as good as B.
The escape hatch. Rank does not actually come from scattering. Rank comes from the columns of H being linearly independent. Scattering is just the usual way of getting there — by randomness. Geometry gets you there deterministically, if you are allowed to place the antennas.
Section 4

Deriving the spacing condition

Take the simplest case: two transmit antennas, two receive antennas, everything in a plane, boresight range R. Put the transmitters at transverse offsets 0 and dtx, the receivers at 0 and drx, a distance R downrange.

Step 1 — the four path lengths

Each path is a straight line, so its length is just Pythagoras on the downrange distance and the transverse offset between the two endpoints:

rnm = √( R2 + ( ynrxymtx )2 )

Because R is enormously larger than the offsets — 550 km against tens of kilometres, or 2 m against 20 cm on a bench — expand the square root and keep the first correction. This is the Fresnel (parabolic) approximation:

rnmR + ( ynrxymtx )2 ⁄ 2R
Everything below uses this expansion. The interactive lab in §5 computes the exact square roots instead, so you can watch the approximation hold — and watch it break when you drag the antennas close in.

Step 2 — the only quantity that matters

The channel matrix is Hnm = exp(−j·2πrnm/λ): unit magnitude, all the information in the phase. Now here is the move. Multiplying a row or a column of H by a unit-magnitude scalar is a unitary operation — it changes none of the singular values. So pull out a common phase from each row and each column. Everything cancels except one number:

Δ  =  r11 + r22r12r21

Substituting the Fresnel expansion, the R terms cancel four ways, the y² terms cancel, and the cross term survives:

2R·Δ  =  0 + (drxdtx)2drx2dtx2  =  −2·dtx·drx

⟹    |Δ|  =  dtx·drxR

That is the entire physics of LOS MIMO in one line. The differential path length is the product of the two array apertures divided by the range. Note what is not in it: the absolute range appears only as a divisor, and the individual apertures only as a product — a big transmit array with a tiny receive array is interchangeable with the reverse.

Step 3 — from path difference to orthogonal columns

After the row/column phase factoring, H is unitarily equivalent to

H ~ [ 1  1 ; 1  e ]    with    ψ = 2πΔ/λ = 2π·dtxdrx ⁄ λR

Its two columns are c1 = (1, 1) and c2 = (1, e). They carry independent streams exactly when they are orthogonal:

c1Hc2 = 1 + e = 0   ⟺   ψ = π  (mod 2π)

Two unit phasors sum to zero only when they point in opposite directions. Sweep ψ below and watch the inner product close:

QuantityValue
Column inner product |c1Hc2| = |1+e|
σ1 = √(2 + 2|cos(ψ/2)|)
σ2 = √(2 − 2|cos(ψ/2)|)
Condition number κ = σ12
Capacity at 20 dB SNR
Effective rank
σ12 follow from the eigenvalues of HHH = [2, 1+e; 1+e−jψ, 2], whose eigenvalues are 2 ± |1+e| = 2 ± 2|cos(ψ/2)|.

Step 4 — the spacing condition

Set ψ = π and solve:

2π·dtxdrx ⁄ λR = π   ⟹   dtx·drx = λR ⁄ 2

For N = 2 that is λR/N. The general-N case works out to the same formula. With uniform linear arrays of N elements a side, the same factoring leaves

Hnm ~ e−j·nmψ,    n,m = 0…N−1

which is a DFT matrix — perfectly conditioned, every singular value equal — exactly when ψ = 2π/N. That gives the Rayleigh spacing condition:

dtx · drx  =  λRN
Which convention is this, and why? (the constant varies in the literature)

Different papers write λR/N, 2λR/N, or λR/2 depending on whether they mean element spacing or total aperture, and on the array geometry they assume. This page uses λR/N with d meaning the element-to-element spacing of a uniform linear array at broadside, because that is the convention under which the derivation above closes exactly.

It is checkable rather than a matter of taste. Define the dimensionless geometry number

G  ≡  N·dtxdrx ⁄ λR   (so ψ = 2πG/N, and the condition is G = 1)

Building H from the exact path lengths and taking a numerical SVD, the condition number at G = 1 comes out to 1.0006 for the Starlink numbers in §6 — the residual is the Fresnel approximation, not the convention. If you use 2λR/N you land at G = 2, which for N = 2 is a rank-1 null, not an optimum.

The full solution family

G = 1 is the smallest solution, not the only one. The DFT condition is ψ = 2πp/N with p coprime to N, i.e.

G ∈ { positive integers coprime to N }

Verified numerically on exact path lengths (κ at each G, equal spacing, long range):

NG=1G=2G=3G=4G=5G=6
21.00169781.0042451.001887
31.001.0063691.001.001593
41.0022311.00197381.01249
51.001.001.011.0112904981.02

Green cells are the coprime ones. This matters practically: as satellites drift the geometry number sweeps continuously, so a pass crosses several good windows, not one.

⚠ The 2-D derivation hid an assumption

Redo Step 2 with the arrays as arbitrary 3-D vectors — transmit baseline a, receive baseline c, line-of-sight unit vector û — and the same cancellation gives

Δ = − (a · c) ⁄ R

where ⊥ means the component perpendicular to û. It is a dot product, not a product of lengths. Two consequences the scalar formula doesn't show you: only the transverse component counts, so a baseline pointing along the line of sight is worth nothing; and if the two transverse baselines are mutually perpendicular, Δ = 0 and the channel is rank-1 at any spacing. The 3-D toy in §7 uses this general form, which is why its geometry number moves when nothing but orientation changes.

Section 5

The lab — drag it until it works

Four antennas, free to move. The channel matrix is built from the exact path lengths (no Fresnel approximation), and the singular values come from a numerical SVD, so nothing here is assumed. The scale is a benchtop one — centimetre wavelengths over a couple of metres — because d·d = λR/N does not care about the absolute scale. §6 runs the identical equation at 550 km.

transmit antennas (drag) receive antennas (drag) the four paths rnm

Path lengths

Pathlengthin λphase
r11
r12
r21
r22

Geometry

Δ (exact, from the four lengths)
Δ (Fresnel: −a·c/R)
ψ = 2πΔ/λ
Geometry number G = N·dtxdrx/λR
Required dtx for G = 1

Channel matrix H

H₁₁
H₁₂
H₂₁
H₂₂
Each entry is unit magnitude; only the phase carries information.

Singular values

Effective rank (participation ratio)
Condition number κ
MIMO capacity
Single-stream (SISO-equivalent) capacity
Multiplexing gain realised
What to try. Start at "Collapse to rank-1" and pull the two blue antennas apart slowly — the second singular value climbs out of the floor and κ falls to 1 at exactly the snap point. Then keep going: it collapses again at G = 2 and recovers at G = 3. Then drag one receive antenna along the boresight instead of across it and watch nothing happen — only the transverse component counts.
Section 7

Watching the condition slide

The catch that the algebra hides: G = 1 is a knife-edge in a geometry that is moving at 7.6 km/s. Two things change through a pass. The slant range grows as the pair descends toward the horizon, which raises the required separation. And the transverse component of the baseline shrinks, because an along-track baseline rotates toward the line of sight as the satellites move away — which lowers what you actually have. Both effects push the same way.

A pass, in three dimensions

selected pair other visible satellites ground terminal orbital track drag to rotate the view

Live geometry

Elevation of pair midpoint
Slant range R
Baseline |a| (along-track)
Transverse component |a|
Terminal aperture ⊥ |c| (of 0.50 m)
Angle between a and c
Required |a| for G = 1

Transverse plane (looking down the boresight)

Δ = −(a·c)/R. Both vectors are drawn to their own scale (they differ by ~4 orders of magnitude); what is faithful is the angle between them. Rotate the terminal baseline azimuth to 90° and watch G go to zero with nothing else changing.

Channel quality

Geometry number G (target: any integer coprime to N)
Condition number κ
Effective rank
Capacity at 20 dB SNR
Satellites above 25° mask
Pair currently selected

G through the pass

Green bands sit at the coprime integers G = 1, 3, 5… (for N = 2). With a fixed pair the trace sweeps through them and out again. With the scheduler on, the trace is the best available pair at each instant, and it stays near a band far longer — that is the mitigation in §8 made visible.
Section 8

The catches, at full weight

Nothing above is a proposal. It is a demonstration that the physics does not forbid the thing. Three problems stand between that and hardware, and the second one is the reason no one has done it.

1 · The condition holds only at particular geometries, and it slides

You saw it in §7. G = 1 is satisfied on a surface in configuration space, not in a region, and the satellites cross that surface at kilometres per second. Elevation change moves R; the along-track baseline rotates out of the transverse plane; the terminal's own aperture projection changes with look angle. A pair that is perfectly conditioned now is rank-deficient in tens of seconds.

Why this one is survivable. With roughly 43 satellites above 25° elevation at any moment over a given terminal, you are not stuck with a pair — you choose one. Any two of 43 gives ~900 candidate baselines, spanning a wide range of separations and orientations, and you need only find one near a coprime G. That converts a physics problem into a scheduling problem, and scheduling beams against a moving constellation is precisely the thing Starlink already does at scale, every day. Turn the scheduler on in §7 and the difference in the trace is the entire argument.

2 · Phase coherence across independently moving platforms

This is the hard one, and it is not close to solved.

Coherent joint transmission means the satellites' emitted waveforms must arrive at the terminal with a known and controlled relative phase. From §6, the differential path length that carries the whole effect is λ/2 ≈ 1.4 cm at Ku. To hold a precoder stable you want to know the differential to a small fraction of that — call it a millimetre or two, which is picoseconds of differential timing. Sub-microsecond sync is not the bar. Sub-nanosecond, phase-level sync is the bar.

Against that you have: two platforms in independent orbits at 7.6 km/s, each with its own oscillator; Doppler shifts of order ±200 kHz at Ku, differing between the two satellites and changing continuously; relativistic and ephemeris uncertainty; thermal drift on the payload. And the channel state you precode against has to be estimated, fed back from the ground, and applied while it is still valid — the CSI-aging problem that already underdelivered CoMP on the ground, where nothing was moving.

The laser inter-satellite mesh is a plausible timing backbone — optical links between satellites can in principle carry a common phase reference with the required stability, and Starlink already flies them for routing. That is an argument that the ingredient exists, not that the dish has been cooked. No one has demonstrated coherent joint transmission from separate orbiting platforms. Treat any claim otherwise with suspicion.

3 · Orientation, not just separation

From the 3-D form in §4: Δ = −(a·c)/R. The two transverse baselines have to be aligned, not merely long. A terminal whose two apertures happen to sit perpendicular to the satellites' along-track baseline gets nothing at all, at any spacing. On the ground you would fix this with more apertures in more orientations — which is another way of saying the terminal gets more expensive, and the "0.5 m apart" assumption that produced 15 km is doing more work than it looks like.

What this page is not claiming

  • Not that Starlink is building this. There is no public indication that they are.
  • Not that 15 km is an engineering requirement. It is what one convention of one idealised condition gives for one set of assumptions, and every assumption in it is soft.
  • Not that link budget, interference with the existing 16-slot plan, regulatory coordination, or terminal cost have been addressed here. They have not.
  • Not that "capacity scales with satellite count" survives contact with any of the above. That is the shape of the idealised limit, and idealised limits are where this technology has been living for fifteen years.
Section 9

The honest calibration: how far off is this?

The most useful thing you can do with a speculative capability is find the closest analogous problem that people have been trying to solve, with more money and easier physics, and see where they got to. For coherent distributed MIMO there are three such roadmaps, and coherent joint transmission is nowhere on any of them.

Wi-Fi — the yardstick that should worry you

IEEE 802.11bn (Wi-Fi 8) makes Multi-AP Coordination its headline feature. Five mechanisms are drafted:

MechanismWhat it coordinatesCoherent?
Coordinated Spatial Reuse (Co-SR)Transmit power, so neighbours can talk at onceNo
Coordinated Beamforming (Co-BF)Nulls steered toward the other AP's clientsNo
Coordinated TDMA (Co-TDMA)Time slots between APsNo
Coordinated R-TWT (Co-R-TWT)Scheduled wake windows for latency-sensitive trafficNo
Coordinated Channel RecommendationChannel selection hintsNo
Coherent Joint Transmission (C-JTX)Joint precoding — the thing on this pageDeferred

All five drafted mechanisms are non-coherent: they divide the resource up more cleverly, they do not add a spatial dimension. Coherent joint transmission is explicitly pushed to "beyond 802.11bn".

And this is the second time. Multi-AP Coordination was in the original scope of 802.11be (Wi-Fi 7) and slipped out. So: two standards cycles, on stationary access points, mains-powered, on a shared wired backhaul, with cabled clock distribution physically available, in a room — and the coherent case was punted both times. That is the honest yardstick against which to price the orbital version, where the platforms are moving at 7.6 km/s.

Cellular — twelve years of underdelivery

Satellite — active literature, nothing operational

The 2025–2026 literature is real and moving: cell-free massive MIMO formulated for LEO mega-constellations, distributed beamforming across networked LEO satellites, resource allocation for distributed MIMO-LEO systems. What does not exist is a flight demonstration of coherent joint transmission from two separate satellites. The gap between "there are papers" and "there is a link" is the whole engineering problem.

The summary judgement. The geometry is sound and you can now derive it yourself. The scheduling problem is real but tractable, and plausibly easier in orbit than in a building. The phase-coherence problem is unsolved on platforms that hold still, and orbit makes it harder in every respect except one: in orbit, the operator gets to choose where the antennas are. Whether that one advantage is worth the rest is the actual open question — and it is an engineering question, not a physics one.
Section 10

Sources

  1. arXiv 2606.13759 — tutorial on Multi-AP Coordination in IEEE 802.11bn (Wi-Fi 8); the source for the five drafted MAPC mechanisms and the deferral of Coherent Joint Transmission to beyond 11bn.
  2. arXiv 2501.05655 — cell-free massive MIMO for LEO mega-constellations.
  3. arXiv 2506.01382 — scalable distributed beamforming via networked LEO satellites.
  4. Perlman / Rearden, DIDO white paper (~2011), and the Artemis Networks pCell demonstrations in San Francisco (~2014) — the original distributed-input distributed-output formulation and its commercial attempt.
  5. Rayleigh-spacing LOS-MIMO design condition: standard in the LOS-MIMO literature (Bøhagen, Orten & Øien and successors). This page uses the dtx·drx = λR/N element-spacing convention — see the expandable note in §4 for why, and for the numerical check.

Starlink figures (8 × 240 MHz Ku user downlink, dual polarisation, ~380 km² cells, ~43 satellites above 25° elevation) are the working assumptions this page was built on; they are order-of-magnitude planning numbers, not operator-published specifications. Every derived quantity on the page is computed live in your browser from those inputs, so changing an assumption changes the answer in front of you.

A dataverse001 PAGE object. Everything renders and computes locally — no external scripts, no network calls, no tracking. Signed into the global graph; open it in the Node Viewer 🔍 to inspect the raw object.