# Cascades — MemCare (floors 5/6) RF baseline, 5 GHz channel solve, change-window analysis

## User
- **User:** Howard Enos (howard)
- **Machine:** Howard-Home
- **Role:** tech

## Session Summary

Read-only Phase 0 baseline for the network optimization plan, now extended to include floors 5/6
(MemCare). Pulled live per-AP/client stats, radio config, the AP-to-AP neighbor SNR matrix, a
(partial) channel survey, a dry-run 5 GHz static channel plan, and a 7-day hour-of-day traffic
profile to pick the change window. NO changes applied. Decision: execute the changes we can drive
(Phase 2b/2a/3a, conditionally 3b) at a 2 AM start.

## Key findings

### MemCare (floors 5/6) — same 3 diseases as 1-4, but UNTREATED (full power, not over-thinned)
9 APs: 505, 517, 608, 615, 622, Memcare Nurse Station, Memcare TV room, memcare piano, salon (mesh).
- **2.4 GHz hot at full/auto power** (5/6 were excluded from the over-thinning). cu_total 30-54% with
  0-4 clients (= interference/overhead, not load), retry 22-32% on 517/608/615/Nurse Stn. Fix = the
  corrected Phase 2b: auto -> MEDIUM (not Low, not disable). Clean slate, no regression to undo.
- **5 GHz all 80 MHz + all on DFS** — six DFS channels in MemCare (505=140, 517=108, 608=112, 615=60,
  622=144, Nurse Stn=64) + internal collision (517 + piano both ch108). All must vacate to non-DFS.
- **min-RSSI OFF on every MemCare AP** (615/608/505/517/622/salon) -> sticky clients cling to far APs;
  this is the mechanism behind the room-515 coverage calls (Christine .220 -82, Karen .219 -75 on 517).
  DEFER min-RSSI until the new APs land next week (else it orphans the weak clients).
- **6 GHz dark** here too (CSCNet not broadcasting 6g; 615 has no 6E radio; salon is 2-radio mesh).
- **Shelby .218 (MemCare Director)** = stuck on 2.4 at Memcare Nurse Station (53% retry per the
  2026-06-18 diagnostic; that radio is 28% retry / full power live). Its 5 GHz is clean (5.3%).
  Fix = force to 5 GHz, same as Lauren.
