FreePBX | Register | Issues | Wiki | Portal | Support

Sccp/skinny support in freepbx 12

(Howard Gittela) #1

I’m having a hard time wrapping my head around the current state of things around sccp/skinny.
I’m looking at this module:

where the readme says:
Previous Requirements.

Since this is the previous requirement, what is the current? Does anyone know?
I see that some sites instructs you to compile from source. Is this still the only way to get this up and running?

(Dave Burgess) #2

I don’t think “previous” is the right word there. Marcello and Diedriche have got the chan_sccp_b driver working with MANY versions of Asterisk. I just posted the instructions that I wrote for installing the software with various versions of the system.

There are several pre-compiled versions of the system that you can install, but I’ve always found that the way that is the least hassle is to install the sources that match your current system and install the latest drivers.

The sccp_manager package isn’t necessary to run the chan_sccp_b system - the instructions include the information you need to update your configuration files by hand. The defaults that come in the default files are usually pretty good. Personally, I don’t use it and I’ve installed a lot of chan_sccp_b system in the past 5 years.

The Cisco phones all use TFTP for their configuration files, which is why the TFTP service is so important. The fact that the chan_manager package is written to work with version 4 of the driver, which is the latest stable version is a good indication of the level of support for the program.

(Dave Burgess) #3

I’ve installed the SCCP_Manager to mate it up with my existing code and implementation to see what happens.

There are a couple of things that might need some work - the first (and worst) is the semantics of the sccpline table field “DND” have changed. It used to be “On” and “Off”, but to support some advanced features (I believe in Conference support) the list of possible states was changed to ‘off’, ‘reject’, ‘silent’, ‘user’, with ‘user’ being the closest to ‘on’. Once that list is changed to match the new table requirements in the code, the module installs clean.

There are still a few things that I’d like to make some suggestions for changing, including adding the full list of supported instruments (the 7960+7916+7916 combo, for example) and changing the default context (I prefer “from-internal” while others prefer “from-internal-xfer”). With the system as it sits, though, it looks like the perfect addition to running chan_sccp_b.

Thanks Andrew and James for making it happen.

(Dave Burgess) #4

In case anyone is interested in using this module - please don’t. There are a couple of errors with the code that will make it not work right with your phones. I’m working on fixing a few really fundamental problems with the code. For example, the DND thing above is fixed, but right now, it doesn’t handle the button definitions right for anything but the simplest line buttons. It also needs to be fixed to support the 7914, 7915, 7916, sidecars (which work in SCCP but not in SIP) and the entire SPA500 phone line.

Also, the BLF for voicemail doesn’t work for buttons with this module code, so setting a BLF in one of the buttons is destined to really fail. I’m also going to include my code for a Day/Night mode button so that it’s easier to make that work too.

This is going to make the only clunky part of using chan-sccp-b under FreePBX so nice. Once it’s working, anyone that wasn’t impressed with the Cisco phones under SIP should try it again. I promise you will be officially amazed.

(Howard Gittela) #5

Ok, Thanks!
Will have a closer look at it.

(Dave Burgess) #6

I spent the weekend on the sccp_manager app. The status so far:

  1. All of the different Cisco phones are included in the database now, along with one Motorola phone. I may still need to add the SPA series, but it’s a data thing, so no problem.
  2. The addons are recognized correctly. The semantics for the addon is silly if you have two, but it’s the easiest way I could think of to get them working (7914,7914 is a ‘single addon’ of two addons).
  3. There is no differentiation between the various buttons and their types - any button can be anything. The limit of 64 line entries per phone (assuming you have enough buttons) is now valid.
  4. The semantics for the five different button types are recognized.
  5. The /tftpboot file configuration is now correct. The old system used an immutable text file in the modules directory as a template, the new system checks for SEPDefault.cnf.xml and (if it exists) doesn’t create per-phone config files. If the SEPDefault file doesn’t exist, the immutable text file is now copied to the /tftpboot directory where it is used as a template that you can modify.
  6. The contents of the template file have been updated to be more compatible with what Chan-SCCP-B needs.
  7. The device and line displays are working and the update for the line is working. I’m still working on the device display and its interaction with the buttonconfig table.
  8. The system recognizes the difference between the button name and the button options.

