Call Us Today! 877.742.2583

Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


FS can run on a variety of OS's (the top three being Mac OS XmacOS, Windows, and Linux I believe). If you can work with Linux, BSD and the like, you'll be fine. The FS site has a list of ways to install on different distros, take your pick. We initially went the CentOS route, which is a good Red Hat Linux compatible distro. For a computer with only one Ethernet interface on your LAN, that would be my personal choice. However, if you use a computer with separate LAN and WAN interfaces, I'd opt for PfSense ( This is a very nice FreeBSD system that is already a powerful firewall (and other great stuff). If you're connecting direct to the Internet, you'll need that. Further, with PfSense the installation of the OS and Firewall, via install disk image they provide, is pretty straightforward. Once FreeBSD/PfSense is installed, one adds FS as a package (see the directions at with just a couple of mouse clicks. While FS on PfSense has some handy interfaces to provide aids in administration, I tend to run and configure it from the command line just the same. I do so because I want to know and understand the FS directory structure and XML files that make things work.


Code Block
  <user id="1015">
      <param name="password" value="$${default_password}"/>
      <param name="vm-password" value="1015"/>
      <variable name="toll_allow" value="domestic,international,local"/>
      <variable name="accountcode" value="1015"/>
      <variable name="user_context" value="default"/>
      <variable name="effective_caller_id_name" value="Extension 1015"/>
      <!-- The value Extension 1015 can be personalized to your name, for instance, if you'd like -->
      <variable name="effective_caller_id_number" value="1015"/>
      <!-- Again, one could type in your main DID phone number instead of just 1015 if desired -->
      <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
      <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
      <variable name="callgroup" value="techsupport"/>

That's the whole XML file. Now, these can get more complicated, but this is right there and ready to go. While the variables pretty much tell you what they do, the point here is that if you need to modify something about a LAN SIP phone's "personal info", you come to /usr/local/freeswitch/conf/directory/default and look at the *.xml files here. And/or go "up" one level and look in the default.xml file there. NOTE: On my system, there's another default.xml file here. Keep in mind that while the names are the same, where they are has a lot to do with their function, so associate the place with the name. It gets easier with time.


Code Block
  <gateway name="">
     <!-- Remember, you'll need this name for your "out-bound calls" extension -->
     <param name="username" value="8155551212"/>
     <!-- Natch', your own username, ours is like a NPANXXTN -->
     <param name="password" value="somekindapassw0rd"/>
     <!-- Natch', your own password -->
     <param name="expire-seconds" value="60"/>
     <!-- Time out value, 60 works for us -->
     <param name="register" value="true"/>
     <!-- You want to register, so "true" -->
     <param name="register-transport" value="udp"/>
     <!-- You'll probably use udp, but ask your provider -->
     <param name="retry-seconds" value="30"/>
     <!-- Retry parameter, 30 seconds works for us -->
     <param name="caller-id-in-from" value="false"/>
     <!-- Use the callerid of an inbound call in the from field on outbound calls via this gateway. We don't, up to you. -->
     <param name="contact-params" value="tport=5060"/>
     <!-- Port 5060 is customary, but again, ask the provider -->
     <param name="ping" value="25"/>
     <!-- We like to send a ping just to keep some traffic traversing and keep us registered -->


That's the whole file. The "name" has to be something DNS can translate or an actual IP address. Clearly, I used the latter. Username and password come from the provider, as do the transport value (could be TCP, ask the provider) and the TPORT value (5060 is typical, but ask get the message). I like the ping value, kinda making sure the link is kept alive in the absence of other traffic.