Conference call with cisco 8961 or 9971

Has anyone gotten the conference call feature to work with the cisco 89XX series or 99XX series phones? I can make the calls but when I hit the conference button to join the two calls it just says “unable to conference” I have tried to change the sharedline tag to true but it did not help. Does anyone have a suggestion?

1 Like

Hi,

Sorry not be be of much help, but yes I’m having the exact same result here with a 9971 phone running 9.2.3-27 firmware. I am running FPBX 2.9.0.10 with Asterisk 1.8.7.0 with the Cisco Presence Subscription patch applied.

I suspect that the problem maybe that Asterisk’s SIP protocol (as defined in chan_sip.c) is unable to decode the ‘Conference’ softkey event the phone is sending. I think also once decoded there would need to a series of corresponding actions defined in the Asterisk dial plan to actually then join the calls/enable the conference.

I’ll tap the guys up on the JIRA who have worked on the patch, to see if any of them have the conference key working or see what it would take to get it working.

Completely off topic - but thanks to that patch noted above, I have reliable BLF/Presence indication working on both the speed dial keys and call lists as well as the “Forward All” soft key. Separately I have been able to enable the ‘Voicemail’ key and “Directory” key, which requires different setting in the SEP{Mac}.cnf.xml to the 79xx series phones. The “Transfer” key also functions. I also found a patch (although it’s more of a hard coding) to get 2-way video using H.264 working with these phones.

Cheers

Sean

Sean -

This is great work. If you would like to share your config files and directory code I would be happy to post in the wiki.

Thanks…Scott

Sean,
Thank you so much for your post. I will work to apply the patch. I did not know you could even have presence setup with these phone on a asterisk enviroment. I was thinking that was only something you can do with the CUCM. Once you have that patch installed, each phone will be able to see what other phones are in use?

As for the conference feature, is there a work around? I know with transfers you can just hit ## + Ext to do a blind transfer. Is there some sort of key sequence you can use for the conference?

Thanks again for all your help! I am way over my head on this project.

Sean, I am running version 1.8.8 do you think there will be a patch for that version or should I just downgrade to 1.8.7?

Hmmm I don’t think so, judging by the recent patches which have been created by Gareth Palmer et al, it looks like things have moved along towards Asterisk 10 now. I don’t think they would see the point in investing the time to rework the latest patch to suit a particular 1.8 point release…although if you’re so inclined and brave enough, there is nothing stopping you reworking your own patch, based on those posted. I know someone had done this for the ‘vintage’ trixbox asterisk 1.6.0.26 version.

To make life easier I would simply install a version of Asterisk which matches one of those patches already available posted, to suit your particular version of Asterisk. If you decide to take the ‘easier’ route like I did, I think your choices boil down to installing patch 1.8.7.0 or make the leap to Asterisk 10 (see latest patch -> gareth-10.1.3).

The 1.8.7.0 patch I applied changes about a dozen or so things across multiple files. Assuming you have the source and patch file in the same directory (say usr/src/asterisk-1.8.7.0) the command to use is:

patch -p0 < …/asterisk-1.8.7.0-chan_sip.patch

If you get prompted along the lines of “can’t find file to patch at input line”, simply copy in the path of the relevant source file to be patched (hint: it will be listed on the line above).

I will also post up my Cisco XML config file etc as soon as I get the chance too.

Good luck with it. Let me know how you get on, or if you need a hand with the Asterisk reinstall/patching instructions - I can send you the full command sequence I used.

Cheers

If somebody is interested in the challenge I would be more than happy to coordinate and contribute to a FreePBX chan_sccp module.

Now with the distro we could distribute a patched Asterisk with the chan_sccp2 module already built. An extensions module in FreePBX would configure the sccp.conf file.

If you run FreePBX in device and user mode the paradigm matches that of the sccp.conf devices and users.

Hey Skyking - I’m running all my stuff with SIP here rather than SCCP, so can’t really help on that one I’m afraid.

I’ve just written a quick brain dump of my setup and phone config file extract and placed it in the Tips and Trips section. Hopefully it makes some sense!

Cheers

