# Session Log — Cascades Wireless Network Diagnostic

## User
- **User:** Howard Enos (howard)
- **Machine:** Howard-Home
- **Role:** tech
- **Session:** 2026-05-16

---

## Session Summary

Investigated poor wireless performance at Cascades Tucson using the UniFi cloud API (api.ui.com) with a provided API key. Work began by enumerating all sites under the account to locate the Cascades site, then pulled device inventory and site-level statistics. The session was primarily diagnostic — no configuration changes were made per Howard's explicit instruction to remain read-only.

Cascades is managed on a shared UniFi OS Server (UOS Server) hosted at 172.16.3.29 on the ACG internal network. The cloud API exposes basic device status and site-level aggregates, but does not expose per-AP RF statistics or per-client data. Howard supplemented the API data by pasting Channel AI output and client list data directly from the UniFi dashboard, which enabled deeper analysis.

The primary finding was severe 2.4 GHz saturation across the entire building. With 64+ U7 Pro APs deployed in a dense multi-floor building, all three non-overlapping 2.4 GHz channels (1, 6, 11) are running at 60–92% busy and 72–93% interference. This is caused by too many APs transmitting on the same channels simultaneously — a fundamental co-channel interference problem. Several APs were also found offline, and two APs have Fast Ethernet uplinks instead of Gigabit, capping those rooms at 100 Mbps.

The session concluded with a prioritized list of 2.4 GHz power reduction and disable recommendations, segmented by channel group. Work on implementing those changes was deferred to a follow-up session.

---

## Key Decisions