Things that I’m not done with:

  1. The device writer is borked.
  2. There are a couple of strange Javascript errors.
  3. The new semantics for the button types still needs some work, including the ability to preset the callforward number in the special CFW feature buttons.

(Dave Burgess) #7

I’ve been working on the sccp_manager app this week and I’m almost finished with it.

The original program read and wrote information out of the sccpline and sccpdevice database tables. It still does that. In addition, I added two more new modules - one that reads and modifies the sccp.conf file and one that reads and modifies the SEPDefault.cnf.xml file.

Both files are modified “in place”, so if you have additional stuff in the files (comment blocks, etc.), it will largely be retained (individual line comments don’t survive - everything else does). The sccp.conf file, for example, allows for the retention of custom softkey sets and allows the keysets to be modified for each phone.

The manager for the XMLDefault.cnf.xml file has me wondering about a couple of questions I have for anyone that would like to chime in:

  1. The way the manager program works right now is that if the SEPDefault.cnf.xml file exists in /tftpboot, phone specific configuration files are not produced and the “default” is used as the XML Configuration source for all phones. As I was working on the manager program, I realized that this might not be an optimal solution for everyone, so I added a program to manage the XMLDefault file and allow the creation of phone specific SEPXXXXXXXXXXXX.cnf.xml files for unusual cases.

The way this new program works is, if you specify that you want to edit the config file for a specific phone and the SEPXXX…xml file doesn’t exist, it creates one from the Default and makes it easy to change several of the “commonly changed” settings (different URLs, the add on status, possibly loadimage versions). I’m in the process of picking and choosing which options show up on the management webpage. Would anyone like to offer some suggestions for the fields that need to be modifiable.

  1. Would a special program for modifying local softkey sets be useful? I can add something to help manage those without very much trouble, but if no one wants to use it, there’s no point.

Note that neither of these modules is going to be used a lot anyway. The SEPDefault.cnf.xml file that comes with the distribution is usually more than adequate for what chan-sccp-b needs to set up. The sccp.conf file, likewise, doesn’t get edited very often (if ever).

  1. Since I’m in here, would it make sense to add a feature that sets up the “OS???.txt” files based on the settings in the program? I mean, I’m here and have all the information. Is this something that people would find useful? It is one of the things that I know I had trouble with, but once I got it working, it’s never needed modified…

I’m planning on knocking out the last of the features this weekend.

(Smitka) #8

Hi Dave, it is possible to download your app for testing? I’m going to migrate our phone network from call manager to FreePBX. Your work looks very promising (opposite to original sccp manager).

To your questions:

  1. “userLocale - name” field may be useful sometimes in multilangual environments; loadimage is one time job, I think, it is no crucial; maybe I find other needs during real deployment

  2. we usually use the same set for all devices, special program is not necessary

  3. I don’t exactly know what you mean …

Thanks for your work.

(Dave Burgess) #9

I’ve made some real progress since Friday.

There are now five sub tabs for SCCP support:

  1. The sccp.conf file manager - it allows you to change the chan-sccp-b config information for the server. Modifications require a reload. The primary reason was to set the server address and the port number, the context, and the date format.

  2. Device manager - actually creates the device information in the real-time database and SEPmacmacmacmac.cnf.xml file based on the defaults in the SEPDefault.cnf.xml (not to be confused with the XMLDef… file). The device manager pretty much ignores the loadimage directive already. There is a place in the system for setting the image file info based on the device type - I don’t remember if I tied those together or not.

  3. Line manager - creates and manages the line definitions. Note that it still doesn’t create the SCCP line definition in Asterisk, so you’d need to create the custom extensions by hand if you wanted to use the ‘development’ version I’d running right now. It does support the new semantics for shared lines (since chan-sccp-b 3.1) but not the old 123@1 semantics.

  4. The softkeyst manager (not even readonly) - this allows you to set up custom keysets for the phones. Specifically, I find it useful for places that have some features disabled. One of my customers doesn’t use DND and doesn’t want it on the phones, so I use a custom softkeyset that doesn’t have any references to DND.