Ok, I have install Asterisk 1.8.7.1 with Freepbx 2.9.0.10. I could not find a distro that had 1.8.7.0 Is there away I can install the patch on this version? When I run the patch, I get the prompt like you said that it can’t find the file and ask which file do I want to patch. But I have tried everything I know but it can’t find the file. I can’t find it either. There is no directory /usr/src/asterisk. So created it and put the patch in there. I did a find / -name ‘chan_sip.c’ and it can’t find that file. I am not sure what to put in to get it to patch.

thanks for all the help!!!

The sequence of commands below assumes that you are patching Asterisk on an existing/working FreePBX Asterisk install, say from a distro. If doing the whole build newly from scratch, then you would need to follow these guidelines or these to ensure you have all the pre-requisites installed.

Make sure you are logged in as root.

Stop running Asterisk
amportal stop
Go to your src directory
cd /usr/src/
Download Asterisk 1.8.7.0
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.7.0.tar.gz
Unpack it
tar zxvf asterisk-1.8.7.0.tar.gz
Change to the Asterisk source files directory you just unpacked
cd asterisk-1.8.7.0
Download mp3 support files
contrib/scripts/get_mp3_source.sh
Download the patch
wget https://issues.asterisk.org/jira/secure/attachment/41666/asterisk-1.8.7.0-chan_sip.patch
Apply the patch, as you are prompted, enter the path of the files as you go, per my post
patch -p0 < asterisk-1.8.7.0-chan_sip.patch
Optional: Remove the compiled binaries from within the source directory, there should not be any if this is the first time you have compiled the source code from this directory. If you subsequently recompile Asterisk from this directory then you will need to run this command
make clean
Run configure
./configure
Start menu based configuration
make menuconfig
select app_mysql, app_saycountpl, cdr_mysql, format_mp3, res_config_mysql
go to Extras Sound Packages
Select EXTRAS-SOUNDS-EN-GSM
Save & Exit
Run make
make
Run the installer
make install
Start running the newly patched Asterisk
amportal start

this is wonderful!!! Thank you so much. I am having one problem…When I run the make command I get several errors. I am not sure how to fix them. Everything else went fine with no errors after I install the following things.

yum install ncurses-devel
yum groupinstall 'Development Tools’
yum groupinstall ‘Development Libraries’

Here is a piece of the output when I run make