- Kept the session strictly read-only per Howard's instruction — no UniFi settings were changed.
- Used the cloud API (api.ui.com) as the primary data source. Attempted but failed to access the local controller API at 172.16.3.29 due to path/auth limitations; the cloud API key does not authenticate to the local Tomcat instance.
- Created session log as a separate file (not appended to today's caregiver AD session) due to unrelated subject matter.
- Deferred 2.4 GHz power changes to a follow-up session after documentation.

---

## Problems Encountered

- **Cloud API does not expose per-AP RF stats or per-client data.** Only site-level aggregates and basic device status available via api.ui.com. Resolved by having Howard pull Channel AI and client list from the dashboard and paste the data into the conversation.
- **Local controller at 172.16.3.29 not fully accessible.** Port 8080 (Tomcat/UniFi) returns HTTP 400 for API calls because it requires HTTPS and session auth — the cloud API key does not work here. Port 8443 responds but returns empty 404 for all paths (likely a reverse proxy without the correct routes). Port 443 is unreachable from Howard-Home even via Tailscale.
- **developer.ui.com docs are JavaScript-rendered.** WebFetch cannot render the page. Worked around by searching community docs and GitHub and by probing API endpoints directly via curl.
- **Building layout misread initially.** Assumed a vertical multi-story layout, then corrected to a linear `[5/6 wings | dining room | + main building]` layout. Also corrected assumption that rooms 342 and 343 are across the hall from each other — a room conversion to a double room changed the physical layout, so they are not directly opposite.

---

## Configuration Changes

None. Read-only diagnostic session.

---

## Credentials & Secrets

- **UniFi Cloud API Key:** `amY54KqX0i0OuGEYNykLdH9M1Kd4jhzt`
  - Scope: all sites under ACG's ui.com account
  - Access level: admin (read + write, though only read was used)
  - Used with header: `X-API-Key: <key>` against `https://api.ui.com`
  - Does NOT work for local controller auth at 172.16.3.29

---

## Infrastructure & Servers

### Cascades UniFi Site
- **Site name (display):** Cascades
- **Site ID:** `685f39068e65331c46ef6dd2`
- **Site short name:** `va6iba3v`
- **Host ID:** `2d6b654d-9b79-4eaa-b2e1-52062a5690ef`
- **Host name:** UOS Server
- **UOS Server IP:** 172.16.3.29
- **UOS Server ports:** 8080 (HTTP/Tomcat), 8443 (HTTPS/proxy — 404 all paths), 443 (unreachable)
- **API base:** `https://api.ui.com` (cloud, works with key above)

### Network topology
- **Total devices:** 87 (75 wifi, 12 wired)
- **Active wifi clients:** 549
- **Site-wide TX retry rate:** 11.2% (elevated — healthy is <5%)
- **Internet uplink:** no gateway device shown in site stats (no WAN magic / no ISP data)
- **Floor switches:** USW Pro 24 PoE per floor via SFP+ (10 GbE) — 2nd floor, 3rd floor, 4th floor confirmed online; Switch MemCare online
- **AP model:** Predominantly U7 Pro (64 units); 1 U6 Pro (room 615); 1 AC Mesh Pro (Patio/Kitchen); CC Bridge (U7 Pro, wireless mesh)

### Building layout
```
[5th floor - N ground wing]
          |
    [Dining Room]----[+ main building, floors 1-4]
          |
[6th floor - S ground wing]
```
- Floors 1–4: multi-story "+" shaped building, 4 wings per floor
- Floors 5–6: single-story ground-level wings, connected to main building via Dining Room
- Hallway convention: **odd rooms on one side, even rooms on the other** (applies to all wings)
- Room 342 and 343 are NOT directly across from each other — a room was converted to a double room, changing the local layout

---

## AP Inventory by Floor

### Floor 1 (13 APs)
102, 103, 109, 115, 116, 122, 127, 132 (Rec Room), 133, 139, 140, 145, 146

### Floor 2 (15 APs + 2nd Floor Atrium)
203, 204, 206, 209, 210, 217, 221, 222, 229, 236, 237, 240, 241, 247, 248, 2nd Floor Atrium

### Floor 3 (14 APs + 3rd Floor Atrium)
303, 304, 309, 310, 317, 318, 323, 324, 327, 330, 336, 341, 345, 348, 3rd Floor Atrium

### Floor 4 (12 APs + 4th Floor Atrium)
402, 403, 407, 415, 421, 427, 428, 433, 434, 441, 442, 445, 4th Floor Atrium

### Floor 5 — North ground wing (2 APs)
505, 517

### Floor 6 — South ground wing (3 APs)
608, 615 (U6 Pro), 622

### Common/shared areas
Dining Room, Kitchen, CC Bridge (mesh), Memcare Nurse Station, memcare piano, Memcare TV room

---

## Offline Devices

| Device | Type | IP | Notes |
|--------|------|----|-------|
| AP 335 | U7 Pro | 192.168.2.206 | No clients, offline |
| AP 342 | U7 Pro | 192.168.2.98 | No clients, offline. Not directly across from room 343 (double-room conversion) |
| AP 406 | U7 Pro | 192.168.2.4 | No clients, offline |
| AP 450 | U7 Pro | 192.168.6.207 | No clients, offline |
| Switch 2nd Floor #2 | USW 24 PoE | 192.168.2.193 | Offline |
| Switch 4th Floor #2 | USW 24 PoE | 192.168.3.65 | Offline |
| USW Pro Max 16 PoE | Switch | 192.168.1.20 | Adopted 2026-04-22, current status unclear/offline |

---

## 2.4 GHz Saturation Findings

All three non-overlapping 2.4 GHz channels are critically congested across the entire building.

| AP | Ch | Clients | RSSI | Busy% | Interf% | Data |
|----|----|---------|------|-------|---------|------|
| 3rd Floor Atrium | 1 | 2 | -54 dBm | 76.0% | 91.5% | 420 MB |
| 2nd Floor Atrium | 6 | 2 | -53 dBm | 79.9% | 92.9% | 115 MB |
| 217 | 6 | 2 | -46 dBm | 71.1% | 85.8% | 1.07 GB |
| 309 | 6 | 3 | -43 dBm | 68.2% | 83.1% | 396 MB |
| 140 | 6 | 1 | -43 dBm | 73.5% | 86.7% | 135 MB |
| 323 | 6 | 3 | -44 dBm | 68.9% | 83.6% | 1.53 GB |
| 133 | 6 | 3 | -60 dBm | 72.2% | 83.8% | 124 MB |
| 324 | 6 | 1 | -52 dBm | 63.0% | 80.4% | 18.3 GB |
| 145 | 6 | 1 | -46 dBm | 69.4% | 81.0% | 13.0 MB |
| 204 | 11 | 2 | -47 dBm | 67.4% | 80.1% | 40.6 MB |
| 415 | 11 | 2 | -48 dBm | 69.1% | 80.4% | 20.1 MB |
| 441 | 11 | 0 | -51 dBm | 70.5% | 84.0% | 1.36 MB |
| 608 | 11 | 2 | -68 dBm | 46.4% | 61.3% | 103 MB |
| Memcare NS | 11 | 4 | -52 dBm | 33.2% | 45.7% | 592 MB |
| 427 | 1 | 1 | -47 dBm | 66.8% | 83.3% | 192 MB |
| 247 | 1 | 1 | -60 dBm | 62.9% | 75.6% | 26.8 MB |
| 336 | 1 | 0 | -64 dBm | 58.4% | 72.1% | 25.4 MB |
| 139 | 1 | 0 | -72 dBm | 70.9% | 84.5% | 305 KB |
| 505 | 1 | 2 | -62 dBm | 32.2% | 49.6% | 7.54 GB |

Note: data covers ~25 APs (Channel AI view, partial). Same pattern expected across all 65+ APs.

### 5 GHz status (healthy by comparison)
Most APs: 4–17% channel utilization on 5 GHz. No critical congestion found. The site-wide 11.2% TX retry rate is primarily driven by 2.4 GHz.

---

## Room 343 Specific Findings

- **No dedicated AP for room 343** — room was never assigned its own AP
- **Nearest APs:** 341 (online, ch6 2.4 GHz / ch36 5 GHz) and 345 (online, ch11 2.4 GHz / ch64 5 GHz)
- **Device in room 343:** `BRW4845E652A420` (likely Brother printer/device)
  - Connected to: AP 341
  - Standard: WiFi 4 (802.11n), 1x1 spatial stream
  - Band: 2.4 GHz, channel 6, 20 MHz width
  - IP: 10.3.43.14
  - Experience (UniFi): Excellent
  - Actual throughput: 432 bps (effectively zero — 2.4 GHz saturation)
  - Uptime: 21d 11h (stable connection, not a roaming/dropout issue)
- **Root cause:** Device is hardware-limited to 2.4 GHz and is trapped on channel 6 which runs at 83%+ interference. Cannot benefit from 5 GHz. Fix requires either wiring the device or accepting degraded wifi performance for 2.4 GHz-only legacy hardware.

---

## Other Infrastructure Issues

- **AP 236:** Fast Ethernet uplink (100 Mbps cap) — all clients capped regardless of wifi speed
- **AP 240:** Fast Ethernet uplink (100 Mbps cap) — same issue
- **CC Bridge:** Operating as wireless mesh (not wired uplink). Everything downstream of this AP shares its wireless backhaul bandwidth.
- **AP 121:** Shows in Channel AI with all channels set to Auto and 0 clients/no data — likely unadopted or orphaned.

---

## 2.4 GHz Power Reduction Recommendations (Pending Implementation)

### Disable 2.4 GHz radio entirely
| AP | Ch | Rationale |
|----|----|-----------|
| 139 | 1 | 0 clients, 305 KB data, -72 dBm (barely transmitting, still causing noise) |
| 336 | 1 | 0 clients, 25.4 MB, adjacent to 341 which handles that side |
| 441 | 11 | 0 clients, 1.36 MB, adding 84% interference to ch11 for nothing |

### Reduce TX power to Low
| AP | Ch | Rationale |
|----|----|-----------|
| 140 | 6 | Tied for strongest on ch6 (-43 dBm), only 1 client / 135 MB |
| 145 | 6 | -46 dBm, 1 client, 13 MB — very low use |
| 427 | 1 | -47 dBm, 1 client, 192 MB — shrink footprint |

### Reduce TX power to Medium
| AP | Ch | Rationale |
|----|----|-----------|
| 415 | 11 | -48 dBm, 2 clients, 20 MB |
| 204 | 11 | -47 dBm, 2 clients, 40 MB |

### Do not touch (active 2.4 GHz use or isolated coverage)
324 (18.3 GB heavy user), 323 (1.53 GB / 3 clients), 217 (1.07 GB), 309 (3 clients, strongest on ch6 — reduce only after others are done), Memcare NS (4 clients, isolated wing, only 33% busy), 505 (isolated 5th floor wing), 608 (isolated 6th floor), 341 (serves BRW legacy device in room 343)

### Next step after changes
Wait 24–48 hours, re-pull Channel AI. If ch6 is still above 50% busy, reduce 309 next.

---

## Commands & Outputs

```bash
# List all sites (API key auth)
curl -s -H "X-API-Key: amY54KqX0i0OuGEYNykLdH9M1Kd4jhzt" "https://api.ui.com/ea/sites"

# Cascades site statistics
# siteId: 685f39068e65331c46ef6dd2 — returned in /ea/sites response

# Get all devices (returns by host, not filtered by site despite siteId param)
curl -s -H "X-API-Key: amY54KqX0i0OuGEYNykLdH9M1Kd4jhzt" \
  "https://api.ui.com/v1/devices?siteId=685f39068e65331c46ef6dd2"
# Filter for UOS Server host: 2d6b654d-9b79-4eaa-b2e1-52062a5690ef

# UOS Server local Tomcat (reachable via Tailscale)
curl -s "http://172.16.3.29:8080/status"
# Returns: {"meta":{"rc":"ok","uuid":"ed829b7c-8e32-5f8c-a2b1-a61a23712320"},"data":[]}
# Classic API paths return HTTP 400 without session auth
```

---

## Pending / Incomplete Tasks

- [ ] Implement 2.4 GHz power changes (disable: 139, 336, 441 / low: 140, 145, 427 / medium: 415, 204)
- [ ] Apply same Channel AI review to remaining ~50 APs not covered in shared data
- [ ] Investigate offline APs 335, 342, 406, 450 — physical inspection or PoE switch port check
- [ ] Investigate offline Switch 2nd Floor #2 and Switch 4th Floor #2
- [ ] Fix Fast Ethernet uplinks on APs 236 and 240 — check cable/switch port
- [ ] Resolve CC Bridge wireless mesh — determine if wired backhaul is possible
- [ ] Re-pull Channel AI 24–48 hours after 2.4 GHz changes to measure improvement
- [ ] Evaluate AP 121 — unadopted or orphaned device, investigate
- [ ] Consider minimum RSSI threshold on 2.4 GHz to force legacy device proximity
- [ ] Consider alternating 2.4 GHz disable pattern across room APs as a longer-term strategy
- [ ] Identify and possibly replace the BRW device in room 343 with a wired connection

---

## Reference Information

- **UniFi Cloud API base:** `https://api.ui.com`
- **Working endpoints:** `/ea/sites`, `/v1/sites`, `/v1/devices?siteId=<id>`
- **Non-working via cloud:** `/ea/sites/<id>/devices`, `/proxy/network/<hostId>/...`, `/v1/clients`
- **Developer docs:** https://developer.ui.com/site-manager-api/list-devices (JS-rendered, not WebFetch accessible)
- **UniFi getting started:** https://developer.ui.com/site-manager/v1.0.0/gettingstarted
- **Prior Cascades session logs:** `clients/cascades-tucson/session-logs/`
- **Cascades CONTEXT.md:** `clients/cascades-tucson/CONTEXT.md`