Note on softkeysets - the SCCP defaults to a set called “softkeyset”. This keyset is built into the server and makes sense for most installations. The only time you would ever want to monkey with keysets is if you wanted to limit some features or move commonly used features around. The program I’ve written does the former, but not the latter.

  1. SCCP TFTP File manager (readonly) - this one will allow you to edit the files in the tftpboot directory. This way, you can add things like idleURL (which the device program doesn’t do). The TFTP program also lets you modify the XMLDefault.cnf.xml file so you can set it up once and let the rest of your configuration flow from that. The XMLDef… file was the reason I even started down the line with that.

Places that are still in work:

  • The Ringlist.xml file (which is now setup in the /tftpboot/ directory by hand). There’s a place in the device config to set the “default” ringtone, but I haven’t figured out how to use it. There’s no way to interact with the RingLists in the system at all right now.

  • Making all of the stuff self-referential. For example, the server address and port for all of the clients rely on information from the sccp.conf file, but the old system ignored that and set the information incorrectly.

  • The OS79XX.txt file is there to let the phones know how to download the base loader. Some phone (like the 7910 and 7905) have their own, while most of the more modern phones (794X, etc.) use a more generic file. The downside of this is that all of the phones end up using the same loadimage (by class) so if you have a phone that you want to be different, you have to jump through all kinds of strange hoops. Note that this is the standard “Cisco” way of doing this - it has nothing to do with Chan-SCCP-B.

  • The XML File writer doesn’t produce files yet - I’ll fix it when I need it, but I’m still in progress in development.

For giggles, you can download the current development image from It is currently version 1.1 and is not guaranteed to work - it shouldn’t mess up too much stuff, but there are things I’m trying to do that it just doesn’t do yet.

(Alupor) #10

Many thanks for your work, Dave. I’ve found your post here after hours of searching hundreds of sites about freepbx.

I’ve tried to install your module on Raspbx with FreePBX 12.0.63 and on IncrediblePBX FreePBX 12.0.63. Install failed on both systems.


Please wait while module actions are performed
Installing sccp_manager
Can not create sccpdevmodel table

Trace Back/var/www/html/admin/modules/sccp_manager/install.php:21 die_freepbx()

  [0]: Can not create sccpdevmodel table

/var/www/html/admin/libraries/modulefunctions.class.php:2311 include_once()

  [0]: /var/www/html/admin/modules/sccp_manager/install.php

/var/www/html/admin/libraries/modulefunctions.class.php:2263 module_functions->_doinclude()

  [0]: /var/www/html/admin/modules/sccp_manager/install.php

  [1]: sccp_manager

/var/www/html/admin/libraries/modulefunctions.class.php:1821 module_functions->_runscripts()

  [0]: sccp_manager

  [1]: install


/var/www/html/admin/page.modules.php:283 module_functions->install()

  [0]: sccp_manager

/var/www/html/admin/config.php:341 include()

  [0]: /var/www/html/admin/page.modules.php

Is there any way to get it working on these systems?



(Smitka) #11

Hi, there are some minor mistakes, prevent to succesful install. But it is easy to fix them.


line 14: `loadimage' (bad quote) => `loadimage`
line 26: charchar(30) (typo) => varchar(30) and bad quotes around  sccpdevmodel (' => `) 

lines 7, 39, 89, 162, 180 - condition “if (!$db->getAll('SHOW COLUMNS FROM …” doesn’t work (it is little strange for me), you can ommit it, or change it to if( true || !db->getAll…) - It requires a detailed review… This hack is only dirty workaround.

Another problem is with table “buttonconfig”, it use foreign keys and MyIsam engine - it not works together. Two solutions:
a) remove foreign key part (line 172 before Engine keyword) - I don’t know, if there are some consequences…
b) change engine to InnoDB (you need to change engine to InnoDB for sccpdevice table - line 130)