[root@localhost asterisk-1.8.7.0]# make
Generating embedded module rules …
[CC] chan_agent.c -> chan_agent.o
[LD] chan_agent.o -> chan_agent.so
[CC] chan_alsa.c -> chan_alsa.o
[LD] chan_alsa.o -> chan_alsa.so
[CC] chan_bridge.c -> chan_bridge.o
[LD] chan_bridge.o -> chan_bridge.so
[CC] chan_dahdi.c -> chan_dahdi.o
[CC] sig_analog.c -> sig_analog.o
[CC] sig_pri.c -> sig_pri.o
[CC] sig_ss7.c -> sig_ss7.o
[LD] chan_dahdi.o sig_analog.o sig_pri.o sig_ss7.o -> chan_dahdi.so
[CC] chan_gtalk.c -> chan_gtalk.o
[LD] chan_gtalk.o -> chan_gtalk.so
[CC] chan_iax2.c -> chan_iax2.o
[CC] iax2-parser.c -> iax2-parser.o
[CC] iax2-provision.c -> iax2-provision.o
[LD] chan_iax2.o iax2-parser.o iax2-provision.o -> chan_iax2.so
[CC] chan_jingle.c -> chan_jingle.o
[LD] chan_jingle.o -> chan_jingle.so
[CC] chan_local.c -> chan_local.o
[LD] chan_local.o -> chan_local.so
[CC] chan_mgcp.c -> chan_mgcp.o
[LD] chan_mgcp.o -> chan_mgcp.so
[CC] chan_multicast_rtp.c -> chan_multicast_rtp.o
[LD] chan_multicast_rtp.o -> chan_multicast_rtp.so
[CC] chan_oss.c -> chan_oss.o
[CC] console_video.c -> console_video.o
[CC] vgrabbers.c -> vgrabbers.o
[CC] console_board.c -> console_board.o
[LD] chan_oss.o console_video.o vgrabbers.o console_board.o -> chan_oss.so
[CC] chan_phone.c -> chan_phone.o
[LD] chan_phone.o -> chan_phone.so
[CC] chan_sip.c -> chan_sip.o
chan_sip.c:614: error: ‘CISCO_PIDF_XML’ undeclared here (not in a function)
chan_sip.c:950: error: redefinition of ‘presence_esc_publish_callbacks’
chan_sip.c:943: error: previous definition of ‘presence_esc_publish_callbacks’ was here
chan_sip.c:976: error: ‘PRESENCE’ undeclared here (not in a function)
chan_sip.c:976: error: initializer element is not constant
chan_sip.c:976: error: (near initialization for ‘event_state_compositors[1].event’)
chan_sip.c: In function ‘create_addr_from_peer’:
chan_sip.c:5268: error: ‘struct sip_pvt’ has no member named ‘donotdisturb’
chan_sip.c:5268: error: ‘struct sip_peer’ has no member named ‘donotdisturb’
chan_sip.c:5268: warning: statement with no effect
chan_sip.c:5269: error: ‘struct sip_peer’ has no member named ‘callforward’
chan_sip.c:5269: warning: passing argument 1 of ‘ast_strlen_zero’ from incompatible pointer type
chan_sip.c:5270: error: ‘struct sip_peer’ has no member named ‘callforward’
chan_sip.c:5270: warning: initialization from incompatible pointer type
chan_sip.c:5270: error: ‘struct sip_pvt’ has no member named ‘callforward’
chan_sip.c:5270: error: ‘struct sip_pvt’ has no member named ‘callforward’
chan_sip.c:5270: warning: comparison of distinct pointer types lacks a cast
chan_sip.c:5270: error: ‘struct sip_pvt’ has no member named ‘callforward’
chan_sip.c:5270: warning: passing argument 2 of ‘__ast_string_field_release_active’ from incompatible pointer type
chan_sip.c: In function ‘sip_call’:
chan_sip.c:5430: error: ‘struct sip_pvt’ has no member named ‘donotdisturb’
chan_sip.c:5430: error: ‘SIP_PAGE3_DND_BUSY’ undeclared (first use in this function)
chan_sip.c:5430: error: (Each undeclared identifier is reported only once
chan_sip.c:5430: error: for each function it appears in.)
chan_sip.c:5430: error: invalid operands to binary &
chan_sip.c:5433: error: ‘struct sip_pvt’ has no member named ‘callforward’
chan_sip.c:5433: warning: passing argument 1 of ‘ast_strlen_zero’ from incompatible pointer type
chan_sip.c:5434: error: ‘struct sip_pvt’ has no member named ‘callforward’
chan_sip.c:5434: warning: initialization from incompatible pointer type
chan_sip.c:5439: error: ‘struct sip_pvt’ has no member named ‘donotdisturb’

These look like compilation errors on chan_sip.c which suggests the patch has not been applied cleanly. I would delete the /usr/src/asterisk-1.8.7.0 directory and start again.

There is no reason for the patch not to apply cleanly. Ensure you provide the path of files to be patched as you are prompted. These are the files that get updated by the patch:

asterisk-1.8.7.0/channels/chan_sip.c
asterisk-1.8.7.0/channels/sip/include/sip.h
asterisk-1.8.7.0/configs/sip_notify.conf.sample
asterisk-1.8.7.0/funcs/func_devstate.c
asterisk-1.8.7.0/include/asterisk/devicestate.h
asterisk-1.8.7.0/include/asterisk/pbx.h
asterisk-1.8.7.0/main/devicestate.c
asterisk-1.8.7.0/main/pbx.c

If you are still having probs, I suggest you post the output of the patch command (and your corresponding inputs) so we can see what’s happening.

That worked. I just started over and everything ran smooth! Thanks for all the help! I guess now it is back to my original question about conferencing. I am guess there is no way to do this with these phones and Asterisk. Maybe version 10 will shed some light on this?

thanks for all the help.

Chris

Not at the moment no…that is if you want the phone to create an adhoc bridge.

