The Digium Phone Module for Asterisk, otherwise known as DPMA or res_digium_phone, has undergone some significant improvements recently in the 3.0 release. This module allows you to configure the entire range of Digium phones very easily from out-of-box to fully ready to use in just a few steps: plug in, select server, optionally enter security code, select extension.
As compared to the previous 2.3 release, the changes for version 3.0 are mostly “under the hood” dealing with performance and structural enhancements to allow for additional future features. But before getting to that let’s first review the changes in the previous two versions.
DPMA Version 2.2
In version 2.2, a lot of new features were added and bugs fixed:
- Support Digium Phones firmware 2.0 and later. A phone with 2.0 firmware, when communicating with DPMA prior to version 2.2, results in a crash.
- Phone applications can be disabled if not needed, which also reduces the softkey menu complexity.
- Voicemail is removed if there is not a mailbox configured for the extension.
- The queues button is removed if the queue application is not loaded.
- Parking can be disabled with new configuration option “show_call_parking”.
- Fix for a voicemail selection problem after playback.
- Allow full URL to be specified for specific files, overriding the default file_url_prefix. This allows individual files to be located anywhere by type or extension, rather than all being clustered together in a single directory.
DPMA Version 2.3
For version 2.3 a few additional improvements were made:
- Logging enhancements:
- DPMA messages are now sent to a separate “dpma” channel configured through logger.conf.
- Improved diagnostic logging message content and frequency to aid in determining cause of configuration problems.
- Changing the global pin code no longer requires every phone to be manually reconfigured with the new code.
DPMA Version 3.0
With version 3.0 the goal was to make performance improvements and changes to the guts of DPMA without necessarily adding new features. At first, a cleanup of some portions of the code that were no longer used was performed to eliminate unnecessary bulk from the module. Then restructuring of the code was done to isolate message handling and processing functions in order to make it easier to add additional features. Following that, the most significant change was made to improve the response speed to requests: a threadpool is now used to construct and deliver the response to phone requests on separate threads once they have been authenticated. This means that requests that are larger or slower to process do not end up blocking shorter ones. A large number of phones can now be configured quickly, even if they all start up at about the same time, such as after a power failure.
In the end, a few bugs were also fixed: a memory leak and a problem with pin codes on user list requests. And lastly, a problem particular to FreePBX installations was resolved. Due to FreePBX always loading the DPMA module, if the DPMA license has not been added, then the module would spam the log system with messages about missing configuration, causing unnecessary load to the system. Now, when it is unlicensed, DPMA operates in a wait-and-see mode until the license has been loaded.
With these enhancements to the DPMA module completed the road ahead is paved and ready for some new and exciting features we have planned, in addition to improving the stability, performance, and diagnostic capabilities to the module. As always, the latest version of DPMA can be found on the Digium downloads site at https://downloads.digium.com/pub/telephony/res_digium_phone/ or by using the product download selector at https://www.digium.com/products/asterisk/downloads.