Session covering YMCS setup, Yealink phone scanner tool development, and Peaceful Spirit UCG Ultra speed diagnostics (ECM crash-loop, Cox plant issue). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
219 lines
9.9 KiB
Markdown
219 lines
9.9 KiB
Markdown
# Session Log: 2026-02-24
|
|
|
|
## Session Summary
|
|
|
|
Two major topics covered this session:
|
|
|
|
### 1. Yealink YMCS Setup & Phone Scanner Tool
|
|
Set up Yealink Management Cloud Service (YMCS) for managing phones across ACG clients. Built a PowerShell scanner tool to discover Yealink phones on client networks and extract serial numbers for RPS/YMCS registration.
|
|
|
|
### 2. Peaceful Spirit (Country Club) - UCG Ultra Speed Issues
|
|
Diagnosed severe speed degradation on a Cox 300/30 circuit behind a Unifi Cloud Gateway Ultra. Root cause identified as ECM hardware offload engine crash-looping combined with Suricata IDS/IPS on High consuming excessive CPU.
|
|
|
|
---
|
|
|
|
## Topic 1: Yealink YMCS Setup
|
|
|
|
### What Was Accomplished
|
|
- Reviewed YMCS dashboard structure: Arizona Computer Guru LLC org with sites VWP and GuruHQ
|
|
- Confirmed YMCS pass-through/relay provisioning works - YMCS redirects phones to PacketDials for SIP config
|
|
- Two phones already online in YMCS:
|
|
- **ACG Test Phone**: MAC `805ec097dacf`, SIP-T46S, firmware 66.86.0.15, IP 172.16.1.58
|
|
- **Winter**: MAC `805e0c08fefa`, SIP-T46S, firmware 66.86.0.15, IP 172.16.1.29
|
|
- YMCS Site Configuration (GuruHQ) already has relay config to PacketDials:
|
|
```
|
|
auto_provision.pnp_enable=1
|
|
auto_provision.power_on=1
|
|
auto_provision.repeat.enable=1
|
|
auto_provision.repeat.minutes=30
|
|
auto_provision.server.password=********
|
|
auto_provision.server.url=ftp://p.packetdials.net
|
|
auto_provision.server.username=lrshwh
|
|
firmware.url=ftp://p.packetdials.net
|
|
static.zero_touch.enable=1
|
|
```
|
|
|
|
### Migration Plan (wlcomm to OIT VoIP)
|
|
- YMCS acts as relay/pass-through to provider's provisioning server
|
|
- When ready: change `auto_provision.server.url` in YMCS site config from PacketDials to OIT
|
|
- Push config, phones re-provision from OIT on next check-in (every 30 min) or reboot
|
|
- Each client in PacketDials/Whitelabel has shared device password, username always `admin`
|
|
|
|
### Winter Phone SIP Details (for reference)
|
|
- SIP Server: `computerguru.voip.packetdials.net`
|
|
- Username: `5f54f3c8b216`
|
|
- Password: `3eb7d67260efe017`
|
|
- Transport: DNS NAPTR
|
|
- Expires: 360
|
|
- Assigned to: Winter Williams
|
|
- E911: (520) 304-8300 - 7437 E 22...
|
|
- Line Keys: Device (Winter), Park 1-4 (*31-*34), BLF Mike (7003), BLF Rob (7007), Speed Dial Mike-Cell (1-520-289-1912), Howard-Cell (1-520-585-1310), Rob-Cell (1-520-303-6791)
|
|
|
|
### Yealink Phone Scanner Tool
|
|
Built `tools/Scan-YealinkPhones.ps1` - PowerShell script to scan subnets for Yealink phones.
|
|
|
|
**What works:**
|
|
- Ping sweep using .NET SendPingAsync (parallel batches)
|
|
- ARP table + Get-NetNeighbor parsing to find Yealink MACs
|
|
- Yealink OUI prefixes: `80:5E:C0`, `80:5E:0C`, `80:5A:35`, `00:15:65`, `28:6D:97`, `24:4B:FE`
|
|
- SSL certificate bypass for self-signed certs
|
|
- Unsafe header parsing for Yealink's non-standard HTTP responses
|
|
- CSV output with append capability
|
|
|
|
**What doesn't work (yet):**
|
|
- Serial number extraction from web UI - Yealink T46S firmware 66.86.0.15 uses RSA+AES encrypted login
|
|
- Login flow: AES-128-CBC encrypts password (with random prefix + JSESSIONID), RSA encrypts AES key/IV
|
|
- Implemented the crypto in PowerShell but got error -3 (authentication format mismatch)
|
|
- The JS crypto uses CryptoJS AES with ZeroPadding + custom RSA (pkcs1pad2)
|
|
- Issue likely related to session/nonce handling
|
|
|
|
**Alternative approaches tried:**
|
|
- SSDP/UPnP discovery: No response from Yealink phones
|
|
- SNMP (community: public): No response
|
|
- Digest auth on cgiServer.exx: 401 (auth not accepted)
|
|
- Various API endpoints: All return login page or 403
|
|
|
|
**Backup tool created:** `tools/yealink-serial-scanner.html` - Browser-based scanner that uses the phone's own JavaScript crypto. Not yet tested.
|
|
|
|
**Recommended approach:** Yealink IP Discovery Tool (official tool, not publicly available - request from Yealink distributor or check YMCS Resources section)
|
|
|
|
### Files Created/Modified
|
|
- `tools/Scan-YealinkPhones.ps1` - Main scanner script
|
|
- `tools/test-yealink.ps1` - Debug/test script (can be deleted)
|
|
- `tools/yealink-serial-scanner.html` - Browser-based scanner (backup approach)
|
|
|
|
### Credentials
|
|
- GuruHQ Yealink phone web UI: admin / b4e765c3
|
|
- PacketDials provisioning: username `lrshwh` (password masked in YMCS)
|
|
- YMCS RPS example serial: `3146019091637071` (ACG Test Phone)
|
|
|
|
---
|
|
|
|
## Topic 2: Peaceful Spirit Country Club - UCG Ultra Speed Issues
|
|
|
|
### Problem
|
|
Cox 300/30 Mbps circuit delivering 1 Mbps download with hardware acceleration ON + auto MSS clamping. Was working at full speed a few days prior.
|
|
|
|
### Equipment
|
|
- **Gateway:** Unifi Cloud Gateway Ultra (UCG-PST-CC)
|
|
- **Firmware:** UniFi OS 5.0.12, Network 10.1.85 (Official channel, auto-update ON)
|
|
- **Kernel:** 5.4.213-ui-ipq5322 (aarch64)
|
|
- **WAN:** eth4, 2500 Mbps full duplex to Cox modem
|
|
- **VPN:** WireGuard site-to-site (wgsts1000, MTU 1420) + tun1 (Teleport)
|
|
- **Cox IP:** 98.190.129.150 (wsip-98-190-129-150.ph.ph.cox.net)
|
|
- **LAN:** 192.168.0.0/24
|
|
- **Modem:** New, replaced day before session
|
|
|
|
### Test Results
|
|
| Configuration | Download | Upload |
|
|
|--------------|----------|--------|
|
|
| HW accel ON + Auto MSS | ~1 Mbps | 29 Mbps |
|
|
| HW accel ON + MSS 1300 | 28 Mbps | 29 Mbps |
|
|
| HW accel OFF + Auto MSS | 28 Mbps | 22 Mbps |
|
|
| HW accel ON + MSS 1452 | <1 Mbps | - |
|
|
| HW accel ON + MSS disabled | <2 Mbps | - |
|
|
| Later (no changes) | 150 Mbps | - |
|
|
| Later (no changes) | 271 Mbps | - |
|
|
|
|
### Root Cause Analysis (via SSH)
|
|
1. **Suricata IDS/IPS running on HIGH** - consuming 20.3% RAM (614MB), forcing all traffic through CPU
|
|
2. **ECM hardware offload NOT loaded** - `lsmod | grep ecm` returned empty; ECM is disabled when IDS/IPS is active
|
|
3. **ECM was crash-looping** in dmesg - repeated `ECM exit / ECM init` cycles
|
|
4. **MSS clamping rules only apply to tun1 (VPN)**, NOT to WAN (eth4) - UI MSS setting had no effect on WAN traffic
|
|
5. **QUIC reassembly failures** in dmesg: `[quic_sm_reassemble_func#1025]: failed to allocate reassemble cont.`
|
|
6. **WAN link flapped** - eth4 went down/up during the session period
|
|
|
|
### Key Finding
|
|
MSS clamping in the Unifi UI was a red herring - iptables showed MSS rules only on `tun1`, not `eth4`. The real issue was Suricata on High preventing hardware offload, combined with ECM instability.
|
|
|
|
### Resolution
|
|
Speed recovered to 271 Mbps without making changes - likely ECM crash loop resolved itself. Monitoring recommended.
|
|
|
|
### Recommendations
|
|
- Consider switching IDS/IPS from High to Medium/Low for better throughput
|
|
- Monitor for ECM crash recurrence
|
|
- If speeds drop again, reboot UCG Ultra to reset ECM state
|
|
- Keep SSH key in place for future diagnostics
|
|
|
|
### SSH Access
|
|
- **Host:** 192.168.0.10 (via VPN) or 98.190.129.150 (WAN)
|
|
- **User:** root (also requires password via GUI-added key)
|
|
- **Key:** `~/.ssh/ucg_peaceful_spirit` (ed25519)
|
|
- **Public key:** `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKBw+BK25MXpm91XBtDsSp7K0nTcKwFDLFZDx7tAO/N8 claude@claudetools`
|
|
- **Note:** Key was added via Unifi GUI; SSH still prompts for password in addition to key
|
|
|
|
### Infrastructure
|
|
- UCG Ultra hostname: UCG-PST-CC
|
|
- WAN interface: eth4 (NOT eth0)
|
|
- LAN interfaces: eth0-eth3 on switch0, br0
|
|
- VPN: wgsts1000 (WireGuard site-to-site), tun1 (Teleport)
|
|
|
|
---
|
|
|
|
## MSS Clamping Reference (Cox Cable)
|
|
- Cox uses standard DOCSIS, MTU 1500, no PPPoE
|
|
- Standard MSS: 1460 (1500 - 20 IP - 20 TCP)
|
|
- With IPsec VPN: ~1390-1400
|
|
- With WireGuard: 1420
|
|
- UCG Ultra max MSS input: 1452
|
|
|
|
---
|
|
|
|
## Pending/Incomplete Tasks
|
|
|
|
### Yealink YMCS
|
|
- [ ] Get Yealink IP Discovery Tool from distributor (for serial number extraction)
|
|
- [ ] Test browser-based scanner (`tools/yealink-serial-scanner.html`) as fallback
|
|
- [ ] Onboard remaining phones across all client sites into YMCS
|
|
- [ ] Build OIT VoIP config templates in YMCS when ready for migration
|
|
- [ ] Clean up test files (`tools/test-yealink.ps1`)
|
|
|
|
### Peaceful Spirit
|
|
- [ ] Monitor UCG Ultra speed stability over coming days
|
|
- [ ] If speeds drop again, consider IDS/IPS High -> Medium/Low
|
|
- [ ] Investigate why GUI-added SSH key still requires password
|
|
- [ ] Consider disabling auto-update on UCG to prevent firmware regressions
|
|
|
|
---
|
|
|
|
## Update: 2026-02-25 Follow-up
|
|
|
|
### Peaceful Spirit - Continued Degradation
|
|
|
|
After initial recovery to 278 Mbps (HW accel ON, auto MSS), speeds dropped back to 1 Mbps within minutes. ECM confirmed crash-looping again via SSH dmesg — cycling every ~6 minutes (init -> run -> exit -> repeat).
|
|
|
|
### IDS/IPS Disabled
|
|
- Switched IDS/IPS from High to disabled entirely
|
|
- Speed still unstable: initial 200+ Mbps then **decays to ~70 Mbps under sustained load**
|
|
- This speed decay pattern (burst then drop) indicates external plant issue, not gateway
|
|
|
|
### Conclusion: Cox Plant Issue
|
|
- ECM crash-looping is a SYMPTOM, not the cause
|
|
- Gateway offload engine crashing because it's receiving corrupted/incomplete frames from modem
|
|
- Speed decay under sustained load consistent with:
|
|
- Upstream noise/ingress causing CMTS power level adjustments
|
|
- Overheating or failing amplifier in plant
|
|
- Partial bonding failure (marginal channels dropping under load)
|
|
- T3 timeouts accumulating as modem loses sync on noisy channels
|
|
- **Cox tech dispatched** — needs line tech with meter at the tap
|
|
|
|
### Summary Provided to Cox Tech
|
|
- 300/30 circuit delivering 70-200 Mbps (intermittent drops to <1 Mbps)
|
|
- 50% packet loss at all packet sizes
|
|
- New modem (replaced day prior), same issue
|
|
- Speed starts 200+ then decays to 70 under sustained load
|
|
- Download severely impacted, upload less affected = downstream RF/signal issue
|
|
- Need tech to check: downstream SNR, power levels, uncorrectable codewords, T3/T4 timeouts, physical plant, RF ingress
|
|
|
|
---
|
|
|
|
## Files Reference
|
|
- `tools/Scan-YealinkPhones.ps1` - Yealink phone subnet scanner
|
|
- `tools/test-yealink.ps1` - Debug script (temporary)
|
|
- `tools/yealink-serial-scanner.html` - Browser-based serial scanner
|
|
- `~/.ssh/ucg_peaceful_spirit` - SSH key for Peaceful Spirit UCG Ultra
|
|
- `C:\temp\phones.csv` - Scanner output (test data)
|
|
- `C:\temp\yealink_common.js` - Yealink phone JS (for crypto analysis)
|
|
- `C:\temp\yealink_login.js` - Yealink login JS
|
|
- `C:\temp\yealink_loginform.txt` - Login form response dump
|