Multicast paging fail with Paging Pro commercial module

I’ve been wracking my brain as to why multicast paging is not functioning for me. We need to page 60+ phones. The default paging was overloading the CPU on my machine so we opted for the commercial module for multicast paging. It installed properly and I’ve configured a test paging group.

The idea is when calling x1275 it goes to a paging group with multicast added. I have no phones selected at all. I figured there’s no need to define which phones to apply this to as the phones themselves are configured to listen for multicast broadcasts on the specified IP and Port.

I’ve performed some multicast testing on my network and switches to assure nothing was getting blocked by a switch. The software I used is by Valcom. It’s free and their testing instructions are easy to follow. I’ve successfully tested multicast between two computers using the same address and port I defined in my FreePBX paging group.

Below you’ll see a dump from Asterisk that shows the Multicast page appears to be functioning. However, nothing comes across on our GrandStream phones. The page comes from extension 1210.

There are several error lines, which I’ve highlighted in the dump below. Though, I’m unsure if they’re significant to my issue.

Also, using a PC that’s listening for the same multicast as the phones - no packets arrive there either.

I’m wondering if something about the network card driver on my FreePBX box is preventing a multicast from going out. Is that possible? I figured multicast was a universal thing.

Thanks in advance for any tips to get this working.

=======================
login as: root
Access denied
[email protected]’s password:
Last login: Fri Oct 13 13:55:51 2017
_____ ____ ______ __
| | __ ___ | _ | __ ) / /
| |
| '
/ _ / _ \ |
) | _ \ /
| || | | __/ __/ __/| |) /
|
| |
| _|_|| |__//_\

NOTICE! You have 7 notifications! Please log into the UI to see them!

Current Network Configuration
+-----------+-------------------+--------------------------+
| Interface | MAC Address       | IP Addresses             |
+-----------+-------------------+--------------------------+
| eth1      | 00:19:DB:AF:4B:2A | 10.2.1.227               |
|           |                   | fe80::219:dbff:feaf:4b2a |
| eth1.20   | 00:19:DB:AF:4B:2A | 10.2.2.227               |
|           |                   | fe80::219:dbff:feaf:4b2a |
| eth2      | 00:60:08:C3:85:4A |                          |
| eth2.20   | 00:60:08:C3:85:4A |                          |
+-----------+-------------------+--------------------------+

Please note most tasks should be handled through the GUI.
You can access the GUI by typing one of the above IPs in to your web browser.
For support please visit:
http://www.freepbx.org/support-and-professional-services

[[email protected] ~]# asterisk -rvvvv
Asterisk 13.16.0, Copyright (C) 1999 - 2014, Digium, Inc. and others.
Created by Mark Spencer <[email protected]>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 13.16.0 currently running on cfafreepbx-sbcc (pid = 26263)
cfafreepbx-sbcc*CLI>
cfafreepbx-sbcc*CLI>
  == Setting global variable 'SIPDOMAIN' to '10.2.2.227'
