{"id":1961,"date":"2015-08-27T16:00:51","date_gmt":"2015-08-27T20:00:51","guid":{"rendered":"https:\/\/infotechguy.net\/?p=1961"},"modified":"2025-02-22T13:27:43","modified_gmt":"2025-02-22T18:27:43","slug":"getting-started-with-your-voip-network-part-1","status":"publish","type":"post","link":"https:\/\/infotechguy.net\/?p=1961","title":{"rendered":"VoIP:101 &#8212; Getting started with your VoIP Network &#8212; Part 1"},"content":{"rendered":"<p>VoIP networks, VoIP phones, VoIP extensions, VoIP everything. VoIP seems to be one of those black box buzz words that IT pros toss around, like the &#8220;CLOUD!&#8221; But what is really going on behind the scenes? How does VoIP protocols actually work? How can I setup a Call System? How do I get an outside number people can use to dial me?<\/p>\n<p><a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Phone-Final-ORIGINAL-min.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3365 aligncenter\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Phone-Final-ORIGINAL-min-300x251.jpg\" alt=\"\" width=\"600\" height=\"502\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Phone-Final-ORIGINAL-min-300x251.jpg 300w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Phone-Final-ORIGINAL-min-1024x857.jpg 1024w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Phone-Final-ORIGINAL-min-768x643.jpg 768w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Phone-Final-ORIGINAL-min.jpg 1279w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>This next series of blog posts (<a href=\"https:\/\/infotechguy.net\/getting-started-with-your-voip-network-part-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">Part1<\/a>, <a href=\"https:\/\/infotechguy.net\/building-your-voip-network-round-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">Part2<\/a>, Part3) are dedicated to walking through the many aspects related to VoIP(Voice over Internet Protocol) and it&#8217;s features.<\/p>\n<h5><a href=\"https:\/\/infotechguy.net\/getting-started-with-your-voip-network-part-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">PART #1 &#8212; Laying the foundation for our VoIP network<\/a><\/h5>\n<ul>\n<li>The Lab &#8212; Our Network pieces.<\/li>\n<li>SIP &#8212; Life blood of VoIP<\/li>\n<li>FreePBX\/Asterisk &#8212; Call System Exchange<\/li>\n<li>Phone Provisioning (Manual\/Auto)\n<ul>\n<li>Manual Provisioning with Zoiper, Liphone, UbiPhone<\/li>\n<li>Auto-provisioning with Cisco 7941G and 7945G (7961G,7965G)<\/li>\n<\/ul>\n<\/li>\n<li>Making your first VoIP call!<\/li>\n<\/ul>\n<h5><a href=\"https:\/\/infotechguy.net\/building-your-voip-network-round-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">PART #2 &#8212; Call routing, Call numbers, SIP Trunks<\/a><\/h5>\n<ul>\n<li>VoIP SIP Termination &#8212; Where VoIP ends and PSTN begins<\/li>\n<li>SIP Trunks and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Direct_inward_dial\" target=\"_blank\" rel=\"noopener noreferrer\">DID(external PTSN numbers)<\/a><\/li>\n<li>Outbound and Inbound Call Routing<\/li>\n<li><em>Optional: Install g729 codec<\/em><\/li>\n<\/ul>\n<h5>PART #3 &#8212; Ring Groups, Extension Shortcuts, Call Centers, Voicemails, Secure SIP with TLS, etc<\/h5>\n<ul>\n<li>Ring Groups<\/li>\n<li>Extension Speed Dialing<\/li>\n<li>IVR (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Interactive_voice_response\" target=\"_blank\" rel=\"noopener noreferrer\">Interactive Voice Response<\/a>) &#8212; useful for Business Directory Prompt<\/li>\n<li>Advanced Voicemail Services<\/li>\n<li>Securing SIP (TLS and SRTP)<\/li>\n<li>Other Cool Features<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<h2>Part#1<\/h2>\n<h4>Our Goal and Network Lab<\/h4>\n<p>Our goal for this Article is to create a small office VoIP network that consists of the following; A few VoIP phones (both Manual and Auto provisioned) running SIP with an extension schema of our choosing, an outside PTSN line where we can call out of and others can call into, an Interactive Voice Response(IVR) for incoming calls, and other features( secure calling, security banning, hold music, etc). Below is our lab where we will accomplish this.<\/p>\n<ul>\n<li>Internal VLAN = 10.55.55.0\/24, gate 10.55.55.1, nameservers 10.55.55.1<\/li>\n<li>Our FreePBX box = 10.55.55.135<\/li>\n<li>Extension Schema x86000 &#8211; x86999<\/li>\n<li>A picture speaks a thousand words<br \/>\n<a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/SIP-Lab-Topology.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3367\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/SIP-Lab-Topology-300x257.jpg\" alt=\"\" width=\"600\" height=\"514\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/SIP-Lab-Topology-300x257.jpg 300w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/SIP-Lab-Topology.jpg 747w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<ul>\n<li>Please excuse my diagram :-p<\/li>\n<\/ul>\n<\/li>\n<li>So as you can see, this is a very flat network, however the principals are the same regardless of size. We have separated our Data and Voice networks, just to demonstrate good practice, when in reality it wouldn&#8217;t matter for this small of a site. Our WiFi network is just an extension of the Data VLAN (10.55.55.0\/24). The only firewall is between our internal VLANs (Data, Voice) and the Internet.<\/li>\n<\/ul>\n<h4>SIP (Session Initiation Protocol)<\/h4>\n<p>What is SIP? SIP is the life blood of the VoIP network, our transport protocol. SIP allows us to signal a remote VoIP phone to start the call process, SIP transports the audio\/videio payload between VoIP phones to maintain a call session, SIP also handles the registration of our VoIP extensions, and much much more. SIP like most audio\/video network transport protocols uses UDP natively to ensure minimal network overhead and reduces bandwidth requirements. SIP relies on a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Session_Description_Protocol\" target=\"_blank\" rel=\"noopener noreferrer\">SDP(Session Description Protocol)<\/a> to negotiate each endpoints capabilities for a call. SIP then relies on <a href=\"http:\/\/en.wikipedia.org\/wiki\/Real-time_Transport_Protocol\" target=\"_blank\" rel=\"noopener noreferrer\">RTP(Real-Time Transport Protocol)<\/a> ,<a href=\"http:\/\/en.wikipedia.org\/wiki\/Secure_Real-time_Transport_Protocol\" target=\"_blank\" rel=\"noopener noreferrer\"> SRTP(Secure Real-Time Transport Protocol)<\/a>, or <a href=\"http:\/\/en.wikipedia.org\/wiki\/Transport_Layer_Security\" target=\"_blank\" rel=\"noopener noreferrer\">TLS <\/a>for media stream transmission.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/who.rocq.inria.fr\/Philippe.Sultan\/Asterisk\/images\/SIP_authentication.gif\" alt=\"who.rocq.inria.fr\" \/><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">REGISTER sip:192.168.0.1:5060 SIP\/2.0\nContent-Length: 0\nContact: ;events=\"message-summary\"\nCall-ID: 1DBDA84B-37E9-4F05-BE8B-E3A0F6BBEE91@192.168.0.2\nMax-Forwards: 70\nFrom: ;tag=220587183498\nCSeq: 3 REGISTER\nTo: \nVia: SIP\/2.0\/UDP 192.168.0.2;rport;branch=z9hG4bK805d2fa50131c9b1434671010000391200000013\n\nSIP\/2.0 401 Unauthorized\nVia: SIP\/2.0\/UDP 192.168.0.2;rport;branch=z9hG4bK805d2fa50131c9b1434671010000391200000013;received=192.168.0.2\nFrom: ;tag=220587183498\nTo: ;tag=as6d76ba1b\nCall-ID: 1DBDA84B-37E9-4F05-BE8B-E3A0F6BBEE91@192.168.0.2\nCSeq: 3 REGISTER\nUser-Agent: Asterisk PBX\nAllow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY\nContact: \nWWW-Authenticate: Digest realm=\"asterisk\", nonce=\"4f87b95d\" \nContent-Length: 0\n\nREGISTER sip:192.168.0.1:5060 SIP\/2.0\nContent-Length: 0\nContact: ;events=\"message-summary\"\nCall-ID: 1DBDA84B-37E9-4F05-BE8B-E3A0F6BBEE91@192.168.0.2\nMax-Forwards: 70\nFrom: ;tag=2205872822811\nCSeq: 4 REGISTER\nTo: \nVia: SIP\/2.0\/UDP 192.168.0.2;rport;branch=z9hG4bK805d2fa50131c9b14346710100004e6d00000016\nAuthorization: Digest username=\"sultan\",realm=\"asterisk\",nonce=\"4f87b95d\",uri=\"sip:192.168.0.1:5060\",response=\"fed6890f44712fbaef17c704e6e30eac\"\n\nSIP\/2.0 200 OK\nVia: SIP\/2.0\/UDP 192.168.0.2;rport;branch=z9hG4bK805d2fa50131c9b14346710100004e6d00000016;received=192.168.0.2\nFrom: ;tag=2205872822811\nTo: ;tag=as6d76ba1b\nCall-ID: 1DBDA84B-37E9-4F05-BE8B-E3A0F6BBEE91@192.168.0.2\nCSeq: 4 REGISTER\nUser-Agent: Asterisk PBX\nAllow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY\nExpires: 120\nContact: ;expires=120\nDate: Fri, 07 Oct 2005 12:57:55 GMT\nContent-Length: 0<\/pre>\n<p>&nbsp;<\/p>\n<p><em>**The Excerpt Above is owned by <a href=\"https:\/\/who.rocq.inria.fr\/Philippe.Sultan\/Asterisk\/asterisk_sip_external_authentication.html\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/who.rocq.inria.fr\/Philippe.Sultan\/Asterisk\/asterisk_sip_external_authentication.html<\/a><\/em><\/p>\n<ol>\n<li>The process starts with VoIP phones running the SIP protocol issuing a REGISTER command to register with a PBX (Asterisk).<\/li>\n<li>The PBX response with a Unauthorized back to the SIP User Agent attempting to register.<\/li>\n<li>the SIP User Agent submits another REGISTER command, but this time containing the Authorization section.\n<pre><code><\/code><\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Authorization: Digest username=\"sultan\",realm=\"asterisk\",nonce=\"4f87b95d\",uri=\"sip:192.168.0.1:5060\",response=\"fed6890f44712fbaef17c704e6e30eac\"<\/pre>\n<pre><code><\/code><\/pre>\n<pre><code><\/code><\/pre>\n<\/li>\n<li>PBX sends back a OK 200 with what SIP features SIP User Agent is allowed to perform.\n<pre><code><\/code><\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Authorization: Digest username=\"sultan\",realm=\"asterisk\",nonce=\"4f87b95d\",uri=\"sip:192.168.0.1:5060\",response=\"fed6890f44712fbaef17c704e6e30eac\"<\/pre>\n<pre><code><\/code><\/pre>\n<\/li>\n<\/ol>\n<p><strong>SIP Request commands<\/strong>: <a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_SIP_request_methods\" target=\"_blank\" rel=\"noopener noreferrer\">Before we get any further let&#8217;s go over the different ones.<\/a><\/p>\n<ul>\n<li><strong>REGISTER<\/strong> = you just read the process above of how a SIP User Agent, such as a VoIP phone registers itself with a PBX (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Asterisk_(PBX)\" target=\"_blank\" rel=\"noopener noreferrer\">Asterisk<\/a>). A VoIP phone needs to be registered in order to make and receive calls.<\/li>\n<li><strong>INVITE<\/strong> = this command is used either directly from SIP User Agents (more on this later) or by the PBX to &#8220;invite&#8221; SIP clients to a call session.<\/li>\n<li><strong>ACK<\/strong> = used to Acknowledge INVITE messages and join the call session<\/li>\n<li><strong>BYE<\/strong> = terminates the connection between users and the call session<\/li>\n<li>And much more.<\/li>\n<\/ul>\n<p><strong>SIP Call Sessions basics:<\/strong> How a call gets setup.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.cisco.com\/c\/dam\/en\/us\/td\/i\/100001-200000\/100001-110000\/103001-104000\/103765.ps\/_jcr_content\/renditions\/103765.jpg\" alt=\"Cisco Documentation\" \/> <em>**Owned by Cisco.com<\/em><\/p>\n<ol>\n<li>Calling phone sends out INVITE<\/li>\n<li>Called phone receives INVITE and sends an 100 response back &#8220;Trying&#8221;<\/li>\n<li>Called phone starts ringing and sends a 180 response &#8220;Ringing&#8221; back to the Calling phone.<\/li>\n<li>A 200 &#8220;OK&#8221; is sent from the Called station once the phone is picked up.<\/li>\n<li>Calling stations responds with a ACK request<\/li>\n<li>RTP takes over to handling the audio back and forth &#8220;Media Session&#8221;.<\/li>\n<li>A BYE is sent by which ever phone hangs up first.<\/li>\n<\/ol>\n<p>There is another alternative to SIP called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Skinny_Call_Control_Protocol\" target=\"_blank\" rel=\"noopener noreferrer\">Skinny<\/a> which is a Cisco proprietary protocol. You will most like find this running as the Signally protocol in a VoIP network which is predominately Cisco. Keep in mind Cisco equipment can run SIP as well. So if your environment\/equipment is mixed you will want to go with SIP.<\/p>\n<h4>FreePBX\/Asterisk &#8212; Call System Exchange<\/h4>\n<p>FreePBX is a Linux distro that includes Asterisk and a Web Management GUI. Asterisk being the PBX(Private Branch Exchange) software that is used to manage your VoIP logic. A PBX is responsible for your extension numbering plan (x1234), dial plans routing (like when you have to dial *9 to get an outside line), VoIP trunking (merging PBXs together), voicemail boxes, etc. A PBX is also where your VoIP capable phones will register themselves with and receive INVITEs. <strong>All in all, just remember the PBX has many features, but it&#8217;s primary function is to set up and destroy SIP Call sessions.<\/strong><\/p>\n<h6>Installing&#8230;<\/h6>\n<p>Let&#8217;s get started by installing FreePBX by following the official documentation here(<a href=\"http:\/\/wiki.freepbx.org\/display\/FD\/Installing+FreePBX+Official+Distro\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/wiki.freepbx.org\/display\/FD\/Installing+FreePBX+Official+Distro<\/a>);<\/p>\n<ul>\n<li data-wpview-marker=\"http%3A%2F%2Fwiki.freepbx.org%2Fdisplay%2FFD%2FInstalling%2BFreePBX%2BOfficial%2BDistro\">I chose IPv4 Manual Configuration and set the IP to 10.55.55.135 with a gateway of 10.55.55.1 and DNS to 10.55.55.3+4<\/li>\n<li data-wpview-marker=\"http%3A%2F%2Fwiki.freepbx.org%2Fdisplay%2FFD%2FInstalling%2BFreePBX%2BOfficial%2BDistro\">Once the install has completed and you rebooted, go to the Web Admin GUI <a href=\"http:\/\/10.55.55.135\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/10.55.55.135 <\/a><\/li>\n<li data-wpview-marker=\"http%3A%2F%2Fwiki.freepbx.org%2Fdisplay%2FFD%2FInstalling%2BFreePBX%2BOfficial%2BDistro\">Change the default password to whatever you want.<\/li>\n<li data-wpview-marker=\"http%3A%2F%2Fwiki.freepbx.org%2Fdisplay%2FFD%2FInstalling%2BFreePBX%2BOfficial%2BDistro\">Click on FreePBX Administrator<\/li>\n<li data-wpview-marker=\"http%3A%2F%2Fwiki.freepbx.org%2Fdisplay%2FFD%2FInstalling%2BFreePBX%2BOfficial%2BDistro\">Run an update by going to A<strong>dmin &#8211;&gt; Module Admin<\/strong>, then click <strong>Check Online<\/strong> and at the far right click<strong> Upgrade all and Process<\/strong>. (this will only work if you FreePBX server has access to the internet.<\/li>\n<\/ul>\n<h6>Setting up a few extensions&#8230;<\/h6>\n<ol>\n<li>Go to Applications &#8211;&gt; Extensions<\/li>\n<li>Select Generic SIP Device and click Submit.<\/li>\n<li><strong>User Extension<\/strong> = The unique extension , I picked <strong>86555<\/strong>.<\/li>\n<li><strong>Display Name<\/strong> = The CallerID name that will display on the Called phone when calling from this Extension, <strong>TestUser1<\/strong><\/li>\n<li><strong>CID Num Alias<\/strong> = This is a masquerade alias that will display when calling from this extension to anyone internally. Used for call centers so the user can&#8217;t call you back directly because they are presented with the call centers number. I left this blank.<\/li>\n<li><strong>Emergency CID<\/strong> = This is the CallerID that will be used when calling outbound routes flagged as Emergency, such as 911 so they will get a number to reach you back at. I left this blank, you will have to set up the logic for this if you want to use it properly.<\/li>\n<li><strong>Secret<\/strong> = This is the SIP password to be used during the SIP authentication piece. i set it to <strong>testpassword123<\/strong><\/li>\n<li><strong>NAT Mode<\/strong> = O NAT, this confuses so many people (including myself!) when dealing with SIP. Set this to <strong>No<\/strong>, We&#8217;ll see why below.<\/li>\n<li><strong>Link to Default Use<\/strong>r = Here we can link this extension to a username. This is handy if you want to support Emailing of Voicemail message and the ability of users to log into the Voicemail port to listen to there voicemail&#8217;s over the web. I created a new user with Username = testuser123, Password = testpassword123.<\/li>\n<li><strong>Voicemail<\/strong> = Enable\/Disable voicemail on this extension.\n<ul>\n<li>Voicemail password = Number password for voicemail box when dialing from this extension.<\/li>\n<li>Require from same Extension = whether the Voicemail box is available to reach to check message from anywhere.<\/li>\n<li>Email Address = Email address to send Voicemail notifications to<\/li>\n<li>Email Attachment = Attaches Voicemail message as a WAV and sends it to the email address specified.<\/li>\n<li>Delete Voicemail = Voicemail message will be deleted once it is sent to email address as an attachment.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Optional Destinations<\/strong> = Here is where you can choose what to do with an incoming call under the following conditions, No Anwser (max rings attempted), Busy (extension is busy), Not reachable (phone is not currently reachable by the PBX to send an INVITE for this call)<\/li>\n<li><strong>Click Submit.<\/strong><\/li>\n<li><strong>Now create a few more extensions, 86444, 86777, and 86888.<\/strong><\/li>\n<\/ol>\n<p><strong>Advanced Options:<\/strong><\/p>\n<ul>\n<li><strong>Can Reinvite<\/strong> = By default this is set to No, which means the Call session &#8220;media session&#8221; between two extensions or more is all done through the PBX system. PhoneA talking to PhoneB through the PBX acting like a proxy. When re-invite\u00a0is set to Yes, after the initial Call session is set up, each phone in the session will try to send a INVITE directly to each other. This is helpful in terms of taking the load off of the PBX, however re-INVITEs get complicated when SIP Call Sessions are not Internal to Internal extensions within the same IP network.<\/li>\n<li><strong>Qualify<\/strong> = Enabled by default, will send OPTION SIP requests periodically to check that the extension is still available by the device the registered with it. Turning this feature off will help performance, but service will be less resilient to network changes. For instance the PBX only know where the phone is with the extension based on the initial REGISTER request. If this is WiFi phone or LTE&#8230;this would not work.<\/li>\n<li><strong>Transport<\/strong> = UDP, TCP, or TLS for SIP signally (not for the actually audio\/video). So for SIP request and responses like REGISTER, AUTH, INVITE, etc. UDP is the best performance but has not security. Use UDP on private and protected networks. TCP is the same just TCP with no security. TLS is just like HTTPS, all SIP signally commands are sent over TLS, meaning you will need a SSL certificate and private key.<\/li>\n<li><strong>Enable Encryption<\/strong> = This will enable media encryption. Use this in conjunction with TLS transport from above to make SIP signalling and media encrypted. SRTP is the only option. Does not require a certificate as the initial encryption stream is set up in plain text, hence why you need TLS above to blanket this SRTP initiation.<\/li>\n<li><strong>Deny\/Permit IP<\/strong> = Just a little bit more added security. Here you can set what IP ranges devices can be coming from when trying to REGISTER this extension. So like in our lab we know they will be coming from 10.55.55.0\/24, we can put <strong>Permit 10.55.55.0 255.255.255.0.<\/strong><\/li>\n<\/ul>\n<h5>To NAT or not to NAT, that is the Question&#8230;<\/h5>\n<p><strong>SIP NAT&#8217;ing.<\/strong> If you recall from the SIP registration messages above you can see in the SIP payload <strong><em>sip:192.168.0.2:5060 SIP\/2.0<\/em><\/strong> , so when a call is being setup each phone has been registered with that syntax sip:{address}{port}. Now what happens if my phone is behind a NAT where the real IP address of phone does not match the IP packet that arrives at the PBX server. For example, <strong>my phones IP is 192.168.55.5, but my IP packet gets SNAT&#8217;d and changed to 1.1.1.10 on it&#8217;s way to the PBX server.<\/strong> The IP packet will arrive correctly, but the SIP payload message will contain the line<em><strong> sip:192.168.55.5:5060 SIP\/2.0<\/strong><\/em>. The PBX will then try to send ACK, and INVITEs for calls to 1<strong>92.168.55.5:5060<\/strong> which it cannot get to. SIP breaks. <strong>Setting the PBX server up with the <span style=\"text-decoration: underline;\">NAT mode to yes<\/span>, tells the server, when this extension registers, ignore IP address in the sip:192.168.55.5:5060 SIP\/2.0 message and use the IP Source in the IP packet instead.<\/strong><\/p>\n<h4>Phone Provisioning<\/h4>\n<p>There are mostly two types of provision when working with VoIP phones. Manual provisioning and Auto-provisioning. There are pros and cons for each. For example Manual provisioning is easier to get working right away because these phones have a configuration menu on them. I&#8217;ve seen most WiFi VoIP phones and VoIP Apps on Smartphones (like <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=org.ubiphone&amp;hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">UbiPhone<\/a> or <a href=\"http:\/\/www.zoiper.com\/en\" target=\"_blank\" rel=\"noopener noreferrer\">Zoiper<\/a> or <a href=\"https:\/\/itunes.apple.com\/us\/app\/linphone\/id360065638?mt=8\" target=\"_blank\" rel=\"noopener noreferrer\">Linphone for apple users<\/a>) to be this way. You can also find some desktop phones that have manual provisioning, like the <a href=\"http:\/\/www.ebay.com\/sch\/i.html?_odkw=nortel+camera&amp;_osacat=0&amp;_from=R40&amp;_trksid=p2045573.m570.l1313.TR0.TRC0.H0.XNortel+IP+1535.TRS0&amp;_nkw=Nortel+IP+1535&amp;_sacat=0\" target=\"_blank\" rel=\"noopener noreferrer\">Nortel IP1535<\/a>. On the other side of the coin, Auto-Provisioning is automatic! and best used for larger deployments. It is however a more sophisticated setup. Auto-Provisioning deployments are most common in the business or corporate world where you have many VoIP phones that get their configuration from centralized place upon bootup. These are the Cisco or Avaya phones you may have seen.<\/p>\n<h5>Manual Provisioning.<\/h5>\n<ol>\n<li>Start by using your computer\/laptop (hopefully with a Microphone, and download <a href=\"http:\/\/www.microsip.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">MicroSIP<\/a> which is super easy. I downloaded the Lite version portalable ZIP file.<\/li>\n<li>Extract it and Run the MicroSIP executable.<\/li>\n<li>Goto Menu &#8211;&gt; Add Account<\/li>\n<li>Filling in the Following:\n<ul>\n<li><strong>SIP Server<\/strong> = 10.55.55.135 {IP or DNS name of your PBX server}<\/li>\n<li><strong>User<\/strong> = 86555, or whatever extension you create in the previous steps.<\/li>\n<li><strong>Domain<\/strong> = local<\/li>\n<li><strong>Password<\/strong> = password for x86555<\/li>\n<li><strong>Your name<\/strong> = testuser123<\/li>\n<li><strong>Transport<\/strong> = UDP<br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/ivniyyg01\/Micro_SIP_Add_Account.jpg\" alt=\"\" \/><a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Micro-SIP-Add-Account.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3368\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Micro-SIP-Add-Account-195x300.jpg\" alt=\"\" width=\"346\" height=\"532\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Micro-SIP-Add-Account-195x300.jpg 195w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Micro-SIP-Add-Account.jpg 358w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/a><\/li>\n<\/ul>\n<\/li>\n<li>Click Save and you should see MicroSIP Connecting&#8230; and eventually Online.<br \/>\n<a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Micro-SIP-Account-Online.jpg\">\u00a0 \u00a0 \u00a0 <img loading=\"lazy\" decoding=\"async\" class=\" wp-image-3369 alignnone\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Micro-SIP-Account-Online-244x300.jpg\" alt=\"\" width=\"339\" height=\"417\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Micro-SIP-Account-Online-244x300.jpg 244w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Micro-SIP-Account-Online.jpg 281w\" sizes=\"auto, (max-width: 339px) 100vw, 339px\" \/><\/a><\/li>\n<li>Now let&#8217;s set it up on a Android Smart Phone using <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=org.ubiphone&amp;hl=en\">UbiPhone<\/a><\/li>\n<li>Once installed open the app.\n<ul>\n<li>Click <strong>Let&#8217;s Go<\/strong> at the Welcome screen<br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/odg4mrb7l\/Ubiphone_Welcome.jpg\" alt=\"\" \/><a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Welcome.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3371\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Welcome-169x300.jpg\" alt=\"\" width=\"250\" height=\"444\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Welcome-169x300.jpg 169w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Welcome.jpg 354w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><\/li>\n<li>Select<strong> I already have a SIP account<\/strong><br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/8hrajgkn5\/Ubiphone_Setup.jpg\" alt=\"\" \/><a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Setup.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3372\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Setup-168x300.jpg\" alt=\"\" width=\"250\" height=\"447\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Setup-168x300.jpg 168w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Setup.jpg 353w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><\/li>\n<li><strong>Type in Extension\/User = 86888, password = testpassword123, domain = 10.55.55.135 (your PBX DNS\/IP)<\/strong><br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/mvuob76gx\/Ubiphone_Config.jpg\" alt=\"\" \/><a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Config.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3373\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Config-169x300.jpg\" alt=\"\" width=\"250\" height=\"445\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Config-169x300.jpg 169w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Config.jpg 355w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><\/li>\n<li>You&#8217;ll see registration in progress, but you need to put in a password. So click on Settings bottom right, <strong>Click on the account (86888@10.55.55.135), find the password field and type in the password.<\/strong> Hit Settings button again to back out to main dialer menu.<br \/>\npassword<br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/caasz705d\/Ubiphone_Registering.jpg\" alt=\"\" \/><a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Registering.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3375\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Registering-169x300.jpg\" alt=\"\" width=\"250\" height=\"445\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Registering-169x300.jpg 169w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Registering.jpg 355w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><\/li>\n<li><strong>Registration Successful<\/strong><br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/5z5lirywx\/Ubiphone_Registered.jpg\" alt=\"\" \/><a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Registered.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3374\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Registered-168x300.jpg\" alt=\"\" width=\"250\" height=\"446\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Registered-168x300.jpg 168w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/Ubiphone-Registered.jpg 355w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h6>Try a Test Call.<\/h6>\n<p>x86555 to x86888.<\/p>\n<h5>Auto-Provisioning.<\/h5>\n<p>So here comes the fun part! Auto-Provisioning of SIP phones! This will be a little more sophisticated than Manual provisioning as more pieces are involved and need to be configured to get it all to work. Each Phone type\/brand may also be different. I am going to use two Cisco phones; 1x <a href=\"http:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/voice_ip_comm\/cuipph\/7962g_7961g_7961g-ge_7942g_7941g_7941g-ge\/8_0\/english\/user\/guide\/62enu80\/62614241ovr.html\" target=\"_blank\" rel=\"noopener noreferrer\">Cisco 7941G<\/a> and 1x <a href=\"http:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/voice_ip_comm\/cuipph\/7965g_7945g\/6_1\/english\/administration\/guide\/7965_6_1_Admin\/7965ovr.html\" target=\"_blank\" rel=\"noopener noreferrer\">Cisco 7945G<\/a>, the G stands for Global not gigabit!.<br \/>\n<a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941-G-nolabel.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3377\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941-G-nolabel-300x265.jpg\" alt=\"\" width=\"300\" height=\"265\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941-G-nolabel-300x265.jpg 300w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941-G-nolabel-1024x906.jpg 1024w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941-G-nolabel-768x680.jpg 768w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941-G-nolabel.jpg 1199w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-nolabel.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3378\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-nolabel-300x244.jpg\" alt=\"\" width=\"300\" height=\"244\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-nolabel-300x244.jpg 300w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-nolabel-1024x834.jpg 1024w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-nolabel-768x625.jpg 768w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-nolabel.jpg 1500w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The basic process for auto provisioning Cisco 7940s and 7960s series phones is through DHCP boot options and TFTP server housing the specific config files for the phones.<\/p>\n<ol>\n<li>Power starts the Phones boot up process<\/li>\n<li>Phone detects firmware, if no firmware detected goes into Firmware download mode.<strong>Normal Booting Screen<\/strong><br \/>\n<a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-booting.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3379\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-booting-257x300.jpg\" alt=\"\" width=\"305\" height=\"356\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-booting-257x300.jpg 257w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-booting-877x1024.jpg 877w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-booting-768x896.jpg 768w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945-G-booting.jpg 1029w\" sizes=\"auto, (max-width: 305px) 100vw, 305px\" \/><\/a><strong>Firmware Download Mode Screen<\/strong><br \/>\n<a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/cisco-Phone-Firmware-Download-Mode.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3380\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/cisco-Phone-Firmware-Download-Mode-300x184.png\" alt=\"\" width=\"391\" height=\"240\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/cisco-Phone-Firmware-Download-Mode-300x184.png 300w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/cisco-Phone-Firmware-Download-Mode.png 650w\" sizes=\"auto, (max-width: 391px) 100vw, 391px\" \/><\/a><\/li>\n<li>Phone receives IP via DHCP and DHCP option is set telling the phone where the location of the TFTP server is with the config files<\/li>\n<li>Cisco 7940 and 7960 series phones config file name format is <strong>SEP{MAC Address}.cnf.xml<\/strong>, so for example a phone with the MAC address of <em>AAAA.BBBB.CCCC<\/em> would look for a file named <strong>SEPAAAABBBBCCCC.cnf.xml<br \/>\n<\/strong>Excerpt from my TFTP server upon Cisco 7941G boot.<strong><strong><br \/>\n<\/strong><\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Aug 27 14:29:44 FreePBX xinetd[1108]: START: tftp pid=8382 from=10.55.55.151\nAug 27 14:29:44 FreePBX in.tftpd[8384]: RRQ from 10.55.55.151 filename SEP001C5BBDDCAA.cnf.xml\nAug 27 14:29:56 FreePBX in.tftpd[8385]: RRQ from 10.55.55.151 filename English_United_States\/mk-sip.jar\nAug 27 14:30:16 FreePBX in.tftpd[8459]: RRQ from 10.55.55.151 filename dialplan.xml<\/pre>\n<p><code><br \/>\n<\/code><\/li>\n<li>As long as the config file has no issues the phone will continue to boot using the configuration items in the file.<\/li>\n<\/ol>\n<p>Luckily, our FreePBX server by default installs a TFTP service. Located at \/tftpboot on the server itself.<\/p>\n<p><span style=\"text-decoration: underline;\"><em><strong>Important Files:<\/strong><\/em><\/span><\/p>\n<ul>\n<li><strong>OS79xx.txt<\/strong> = Older series Cisco phones 7940s and 7960s will look for this file to determine what firmware version they should be running, if no match, the phone will go into<strong> Firmware Download Mode<\/strong>. This file is not used in SIP, perhaps Skinny?\n<pre><code>P0S30202<\/code><\/pre>\n<\/li>\n<li><strong>XMLDefault.cnf.xml<\/strong> = Global Configuration File used during <strong>Firmware Download Mode<\/strong>. The phone will look for its model and grab the firmware version it should be provisioned with.\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;Default&gt;\n&lt;callManagerGroup&gt;\n&lt;members&gt;\n&lt;member priority=\"0\"&gt;\n&lt;callManager&gt;\n&lt;ports&gt;\n&lt;ethernetPhonePort&gt;2000&lt;\/ethernetPhonePort&gt;\n&lt;mgcpPorts&gt;\n&lt;listen&gt;2427&lt;\/listen&gt;\n&lt;keepAlive&gt;2428&lt;\/keepAlive&gt;\n&lt;\/mgcpPorts&gt;\n&lt;\/ports&gt;\n&lt;processNodeName&gt;&lt;\/processNodeName&gt;\n&lt;\/callManager&gt;\n&lt;\/member&gt;\n&lt;\/members&gt;\n&lt;\/callManagerGroup&gt;\n&lt;loadInformation115 model=\"Cisco 7941\"&gt;SIP41.9-4-2SR1-1S&lt;\/loadInformation115&gt;\n&lt;loadInformation307 model=\"Cisco 7911\"&gt;SIP41.9-4-2SR1-1S&lt;\/loadInformation307&gt;\n&lt;loadInformation309 model=\"Cisco 7941G-GE\"&gt;SIP41.9-4-2SR1-1S&lt;\/loadInformation309&gt;\n&lt;loadInformation435 model=\"Cisco 7945\"&gt;SIP45.9-4-2SR3-1S&lt;\/loadInformation435&gt;\n&lt;loadInformation436 model=\"Cisco 7965\"&gt;SIP45.9-4-2SR3-1S&lt;\/loadInformation436&gt;\n&lt;loadInformation437 model=\"Cisco 7975\"&gt;SIP75.9-4-2SR3-1S&lt;\/loadInformation437&gt;\n&lt;loadInformation30006 model=\"IP Phone 7970\"&gt;SIP70.8-0-3S&lt;\/loadInformation30006&gt;\n&lt;authenticationURL&gt;&lt;\/authenticationURL&gt;\n&lt;directoryURL&gt;&lt;\/directoryURL&gt;\n&lt;idleURL&gt;&lt;\/idleURL&gt;\n&lt;informationURL&gt;&lt;\/informationURL&gt;\n&lt;messagesURL&gt;&lt;\/messagesURL&gt;\n&lt;servicesURL&gt;&lt;\/servicesURL&gt;\n&lt;\/Default&gt;<\/pre>\n<\/li>\n<li><strong>dialplan.xml<\/strong> = Cisco phones use this file to create their dialplans, meaning when you start dialing a number on the\u00a0 phone, how does the phone know hwo long your extensions are? How does it know to signal a outbound call with *9, etc.\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;DIALTEMPLATE&gt;\n&lt;TEMPLATE MATCH=\"*97\" TIMEOUT=\"0\"\/&gt;&lt;!-- *97 (*VM for voicemail). Dial immediately --&gt;\n&lt;!--&lt;TEMPLATE MATCH=\"*80,....\" TIMEOUT=\"0\" Tone=\"Bellcore-Stutter\"\/&gt;&lt;!-- *80 (Paging and Intercom followed by Ext#). Dial immediately --&gt;\n&lt;TEMPLATE MATCH=\"....\" TIMEOUT=\"0\"\/&gt;&lt;!-- 4 digits. Wait 1 second, then dial --&gt;\n&lt;TEMPLATE MATCH=\"*#\" TIMEOUT=\"0\" REWRITE=\"%1\"\/&gt;&lt;!-- Dial Immediately After Pressing # --&gt;\n&lt;TEMPLATE MATCH=\"9,1..........\" TIMEOUT=\"0\" Tone=\"Bellcore-Outside\" \/&gt;&lt;!-- call using 860.259.1966 line --&gt;\n&lt;TEMPLATE MATCH=\"9,..........\" TIMEOUT=\"0\" Tone=\"Bellcore-Outside\" \/&gt;&lt;!-- call using 860.259.1966 line --&gt;\n&lt;TEMPLATE MATCH=\"9,27.........\" TIMEOUT=\"0\" Tone=\"Bellcore-Outside\" \/&gt;&lt;!-- call using 27-1-500-4700 line --&gt;\n\n&lt;TEMPLATE MATCH=\"*\" TIMEOUT=\"3\"\/&gt; &lt;!-- Anything else. Wait 5 seconds, then dial --&gt;\n&lt;\/DIALTEMPLATE&gt;<\/pre>\n<\/li>\n<li><strong>ringlist.xml<\/strong> = Configuration file showing where each ring sounds is located. Should be WAV format and placed in root TFTP directory\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;CiscoIPPhoneRingList&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Analog 1&lt;\/DisplayName&gt;\n&lt;FileName&gt;Analog1.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Analog 2&lt;\/DisplayName&gt;\n&lt;FileName&gt;Analog2.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Are You There&lt;\/DisplayName&gt;\n&lt;FileName&gt;AreYouThere.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Bass&lt;\/DisplayName&gt;\n&lt;FileName&gt;Bass.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Call Back&lt;\/DisplayName&gt;\n&lt;FileName&gt;CallBack.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Chime&lt;\/DisplayName&gt;\n&lt;FileName&gt;Chime.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Classic 1&lt;\/DisplayName&gt;\n&lt;FileName&gt;Classic1.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Classic 2&lt;\/DisplayName&gt;\n&lt;FileName&gt;Classic2.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Clock Shop&lt;\/DisplayName&gt;\n&lt;FileName&gt;ClockShop.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Drums 1&lt;\/DisplayName&gt;\n&lt;FileName&gt;Drums1.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Drums 2&lt;\/DisplayName&gt;\n&lt;FileName&gt;Drums2.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Film Score&lt;\/DisplayName&gt;\n&lt;FileName&gt;FilmScore.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Harp Synth&lt;\/DisplayName&gt;\n&lt;FileName&gt;HarpSynth.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Jamaica&lt;\/DisplayName&gt;\n&lt;FileName&gt;Jamaica.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Koto Effect&lt;\/DisplayName&gt;\n&lt;FileName&gt;KotoEffect.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Music Box&lt;\/DisplayName&gt;\n&lt;FileName&gt;MusicBox.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Piano 1&lt;\/DisplayName&gt;\n&lt;FileName&gt;Piano1.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Piano 2&lt;\/DisplayName&gt;\n&lt;FileName&gt;Piano2.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Pop&lt;\/DisplayName&gt;\n&lt;FileName&gt;Pop.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Pulse 1&lt;\/DisplayName&gt;\n&lt;FileName&gt;Pulse1.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Ring 1&lt;\/DisplayName&gt;\n&lt;FileName&gt;Ring1.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Ring 2&lt;\/DisplayName&gt;\n&lt;FileName&gt;Ring2.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Ring 3&lt;\/DisplayName&gt;\n&lt;FileName&gt;Ring3.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Ring 4&lt;\/DisplayName&gt;\n&lt;FileName&gt;Ring4.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Ring 5&lt;\/DisplayName&gt;\n&lt;FileName&gt;Ring5.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Ring 6&lt;\/DisplayName&gt;\n&lt;FileName&gt;Ring6.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Ring 7&lt;\/DisplayName&gt;\n&lt;FileName&gt;Ring7.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Sax 1&lt;\/DisplayName&gt;\n&lt;FileName&gt;Sax1.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Sax 2&lt;\/DisplayName&gt;\n&lt;FileName&gt;Sax2.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;Ring&gt;\n&lt;DisplayName&gt;Vibe&lt;\/DisplayName&gt;\n&lt;FileName&gt;Vibe.raw&lt;\/FileName&gt;\n&lt;\/Ring&gt;\n&lt;\/CiscoIPPhoneRingList&gt;<\/pre>\n<\/li>\n<li><strong>menu.xml<\/strong> = Address book or other Service extension\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;CiscoIPPhoneMenu&gt; \n&lt;Prompt&gt;thejimmahknows Directory&lt;\/Prompt&gt; \n&lt;MenuItem&gt; \n&lt;Name&gt;thejimmahknows Directory&lt;\/Name&gt; \n&lt;URL&gt;http:\/\/10.55.55.135\/directory\/directory.xml&lt;\/URL&gt; \n&lt;\/MenuItem&gt; \n&lt;\/CiscoIPPhoneMenu&gt;<\/pre>\n<\/li>\n<li><strong>directory.xml =<\/strong> In XML format like below. Contacts that will show when directory selected on phone.\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;CiscoIPPhoneMenu&gt; \n&lt;Title&gt;thejimmahknows Extensions&lt;\/Title&gt;\n&lt;Prompt&gt;Dial&lt;\/Prompt&gt; \n&lt;!--\n&lt;MenuItem&gt; \n&lt;Name&gt;Jim's Phone&lt;\/Name&gt; \n&lt;URL&gt;Dial:86555&lt;\/URL&gt; \n&lt;\/MenuItem&gt;\n--&gt; \n&lt;MenuItem&gt; \n&lt;Name&gt;Jim's Office&lt;\/Name&gt; \n&lt;URL&gt;Dial:86444&lt;\/URL&gt;\n&lt;\/MenuItem&gt; \n&lt;\/CiscoIPPhoneMenu&gt;<\/pre>\n<pre><\/pre>\n<\/li>\n<li><strong>SEP000011112222.cnf.xml<\/strong> = the main confirutation file for Cisco phone with MAC address<em> 0000.1111.2222<\/em>.\n<ul>\n<li>Cisco 7941G <a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/SEP-7941-example.cfg_.txt.zip\">SEP-7941-example.cfg.txt<\/a><br \/>\n<a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941cfg-example.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3386\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941cfg-example-300x255.png\" alt=\"\" width=\"600\" height=\"510\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941cfg-example-300x255.png 300w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7941cfg-example.png 724w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/li>\n<li>Cisco 7945G <a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/SEP-7945-example.cfg_.txt.zip\">SEP-7945-example.cfg.txt<\/a><br \/>\n<a href=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945cfg-example.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3387\" src=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945cfg-example-300x292.png\" alt=\"\" width=\"600\" height=\"584\" srcset=\"https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945cfg-example-300x292.png 300w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945cfg-example-768x747.png 768w, https:\/\/infotechguy.net\/wp-content\/uploads\/2021\/03\/7945cfg-example.png 853w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><code style=\"white-space: pre-wrap;\">.<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h6>Almost There &#8211;DNS and DHCP server time.<\/h6>\n<p>The next steps are required so that the Cisco phones will know where the TFTP server is, remember they don&#8217;t know anything upon boot and must be told via DHCP Option 150 or 66<\/p>\n<ol>\n<li><strong>Create a DNS A<\/strong> record to point to your PBX server. I chose <strong>sip.local &#8211;&gt; 10.55.55.135<\/strong><\/li>\n<li>If using Windows create a new <strong>DHCP Option 150<\/strong> with a value type of IP<br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/vnavwy4jl\/Windows_DHCP_Option150.png\" alt=\"\" \/><\/li>\n<li>Optional: Option 150 should work, however some older phones like<strong> DHCP Option 66<\/strong> (I know this conflicts with PXE!)<br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/we3m2q6wx\/Windows_DHCP_Option66.png\" alt=\"\" \/><\/li>\n<li><strong>Using Cisco Switch<\/strong>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ip dhcp excluded-address 10.55.55.1 10.55.55.100\n!\nip dhcp pool dhcp-pool\n network 10.55.55.0 255.255.255.0\n domain-name local\n dns-server 10.55.55.1 \n default-router 10.55.55.1 \n option 66 ascii sip.local\n option 150 ip 10.55.55.135 \n lease 7\n!\n!\n!\nip domain retry 1\nip domain name local\n!\n!\nip host sip.local 10.55.55.135\nip dhcp-server 10.55.55.1<\/pre>\n<\/li>\n<li><strong>Using your FreePBX server<\/strong> to become the DHCP server for the VLAN, see <a href=\"https:\/\/access.redhat.com\/documentation\/en-US\/Red_Hat_Enterprise_Linux\/6\/html\/Deployment_Guide\/s1-dhcp-configuring-server.html\" target=\"_blank\" rel=\"noopener noreferrer\">Red Hat Documentation Install DHCP Server<\/a>, then follow<a href=\"https:\/\/www.redhat.com\/archives\/redhat-list\/2004-December\/msg00272.html\" target=\"_blank\" rel=\"noopener noreferrer\"> Red Hat DHCP Option 150 Documentation<\/a>.<\/li>\n<\/ol>\n<h3>Troubleshooting:<\/h3>\n<p>If \u00a0you&#8217;ve made it this far..Congrats!! Now the fun part of figuring out what went wrong. Like in the next Parts I will only be Troubleshooting what we went over.<\/p>\n<h5>Checking Asterisk and watching SIP messages<\/h5>\n<ol>\n<li>SSH into your FreePBX box, or whatever Distro you have that is running Asterisk.<\/li>\n<li>Type <strong>asterisk -rvvv<\/strong> to open the asterisk CLI<\/li>\n<li>This CLI will stdout SIP messages, warnings, and errors. The most common are\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">NOTICE[24039]: chan_sip.c:28091 handle_request_register: Registration from '&lt;sip:86555@10.22.22.135&gt;' failed for '10.55.55.101:5060' - Wrong password\nNOTICE[24127]: chan_sip.c:28091 handle_request_register: Registration from '&lt;sip:86555@10.55.55.135&gt;' failed for '10.55.55.101:59872' - Device not configured to use this transport type\nERROR[24039]: chan_sip.c:16899 register_verify: 'TCP' is not a valid transport for '86555'. we only use 'UDP'! ending call.<\/pre>\n<p>The first one denotes authentication failed due to incorrect SIP password for the extension trying to register.<br \/>\nSecond one denotes the SIP Client isn&#8217;t set up with the correct Transport set for the Extension (UDP,TCP, or TLS).<br \/>\nCheck FreePBX configuration for this extension<br \/>\nThird, you can see why the Transport type failed. Only accepts UDP, not TCP for this extension.<br \/>\nGood responses:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">NOTICE[24039]: chan_sip.c:23571 handle_response_peerpoke: Peer '86444' is now Reachable. (20ms \/ 2000ms)<\/pre>\n<\/li>\n<\/ol>\n<h5>Checking\u00a0Cisco Phones<\/h5>\n<ol>\n<li>If you think your Phone may just be stuck, do a <strong>Restart<\/strong>\u00a0by pressing &#8216;<strong>**#**<\/strong>&#8216;<\/li>\n<li><strong>Resetting<\/strong> a Phone may help wipe any legacy or old configuration files that may be causing issues. To do this you will \u00a0need to power cycle the phone and hold down the <strong>&#8216;#&#8217;<\/strong> key until you see the Line Buttons alternate orange back and forth. <a href=\"http:\/\/www.cisco.com\/c\/en\/us\/support\/docs\/voice-unified-communications\/unified-ip-phone-7900-series\/15254-7960-default.html\" target=\"_blank\" rel=\"noopener noreferrer\">Cisco Documentation<\/a>.\n<ol>\n<li><strong>Soft\u00a0Reset<\/strong> = Press\u00a0<strong>123456789*0#<\/strong> , this will delete any cached files, like FIrmware and SEP configs<\/li>\n<li><strong>Hard Reset<\/strong> = Press <strong>3491672850*#<\/strong>, this will reset the phone and format the flash.<\/li>\n<li><a href=\"http:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/voice_ip_comm\/cucme\/admin\/configuration\/guide\/cmeadm\/cmereset.html#94988\" target=\"_blank\" rel=\"noopener noreferrer\">Difference between Restart and Reset, read this<\/a>.<\/li>\n<\/ol>\n<\/li>\n<li>Checking the Phones logs (if your phone has an IP address)\n<ol>\n<li>On the Phone go to Settings &#8211;&gt; Network Configuration &#8211;&gt; IP Address<\/li>\n<li>Open a browser on a computer that has access to that IP address&#8217;s network http:\/\/{you-phones-ip}<\/li>\n<li>Here Click Console Logs and click on the log with the highest increment<br \/>\n<a href=\"http:\/\/postimg.org\/image\/5hxvj096l\/\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/8daypvd6l\/Cisco_Phone_Device_Info.png\" alt=\"Cisco Phone Device Info\" border=\"0\" \/><img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/5hxvj096l\/Cisco_Phone_Console_Logs.png\" alt=\"Cisco Phone Console Logs\" border=\"0\" \/><\/a><\/li>\n<li>Check the console logs for anything\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">2056: ERR 03:52:32.266428 JVM: Startup Module Loader|cip.xml.av: - XML Parser Exception: Element '\/device\/sipProfile\/phoneLabel' : String too long: length is 21, max length = 12 (line=95)\n2057: ERR 03:52:32.268201 JVM: Startup Module Loader|cip.cfg.h:? - ERROR PARSING CONFIG file:ram\/SEP000011112222.cnf.xml\n2058: NOT 03:52:32.270845 JVM: Startup Module Loader|cip.cfg.h:? - Config processConfigNoError() result code=CONFIG_FILE_BAD_FORMAT<\/pre>\n<p>This shows an error that the <strong>phoneLabel\u00a0<\/strong><b>parameter<\/b>\u00a0is too long\u00a0<strong><\/p>\n<p><\/strong><\/li>\n<\/ol>\n<\/li>\n<li>Check FreePBX Password and Phones SEP.cnf.xml password are the same<br \/>\n<em>Note: I had an issue if I made the <strong>password too long<\/strong>. The Cisco 7941s didn&#8217;t seem to like it more than 15 characters roughly.<\/em><\/li>\n<li>Check your<strong> \/var\/log\/messages<\/strong> on your FreePBX box to see if TFTP\u00a0requests are making it to the server.\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Aug 28 22:29:48 sip in.tftpd[4692]: RRQ from 10.55.55.101 filename SIP45.8-5-4S.loads\nAug 28 22:29:51 sip in.tftpd[4693]: RRQ from 10.55.55.101 filename jar45sip.8-5-4TH1-6.sbn\nAug 28 22:30:01 sip in.tftpd[4694]: RRQ from 10.55.55.101 filename cnu45.8-5-4TH1-6.sbn\nAug 28 22:30:06 sip in.tftpd[4703]: RRQ from 10.55.55.101 filename apps45.8-5-4TH1-6.sbn\nAug 28 22:30:19 sip in.tftpd[4704]: RRQ from 10.55.55.101 filename dsp45.8-5-4TH1-6.sbn\nAug 28 22:30:23 sip in.tftpd[4726]: RRQ from 10.55.55.101 filename cvm45sip.8-5-4TH1-6.sbn\nAug 28 22:35:09 sip in.tftpd[4948]: RRQ from 10.55.55.101 filename CTLSEP001E138C7FD7.tlv\nAug 28 22:35:09 sip in.tftpd[4948]: sending NAK (1, File not found) to 10.55.55.101\nAug 28 22:35:10 sip in.tftpd[4949]: RRQ from 10.55.55.101 filename SEP00011112222.cnf.xml<\/pre>\n<\/li>\n<li>You may have to do a Packet Capture, check that the <strong>Option 150<\/strong> is being confirmed on the <strong>DHCP ACK<\/strong> between the Phone and the DHCP server<br \/>\n<img decoding=\"async\" src=\"http:\/\/s6.postimg.org\/xyn6pq0e9\/DHCP_ACK_option150.png\" alt=\"\" \/><\/li>\n<\/ol>\n<h6><a href=\"https:\/\/infotechguy.net\/building-your-voip-network-round-2\/\">Continue to PART#2&#8230;.<\/a><\/h6>\n<h3>Sources:<\/h3>\n<ul>\n<li><a href=\"http:\/\/brickybox.com\/2012\/11\/25\/sep-cnf-xml-for-a-cisco-7975g-with-chan-sccp-b\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/brickybox.com\/2012\/11\/25\/sep-cnf-xml-for-a-cisco-7975g-with-chan-sccp-b<\/a><\/li>\n<li><a href=\"http:\/\/www.voip-info.org\/wiki\/view\/Asterisk+phone+cisco+79xx\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.voip-info.org\/wiki\/view\/Asterisk+phone+cisco+79xx<\/a><\/li>\n<li><a href=\"http:\/\/www.voip-info.org\/wiki\/view\/Asterisk+phone+cisco+79x1+xml+configuration+files+for+SIP\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.voip-info.org\/wiki\/view\/Asterisk+phone+cisco+79&#215;1+xml+configuration+files+for+SIP<\/a><\/li>\n<li><a href=\"http:\/\/www.voip-info.org\/wiki\/view\/Asterisk+phone+cisco+79xx\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.freepbx.org\/download-freepbx<\/a><\/li>\n<li><a href=\"http:\/\/wiki.freepbx.org\/display\/FCM\/FreePBX+HA-Setting+up+the+Master+and+Slave+Nodes\" target=\"_blank\" rel=\"noopener noreferrer\">wiki.freepbx.org\/display\/FCM\/FreePBX+HA-Setting+up+the+Master+and+Slave+Nodes<\/a><\/li>\n<li><a href=\"http:\/\/www.minded.ca\/2009-12-16\/configure-cisco-ip-phones-with-asterisk\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.minded.ca\/2009-12-16\/configure-cisco-ip-phones-with-asterisk\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>VoIP networks, VoIP phones, VoIP extensions, VoIP everything. VoIP seems to be one of those black box buzz words that IT pros toss around, like the &#8220;CLOUD!&#8221; But what is really going on behind the&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":4277,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[86,126],"class_list":["post-1961","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-network","tag-linux","tag-voip"],"_links":{"self":[{"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/posts\/1961","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1961"}],"version-history":[{"count":1,"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/posts\/1961\/revisions"}],"predecessor-version":[{"id":4151,"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/posts\/1961\/revisions\/4151"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=\/wp\/v2\/media\/4277"}],"wp:attachment":[{"href":"https:\/\/infotechguy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infotechguy.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}