Frequently Asked Questions

I cannot connect to FOP2

When you open up your browser and point to http://your.server/fop2 it attempts to connect for a long time and finally fails with the message 'System is not available rigth now'.

Please check our knowledgbase and interactive troubleshoter

Can I run FOP and FOP2 at the same time?

Yes. But as both applications listen to port 4445 by default you will have to configure the listen port on one of them to something else. We recommend to change FOP 1 listen port to 4444 and let FOP2 use port 4445. You can change FOP 1 listen port by editing op_server.cfg and changing the line that reads:




And then restart FOP 1 for the change to take effect.

Can I run FOP2 on a plain Asterisk installation, with no FreePBX installed?

Yes. The tarball comes ready to work with FreePBX, Thirdlane, Elatix, PBX in a Flash and PBXWare right out of the box, if you use vanilla asterisk or your custom configuration engine, you can still use FOP2 but you will have to either write the configuration for users and buttons by hand or create a set of autoconfiguration scripts You can also use the FOP2 Manager and tweak the functions-custom.php file to suite your needs.

Why is the action toolbar missing when I log in?

In order for the action toolbar to appear, you must login with an extension that is also listed in the main extensions box. If there is no matching button for the extension your are loggin in as, then the toolbar won't be displayed as FOP2 will not be able to figure out the device to use for performing actions. If you are using the free version, you must have to login with an extension that is part of the first 15 buttons displayed on screen.

Is there a way to display only one line per extension?

Yes. You have to edit /var/www/htmlfop2/js/presence.js and set the variable showLines to 1. Take into account that if an extension receives more than one call at a time, you might end up with a busy button with line 1 inactive because the action happens on line 2. It is not recommended to hide line 2. You can also increase the number of lines to any number. That value is global, so it applies to every extension button on display.

How do I change the language?

Since FOP2 version 2.20, you only set the language in /var/www/html/fop2/js/presence.js file, or for individual users by opening the user preference in the FOP2 GUI.

In previous FOP2 versions you have to edit /usr/local/fop2/fop2.cfg and set the language parameter on the server. On the client you need to include the correct .js language file in index.html, and finally set the language for the visual directory in /var/www/html/fop2/config.php. Also you might need to translate or put whatever you want in the /var/www/html/fop2/js/presence.js file.

Does FOP2 show parked calls?

Parking is supported since version 2.10. It will work by default with FreePBX, if you do not use FreePBX please read the README file for instructions on setting it up.

Where are FOP2 initiated recordings stored?

