This post covers the initial setup of IP Phone Manager Express, an IP phone provisioning and configuration management platform from AudioCodes.
It’s a quick start guide for getting the utility up and running rather than covering the administration of devices. But by the end, you should understand how to install it and automatically provision your first AudioCodes phones.
Phones are Endpoints
Unlike traditional POTS lines, IP phones are endpoints which need to be managed like any other endpoint on an IP network. This includes provisioning, configuration management, monitoring, and security.
Typically IP Phones in the Lync/Skype for Business space do not come with any realistic way of actually managing these devices. DHCP points them to a share and they get their firmware and configuration files. End of story.
This is fine for the initial provisioning of phones, but what happens after the phone is out in the wild? How do you see who is logged into which phone? How can you see which firmware each phone is running (and where firmware updates might have failed)? What about phone models and IP addresses? How do you selectively push out changes to specific phones? What means can the tier 1 helpdesk be given to troubleshoot phone issues?
AudioCodes IP Phone Manager
AudioCodes IP Phone Manager is an attempt to solve this problem. It provides zero-touch and lite-touch provisioning, selective configuration and firmware management, dashboards, and much more. And all of this functionality is provided through an HTML5 web interface.
Before going any further, it’s important to realize there are multiple versions of IP Phone Manager. AudioCodes is one of those companies that realized they can provide free products which will act as a gateway drug to other non-free products. It’s a great way to provide options to consumers, it allows people to test things out before committing to a purchase and also works great for people who love to home lab.
For this post I’ll be going with IP Phone Manager Express, which is the free version of IP Phone Manager. There are huge differences between the products, including the way they are deployed. You can download IPP Manager Express here and also see the differences between Express and Pro.
Some limitations with Express
- Supports a maximum of 500 registered phones
- No HA
- No alarm forwarding
- No regional templates/configuration
- No multi-tenancy
Some advantages with Express
- It’s free!
- Super easy to setup (10 minutes vs a couple of hours)
- Not appliance-ish (runs on Windows Server 2012/R2)
The only pre-requisite for installation is Windows Server 2012 (or R2) and administrative rights. As a test, I did try running it on Server 2016 and it does not work. The installer takes care of all other pre-requisites for you.
First you need to grab the installer from their website.
Then just run the installer. This will install SQL Express and then it uses DISM to install some other features.
Once the install is finished, go to http://the_server_IP/ipp from a remote server or just http://localhost/ipp if you are on the server.
If connecting via localhost it will automatically log you in. Otherwise the default credentials are Admin, Admin.
You will first arrive at an empty dashboard.
At this point, we already have a fully functional server. It even comes with pre-loaded firmware for all AudioCodes phones as well as default configuration templates. You can see the available firmware by going to Phones Configuration->Phone Firmware Files
Now we just need to get our phones to actually check-in to the server.
There are numerous ways to setup provisioning to suite each organization’s needs. Regardless of which method is chosen, the phones will need to be pointed to the server in some way.
This can be manually by accessing the web interface of the phone and pointing it to the server. Most people use DHCP to enroll the devices.
I’ll be going over the setup of lite-touch provisioning using the ‘static’ method. This will just point all phones, regardless of model, to the IPP Manager’s DHCP configuration file which provides the appropriate configuration path, firmware, and other details.
AudioCodes devices will automatically prioritize DHCP option 160, and fall back to 66/67, and finally a secondary fallback to option 43.
If you have other devices that happen to use Option 160, such as Polycom phones, you will need to take that into consideration. You can do this in a few different ways. One way is to limit the scope of each option 160, meaning some subnets would receive the Polycom provisioning URL and some networks would get the AudioCodes URL. If you are already doing this, then by all means go that route.
Otherwise, a better way is to use a policy based on either user class or based on the vendor identifier portion of the MAC address. This makes sure that only AudioCodes phones will receive the URL to the IPP Manager via option 160.
If you go with this route, each phone model will need its own user class.
For this example, I have 2 different AudioCodes phones. I’ll be creating a separate user class for my 2 phones: the 420HD and 440HD. This way I’m not in danger of any Polycom phones getting the IPP Manager URL rather than their FTP site.
But before I do the DHCP work, I need to grab the URL which I should be pointing them to. You can get this by going to Phone Configuration->System Settings and clicking on DHCP Option Configuration.
This will show the “DHCP Options 160 URL”. In my case it is “http://10.0.3.67/firmwarefiles;ipp/dhcpoption160.cfg”
Now I’ll head over to my DHCP server and add option 160, the user classes, and the policy. As usual, I’ll be using PowerShell for this, but the same thing can easily be done via the GUI.
The first step is to define option 160 (not set its value). This step is only required if option 160 does not already exist. You can check if this option exists by running
Get-DhcpServerv4OptionDefinition -OptionId 160
To define option 160
Add-DhcpServerv4OptionDefinition -Name "IPP Provisioning" -Description "IP Phone Provisioning" -OptionId 160 -Type String
To verify that the option was successfully create, run the same Get command as above
The next step is to add the user class for each phone model. In my case the 420HD and 440HD
Add-DhcpServerv4Class -Name 420HD -Description "AudioCodes 420HD" -Data "420HD" -Type User Add-DhcpServerv4Class -Name 440HD -Description "AudioCodes 440HD" -Data "440HD" -Type User
And now I’ll be adding a policy for each model. First you need to add the condition of the policy and then separately add the value of the option. For the 420HD condition, I’m saying: if the device identifies as user class 420HD within the scope 10.0.3.0, then it will get this policy.
Add-DhcpServerv4Policy -Name "420HD" -Condition OR -UserClass EQ,"420HD" -Description "AudioCodes 420HD" -ScopeId 10.0.3.0
Great, so a now that model will get a blank policy. To actually make it do something I’ll need to set the option 160 value for devices which receive this policy. The value will be the URL from earlier
Set-DhcpServerv4OptionValue -OptionId 160 -PolicyName "420HD" -Value "http://10.0.3.67/firmwarefiles;ipp/dhcpoption160.cfg" -ScopeId 10.0.3.0
And now I’ll do both of those steps for the 440HD
Add-DhcpServerv4Policy -Name "440HD" -Condition OR -UserClass EQ,"440HD" -Description "AudioCodes 440HD" -ScopeId 10.0.3.0 Set-DhcpServerv4OptionValue -OptionId 160 -PolicyName "440HD" -Value "http://10.0.3.67" -ScopeId 10.0.3.0
I’ll double check the that the policies were created by running
Get-DhcpServerv4Policy -ScopeId 10.0.3.0
And then I’ll double-check the value which was set for the 420HD policy
Get-DhcpServerv4OptionValue -ScopeId 10.0.3.0 -OptionId 160 -UserClass 420HD | select Value
Now if I plug a 420HD or a 440HD into this network and open up Wireshark I’ll see the whole DHCP negotiation process. The phone identifies as a 420HD (the value for option 77 will show this), and because of that will receive the proper URL as part of 160
As a final note on the DHCP policy, I could have combined the policy rather than creating a discrete policy for each model. I still need the separate user class but I could have cobined them into a single policy like this
Add-DhcpServerv4Policy -Name "AudioCodes Provisioning" -Condition OR -UserClass EQ,420HD,440HD -Description "AudioCodes Provisioning" -ScopeId 10.0.3.0
When the phones receive a URL for the IPP Manager, they will automatically download and install whatever firmware is set to the default for that model. This happens without approval.
The phones will also show up in the dashboard without approval. After logging in, we’ll now see a single unregistered device without a region. However, we’ll see other information such as the firmware, MAC address, model, and more.
Next we will want to approve the phone. But before approving the phone, you should know that the phones will still function without being approved. A user can still use the phone to login to whatever VoIP system it’s connected to and go about their business without any problem. However, until the device is approved, it will not get its more specific configuration file and it will not dump its configuration file to the IPP Manager.
Alternatively I could upload a file in a certain format which contains the MAC addresses and other information which would allow them to be auto-approved.This allows for non-intervention but does require a lot of up-front work to get all of the MAC addresses imported.
Go to Dashboard->Device Status and click the “Approve” button to approve the phone
This will bring up the approval form. It’s possible that a user has already been using the phone prior to being approved. If this is the case, the phone will already have an associated username. If not, just add a temporary username (it will get replaced later by whomever logs in).
The phone will then reboot and download the global configuration file for this model. The configuration file is composed of merged configurations (phone specific, region specific, model specific, and global). The approval will also cause the phone to dump its configuration to the IPP Manager with the name of MACAddress.cfg.
You can see this by going to Phone Configuration->Phone Configuration Files
Going back to the dashboard, we’ll now see that the phone has been associated with a region
However, the phone will still show as unregistered until a user logs in.
By going to Dashboard->Device Status, we can now see some of the other actions available. Click on Actions to display the context menu
This allows you to push out configuration files, update the firmware, open the web admin to the phone, reboot the phone, and more. It also allows you to send a message to the phone which will display on it’s LCD. This is great for emergency situations.
If you had multiple phones here, you can use the filter box or just select multiple check-boxes to perform multiple changes at once.
This was just an introduction the the AudioCodes IPP Phone Manager Express. It doesn’t cover building configuration files, firmware management, and a whole lot more. I might cover these items at a later time.
And of course feel free to email me, comment, etc with any questions.