Lesson 03 / 14
Channel Planning and Coverage
At signal budget 58, 52, 46, and 40 the associated clients are 31, 23, 17, and 13; false admit is 5, 0, 0, 0 and false deny is 1, 4, 10, 14 — the configuration that zeroes out the leak leaves ten clients inside the cell out.
Contents
The previous lesson took the access points’ budgets from the fiction and never asked why those values were what they were. The measurement showed that three separate budgets gave the same client three separate answers: for 14 of the forty clients the association decision, and for 29 the rate tier, changed depending on which point it happened to land on.
So what should that budget have been? A wireless network’s design is exactly this question, and it has two parts: which channel, which signal budget goes to each point. What this lesson measures is what changing the budget alone does to both directions at once. The result is the course’s most counterintuitive table: the configuration that zeroes out the leak is the configuration that breaks the design’s promise the most.
Cell, Overlap, and Reuse
The area an access point covers is called a cell. When cells tile an area, two constraints operate at once, and they pull in opposite directions.
The first constraint is overlap. If cells never overlap, gaps remain between them where the client hears no point at all; the client loses its bond while walking and has to re-establish it. For this reason neighboring cells’ edges are deliberately overlapped.
The second constraint is reuse distance. Two overlapping cells on the same channel are interference to each other. Because the number of channels is limited, the same channel is reused sooner or later; the plan tries to make sure that repetition happens far enough away.
# taught channel reuse pattern , fictional and not executed band N, non-overlapping channel set: 1, 4, 7 (three channels) top floor [1] [4] [7] [1] middle floor [7] [1] [4] [7] bottom floor [4] [7] [1] [4] the same channel sits three cells away from its nearest neighbor horizontal overlap : ~20% of the cell radius vertical leakage : if inter-floor attenuation is low, the floor above also produces interference band W, non-overlapping channel set: 24 channels the same channel never repeats within the pattern -> interference from within the plan ~0 cost: range is short, the same area needs more points
The pattern is three-dimensional, and this is often overlooked. Two well-separated channels on the same floor can be identical to the channel used by the neighbor on the floor above; if inter-floor attenuation is low, vertical interference can exceed horizontal interference. The numbers above are fictional; real bands’ channel counts and which ranges are usable vary from country to country and are updated by regulatory decisions. Nothing this lesson measures depends on those numbers.
What a Site Survey Measures
The plan is made at a desk; its verification happens on site. A site survey walks point to point through the building and records, at every location, which point is heard at which signal strength. Its output is a coverage map.
What the map says and what it does not say must be kept separate. The map gives the association boundary well: where no point is heard above the threshold. It gives the rate tier only for the instant it measured; interference changes through the day, neighboring networks turn on and off, human bodies cut the signal path. And the map does not know intent at all — where the design promised full rate is not written on the map, it is written in the plan.
This lesson does not run a site survey. We know the fictional forty clients’ real distance and real interference; that is the oracle. What is measured is, for how many clients the given budget departs from this known truth.
For a survey to make the two directions countable, it has to record three things at once: where the measurement point is, the signal strength measured at that point, and which cell the plan counts that point inside. If the third is not written down, false admit cannot be separated from false deny — all that is left is a power map, and the map cannot say which measurement is outside intent. When the measurement record and the plan record live in separate files, this separation is in practice most often not made.
The measurement’s assumptions:
- WN14. Forty clients; distance and interference come from the first lesson’s fiction. There are 27 clients inside the cell, 13 outside.
- WN15. Intent does not change: the client inside the 30 m radius cell should have been admitted. The budget sweep changes only the mechanism, not the intent.
- WN16. The swept budgets are 58, 52, 46, and 40. The 6-unit step between them is fictional and is on the same order of magnitude as the spacing between tier thresholds.
- WN17. A single access point is measured. The contribution from neighboring points is folded into the interference field; it is not modeled as a separate point.
- WN18. The channel plan is modeled as a mechanism that puts a ceiling on interference. The better the plan, the lower the ceiling; ceiling 12 corresponds to the unplanned state, ceiling 0 to no interference at all.
- WN19. In the interference-ceiling measurement the budget is held fixed at 52. One thing changes at a time: either the budget or the ceiling.
- WN20. The full rate column is the number of clients at tier 6; the associated column is the number whose tier is greater than zero.
- WN21. The set is forty clients; the smallest measurable difference is 1/40 = 0.025.
Measurement
"""Cell design: budget sweep and the channel plan's interference ceiling.""" SEED = 20260811 RADIUS = 30 TIERS = ((34, 6), (28, 4), (22, 2), (18, 1)) def generator(seed): d = seed % 2147483646 + 1 def r(n): nonlocal d d = (d * 48271) % 2147483647 return d % n return r def clients(count=40, seed=SEED): r, pool = generator(seed), [] for i in range(count): pool.append({"no": i + 1, "distance": 5 + r(41), "interference": r(13)}) return pool def signal(c, power=52, ceiling=12): """The channel plan puts a ceiling on interference; the better the plan, the lower the ceiling.""" return power - c["distance"] - min(c["interference"], ceiling) def rate_tier(c, power=52, ceiling=12): for threshold, tier in TIERS: if signal(c, power, ceiling) >= threshold: return tier return 0 def cell_intent(c, radius=RADIUS): return c["distance"] <= radius def medium(c, power=52, ceiling=12): return rate_tier(c, power, ceiling) > 0 def gap(events, intent, mechanism): d = {"correct_admit": 0, "correct_deny": 0, "false_admit": 0, "false_deny": 0} for e in events: n, m = intent(e), mechanism(e) if n and m: d["correct_admit"] += 1 elif not n and not m: d["correct_deny"] += 1 elif m: d["false_admit"] += 1 else: d["false_deny"] += 1 return d pool = clients() print(f"clients {len(pool)} | inside cell {sum(1 for c in pool if cell_intent(c))} " f"| outside cell {sum(1 for c in pool if not cell_intent(c))}") print() print(f"{'power':>5s} {'associated':>10s} {'full rate':>9s} {'false admit':>12s} " f"{'false deny':>12s} {'total deviation':>15s}") for power in (58, 52, 46, 40): d = gap(pool, cell_intent, lambda c, p=power: medium(c, p)) print(f"{power:5d} {d['correct_admit'] + d['false_admit']:10d} " f"{sum(1 for c in pool if rate_tier(c, power) == 6):9d} {d['false_admit']:12d} " f"{d['false_deny']:12d} {d['false_admit'] + d['false_deny']:15d}") print() print(f"{'interference ceiling':>21s} {'associated':>10s} {'full rate':>9s} " f"{'false admit':>12s} {'false deny':>12s}") for ceiling in (12, 8, 4, 0): d = gap(pool, cell_intent, lambda c, t=ceiling: medium(c, 52, t)) print(f"{ceiling:21d} {d['correct_admit'] + d['false_admit']:10d} " f"{sum(1 for c in pool if rate_tier(c, 52, ceiling) == 6):9d} " f"{d['false_admit']:12d} {d['false_deny']:12d}") print() print("clients left outside at power 46 despite being inside the cell (no, distance, interference):") print([(c["no"], c["distance"], c["interference"]) for c in pool if cell_intent(c) and not medium(c, 46)]) print() print("clients outside the cell leaking in at power 58 (no, distance, interference):") print([(c["no"], c["distance"], c["interference"]) for c in pool if not cell_intent(c) and medium(c, 58)])
clients 40 | inside cell 27 | outside cell 13
power associated full rate false admit false deny total deviation
58 31 13 5 1 6
52 23 9 0 4 4
46 17 2 0 10 10
40 13 0 0 14 14
interference ceiling associated full rate false admit false deny
12 23 9 0 4
8 24 9 0 3
4 27 9 0 0
0 32 13 5 0
clients left outside at power 46 despite being inside the cell (no, distance, interference):
[(4, 24, 11), (8, 20, 9), (10, 29, 0), (12, 30, 6), (13, 29, 2), (20, 25, 5), (25, 30, 12), (27, 20, 10), (32, 30, 7), (34, 23, 11)]
clients outside the cell leaking in at power 58 (no, distance, interference):
[(6, 37, 3), (14, 32, 7), (16, 33, 5), (28, 33, 2), (31, 35, 0)]
Growing Does Not Bring You Closer to Intent
The top table lowers the budget from 58 to 40 and shows four numbers at once.
At budget 58 the associated clients are 31 — eight more than the 23 at 52. The coverage gain is real. But 5 of the eight gained are outside the cell: the last table shows their distances between 32 and 37 m, all in territory the design never promised. The shortfall inside the cell drops only from 4 to 1. So a third of the eight-client gain went to intent, two-thirds leaked outside.
The rule is: growing the apparatus does not bring it closer to intent. Raising the budget grows the cell’s boundary in every direction at once, and it cannot choose where that growth goes. The coverage gained is paid for with coverage that leaks.
The total deviation column collects this into a single number: 6, 4, 10, 14. The lowest value is at 52. Neither the highest budget nor the lowest is closest to intent; the one closest to intent is the budget that matches the radius the promise was made for. A budget is not right or wrong as “more” or “less” — it is right or wrong relative to the radius.
What Zero Leakage Hides
The bottom three rows pay the course’s third claim. At budget 46 false admit is 0, at 40 it is again 0. An audit that reports only this column finds both configurations flawless — it even finds 52 flawless, because there is no leak there either. Three configurations look identical.
The other column separates the three. False deny is 4 at 52, 10 at 46, 14 at 40. At power 46, ten clients inside the cell cannot associate at all; at 40, fourteen. Given that there are 27 clients inside the cell, at budget 40 more than half of those inside are left out. The design’s promise is not kept, and the leakage column never shows it.
The list of the ten clients left outside says a second thing. Their distances range from 20 to 30 m — some of them stand right at the cell’s center. Clients 8 and 27 sit at 20 m and still cannot associate; both have high interference. Cutting the budget hits the client with interference first, because the two are added together in the same calculation.
The practical rule that follows: a wireless network’s report cannot be given as a single number. “No leakage” and “full coverage” are separate claims, and one does not support the other.
For Coverage, or For Capacity
Reading the 46 and 40 rows in the table as “the wrong budget” would be incomplete. What makes them fall short is not the budget itself but that the fiction carries a single access point (WN17). Tiling the same area with more, smaller cells turns the low budget into the right budget.
Two design goals separate here. Design for coverage tries to leave no gaps with the fewest possible points: cells are large, budgets are high, the same channel is reused more often. Design for capacity does the opposite: cells are shrunk, budgets are cut, the number of points is increased. A small cell carries fewer clients and the queue waiting for the medium gets shorter; also, because every client is closer to its point, its tier rises.
The measurement’s fourth column shows why this second goal exists. At budget 52, only 9 of the 27 clients inside the cell are at full rate. Raising the budget does not fix this — at 58, full rate is 13, but 5 leaks come with it. The way to actually raise full rate is to bring the client closer to the point, that is, to build more cells.
Channel width is the second face of the same trade-off. Bonding four channels into one wide channel raises the top speed a client can get, but it divides the number of non-overlapping channels by four and shortens the reuse distance. In a dense area, a wide channel takes back the speed it gained as interference; in a sparse area, the gain holds. Channel width is therefore not a performance setting but a plan decision.
What the Channel Plan Contributes
The bottom table fixes the budget at 52 and changes only the interference ceiling — that is, it improves only the channel plan.
In the unplanned state (ceiling 12) associated is 23, false deny is 4. As the ceiling drops to 8 the shortfall drops to 3, and to 4 it drops to 0: associated becomes 27, exactly the number of clients inside the cell. False admit is also 0. The channel plan met intent exactly, without touching the budget at all.
The last row is the unexpected one. When interference is removed entirely (ceiling 0), associated jumps to 32 and false admit shoots from 0 to 5. The cell grows larger than the design drew it. The reason is clear: what draws the boundary is not the budget alone but budget minus interference. The radius that matched intent had been tuned assuming a certain interference level; once interference is gone, the same budget reaches farther.
This changes how channel planning has to be read. Reducing interference is not, on its own, an improvement; it is a second dial that has to be tuned together with the budget. Improving the plan and leaving the budget as it is can turn a configuration that does not leak into one that does.
The full rate column, meanwhile, holds steady across every row. Even at ceiling 4, where intent is met exactly, the number of clients running at full rate is 9 — a third of the 27 inside the cell. Association being flawless in both directions does not mean working is flawless.
The measurability of the differences in this table also has to be checked. False deny dropping from 4 to 0 is a 0.100 share of the forty-client set, four times the smallest measurable difference (WN21, 0.025). False admit rising from 0 to 5 is 0.125. Both sit comfortably inside the band. But the shortfall dropping from 4 to 3 as the ceiling drops from 12 to 8 is a single client and sits right at the boundary; a trend can be read from that step, not a conclusion.
Summary
- Cell design carries two opposing constraints: leaving no gaps requires overlap, and not producing interference requires a reuse distance for the same channel.
- At budget 58, 52, 46, and 40, associated is 31, 23, 17, 13; false admit is 5, 0, 0, 0; false deny is 1, 4, 10, 14. Total deviation, 6, 4, 10, 14, is lowest at 52.
- Growing the budget sends two-thirds of the gain outside the cell; growing the apparatus does not bring it closer to intent.
- Three configurations that zero out the leak look identical in one column; in the other their shortfalls are 4, 10, and 14. Counting one direction hides the other.
- When the interference ceiling drops to 4, intent is met exactly (0 false admit, 0 false deny); when the ceiling drops to 0, the cell grows and 5 clients leak in. Interference is part of the boundary.
Next Step
Up to this point every client was counted as belonging to a single point and never moved from its spot. Yet overlap was built in on purpose: a client at the edge hears two points at once, and as it walks, one weakens while the other strengthens. Then the association decision is made not once but repeatedly. The next lesson measures when the handover should happen: raising the handover threshold lets the client go early, lowering it makes it stick to a weak point. Early handover and late handover are two ends of the same dial, and they are two separate errors.
To keep your progress and take notes, Log in
My notes
Log in to take notes.