Skip to content

Latest commit

 

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

How to Register Cisco 7900 and 8800 Series Phones to FreePBX

Fleet of the phones Fleet of the phones 8800

NOTE

I tested this on 7942, 7970, 7975, 7821 and 8851.

Introduction

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

Cisco removed the 7900 series firmware downloads so look on the internet for files called something like:

cmterm-7945_7965-sip.9-4-2-1SR3-1.zip

Here's a dowload link for some sites I found: Site


Steps

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.

  2. Configure your Ethernet adapter settings 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. Connect the phone to a PoE switch (or non-PoE switch with a power injector). Cisco 7900 series phones have known issues with auto MDI-X.
  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 this in Tftpd64.
  4. Once the phone finishes downloading, it will reboot automatically.

4. Set Up a TFTP Server on FreePBX

NOTE: on 7800/8800 series and on 7900 series with FW Version 9-4-X or higher, you may use an HTTP server running on port 6970 to host the files instead of using a TFTP server. You would put in the HTTP Server's address into the Phone's TFTP Settings

  1. Install the TFTP server on Debian 12:

    sudo apt install tftpd-hpa

    NOTE: tftpd-hpa is often installed along with FreePBX.

  2. Configure the TFTP server by editing /etc/default/tftpd-hpa:

    TFTP Configuration

  3. Restart the TFTP server:

    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. Some phones are picky about config files, so try one of these:

  3. Upload dialplan.xml to the same directory:

  4. Configure the phone:

    • Press the Checkmark button → Network ConfigurationIPv4 ConfigurationAlternate TFTP
    • Press **# to unlock settings
    • Click Yes to enable Alternate TFTP
    • Scroll to TFTP Server 1 and set it to the TFTP/HTTP server's IP
  5. Restart the phone. It should provision automatically.

6. Enable TCP Transport in FreePBX (If the Phone Does Not Register)

  1. Go to SettingsAsterisk SIP SettingsSIP 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.

7. Enable SIP Guests (If the phone doesn't register)

Some people and myself have run into an issue where the phones might not register. In such case do the following:

  1. Log in to FreePBX
  2. Click on Settings
  3. Click on Asterisk SIP Settings'
  4. Set "Allow SIP Guests" to YES Allow SIP Guests

8. Enable G722 Codec in FreePBX for HD voice

By default my config allows you to use HD voice or G722 codec, to make use of this

  1. Go to the IP of your FreePBX and log in
  2. Once on the dashboard hover over Settings
  3. Click on Asterisk SIP Settings
  4. Scroll down to Codecs
  5. Enable "g722" and move it to the top of the list
  6. Press Submit and Apply Config
  7. For good measure I'd restart both the FreePBX server and the phones

9. Custom Backgrounds

You can customize the background of your Cisco 7900 series phones by adding a Desktops directory to the TFTP server directory where SEP[MAC_ADDRESS].cnf.xml and dialplan.xml are stored.

Phone Model Full Image Thumbnail (25% of full image) Color Depth Directory Path
7941 / 7961 / 7942 / 7962 320x196 80x53 4 /Desktops/320x196x4
7945 / 7965 320x212 80x53 16 /Desktops/320x212x16
7970 / 7971 320x212 80x53 12 /Desktops/320x212x12
7975 320x216 80x53 16 /Desktops/320x216x16
8821 240x320 117x117 24 /Desktops/240x320x24
8841 / 8845 / 8851 / 8861 / 8865 800x480 139x109 24 /Desktops/800x480x24
8941 / 8945 640x480 123x111 24 /Desktops/800x480x24
8961 / 9951 / 9971 640x480 123x111 24 /Desktops/640x480x24

Images should be in PNG format.

  1. Create the following directory structure:

    For 7942 for example:

    /tftpboot/Desktops/320x196x4/
    

    For 7975:

    /tftpboot/Desktops/320x216x16/
    
  2. Place your custom background images in 320x196x4/ or 320x196x4/. These must be in 320x196 resolution with 4-bit color depth or monochrome, if made for 7942. Refer to the table above for your phone's display details.

  3. Add a List.xml file inside the desired directory eg: 320x196x4 or 320x216x16 to specify available backgrounds.

  4. Example List.xml format:

    <CiscoIPPhoneImageList>
     <ImageItem Image="TFTP:Desktops/320x196x4/ubuntu-tn.png"
        URL="TFTP:Desktops/320x196x4/ubuntu.png"/>
     <ImageItem Image="TFTP:Desktops/320x196x4/tux-tn.png"
        URL="TFTP:Desktops/320x196x4/tux.png"/>
     </CiscoIPPhoneImageList>
  5. Restart the phone and navigate to the settings to select the new background.


10. Custom ringtones

I provided a list of cutom ringtones with .raw and a ringlist.xml file for 7900 series phones. You need to puth both in the tftp root directory. As for 8800 series, you need a Ringlist-wb.xml file, it support .raw ringotnes that are for the 7900 series and .rwb ringtones which are wideband ringtones for the 8800 series specifficaly and will not work for 7900 series.

To make custom ringtones:

  1. For 7900 series and 8800 series (LQ)

    • get Audacity
    • import your ringtone and keep it to about 30s
    • Click File → Export Audio... and export with these settings.

    Export

       <Ring>
     	   <DisplayName>Ringtone</DisplayName>
     	   <FileName>ringtone.raw</FileName>
        </Ring>
  2. For 8800 series ONLY

    • get Audacity
    • import your ringtone and keep it to about 30s
    • Click File → Export Audio... and export with these settings.

    Export

    Note: change .raw to .rwb file extension

       <Ring>
     	   <DisplayName>Ringtone</DisplayName>
     	   <FileName>ringtone.rwb</FileName>
        </Ring>

11. Cisco 8800 series phones

Configuration is mostly the same as 7900 series, but a bit different but I provided it aswell. You need to put ITLFile.tlv (courtesy of Ryan Kim) and softkeys.xml in the tftp root directory. for this to work. If you experience any issues with 8800 series phones open a GitHub issue.


12. Phonebook

I have been doing some tinkering and made a kind of phonebook by accident. If you want a phone book of sorts then I've attached a folder called phonebook. In there there are PHP files, index.html we're interested about. Place the files in /var/www/html/webapp directory. It reads off of a database and returns the values with cisco phone format. you need to make a database called "phonebook" and a table "employees":

CREATE DATABASE phonebook;
USE phonebook;
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
phone VARCHAR(20) NOT NULL
);

