@extends('layouts.app') @section('content')

Diagnostic Mode

Capture a targeted SIP + RTP trace for a single device to diagnose one-way audio, no-audio, codec and NAT problems. The capture is scoped to one device, size-capped, and auto-stops — so it's always safe to leave running. Download the .pcap and open it in Wireshark, or send it to support.

@if (session('success'))
{{ session('success') }}
@endif @if (session('error'))
{{ session('error') }}
@endif @if ($errors->any())
{{ $errors->first() }}
@endif {{-- ── Live status ── --}}
@if (!empty($status['active']))
CAPTURING
Target: {{ $status['target_label'] ?? $status['target'] }}
Started {{ \Illuminate\Support\Carbon::parse($status['started_at'])->diffForHumans() }} @if(!empty($status['started_by'])) by {{ $status['started_by'] }} @endif @if(!empty($status['sip_logger'])) · SIP logging on @endif @if(!empty($status['rtp_debug'])) · RTP debug on @endif
@if(!is_null($status['seconds_left'] ?? null))
Auto-stops in {{ gmdate('i:s', (int) $status['seconds_left']) }} (mm:ss)
@endif
@csrf
@elseif (!empty($status['stale']))
The previous capture ended (expired or stopped). Its files are listed below.
@csrf
@else
No capture running. Start one below when you need to troubleshoot a call.
@endif
{{-- ── Start form ── --}} @if (empty($status['active']))
Start a capture
@csrf
An extension is resolved to its currently registered device IP. Or enter a device IP directly.
@endif {{-- ── Captures list ── --}}
Captured files Auto-deleted after 7 days · max ~200 MB per capture
@if (count($captures) === 0)
No captures yet.
@else @foreach ($captures as $c) @endforeach
FileSizeCapturedDownload
{{ $c['name'] }} {{ number_format($c['size'] / 1024, 0) }} KB {{ $c['modified'] }} .pcap
@endif

Diagnostic Mode is safe to leave alone: captures are limited to the chosen device, capped in size, and stopped automatically when the timer expires.

@endsection