vicigeeksimple guides
Browse
Docs

Carriers & SIP · Beginner phone-system guide

PJSIP in VICIdial: check your server and set up one test phone

Find out which phone driver your server actually uses, understand the PJSIP connection pieces, and prepare one controlled phone test before changing working phones or carriers.

Start the guide

01 / 08

1. Understand what you are connecting

SIP carries the messages that start and end a phone call. PJSIP is the newer Asterisk driver that handles those messages. It is separate from the conference engine that joins an agent and a caller together. You can investigate a PJSIP connection without changing ConfBridge.

Think of a phone account as a named door. A transport says which network entrance to use; an endpoint holds call options; an address of record, usually called an AoR, points to the phone’s current contact address. A registration is the phone checking in. These pieces need to agree before a call can work.

The VICIdial document mixes generations: its introduction describes ViciBox 12 with Asterisk 18, but its activation recipe is still headed ViciBox 10 with Asterisk 16. It also predates the upstream removal of chan_sip in Asterisk 21. Establish your actual versions before following any migration example.

You should seeRegistration, reachability and an answered internal PJSIP call were observed separately.

02 / 08

2. Check the running driver before opening a configuration file

Run the following on the intended Asterisk server, not on an unrelated web or database host. These are information requests to the running process. A configuration file on disk can disagree with what the process has loaded.

Before you use it
Use your approved Asterisk CLI access. Keep the complete response in a private test record.
Read the running version and PJSIP prerequisites
asterisk -rx 'core show version'asterisk -rx 'module show like chan_pjsip.so'asterisk -rx 'module show like res_pjsip_config_wizard.so'asterisk -rx 'pjsip show transports'
Not executed · deliberately not run on the demo

This sample changes a system, contacts an outside service, needs a live call, or would print real data from a shared server, so it was not run on the demo. Run it only where you are authorized, and compare the result with the success and stop guidance.

Success looks like
A running PJSIP driver, the expected wizard module and an explicit transport give you a useful starting point. Read the transport protocol and bind address/port together.
Stop if
No such command or a missing module means the required runtime feature is unavailable. Stop and check the supported package/configuration with your administrator; do not unload a working driver.
What each check establishesScroll sideways to compare columns
ObservationWhat it meansNext action
PJSIP module is loadedThe driver is available, not necessarily configured for your phone.Inspect the transport and selected account.
Transport is listedAsterisk has a configured network path.Match its protocol and port to the phone.
Transport uses port 5061Only the listening number is known.Read its protocol; the number alone does not prove TLS encryption.
No transport is listedThere is no usable PJSIP transport in this view.Plan the supported setup before trying to register a phone.

03 / 08

3. Find the two VICIdial controls that matter

Use the native administration screens to inspect the current state first. Merely making PJSIP available does not convert existing phones or carriers.

  1. Open Administration → Admin → System Settings. Find Allowed SIP Stacks and record its existing value without saving. If PJSIP is unavailable, arrange an approved change before proceeding.
  2. Open Administration → Admin → Phones → Show Phones and select the approved synthetic phone. Record its current protocol, extension and assigned server privately. Confirm the account is on the same Asterisk server you inspected.
  3. If an approved test needs a new account, use Add a New Phone and the PJSIP protocol supported by your build. Use a unique extension and a strong private registration password; keep the existing working account unchanged.
  4. Enter the matching server, transport and listening port in the test softphone. The exact softphone fields differ; do not paste a SIP password into a screenshot or a support ticket.
  5. Save only the approved test record. Wait for the supported configuration-generation process, then inspect the running objects again. A saved web form alone does not prove registration.

04 / 08

4. Write down the connection instead of guessing ports

Complete this small worksheet before a change. It helps an administrator spot a wrong host, wrong driver or port collision without reading anyone’s password. A phone configured for UDP cannot use a transport that only accepts TLS.

VICIdial uses Asterisk’s PJSIP wizard format for PJSIP phone definitions. The wizard simplifies account objects; it does not replace the transport configuration in pjsip.conf. Avoid editing generated phone sections by hand.

Before you use it
This is a worksheet, not a shell command. Fill it from your own read-only checks.
One-phone connection worksheet
Test phone name: YOUR_LAB_PHONEAssigned Asterisk server: record privatelyPhone driver: PJSIPTransport name: copy from the running transport listTransport protocol: UDP, TCP, TLS, WS or WSS as actually configuredListening address and port: copy from the same transportPhone contact: check after registrationPrevious phone protocol and settings: record before saving
Not executed · worksheet or reference text

This sample is a template or reading aid, not a terminal command. There is no output to show.

Success looks like
The server, account and transport agree before the test phone connects.
Stop if
If a field is unknown, investigate it before changing ports or converting a carrier.

05 / 08

5. Check the selected phone, then test audio separately

Replace YOUR_LAB_PHONE with the approved endpoint name from your own configuration. Read-only object checks can identify a missing contact; they do not send a test call. Keep complete outputs private because account names and contact addresses can identify your deployment.

  1. Confirm the selected phone registers to the expected server and transport. A carrier’s outbound registration is a different check; an IP-authenticated carrier may intentionally have no outbound registration.
  2. Arrange one authorized internal call using the synthetic phone. Check two-way sound and any required DTMF, hold or transfer behavior; mark each observation separately.
  3. End the internal test and verify its channels have cleared. Only then decide whether the same controlled procedure is suitable for another phone.