- New APs Howard is adding to 5/6 next week directly address the room-515/coverage gaps (tuning can't
  manufacture signal that isn't there).

### 5 GHz static channel plan (dry-run, neighbor-driven, NON-DFS) — the overlap solve
- Pulled the AP-to-AP neighbor SNR matrix (`/proc/ui_neighbor`, 74 APs) = the real co-channel graph
  the controller hides. `channel-plan.sh cascades na` dry-run:
  - allowed channels [36,40,44,48,149,153,157,161] (non-DFS only); 72 of 74 APs would change.
  - **strong-neighbor co-channel pairs: before=19 -> after=0.** Zero collisions among mutually-audible
    APs, everything off DFS. The MemCare cluster (505/517/608/622/615/Nurse/TV/piano, all mutually
    audible) gets distinct channels. This REPLACES UniFi auto on every non-mesh AP at once (mixed
    auto+static is what caused the 25->30 overlap when auto-channel was tried). AP 103/505 relief is
    fall-out of the global solve (= Howard's 3c refinement: set channels + kill auto, not a one-off).
- CAVEAT: survey-collect stalled at 68/74 (VPN flap) -> no JSON, so the solve used neighbor-only (our
  own co-channel, the dominant factor). Re-run survey to completion before applying so external
  interference biases tie-breaks toward each AP's locally-cleanest channel.

### 2.4 GHz channel re-plan — NEGATIVE result (defer)
- `channel-plan.sh cascades ng` dry-run: strong-neighbor co-channel pairs before=22 -> after=28 (WORSE).
  Cause: with 24 radios disabled + 42 at Low, the active-2.4 set is too sparse to re-color well.
  -> DEFER the 2.4 1/6/11 re-color until AFTER 2b restores a stable Medium-power radio set, then re-run.

### Change window (7-day hour-of-day traffic, controller hourly.site, 168 hrs)
- This network never goes quiet: ~600 devices stay associated 24/7 (resident TVs/IoT). Peak-to-trough
  swing only ~10% (peak ~666 at 13:00, overnight floor ~596 at 00:00-05:00 MST).
- **Slowest/safest = 01:00-04:00 MST** (genuine client-count trough AND active-usage trough: residents
  asleep, no staff onsite, no shift change, ~0 live calls). Evening 22:00-00:00 (~600-614) is nearly as
  low by count but some residents still streaming. **Decision: 2 AM start.**
- The 19:00 reading (45 clients) is the Wed 6/17 power-outage artifact, not a pattern.
- Per-AP hourly history is too sparse (456 records / 74 APs ~ 6 each) for a MemCare-specific hour-of-day
  profile -> site-wide profile governs; MemCare follows the same (or quieter) overnight rhythm.
- Pre-reqs for an overnight window: disable the 3 AM AP firmware auto-upgrade FIRST (Phase 0) or an AP
  reboots mid-change; MSP360 cloud backup runs overnight but is WAN-side (no RF impact).

## Plan for the 2 AM run (phases we can drive; gated, per-zone, rollback JSON, verify each step)
1. Phase 0: VPN/controller reachability check (abort if down, no changes); disable 3 AM auto-upgrade;
   re-run survey to completion; capture baseline (live-stats + radio-usage, same-time-of-day).
2. Phase 2b: 2.4 power -> MEDIUM per zone (floors 1-4 Low->Medium; floors 5/6 auto->Medium). Verify
   radio_table applied; verify retry%/satisfaction improved vs baseline; rollback the zone on regression.
3. Phase 2a: enable 6 GHz on CSCNet (`apply-wlan bands all`) + `bsstm on`. Verify wlan_bands; watch 6g client uptake.
4. Phase 3a: 5 GHz width 80->40 per zone. Verify; gate on retry.
5. Phase 3b (CONDITIONAL on a clean full survey): apply the static non-DFS channel plan (incl. AP 103/505
   relief). Verify per-AP channels; confirm co-channel pairs dropped; confirm voice phones (10.0.30.x)
   re-associate/online.
6. AUTO-SKIP this run: 2.4 1/6/11 re-color (currently worse), MemCare min-RSSI (needs next week's APs).
- After each phase: confirm noise/airtime dropped (live-stats + watch-ap) and the VLAN-30 voice phones
  came back online before proceeding. Standing rule honored via Howard's explicit go for 2-4 autonomously.

## Configuration Changes
- NONE applied. All reads. Scratch in `.claude/tmp/` (gitignored): mc-live.txt, mc-audit.txt,
  cascades-nbr.json (neighbor matrix), cp-na-full.txt (5 GHz plan), hourly.json (traffic).

## Credentials & Secrets
- No new credentials. Used: `infrastructure/uos-server-network-api-rw` (controller, incl. CSRF-token
  POST for the hourly report), `clients/cascades-tucson/unifi-ap-ssh` (AP SSH for neighbor/survey),
  `clients/cascades-tucson/pfsense-firewall`. NOTE: controller report POSTs need the `x-csrf-token`
  header from the login response (GET stat/* does not).

## Pending / Incomplete Tasks
- Re-run survey-collect to completion (stalled 68/74) before applying the 5 GHz channel plan.
- Execute the 2 AM run (Phase 2b/2a/3a + conditional 3b) with per-step verify + rollback.
- Howard adding APs to floors 5/6 next week -> then enable MemCare min-RSSI + re-measure coverage.
- After 2b stabilizes: re-run the 2.4 1/6/11 channel plan (deferred — currently worse).
- Re-key the 6 straggler Poly phones to the voice PPSK.

## Reference Information
- Site `va6iba3v` / site_id `685f39068e65331c46ef6dd2`, UOS `172.16.3.29:11443`.
- Master plan: `docs/network/network-optimization-master-plan.md`; voice QoS: `docs/network/phase1-voice-qos-design.md`.
- Voice-quality diagnostic: `reports/2026-06-18-voice-quality-diagnostic.md`.
