Read time: 9 minutes

How to Set Up a Softphone with FreePBX | Step-by-Step Guide (2026)

How to Set Up a Softphone with FreePBX | Step-by-Step Guide (2026)

How to Set Up a Softphone with FreePBX: Complete Configuration Guide

FreePBX is one of the most popular open-source PBX platforms in the world, but connecting a softphone to it for the first time can be surprisingly frustrating. Forum threads are scattered, documentation assumes prior knowledge, and most guides only cover one specific app. This guide changes that. Whether you need to set up a FreePBX softphone on a desktop, laptop, or mobile device, this step-by-step walkthrough covers everything from creating your first PJSIP extension to securing your calls with TLS and SRTP.

By the end, you will have a fully working softphone connected to FreePBX -- and you will know how to troubleshoot the most common issues that trip up even experienced administrators.

What You Need Before You Start

Before configuring any softphone with FreePBX, confirm you have the following in place:

  • FreePBX 16 or later with Asterisk 18+ (earlier versions use legacy chan_sip, which is deprecated)
  • Admin access to the FreePBX web GUI (typically at https://your-server-ip/admin)
  • Network/firewall ports open:
    • SIP signaling: UDP/TCP port 5060 (or 5061 for TLS)
    • RTP media: UDP ports 10000-20000
    • If your FreePBX server sits behind NAT, you also need the external IP address configured in Asterisk SIP Settings
  • A softphone app installed on your device (we cover several options below)

PJSIP vs. chan_sip: FreePBX 16 defaults to PJSIP for new extensions. If you are still running chan_sip extensions, the setup steps are similar, but PJSIP is recommended for all new deployments because it supports multiple registrations per extension, better NAT handling, and TLS/SRTP out of the box.

Professional wearing a headset working at a computer in an office environment
A properly configured FreePBX softphone turns any computer into a full-featured business phone

Step 1: Create a PJSIP Extension in FreePBX

Every softphone needs a SIP extension to register against. Here is how to create one in FreePBX:

  1. Log in to the FreePBX admin panel.
  2. Navigate to Applications > Extensions.
  3. Click Add Extension and select Add New PJSIP Extension.
  4. Fill in the required fields:
    • User Extension: The number your softphone will dial from (e.g., 1001)
    • Display Name: The caller ID name (e.g., John Smith)
    • Secret: A strong password for SIP authentication. FreePBX auto-generates one -- use it or set your own (minimum 12 characters recommended)
    • Outbound CID: The phone number displayed on outbound calls (format: "John Smith" <15551234567>)
  5. Under the Advanced tab, confirm:
    • Transport: Set to 0.0.0.0-udp for standard connections, or the TLS transport if you have configured one
    • Maximum Contacts: Set to 2 or higher if you want the same extension to register from multiple devices simultaneously
  6. Click Submit, then click Apply Config in the red banner at the top.

You now have the three pieces of information every softphone needs: the server address (your FreePBX IP or hostname), the username (extension number), and the password (the secret you set).

Step 2: Configure Your Softphone App

With your extension created, it is time to configure a softphone. Below are step-by-step instructions for three popular options.

Zoiper (Windows, macOS, iOS, Android)

Zoiper is one of the most widely used softphones for FreePBX. The free version supports a single SIP account with basic features.

  1. Download and install Zoiper from zoiper.com.
  2. Open Zoiper and select Settings > Accounts > Add Account.
  3. Choose SIP as the account type.
  4. Enter your credentials:
    • Account name: Any label (e.g., FreePBX Office)
    • Domain/Server: Your FreePBX server IP or FQDN
    • Username: Your extension number (e.g., 1001)
    • Password: The SIP secret from Step 1
    • Port: 5060 (UDP) or 5061 (TLS)
  5. Under Network Settings, set Transport to UDP (or TLS if configured).
  6. Save the account. Zoiper should show a green checkmark when registered.

If registration fails, check the troubleshooting section below. The Zoiper FreePBX setup is straightforward once your firewall rules are correct.

Linphone (Free, Open Source)

Linphone is a fully free and open-source softphone available for all major platforms.

  1. Download Linphone from linphone.org.
  2. Open the app and go to Settings > SIP Accounts > Add Account.
  3. Enter:
    • Username: Your extension number
    • SIP Domain: Your FreePBX server address
    • Password: Your SIP secret
    • Transport: UDP or TLS
  4. Save. The status indicator should turn green once registered.

Linphone supports SRTP encryption and multiple codecs, making it a solid free softphone for FreePBX environments.

SessionTalk (Cloud-Provisioned, Multi-Platform)

SessionTalk takes a fundamentally different approach to FreePBX softphone setup. Instead of manually entering SIP credentials on every device, SessionTalk uses cloud provisioning -- the administrator configures the account once in a web portal, and the user simply scans a QR code or clicks an email link to activate their softphone.

Key advantages for FreePBX deployments:

  • Zero-touch provisioning: No SIP server addresses, ports, or passwords to type. Users scan a QR code and they are connected.
  • Built-in push notifications: The app wakes reliably for incoming calls on iOS and Android, even when closed. This solves the biggest pain point with mobile softphones on FreePBX.
  • Multi-platform: One configuration deploys to Windows, macOS, iOS, and Android.
  • White-label ready: ITSPs and MSPs can brand the app as their own.

For organizations deploying FreePBX softphones to more than a handful of users, cloud provisioning eliminates the biggest source of support tickets: misconfigured SIP settings.

Step 3: Set Up Mobile Softphones for Remote Workers

Mobile softphones on iOS and Android introduce challenges that desktop apps do not have. The two biggest issues are push notifications and NAT traversal.

Push Notifications

When a mobile phone goes to sleep, iOS and Android aggressively kill background apps to save battery. This means a softphone maintaining a persistent SIP registration will eventually lose its connection and miss incoming calls.

The solution is SIP push notifications. When a call comes in, the PBX sends a push notification through Apple's (APNs) or Google's (FCM) servers, which wakes the app just in time to accept the call.

Not all softphones support push notifications with FreePBX. Sangoma's own softphone and SessionTalk both include push notification support. If you are using a softphone without push support, you may need to configure a SIP proxy or use a keep-alive interval (which drains battery faster).

For a deeper dive, see our guide on why Asterisk and FreeSWITCH struggle with push notifications and how to fix it.

NAT Traversal for Remote Users

If your remote workers connect from home networks or public Wi-Fi, NAT traversal becomes critical. Without proper NAT configuration, you will experience one-way audio or no audio at all.

On the FreePBX side:

  1. Go to Settings > Asterisk SIP Settings.
  2. Under the General tab, set External Address to your public IP (or use the auto-detect option).
  3. Set Local Networks to your internal subnet (e.g., 192.168.1.0/24).
  4. Under the PJSIP tab, confirm NAT Settings are enabled.

On the softphone side, enable STUN or ICE if the app supports it. STUN helps the softphone discover its public IP address, while ICE provides a more robust NAT traversal mechanism.

For detailed NAT troubleshooting, see our guide on fixing one-way audio with STUN, TURN, and ICE.

Server rack with network equipment and green indicator lights in a data center
FreePBX runs on standard server hardware and supports dozens of concurrent softphone connections

Step 4: Secure Your Softphone Connection with TLS and SRTP

SIP traffic sent over plain UDP is unencrypted. Anyone capturing packets on the network can read your SIP credentials and listen to your calls. For any production FreePBX deployment, enabling TLS (for signaling encryption) and SRTP (for media encryption) is strongly recommended.

Enable TLS in FreePBX

  1. Navigate to Settings > Asterisk SIP Settings > PJSIP Settings tab.
  2. Under TLS/SSL/SRTP Settings, set:
    • Certificate: Select your server certificate (or generate a self-signed one under Admin > Certificate Management)
    • SSL Method: TLSv1.2 or higher
  3. Create a PJSIP transport for TLS:
    • Go to Settings > Asterisk SIP Settings > PJSIP Settings
    • Add a new transport on port 5061 with protocol TLS
  4. On your extension (from Step 1), set the Transport to your new TLS transport.
  5. Apply Config.

Configure SRTP on the Extension

  1. Edit your extension under Applications > Extensions.
  2. Go to the Advanced tab.
  3. Set Media Encryption to SRTP via in-SDP (or Required to enforce it).
  4. Submit and Apply Config.

Now configure your softphone to use TLS transport on port 5061 and enable SRTP in its security settings. Both Zoiper Pro, Linphone, and SessionTalk support TLS/SRTP.

Troubleshooting Common FreePBX Softphone Issues

Even with correct configuration, things can go wrong. Here are the most common FreePBX softphone problems and their fixes:

Registration fails with 403 Forbidden

  • Cause: Wrong username or password.
  • Fix: Double-check the extension number and SIP secret in FreePBX. Ensure you are using the extension number (e.g., 1001) as the username, not the display name.

Registration fails with 408 Timeout

  • Cause: Firewall blocking SIP traffic or wrong server address.
  • Fix: Verify port 5060 (or 5061 for TLS) is open on your firewall. Confirm the server address is correct. Check if the FreePBX intrusion detection (fail2ban) has banned your IP under Admin > System Admin > Intrusion Detection.

One-way audio (you can hear them but they cannot hear you, or vice versa)

  • Cause: NAT misconfiguration.
  • Fix: Set the External Address and Local Networks in Asterisk SIP Settings (see Step 3). Enable STUN/ICE on the softphone.

No audio in either direction

  • Cause: Codec mismatch or RTP ports blocked.
  • Fix: Ensure the softphone and FreePBX share at least one common codec (G.711 ulaw/alaw is the safest default). Verify UDP ports 10000-20000 are open on your firewall.

Registration works on LAN but fails remotely

  • Cause: External IP not configured or SIP ALG on the router interfering.
  • Fix: Configure the external address in Asterisk SIP Settings. Disable SIP ALG on your router (this is a common source of bizarre SIP behavior).

For a comprehensive guide to SIP registration errors, see our post on fixing 403, 404, 408, and timeout errors.

Choosing the Best Softphone for FreePBX

Not all softphones are equal. Here is how the most popular FreePBX softphone options compare:

For individual users or small labs, Zoiper Free or Linphone work well. For businesses deploying softphones to a team, SessionTalk eliminates the manual configuration burden and ensures incoming calls are never missed thanks to push notifications.

Remote worker waving during a video call at a home office desk
Remote workers rely on mobile softphones with push notifications to stay reachable from any location

Conclusion

Setting up a FreePBX softphone does not have to be a guessing game. With a properly configured PJSIP extension, the right softphone app, and attention to NAT and security settings, you can turn FreePBX into a fully mobile-ready phone system.

The key steps are straightforward: create the extension, configure your softphone with the server address, username, and password, enable TLS/SRTP for security, and handle NAT for remote workers. Where most setups fail is in the details -- firewall rules, external IP configuration, and push notifications for mobile devices.

If you want to skip the manual configuration entirely and deploy softphones to your team in minutes, start your free trial of SessionTalk today. Cloud provisioning, push notifications, and multi-platform support are built in from day one.


Related Articles

More from the SessionTalk blog