Before you use it
Replace the placeholder with the synthetic phone name. Do not use a real customer or provider account as the demonstration.
Inspect the selected endpoint and current contacts
asterisk -rx 'pjsip show endpoint YOUR_LAB_PHONE'asterisk -rx 'pjsip show contacts'
Not executed · deliberately not run on the demo

This sample changes a system, contacts an outside service, needs a live call, or would print real data from a shared server, so it was not run on the demo. Run it only where you are authorized, and compare the result with the success and stop guidance.

Success looks like
The intended endpoint exists and its expected contact appears with the state appropriate to your configuration. Compare its address with the test phone.
Stop if
No matching endpoint suggests a generation, server-assignment or naming problem. A missing contact suggests registration, transport, credentials or network reachability needs investigation.

You should seeRegistration is a connection check. A completed call with two-way sound is a separate acceptance result.

06 / 08

6. What we checked on the demo

On the pinned ViciBox 12 lab, Asterisk 18.26.4-vici was already running PJSIP and its wizard. We created only synthetic phones 8902 and 8903 through the native forms, with separate station-login and registration passwords. The new-phone form also required a Voicemail ID; an empty value was rejected rather than silently creating the phone.

Actual loopback registration received 401, the normal authentication challenge, then 200 OK. We separately required the phone client to answer OPTIONS and become Avail. The first test client registered but mishandled these reachability requests; correcting that client established readiness without changing the server transport.

A controlled internal call then used PJSIP 8902 for the agent and PJSIP 8903 for the customer. Native VICIdial reached LIVE, and the actual bridge contained the named agent and customer profiles. This verifies the local driver and call path; it is not a remote NAT, encrypted transport or carrier test.

The transport list showed UDP on 5061 and a WSS transport entry with 5060. Port 5061 on this host was UDP, not TLS. The WSS entry does not prove a browser listening port: that requires the separate Asterisk HTTP-server status check.

Observed phone checks, not guessed port defaultsScroll sideways to compare columns
CheckObserved resultLimit
Registration401 → 200; owned loopback contact presentAuthentication alone is not availability.
ReachabilityActual OPTIONS replies and Avail contactA phone must still answer a call.
Answered internal callNative LIVE; agent 8902 and customer 8903 joined the roomOnly the approved same-host path was tested.
Audio evidenceThe resulting stereo file contains the two known source tonesNo human listening, remote NAT or carrier-quality claim.

Native allowed SIP stacks setting

Open to enlarge
Native allowed SIP stacks setting showing the actual recorded value
Actual read-only System Settings field: SIP_and_PJSIP.
Capture detailsThis enables configuration choices; it does not establish that a particular phone or carrier is registered or a call completed.

You should seeRegistration, reachability and an answered internal PJSIP call were observed separately.

Download the actual PJSIP registration result

Download the dated practical test results and limits

07 / 08

7. If the phone still does not work

Start with the smallest failed check. Repeatedly changing ports makes it harder to tell which setting caused the problem.

PJSIP symptoms and the next useful checkScroll sideways to compare columns
SymptomCheck nextAvoid
pjsip command is unavailableInstalled version and loaded PJSIP modules.Blindly replacing packages or unloading the active SIP driver.
Endpoint exists but has no contactPhone account, selected server, protocol, port and registration response.Assuming the web form proves the phone connected.
Transport cannot bindExisting listener on the same address/protocol/port.Moving all working phones to another port as a quick fix.
Contact exists but calls have no soundApproved internal audio test, NAT/media addresses and the actual RTP path.Treating successful registration as an audio pass.
A port change seems ignoredThe running transport versus the saved configuration and its reload policy.Repeated generic reloads; transport changes may require planned Asterisk restart.
Registered but UnavailableCheck the actual phone listener and its replies to OPTIONS; confirm the contact becomes Avail.Registration, reachability and working RTP audio are separate tests.

08 / 08

8. Finish with a result and a recovery path

Record exactly what passed: driver loaded, transport present, endpoint present, selected contact registered, internal call connected and two-way sound checked. Leave untested boxes empty.

If you changed only the synthetic phone, restore that exact record and softphone configuration from your baseline if the test fails. If the plan changes existing transport or SIP settings, keep the recorded previous configuration and independent access available before starting; restoring a file does not change the running transport automatically.

Asterisk transport reload behavior is version-sensitive and may disrupt calls. The upstream default does not allow transport reload. Let the administrator arrange the required maintenance action instead of copying the historical reboot instruction into an active call center.

  • VICIdial revision and Asterisk version recorded.
  • Running transport protocol and bind address/port recorded.
  • Only the approved synthetic account was changed.
  • Registration and audio outcomes recorded separately.
  • Working accounts remain available, or the exact scoped changes were restored.

Checks and sources

What was checked

  • November 7, 2026: native phone creation, authenticated loopback registration, OPTIONS/Avail and the answered internal call were observed. The failed test-client readiness check is preserved in the test record.
  • The phone test uses loopback UDP. Remote NAT, encrypted SIP/media and carrier connectivity were not exercised.

Primary references

Sources

  1. VICIdial PJSIP supportVICIdial Group · accessed November 7, 2026
  2. PJSIP configuration sections and relationshipsAsterisk · accessed November 7, 2026
  3. PJSIP configuration wizardAsterisk · accessed November 7, 2026
  4. PJSIP transport configuration and reload behaviorAsterisk · accessed November 7, 2026
  5. chan_sip version historyAsterisk · accessed November 7, 2026
  6. PJSIP outbound registration checksAsterisk · accessed November 7, 2026
  7. Asterisk WebRTC clients: HTTP server and WSS transportAsterisk · accessed November 7, 2026