-- Executing [[email protected]:1] Goto("PJSIP/1210-0000190d", "app-pagegroups,1275,1") in new stack
-- Goto (app-pagegroups,1275,1)
-- Executing [[email protected]:1] Set("PJSIP/1210-0000190d", "MCAST=224.0.0.1:7001") in new stack
-- Executing [[email protected]:2] Macro("PJSIP/1210-0000190d", "user-callerid,") in new stack
-- Executing [[email protected]:1] Set("PJSIP/1210-0000190d", "TOUCH_MONITOR=1507918462.11835") in new stack
-- Executing [[email protected]:2] Set("PJSIP/1210-0000190d", "AMPUSER=1210") in new stack
-- Executing [[email protected]:3] GotoIf("PJSIP/1210-0000190d", "0?report") in new stack
-- Executing [[email protected]:4] ExecIf("PJSIP/1210-0000190d", "1?Set(REALCALLERIDNUM=1210)") in new stack
-- Executing [[email protected]:5] Set("PJSIP/1210-0000190d", "AMPUSER=1210") in new stack
-- Executing [[email protected]:6] GotoIf("PJSIP/1210-0000190d", "0?limit") in new stack
-- Executing [[email protected]:7] Set("PJSIP/1210-0000190d", "AMPUSERCIDNAME=Basement") in new stack
-- Executing [[email protected]:8] GotoIf("PJSIP/1210-0000190d", "0?report") in new stack
-- Executing [[email protected]:9] Set("PJSIP/1210-0000190d", "AMPUSERCID=1210") in new stack
-- Executing [[email protected]:10] Set("PJSIP/1210-0000190d", "__DIAL_OPTIONS=Ttr") in new stack
-- Executing [[email protected]:11] Set("PJSIP/1210-0000190d", "CALLERID(all)="Basement" <1210>") in new stack
-- Executing [[email protected]:12] GotoIf("PJSIP/1210-0000190d", "0?limit") in new stack
-- Executing [[email protected]:13] ExecIf("PJSIP/1210-0000190d", "0?Set(GROUP(concurrency_limit)=1210)") in new stack
-- Executing [[email protected]:14] ExecIf("PJSIP/1210-0000190d", "0?Set(CHANNEL(language)=)") in new stack
-- Executing [[email protected]:15] GotoIf("PJSIP/1210-0000190d", "0?continue") in new stack
-- Executing [[email protected]:16] ExecIf("PJSIP/1210-0000190d", "1?Set(__CALLEE_ACCOUNCODE=)") in new stack
-- Executing [[email protected]:17] Set("PJSIP/1210-0000190d", "__TTL=64") in new stack
-- Executing [[email protected]:18] GotoIf("PJSIP/1210-0000190d", "1?continue") in new stack
-- Goto (macro-user-callerid,s,29)
-- Executing [[email protected]:29] Set("PJSIP/1210-0000190d", "CALLERID(number)=1210") in new stack
-- Executing [[email protected]:30] Set("PJSIP/1210-0000190d", "CALLERID(name)=Basement") in new stack
-- Executing [[email protected]:31] GotoIf("PJSIP/1210-0000190d", "0?cnum") in new stack
-- Executing [[email protected]:32] Set("PJSIP/1210-0000190d", "CDR(cnam)=Basement") in new stack
-- Executing [[email protected]:33] Set("PJSIP/1210-0000190d", "CDR(cnum)=1210") in new stack
-- Executing [[email protected]:34] Set("PJSIP/1210-0000190d", "CHANNEL(language)=en") in new stack
-- Executing [[email protected]:3] Set("PJSIP/1210-0000190d", "_PAGEGROUP=1275") in new stack
-- Executing [[email protected]:4] GotoIf("PJSIP/1210-0000190d", "1?:busy") in new stack
-- Executing [[email protected]:5] Set("PJSIP/1210-0000190d", "DEVICE_STATE(Custom:PAGE1275)=INUSE") in new stack
-- Executing [[email protected]:6] Gosub("PJSIP/1210-0000190d", "app-paging,ssetup,1()") in new stack
-- Executing [[email protected]:1] Set("PJSIP/1210-0000190d", "_SIPURI=") in new stack
-- Executing [[email protected]:2] Set("PJSIP/1210-0000190d", "_ALERTINFO=Ring Answer") in new stack
-- Executing [[email protected]:3] Set("PJSIP/1210-0000190d", "_CALLINFO=<uri>;answer-after=0") in new stack
-- Executing [[email protected]:4] Set("PJSIP/1210-0000190d", "_SIPURI=intercom=true") in new stack
-- Executing [[email protected]:5] Set("PJSIP/1210-0000190d", "_DTIME=5") in new stack
-- Executing [[email protected]:6] Set("PJSIP/1210-0000190d", "_ANSWERMACRO=") in new stack
-- Executing [[email protected]:7] Set("PJSIP/1210-0000190d", "PAGE_CONF=1507918462302") in new stack
-- Executing [[email protected]:8] Return("PJSIP/1210-0000190d", "") in new stack
-- Executing [[email protected]:7] Set("PJSIP/1210-0000190d", "PAGEMODE=PAGE") in new stack
-- Executing [[email protected]:8] Set("PJSIP/1210-0000190d", "PAGE_MEMBERS=") in new stack
-- Executing [[email protected]:9] Set("PJSIP/1210-0000190d", "PAGE_CONF_OPTS=") in new stack
-- Executing [[email protected]:10] Set("PJSIP/1210-0000190d", "ANNOUNCEMENT=beep") in new stack
-- Executing [[email protected]:11] Set("PJSIP/1210-0000190d", "STREAM=NONE") in new stack
-- Executing [[email protected]:12] AGI("PJSIP/1210-0000190d", "page.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/page.agi
-- Executing [[email protected]:1] Wait("Local/[email protected];2", "1") in new stack
-- Called [email protected]
-- Called [email protected]/n
-- Executing [[email protected]:1] Macro("Local/[email protected];2", "autoanswer,rtp") in new stack
-- Executing [[email protected]ro-autoanswer:1] GotoIf("Local/[email protected];2", "1?knowndial") in new stack
-- Goto (macro-autoanswer,s,19)
-- Executing [[email protected]:19] Set("Local/[email protected];2", "DIAL=MulticastRTP/basic/224.0.0.1:7001") in new stack
-- Executing [[email protected]:20] ExecIf("Local/[email protected];2", "0?Set(DIAL=DAHDIticastRTP/basic/224.0.0.1:7001)") in new stack
-- Executing [[email protected]:21] GotoIf("Local/[email protected];2", "0?macro") in new stack
-- Executing [[email protected]:22] GotoIf("Local/[email protected];2", "0?pjsipua") in new stack
-- Executing [[email protected]:23] Set("Local/[email protected];2", "USERAGENT=") in new stack
-- Executing [[email protected]:24] Goto("Local/[email protected];2", "uafin") in new stack
-- Goto (macro-autoanswer,s,28)
-- Executing [[email protected]:28] ExecIf("Local/[email protected];2", "1?Set(USERAGENT=rtp)") in new stack
-- <PJSIP/1210-0000190d>AGI Script page.agi completed, returning 0
-- Executing [[email protected]:29] ExecIf("Local/[email protected];2", "0?Set(PAGE_VOL=;volume=)") in new stack
-- Executing [[email protected]:30] ExecIf("Local/[email protected];2", "0?Set(CALLINFO=<sip:broadworks.net>;answer-after=0)") in new stack
-- Executing [[email protected]:31] ExecIf("Local/[email protected];2", "0?Set(ALERTINFO=Intercom)") in new stack
-- Executing [[email protected]:32] ExecIf("Local/[email protected];2", "0?Set(ALERTINFO=info=Auto Answer)") in new stack
-- Executing [[email protected]:33] ExecIf("Local/[email protected];2", "0?Set(ALERTINFO=ring-answer)") in new stack
-- Executing [[email protected]:34] ExecIf("Local/[email protected];2", "0?Set(ALERTINFO=<http://www.sangoma.com>;info=external)") in new stack
-- Executing [[email protected]:35] ExecIf("Local/[email protected];2", "0?Set(ALERTINFO=<http://example.com>;info=alert-autoanswer)") in new stack
-- Executing [[email protected]:36] ExecIf("Local/[email protected];2", "1?Set(__SIP_URI_OPTIONS=intercom=true)") in new stack
-- Executing [[email protected]:2] NoOp("Local/[email protected];2", "") in new stack
-- Executing [[email protected]:3] GotoIf("Local/[email protected];2", "1?doptions") in new stack
-- Goto (app-paging,PAGErtp,6)
-- Executing [[email protected]:6] ExecIf("Local/[email protected];2", "1?Set(_DOPTIONS=b(autoanswer^s^1(Ring Answer,<uri>;answer-after=0)))") in new stack
-- Executing [[email protected]:7] Dial("Local/[email protected];2", "MulticastRTP/basic/224.0.0.1:7001,5,A(beep)b(autoanswer^s^1(Ring Answer,<uri>;answer-after=0))") in new stack
-- Executing [[email protected]:13] Set("PJSIP/1210-0000190d", "CONFBRIDGE(user,template)=page_user_duplex") in new stack
-- Executing [[email protected]:14] Set("PJSIP/1210-0000190d", "CONFBRIDGE(user,admin)=yes") in new stack
-- Executing [[email protected]:15] Set("PJSIP/1210-0000190d", "CONFBRIDGE(user,marked)=yes") in new stack
-- Executing [[email protected]:16] Answer("PJSIP/1210-0000190d", "") in new stack
-- MulticastRTP/0x7f44b90f60f0 Internal Gosub(autoanswer,s,1(Ring Answer,<uri>;answer-after=0)) start
-- Executing [[email protected]:1] GosubIf("MulticastRTP/0x7f44b90f60f0", "1?func-set-sipheader,s,1(Alert-Info,Ring Answer)") in new stack
-- Executing [[email protected]:1] NoOp("MulticastRTP/0x7f44b90f60f0", "Sip Add Header function called. Adding Alert-Info = Ring Answer") in new stack
-- Executing [[email protected]:2] Set("MulticastRTP/0x7f44b90f60f0", "HASH(_SIPHEADERS,Alert-Info)=Ring Answer") in new stack
-- Executing [[email protected]:3] Return("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [[email protected]:2] GosubIf("MulticastRTP/0x7f44b90f60f0", "1?func-set-sipheader,s,1(Call-Info,<uri>;answer-after=0)") in new stack
-- Executing [[email protected]:1] NoOp("MulticastRTP/0x7f44b90f60f0", "Sip Add Header function called. Adding Call-Info = <uri>;answer-after=0") in new stack
-- Executing [[email protected]:2] Set("MulticastRTP/0x7f44b90f60f0", "HASH(_SIPHEADERS,Call-Info)=<uri>;answer-after=0") in new stack
-- Executing [[email protected]:3] Return("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [[email protected]:3] Gosub("MulticastRTP/0x7f44b90f60f0", "func-apply-sipheaders,s,1()") in new stack
-- Executing [[email protected]:1] ExecIf("MulticastRTP/0x7f44b90f60f0", "0?Set(CHANNEL(hangup_handler_push)=crm-hangup,s,1)") in new stack
-- Executing [[email protected]:2] NoOp("MulticastRTP/0x7f44b90f60f0", "Applying SIP Headers to channel") in new stack
-- Executing [[email protected]:3] Set("MulticastRTP/0x7f44b90f60f0", "SIPHEADERKEYS=Call-Info,Alert-Info") in new stack
-- Executing [[email protected]:4] While("MulticastRTP/0x7f44b90f60f0", "1") in new stack
-- Executing [[email protected]:5] Set("MulticastRTP/0x7f44b90f60f0", "sipheader=<uri>;answer-after=0") in new stack
-- Executing [[email protected]:6] SIPAddHeader("MulticastRTP/0x7f44b90f60f0", "Call-Info: <uri>;answer-after=0") in new stack
-- Executing [[email protected]:7] Set("MulticastRTP/0x7f44b90f60f0", "PJSIP_HEADER(add,Call-Info)=<uri>;answer-after=0") in new stack
[2017-10-13 14:14:22] ERROR[26026][C-000018b0]: res_pjsip_header_funcs.c:520 func_write_header: This function requires a PJSIP channel.
-- Executing [[email protected]:8] EndWhile("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [[email protected]:4] While("MulticastRTP/0x7f44b90f60f0", "1") in new stack
-- Executing [[email protected]:5] Set("MulticastRTP/0x7f44b90f60f0", "sipheader=Ring Answer") in new stack
-- Executing [[email protected]:6] SIPAddHeader("MulticastRTP/0x7f44b90f60f0", "Alert-Info: Ring Answer") in new stack
-- Executing [[email protected]:7] Set("MulticastRTP/0x7f44b90f60f0", "PJSIP_HEADER(add,Alert-Info)=Ring Answer") in new stack
[2017-10-13 14:14:22] ERROR[26026][C-000018b0]: res_pjsip_header_funcs.c:520 func_write_header: This function requires a PJSIP channel.
-- Executing [[email protected]:8] EndWhile("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [[email protected]:4] While("MulticastRTP/0x7f44b90f60f0", "0") in new stack
-- Executing [[email protected]:9] Return("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [[email protected]:4] Return("MulticastRTP/0x7f44b90f60f0", "") in new stack
  == Spawn extension (default, PAGErtp, 1) exited non-zero on 'MulticastRTP/0x7f44b90f60f0'
-- MulticastRTP/0x7f44b90f60f0 Internal Gosub(autoanswer,s,1(Ring Answer,<uri>;answer-after=0)) complete GOSUB_RETVAL=
-- Called MulticastRTP/basic/224.0.0.1:7001
-- MulticastRTP/0x7f44b90f60f0 answered Local/[email protected];2
-- <MulticastRTP/0x7f44b90f60f0> Playing 'beep.ulaw' (language 'en')
   > 0x7f44b91fe220 -- Probation passed - setting RTP source address to 10.2.2.102:2248
-- Executing [[email protected]:17] ConfBridge("PJSIP/1210-0000190d", "1507918462302,,,admin_menu") in new stack
-- Channel PJSIP/1210-0000190d joined 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Channel CBAnn/1507918462302-00000597;2 joined 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Local/[email protected];1 answered
   > Launching ConfBridge(1507918462302,,,user_menu) on Local/[email protected];1
-- Channel Local/[email protected];1 joined 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Channel MulticastRTP/0x7f44b90f60f0 joined 'simple_bridge' basic-bridge <e2d4c651-10bc-4157-b209-de812682d6c9>
-- Channel Local/[email protected];2 joined 'simple_bridge' basic-bridge <e2d4c651-10bc-4157-b209-de812682d6c9>
-- Executing [[email protected]:2] Answer("Local/[email protected];2", "") in new stack
-- Local/[email protected];1 answered
   > Launching Wait(5) on Local/[email protected];1
-- Executing [[email protected]:3] Set("Local/[email protected];2", "CONFBRIDGE(user,template)=page_user_duplex") in new stack
-- Executing [[email protected]:4] Set("Local/[email protected];2", "CONFBRIDGE(user,marked)=yes") in new stack
-- Executing [[email protected]:5] ConfBridge("Local/[email protected];2", "1507918462302,,,") in new stack
-- Channel Local/[email protected];2 joined 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Channel PJSIP/1210-0000190d left 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Executing [[email protected]:1] ExecIf("PJSIP/1210-0000190d", "1?Set(DEVICE_STATE(Custom:PAGE1275)=NOT_INUSE)") in new stack
-- Executing [[email protected]:2] GosubIf("PJSIP/1210-0000190d", "0?record-page,1()") in new stack
-- Executing [[email protected]:3] ExecIf("PJSIP/1210-0000190d", "0?System(rm .sln)") in new stack
-- Executing [[email protected]:4] ExecIf("PJSIP/1210-0000190d", "0?System(rm -f /var/spool/asterisk/outgoing/)") in new stack
-- Channel Local/[email protected];2 left 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Channel Local/[email protected];1 left 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Channel CBAnn/1507918462302-00000597;2 left 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Channel Local/[email protected];2 left 'simple_bridge' basic-bridge <e2d4c651-10bc-4157-b209-de812682d6c9>
-- Channel MulticastRTP/0x7f44b90f60f0 left 'simple_bridge' basic-bridge <e2d4c651-10bc-4157-b209-de812682d6c9>
  == Spawn extension (app-paging, PAGErtp, 7) exited non-zero on 'Local/[email protected];2'
cfafreepbx-sbcc*CLI>
Disconnected from Asterisk server
Asterisk cleanly ending (0).
Executing last minute cleanups
[[email protected] ~]#

I’d also like to mention that even though this entry appears in the asterisk dump, I don’t hear the expected BEEP on the phone placing the page:

<MulticastRTP/0x7f44b90f60f0> Playing 'beep.ulaw' (language 'en')
       > 0x7f44b91fe220 -- Probation passed - setting RTP source address to 10.2.2.102:2248