Auto-provisioning GXP2135 to 3CX. Phone is not showing up


Dear everyone,

On a fresh 3CX linux install, I’m trying to provision my new GXP2135.
I upgraded the phone with the firmware provided by 3CX ( and resetted to factory defaults. The phone is still not showing in Phone list. If I manually configure the SIP credentials using the Phone’s web page, I can register the SIP account and the Phone get in the list but obviously that is not the way I want to go… plus, I am not sure that the all config will be loaded in the device that way. I looked at all my routers to make sure they all have the Multicast enabled.
Do I need DHCP 66 enabled? I read so at some places, but I’m not sure this is required for PnP.
How can I troubleshoot?

Thanks for your help,


You don’t say if your 3CX is remote or local and which version of 3CX you’re using. Did you assign the handset and MAC address to a 3CX extension


Thanks for your reply.
Everything is local on the same sub-network. 3CX 15.5.0 is running on a VM (virtualbox), DHCP server is on Windows Server 2005 on another machine and there are some routers involved but we have only one sub-network.
I cannot assign the handset to an extension since it is not detected by 3CX, not showing in the Phones tab.
Following this guide :,
it is supposed to show up in 3CX with the “new” label where I can then assign an extension.

Looking at the configuration web page of the GXP2135, there is a field named “Config Server Path” when the tips suggests that it is the place to specify the provisioning server path. Default value is “”.
Although I tried to change this to my 3CX server path, I don’t know if it has something to do with my problem…


Yes it should show up in the Phones tab as new. Did you install 3CX from the 3CX iso or stock debian then install 3CX


I installed from the 3CX iso.
Is the HTTP 66 has something to do with that issue?


No it shouldn’t be as the config server is set to the default. When you set up an extension go to Phone Provisioning, Click Add then enter the handsets MAC and select the handset model from the drop down. Make sure the provisioning method is set to Local LAN. Below this is the provisioning link. Copy this link (excluding the http://) and paste it into the config server box on the handset. Choose the https radio button, save and apply then click the reprovision button at the top and it should provision


I retrieved that URL and pasted it in the config server box with HTTPS radio button selected. I hit the Provision button, also rebooted, still no sign of the device under Phones.
I just created a new, fresh install of 3CX using the ISO in a different VM and touched nothing else than entering the handsets MAC to get the new URL and tried again to provision the phone but still get the same result.
Is there a way to trace the multicast request sent by the phone, hoping to find out where it got stuck?
Or maybe it is the 3CX server that does not have the right configuration file to give to the handset?


I tried this:[MAC address of the phone].cfg
Shouldn’t I was supposed to receive the config file generated for this phone by the 3CX server?
I got a 404, website not found.


You need to put this
in the config server box select https:// then provision


Yes, it is what I did in the Phone’s config but still doesn’t work.
My previous comment about the full URL with .cfg extension was about something I read on another forum. Someone is suggesting that it is a way to confirm that the 3CX server receives the multicast request then generates and sends back the config file. I typed that in my browser just to see.


Yes you should be able to get the config file with that uri. I suggest you check the firewall on the 3CX server and get a trace on the phone of the provision process including syslog


I ran some capture with Wireshark and I do see some packet exchange between the phone and the 3CX server. At some point 3CX send these 4 packets about 10 times in a row, where the number in bold is incremented by 1 every time.
[protocol packet size ports packet content]

TCP 74 5000 → 41363 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=3824181 TSecr=76760 WS=128

TCP 74 5000 → 41364 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=3824187 TSecr=76762 WS=128

TCP 66 5000 → 41364 [ACK] Seq=1 Ack=518 Win=30080 Len=0 TSval=3824189 TSecr=76763

IPA 378 unknown 0x54

In that last packet sent by 3CX to the phone, I can see in the content is an HTML page with the only content “400 bad request”

Is that possible that my 3CX server doesn’t have the right template to generate the config file?


What about syslog messages? You should see the handset looking for provisioning files in syslog


Can you explain a little more about- “everything is local on the same sub-network. 3CX 15.5.0 is running on a VM (virtualbox), DHCP server is on Windows Server 2005 on another machine and there are some routers involved but we have only one sub-network”…the routers?

With v15 of 3cx, they changed the provisioning to be “on the fly”. The system no longer stores a config file, but generates it on request and sends. The method you showed with the MAC address was in use on v14.

The below snippet is from v15.5 on a 2135 that I has connected to a GS UCM and then factory reset from the phone web page. Upon the the restart it showed up in 3cx as follows:


It also works on, but with the UCM that firmware had an issue so I upgraded.

You might try and move a test phone as close as possible to 3cx on the network and see if this makes a difference. As RTL stated you should, at the least, be able to get into the web on the phone and go to the upgrade section and change the protocol to http and then enter in the private IP of the server along with port 5000 and then “provisioning” followed by the provisioning folder name.


This method also works in 15 & 15.5. The only real difference is that 3CX generates the provisioning file on request rather than storing it. If you put[MAC address of the phone].cfg into a browser it should show the provisioning file


RTL : I’m not too sure how to do that unfortunately. Is that the feature under Maintenance/Syslog? Sounds like I need a syslog server but I’m not sure I have that…

Ok I just tried that. I went to the web config page of the phone, entered the provisioning URL then hit “provision” button (even rebooted), still not showing in the Phones section of 3CX. Then I manually added that phone (from an Extension -> Phone Provisioning -> Add Phone : selecting the right model, entering MAC, etc… then hit Provision again on the Phone’s web interface and it got provisioned!
Well, that is not PnP yet but at least I can do it manually, I guess it proves that the phone and 3CX are talking to each other.

IPneblett : sorry if that was not clear. Win2005 server hosting the DHCP is running on a computer which is connected to a big switch. 3CX is running on a VM on my own computer, connected to that big switch. The phone is connected to a 16 ports router (acting as a switch). A wire runs from that router to the big switch. Everyone on 192.168.1.x.
I will give a try by connecting the phone directly on that “big switch” where everyone is connected to. This cannot be more close than that!
About this,[MAC address of the phone].cfg
isn’t that .xml instead of .cfg?


Yes thats almost right!! It should be About this,[MAC address of the phone].xml

As for syslog, try pumpkin


Ok I can see the .xml file getting generated when I use that URL. For some reason this is true only if the phone with that MAC is provisioned on 3CX, otherwise the URL is not working… not sure if that is ok, but anyway…

So by first specifiying the provisioning server in the phone’s web ui then manually addind the phone (+ add phone button in 3CX) I am able to provision the phone. Even more surprising, I have been able to play a little with that phone : assign to an extension, provision, remove from that extension and assign to another extension. When dissociated from it’s extension, the phone appeared as “new” in the list (although the same phone was still visible in the list and assigned to the previous extension!? Anyway when I re-assigned it to a different extension the two listing merged and there was only one entry for that phone, assigned to the good extension so I guess it is ok).
So I was really happy about this progress! I decided to wipe the phone to factory default and try again, just to confirm it is reproductible. Unfortunately, after setting the provisioning server on the phone then manually add the phone to an extension in 3CX, the phone provisioned but there is no way I can recover that auto-provisiniong functionnality! The phone is no longer identified as “new” when I dissociate from it’s extension so I have to add the phone again using it’s MAC address.

Beside, I have been trying Pumpkin but I’m not sure how to set it up. I changed the incoming port to 514 (I believe it’s the default) and I entered the ip address in the “syslog server” field in the phone web ui. I suppose it is not as simple as that since I get nothing printed in Pumpkin! Do I have to download the log file from the phone? Or the phone will “push” the log into Pumpkin?


Thats expected. The extension needs to know the model type, provisioning type and MAC otherwise it can’t generate a provisioning file.

Thats normal as well.

If you factory reset the handset and remove the handset details from an extension on 3CX it should show up as ‘new’ on the 3CX server and you can associate it with an extension.
To provision a handset in 3CX you need to
Set up an extension in 3CX without handset provisioning details, Factory reset the handset and it shows up as new in the phones tab and you can associate it with an extension that has been created
set up an extension with handset provisioning details, Factory reset the handset and assign to an extension as above, add the provisioning server details to the handset and provision or add the provisioning server details as option 66 in your DHCP server. In the last case all you need to do is factory reset the handset and it will provision