There are myriad VoIP phones on the market that people use with Asterisk. None of them are built specifically for Asterisk, so they don't take any particular advantage of Asterisk's applications. And, each one of them is too difficult to use.
Digium has designed phones to provide a superior user experience for everyone; from the person making the calls, to the person setting up the phone. Phones aren't hard, like everyone thinks they are, and they're not dumb terminals; instead, they're simple and smart.
A Digium phone can communicate with Asterisk, or with any other SIP-based system. In this respect, a Digium phone is somewhat like other SIP phones. In order to provide more than just the capabilities of a regular SIP phone, Digium makes available the Digium Phone Module for Asterisk (DPMA). DPMA is a binary Asterisk module that provides a means of secure communication between Digium phones and Asterisk. This secure means provided by DPMA is used by Asterisk to provision and manage Digium phones, and by the phones to directly access Asterisk's internals - leading to a richer set of phone applications, and happier users.
DPMA: What is it?
DPMA is a binary Asterisk module that provides a means of secure communication between Digium phones and Asterisk. This secure means is used to provision and manage the phones and to provide direct access to Asterisk's internal applications. DPMA is not required to use Digium phones, but offers a number of significant advantages. A single, free license is required for each Asterisk system running DPMA. For more information on installation and configuration, please see the support pages for Digium phones.
DPMA Compatibility and Requirements
DPMA is compatible with Asterisk 13, Asterisk 12, Asterisk 11, the open source Certified Asterisk releases of Asterisk 1.8, beginning with the asterisk-1.8.11-cert1 release, and with the "-digiumphones" branch of Asterisk 10, beginning with Asterisk 10.5.0. DPMA is not compatible with any other open source version of Asterisk.
The features outlined here are compatible with the latest releases of Asterisk 13, Asterisk 12, Asterisk 11, Certified Asterisk 1.8, DPMA 2.1.1, and the latest Digium phone firmware release, 1.4.2
DPMA requires both Avahi client and daemon and XML-parsing libraries to be installed on your distribution. Most distributions are already provided with these; and a typical compilation of Asterisk includes XML development libraries.
Attempting to load DPMA binary modules on a system without the Avahi client libraries installed will present the following Asterisk ERROR message:
DPMA binary modules will not provide any indication that the Avahi daemon is not installed or running; rather, phones will not see the Asterisk server when it is running.
To install the Avahi client libraries and server daemon for a RedHat/CentOS-based system, run, from the Linux CLI:
To install the Avahi client libraries for an Debian/Ubuntu-based system, run, from the Linux CLI:
Attempting to load DPMA binary modules into an Asterisk instance that was not compiled with the XML development libraries will present the following Asterisk ERROR message:
To install the XML development library for a RedHat/CentOS-based system, run, from the Linux CLI:
To install the XML development library for a Debian/Ubuntu-based system, run, from the Linux CLI:
Once the XML development libraries have been installed, Asterisk will need to be configured to use it. This involves re-running the ./configure utility, make and make install from the Asterisk source directory. For more information about the configuration and installation of Asterisk, please see other sections of this wiki.
DPMA also requires Asterisk's standard voicemail application, app_voicemail.
PJSIP Version Requirements
In versions of Asterisk prior to 12, DPMA is used only with chan_sip. Asterisk 12 introduced support for chan_pjsip, based on pjproject. DPMA 2.0 was released for Asterisk 12 and operates with both chan_sip and with chan_pjsip built on pjproject version 2.1. DPMA 2.1 was released for both Asterisk 12 and Asterisk 13. Because of API changes made within pjproject, DPMA 2.1.1 requires pjproject version 2.3.
Use of an incorrect version of pjproject may result in unexpected behavior.
To ensure that you are using the correct version of pjproject with DPMA, please refer to the DPMA's Changes wiki page, or the CHANGES and UPGRADE.txt files distributed with the DPMA binary tar ball.
Certified Asterisk and DigiumPhones Branches
DPMA is currently compatible with mainline releases of Asterisk 13, Asterisk 12 and Asterisk 11, but is not compatible with any previous mainline releases because of the release policies of open source Asterisk. Per release policy, once a branch of Asterisk, e.g. 1.4, 1.6.2, 1.8, 10, etc. is created, bugs are fixed, security vulnerabilities are closed, but new features are not added. Over time, this has proven to be an effective policy at limiting the introduction of regressions and making upgrades between branch versions an easy process.
Because the Digium Phone module for Asterisk requires new features - APIs, SIP messaging infrastructure, voicemail changes, etc. - that are currently only available in Asterisk 13, Asterisk 12 and Asterisk 11, and because Digium phones will require new changes in the future as additional phone applications are provided, new branches of earlier, but still supported versions of Asterisk, were required. For Asterisk 1.8 users, all of the code necessary to support DPMA, as well as changes to Asterisk applications, such as voicemail, parking, user presence, etc. is available in the Certified Asterisk releases, beginning with the asterisk-1.8.11-cert1 release. For more information about Certified Asterisk, please see the overview on the Digium website. Support for Asterisk 10 was provided in the "-digiumphones" branch of Asterisk 10. This branch tracks the mainline branch of Asterisk with respect to features and bugfixes, but also supports DPMA. As with any other branch of Asterisk, both Certified Asterisk and -digiumphones branches are licensed under the GPLv2 and are made available for download via subversion, as tarballs, and as packages.