How to Get Cisco 7900 Series IP Phones Working with FreePBX

Fleet of the phones

ALL THE CONTENTS AND UPDATES OF THIS TUTORIAL HAVE BEEN MOVED TO MY GITHUB UNDER THIS LINK: https://github.com/buba0/Cisco-7900-series-freepbx-setup

Welcome! This tutorial will guide you through the process of setting up Cisco 7900 phones to work with FreePBX.

Before we begin, especially for clabretro, I've found SIP firmware for 7965 phones for you, here's the official Cisco link for the SIP Firmware, if you don't have a Cisco account or can't download it for any other reason, e-mail me and I'll send them to you. Make sure to download cmterm-7945_7965-sip.9-4-2-1SR3-1.zip

  1. Reset your phone:
    1. Power down the phone by unplugging the 48VDC PoE Ethernet cable or power adapter.
    2. Plug the power source back in while holding the [#] key. Keep holding it until the line buttons start flashing.
    3. When the line buttons flash, press 123456789*0#.
  2. Set up a TFTP server to upgrade the phone firmware to SIP:
    1. Install Tftpd64 on a Windows machine (preferably separate from your main PC if possible).
    2. Configure your Ethernet adapter settings in Windows as shown:


      IPv4 Settings

    3. Open Tftpd64 and adjust the settings as shown:


      Tftpd64 Settings

    4. Set the "Current Directory" to the folder containing the firmware files:


      Firmware Files

  3. Upgrade the phone firmware:
    1. It is advised to connect the phone to a PoE switch (or non-PoE switch with a power injector) instead of directly connecting it to your PC. Cisco 7900 series phones have known issues with auto MDI-X, which can cause problems when connecting directly to a computer.
    2. Power on the phone. It will display the "Upgrading" screen.
    3. Wait for the phone to display an IP address and begin downloading files from the TFTP server. You can monitor the log viewer in Tftpd64 for details.
    4. Once the phone finishes downloading, it will reboot automatically.
  4. Set up a TFTP server on FreePBX:
    1. Install the TFTP server on Debian 12 by running: sudo apt install tftpd-hpa. Note: tftpd-hpa will most likely be installed along with FreePBX so just keep that in mind.
    2. Configure the TFTP server by editing /etc/default/tftpd-hpa. Refer to the following example:


      TFTP Configuration

    3. Restart the TFTP server with: sudo systemctl restart tftpd-hpa.service.
  5. Provision the phone:
    1. Upload the configuration file (e.g., SEP[MAC_ADDRESS].cnf.xml) to the TFTP server directory (typically /tftpboot or /srv/tftp).
    2. Phones manufactured in certain time period are picky about configs they accept so I've prepared 2 example config files, you just need to see which one is working for you. Download sample files here:
    3. Upload dialplan.xml to the same directory:
    4. On the phone, press the checkmark button --> Network configuration --> IPv4 Configuration --> Alternate TFTP --> press [**#] --> Now the settings are unlocked so click "Yes" while still being on Alternate TFTP --> Scroll one more to TFTP Server 1 --> Set it to the TFTP server with the configuration files.
    5. Restart the phone. It should provision automatically.
  6. Enable TCP transport in FreePBX if the phone does not register:
    1. Go to "Settings" --> "Asterisk SIP Settings" --> "SIP Settings [chan_pjsip]" in the FreePBX admin panel.
    2. Adjust the transport settings as shown:


      Transport Settings

    3. Click "Submit" and "Apply Config," then restart FreePBX and the phone.