Next create a user that can access that database:

CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON phonebook.* TO 'user'@'%';

Next you want to go to the phone config and find:

<servicesURL></servicesURL>

and add a URL like this:

<servicesURL>http://freepbx_ip_address/webapp/index.php</servicesURL>

Now when you press the globe icon on the phone the service will show a list of users that you put in.

In the index.php there is a variable called $limit = X where X is the number of contacts per page. If there is more entries in the phonebook than the value of this variable, the directory/phonebook will have a softkey "Next" and "Previous"

Go to http://freepbx_ip_address/webapp/contacts.php to manage your contacts. UPDATE DATABASE CREDENTIALS IN THE CONFIG FILE FOR THE SERVICE TO WORK


13. Notes for ATA190 (and other Cisco ATA) adapters

The ATA190 devices use a config file almost identical to the regular IP phones, but named ATA[MAC ADDRESS].cnf.xml for the first line, and ATA[Last 10 characters of the MAC address]01.cnf.xml for the second line. So if, for instance, your ATA190 had a MAC address of DE:AD:BE:EF:CA:FE, it would be looking for the configuration files:

  • ATADEADBEEFCAFE.cnf.xml
  • ATAADBEEFCAFE01.cnf.xml

An example configuration file is found here

The only fundamental difference is the addition of the ring tone specs section inside <vendorconfig>:

<ringtonespecs>
  <ringtoneSpec index="1">0</ringtoneSpec>
  <ringtoneSpec index="2">20</ringtoneSpec>
  <ringtoneSpec index="3">85</ringtoneSpec>
</ringtonespecs>

Which defines the ring frequency and voltage. The values above are the defaults, and must be present in the config file or the device won't start up.


Contact

If you have any questions, feel free to reach out at jakub.bednarczyk@mail.buba.net.pl.

Or open a GitHub issue.

© 2025 buba.net.pl

Changing your SEPmac.xml

Upon making changes to your xml like adding lines etc, be sure to reboot the phone so your new config takes affect or you'll be stuck with the same config

Star History

Star History Chart

About

Tutorial on how to connect Cisco 7900 and 8800 series phones to FreePBX. Using Session Initiation Protocol (SIP).

Topics

Resources

Stars

70 stars

Watchers

3 watching

Forks

Contributors

Languages