I suppose your other alternative is to use the conferences/meetme feature of FreePBX

Chris your wish has been granted!!!

Gareth Palmer has today released a new Cisco Presence Subscription patch for Asterisk 1.8.12.1 and Asterisk 10.4.1 on JIRA.

This now enables the iDivert function (softkey to divert incoming calls during ringing to your voicemail) as well as the on-phone 3-way conference call button functionality to work on Cisco 89xx and 99xx series phones. I have been testing the 1.8.12.1 patch today with my 9971 phones and so far everything is working great.

Based on this I’ve created a new consolidated patch for Asterisk 1.8.12.1 with the video format negotiation patch from Artem Makhutov built in.

Here is a link to the new consolidated patch sean-1.8.12.1.patch. This should mean simple one-step patching from 1.8.12.1 source code to get both the latest Cisco presence subscription and video format functions working.

I will install and start testing. Thanks for the update!!!

I have updated my freepbx server to asterisk 10.4.1 and applied the Gareth’s patch for 10.4.1. The phones are working but the conference functions are still not working. I don’t get an error but it is not going to conference. If I hit the start a conference hard button it opens a new line and I can dial to start a new call. Once I have connected that call I can hit the softkey to conference the lines but nothing happens. The Swap button works but not conference. Do I need to make any changes to the system other than applying the patch?

In sip_custom_post.conf you need to have entries for the respective Cisco phone extensions as follows:

[100](+)
cisco_usecallmanager=yes
dndbusy=yes

[101](+)
cisco_usecallmanager=yes
dndbusy=yes

Where ‘100’ and ‘101’ are such Cisco phone extensions. The key is the “cisco_usecallmanager=yes” parameter which activates the necessary signalling for the Cisco phone in the patched Asterisk.

Note if you want to have your CallForward soft key working, add the following in extensions_custom.conf:

; Strip the x-cisco-serviceuri- prefix
exten => _[x]-cisco-serviceuri-.,1,Goto(${EXTEN:19},1)

; Enable forwarding
exten => _cfwdall-.,1,Answer
same => next,Set(SIPPEER(${CHANNEL(peername)},callforward)=${EXTEN:8})
same => next,Hangup(normal_clearing)

; Disable forwarding
exten => cfwdall,1,Answer
same => next,Set(SIPPEER(${CHANNEL(peername)},callforward)=)
same => next,Hangup(normal_clearing)

The later versions of the patch from 1.8.12.1 and 10.4.1 also enable the iDivert key to work (so long as you enable this in default feature policy / soft keys file).

See link to JIRA for all the history of the patch.

I documented how to get other features working in my post here. This was based on an earlier version of the patch, so some things have changed slightly, like the cisco parameter name noted above.

Enjoy!

By the way, I realise that this is off topic, but here are the other features which you should be able to get working with the 89xx and 99xx series phones:

  • MWI (LED lamp, envelope message next to phone extension and audible)
  • BLF/Presence with LED and specific on screen pictograms for presence including, away, idle, ringing, busy
  • 2-way H.264 based video calling
  • Call lists (last dialled, received, missed) with active BLF/presence state for each entry
  • iDivert soft key on incoming call (to voicemail)
  • ForwardAll soft key
  • Messages button (to voicemail number and/or custom XML)
  • Directories button (to custom XML directories/apps)
  • Additional XML apps from Services menu key
  • Custom DND indication
  • SIP NOTIFY commands to remotely reset and reboot the phones from the Asterisk CLI
  • DoNotDisturb and CallForward can be set/reset from the CLI
  • Conference Key (3-way conference)
  • Transfer Key

Probably missed some features, but they’re the main ones that spring to mind. So these phones pretty comprehensively work with Asterisk.

This is awesome!!! I have busted out the caffeine, it is time to go to work! I do have one more small question that comes from one of the exces that use the 9971. It has the small back caller id that pop ups up for 5 seconds when he gets a incoming call. I think cisco calls that the incoming Call Toast Timer. Do you know what the xml tag is for that and where it goes. I can’t find it anywhere. I am not to worried about it but thought I would ask.

I really do appreciate all the help. You have been a true life saver.

Thanks

Chris