After these edits it works fine :smile:

(Dave Burgess) #12

I’m in the process of making these changes and should have a new version up at my GitHub account shortly. Look for Version 1.1.2. I’m also going to be working on a few other things that I didn’t notice until I tried to install it on a server that didn’t actually have any phones already assigned - there are a few empty lists that kind of freak the system out that I need to take care of.

(Smitka) #13

Hi, can you provide your GitHub link? I can help you to fix few issues.


I cannot install the cynjut version of sccp_manager…
I’ve fixed the sintax errors, but I get

Any idea?
Thank you!

(Dave Burgess) #15

Yeah - I got jammed up at my day job.

The database install script is horked.

The GitHub link to the manager (which, by the way is totally optional) is (not surprisingly):

The Master should have updates to fix the errors in the messages above as well as a few other updates. The one place that is still kind of broken is the XML File handling in the /tftpboot directory.


Thank you, Dave!
Unfortunately I still have the same message during install… And fails. Maybe I’m using the latest stable version of FreePBX (version 13)?
I’m still making tests, so I can reinstall FreePBX from zero choosing the version you say is working…

I’d like to contribute to this module, but I really don’t know how…
My Asterisk and Freepbx skills are very low.
I suppose at the moment I could be a tester only. But I can put my nose inside the php code!
Btw, no probs for italian translations!

[EDIT]: Tried on FreePBX 12 and it does’nt install. This time the “Install” window remains white.

(Dave Burgess) #17

Just so we’re clear - the package you are trying to install is only a management interface.

Installing chan_sccp_b neither requires nor expects this to be in place. I started it as a way to make it easier to manage SCCP phones once you have the Channel Driver installed.

I recommend using the instructions at

I wrote these to help people get the actual channel driver installed. Once you’re done with that, the management stuff may (or may not) help you get the system going.

So we’re clear - I’m using the interface on Asterisk 1.8, 11, and 13 servers. It’s fine for the couple of things it does, but doesn’t replace getting the channel driver and basic config built in the first place.


I’ve compiled chan_sccp_b for every testing installation of freepbx I have. The chan module is up&running since the asterisk CLI reports is loaded… (of course I’ve unloaded the skinny and loaded the sccp).

I’d love to manage my extention with the manager inside FreePBX instead editing the text files.
(I’m a linux user, so I’m tired to edit text files… :stuck_out_tongue_winking_eye:)

This is the reason why I asked to you in which config is your SCCP_Manager running.
I don’t run after the latest functionsfull release… I prefer to edit my phone settings from inside FreePBX interface.
(Otherwise I could have installed a pure Asterisk without webgui :wink: )

Which “flavour” of freepbx (freepbx and asterisk combination) do you suggest to install in order to have your development version of SCCP_Manager running?

Thanks a lot!

(Dave Burgess) #19

I’ve been using it for a couple of years on a half dozen systems. I’ve got some time today (Federal Holiday, so I don’t have to go to work) and I’ll see if I can figure it out.

The installation program assumes that the database tables are all in place, and that’s one of the steps the “Installing in FreePBX” covers. At least, I’m pretty sure it does… Make sure you install the tables (from the “contrib” directory, IIRC) and the script (theoretically) should just run and go. The only thing the installation script actually does is set up the database anyway (adding the stuff for the latest version of Chan-SCCP-B) - everything else is straight file copies into the admin directory.


Inside the “contrib” I cannot find the sccp.conf you refer into the guide, but I see a sccp.conf file exists inside the /etc/asterisk directory. Maybe the way is changed but the result is not. :stuck_out_tongue_winking_eye:
Otherwise I will try the example included in the “Management” section of the guide.

Regarding the “sql script”, I’ve found your “” only and I’m going to read the source in order to realize that it does the things I need. :relaxed:

Thank you!