Frontend engineers
Prove srcObject / play() before rewriting the product UI.
One-way audio RCA
An audio-only React + SIP.js softphone with a live getStats() panel — built to isolate one-way audio across the browser, WSS/SIP signaling, FreeSWITCH media and the far-end device. Same PBX as production; none of the dashboard noise.
For frontend, SIP, QA and device engineers who hear “I cannot hear them” and need packet proof before changing NAT or dialplan.
One-way audio reports that skip classification typically look like:
One platform: Trust certs → register browser → single device contact → outbound call → 5s silence · 10s shout · 5s silence → packets vs energy → repeat in production on same network
Rising inbound PCMU packets with near-zero decoded energy points to far-end capture or payload — not a missing srcObject. The lab makes that visible in five seconds.
Registers to your existing FusionPBX/FreeSWITCH or Asterisk WSS. Does not replace the PBX.
flowchart LR Browser[React lab SIP.js getStats] -->|SIP WSS| PBX[FusionPBX FreeSWITCH] PBX --> Device[Embedded SIP device] Browser -->|DTLS SRTP| PBX PBX -->|RTP PCMU| Device Browser --> Ev1[Browser evidence] PBX --> Ev2[Channel logs]
This product is a productized delivery of the documented engineering case study — evidence stays on this page so you do not have to guess what was shipped.




Full case study with video and FAQ →
Configure this scope & send RFQ →
Prove srcObject / play() before rewriting the product UI.
Correlate browser stats with channel logs.
Repeatable shout-test protocol on a known-good client.
Separate firmware/mic from browser playout.
| Traditional setup | This product direction |
|---|---|
| Change NAT first | Classify: registered? bridged? packets? energy? playing? |
| Production dashboard only | Lab without Redux/worklets/multi-call |
| “Bridge succeeded” | Packets + energy + audio element state |
| Blame React | Near-zero energy with rising RTP → far-end capture |
Proves WSS registration and a known-good remote-track path; separates silent RTP from frontend playout defects; reduces pressure to change dialplan without packet proof. Rescue or internal-tool delivery — scoped in RFQ.
Estimates are scope-based planning figures — not binding quotes. Taxes, carrier deposits, DIDs and third-party AI usage are scoped in discovery.
No. It registers to your PBX and correlates browser stats with server logs.
When Redux, noise worklets or multi-call UI obscure media. The lab is the A/B baseline.
Rising inbound packets with near-zero audioLevel / totalAudioEnergy.
Yes — FusionPBX, Asterisk or embedded SIP devices.
Deliberately not. That is the point.
Uses your existing WSS/SIP. Estimator is BYOC / own SIP.
Vitest coverage for media paths is an optional requirement.
Optional “integrate into dashboard” requirement in the quote builder.