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>
9.9 KiB
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
- ACG Test Phone: MAC
- 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.urlin 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 scripttools/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)
- Suricata IDS/IPS running on HIGH - consuming 20.3% RAM (614MB), forcing all traffic through CPU
- ECM hardware offload NOT loaded -
lsmod | grep ecmreturned empty; ECM is disabled when IDS/IPS is active - ECM was crash-looping in dmesg - repeated
ECM exit / ECM initcycles - MSS clamping rules only apply to tun1 (VPN), NOT to WAN (eth4) - UI MSS setting had no effect on WAN traffic
- QUIC reassembly failures in dmesg:
[quic_sm_reassemble_func#1025]: failed to allocate reassemble cont. - 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 scannertools/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 UltraC:\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 JSC:\temp\yealink_loginform.txt- Login form response dump