They are stored in the standard asterisk monitor directory: /var/spool/asterisk/monitor. Since FOP version 2.20 it is possible to specify a script to run after a recording is finished, we have included a sample script ( that will sent the recording as a voicemail file. Please read the sample fop2.cfg file for details.

How to replace the FOP link in FreePBX to FOP2?

You can do it by means of modifying your apache configuration file. In Centos the file is located in /etc/httpd/conf/httpd.conf. In Debian it is located in /etc/apache2/sites-available/default. For other distros you can check apache wiki. In this file add the following line:

alias /panel/ "/var/www/html/fop2/"

You will then need to copy the index.html file to index_amp.php in order to make FreePBX happy:

cp /var/www/html/fop2/index.html /var/www/html/fop2/index_amp.php

After the changes, reload Apache. From then one, all requests to /panel will be redirected to your FOP2 install.

What are the differences between FOP 1 and FOP 2?

Several. In FOP 1 you use drag and drop to perform actions. In FOP 2 you use only clicks, so its easier to control with touchscreens. FOP 1 has limited screen space, so the number of buttons to display depends on the size you choose for the buttons; this method imposes a practical limit of about 140 buttons per screen. In the other hand, FOP 2 does not use flash for the display but regular html, so there is no limit on the number of buttons to display, you will be able to scroll down to show any number of buttons, and with the Filter option it is easy to look for a particular extension if you have dozens of buttons.

FOP 1 uses flash and a custom style configuration for changing the aspect, FOP 2 uses html and css so it is easier to modify the style. FOP 1 supports click 2 dial but you need to code in javascript/php in order to use the feature, while FOP 2 includes a Dial box by default that lets you type any number, sip contact or .tel domain to perform dialing. FOP 1 does not know about users, if you know the security code you can transfer any call to any place, while in FOP 2 there is a user authentication system with fine grained permissions.

This is just a basic list of differences, but you might get the idea. Your best bet is to try it out and experience it yourself.

What permissions are needed in asterisk's manager.conf for the FOP 2 user?

You need at least system,call,command,agent,user,originate in asterisk's manager.conf file for the FOP user. In the latest tribox you might also need the "hud" permission or just use "all"

I have reset FOP1 to run on port 4444 but extensions in FOP1 flash red

Be sure to resetart FOP1 so the config change is applied. (Easiest way is to reboot, harder way is to selectively kill or restart FOP1 and be sure to start FOP2). Verify that FOP1 and FOP2 are running under different ports. Use netstat -an to verify 4444 and 4445 are listening. Also, PIAF installations have tcp port 4445 open so 4444 needs to be open as well. Use webmin to open port 4445.

How do I track FreePBX DND state?

In order to get DND and CF synchronization between FOP2 and FreePBX, some dialplan macros need to be updated. Since version 2.24 there is a script included that will do the hard work for you, all that is needed is run the following command:

/usr/local/fop2/ -w

Can I popup an arbitrary URL when a call comes in?

Yes. When your phone rings you will get a call notification. Via ajax the notification will trigger a request to the server to the script checkdir.php. You can modify that script to insert your own javascript code. At the very top there is a function named custom_popup() that will get 4 parameters: caller id number, caller id name or phonebook name,queue name if any and extension number. You can uncomment the sample function to fire a popup to searching for the contact name. Eg:

function custom_popup($clidnum,$name,$fromqueue,$exten) {
   // Here you can fire your own popups or do whatever you want
   // Uncomment this block to fire a popup to

   header("Content-type: text/javascript");
   echo "'$name')";


When I try to run fop2_server it does not do anything at all.

fop2_server requires the /tmp directory to allow execution. Some systems mount the /tmp directory with the noexec option for security reasons. In that case you need to create a special temp directory for FOP2 and modify the init script to export an environment variable so it uses that directory. So, you can create a temp directory:

mkdir /usr/local/fop2/temp

And then modify the init script by adding the highlighted line:

case "$1" in
        echo -n "Starting Flash Operator Panel 2: "
        export PAR_GLOBAL_TMPDIR=/usr/local/fop2/temp
        daemon $DAEMON $OPTIONS

Since version 2.27 this is not needed anymore as the scripts already include that modification.

When I try to download voicemail or recordings I get a "no way" message?

If you have SELinux enabled, fop2 php sessions might not work. You will need to disable selinux or enabling some special permissions for it:

setsebool -P telepathy_tcp_connect_generic_network_ports 1
setsebool -P httpd_can_network_connect 1
setsebool -P allow_user_mysql_connect 1
setsebool -P httpd_can_network_connect_db 1

FOP2 segfaults when I try to register my license

In you experience a Segmentation Fault when you run /usr/local/fop2/fop2_server --register , try installing an OpenSSL compatibility library in your distro:

yum install openssl098e

That will probably fix your issue. As an alternative, you can skip using ssl at registration time by passing the --rp parameter, like:

/usr/local/fop2/fop2_server --register --rp=http

I try to login and it rejects me every time

If you use the automatic configuration for freepbx, you can see the list of extensions and passwords that FOP2 will accept by running following command on the server:

For version 2.27 or older:


For version 2.28 onwards:


If you modified fop2.cfg to use manual configuration, be absolutely sure that you comment the #exec line, if you fail to do so, the automatic config will kick in anyaways and it will override any manual config you do, and check too that you have defined a buttonfile and that the buttonfile exists and contains at least some buttons.

When I try to login after entering my credentials it waits forever and times out

If you use international characters in your configs, be sure to save the button config file as utf-8. That should take care of the problem. You should also open/redirect connections to port TCP/4445.

When I start the service I see this error: line 68: /dev/fd/62: No such file or directory

Some VM images do not provide a /dev/fd that is needed for doing some bash substitutions used in the configuration scripts. You can create the symlink with this command:

ln -s /proc/self/fd /dev/fd

Can I use international characters as button labels?

Yes, but be sure to save the buttonfile as utf-8. If you fail to do so you might have troubles login in.

Can I monitor FOP2 status from FreePBX dashboard instead of FOP1?

You must patch FreePBX dashboard module so it does not look for FOP1 port and checks FOP2 port instead. Assuming you have FOP2 binding to port 4445, you can apply the following patch, you can save it with the name /usr/src/fop2monitor.diff :

--- class.procinfo.php  2011-01-06 12:54:05.000000000 -0500
+++      2011-01-06 12:47:55.000000000 -0500
@@ -24,6 +24,7 @@
     } else {
       $listen_port = 4445;
+     $listen_port = 4445;

                return $this->check_port($listen_port);

Change to the module directory:

cd /var/www/html/admin/modules/dahsboard

And apply the patch:

patch < /usr/src/fop2monitor.diff

I have a multi tenant environment, how does licensing work?

You need only one license per server to unlock the full FOP2 potential. If you use a multi tenant system, the license allows up to 5 tenants (panel contexts). If you need to increase the number of tenants, you can add more by purchasing the appropiate extension pack.

A tenant is a way to compartiment one server into multiple different PBXs. If you use FreePBX, the system is single tenant, so you do not have to be concerned about the 5 allowed tenants (as the system uses just 1).

Some of the supported multi tenant backends are: MiRTA PBX, Thridlane and Elastix 3.