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

[root@cfafreepbx-sbcc ~]# 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 [1275@from-internal:1] Goto("PJSIP/1210-0000190d", "app-pagegroups,1275,1") in new stack
-- Goto (app-pagegroups,1275,1)
-- Executing [1275@app-pagegroups:1] Set("PJSIP/1210-0000190d", "MCAST=224.0.0.1:7001") in new stack
-- Executing [1275@app-pagegroups:2] Macro("PJSIP/1210-0000190d", "user-callerid,") in new stack
-- Executing [s@macro-user-callerid:1] Set("PJSIP/1210-0000190d", "TOUCH_MONITOR=1507918462.11835") in new stack
-- Executing [s@macro-user-callerid:2] Set("PJSIP/1210-0000190d", "AMPUSER=1210") in new stack
-- Executing [s@macro-user-callerid:3] GotoIf("PJSIP/1210-0000190d", "0?report") in new stack
-- Executing [s@macro-user-callerid:4] ExecIf("PJSIP/1210-0000190d", "1?Set(REALCALLERIDNUM=1210)") in new stack
-- Executing [s@macro-user-callerid:5] Set("PJSIP/1210-0000190d", "AMPUSER=1210") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("PJSIP/1210-0000190d", "0?limit") in new stack
-- Executing [s@macro-user-callerid:7] Set("PJSIP/1210-0000190d", "AMPUSERCIDNAME=Basement") in new stack
-- Executing [s@macro-user-callerid:8] GotoIf("PJSIP/1210-0000190d", "0?report") in new stack
-- Executing [s@macro-user-callerid:9] Set("PJSIP/1210-0000190d", "AMPUSERCID=1210") in new stack
-- Executing [s@macro-user-callerid:10] Set("PJSIP/1210-0000190d", "__DIAL_OPTIONS=Ttr") in new stack
-- Executing [s@macro-user-callerid:11] Set("PJSIP/1210-0000190d", "CALLERID(all)="Basement" <1210>") in new stack
-- Executing [s@macro-user-callerid:12] GotoIf("PJSIP/1210-0000190d", "0?limit") in new stack
-- Executing [s@macro-user-callerid:13] ExecIf("PJSIP/1210-0000190d", "0?Set(GROUP(concurrency_limit)=1210)") in new stack
-- Executing [s@macro-user-callerid:14] ExecIf("PJSIP/1210-0000190d", "0?Set(CHANNEL(language)=)") in new stack
-- Executing [s@macro-user-callerid:15] GotoIf("PJSIP/1210-0000190d", "0?continue") in new stack
-- Executing [s@macro-user-callerid:16] ExecIf("PJSIP/1210-0000190d", "1?Set(__CALLEE_ACCOUNCODE=)") in new stack
-- Executing [s@macro-user-callerid:17] Set("PJSIP/1210-0000190d", "__TTL=64") in new stack
-- Executing [s@macro-user-callerid:18] GotoIf("PJSIP/1210-0000190d", "1?continue") in new stack
-- Goto (macro-user-callerid,s,29)
-- Executing [s@macro-user-callerid:29] Set("PJSIP/1210-0000190d", "CALLERID(number)=1210") in new stack
-- Executing [s@macro-user-callerid:30] Set("PJSIP/1210-0000190d", "CALLERID(name)=Basement") in new stack
-- Executing [s@macro-user-callerid:31] GotoIf("PJSIP/1210-0000190d", "0?cnum") in new stack
-- Executing [s@macro-user-callerid:32] Set("PJSIP/1210-0000190d", "CDR(cnam)=Basement") in new stack
-- Executing [s@macro-user-callerid:33] Set("PJSIP/1210-0000190d", "CDR(cnum)=1210") in new stack
-- Executing [s@macro-user-callerid:34] Set("PJSIP/1210-0000190d", "CHANNEL(language)=en") in new stack
-- Executing [1275@app-pagegroups:3] Set("PJSIP/1210-0000190d", "_PAGEGROUP=1275") in new stack
-- Executing [1275@app-pagegroups:4] GotoIf("PJSIP/1210-0000190d", "1?:busy") in new stack
-- Executing [1275@app-pagegroups:5] Set("PJSIP/1210-0000190d", "DEVICE_STATE(Custom:PAGE1275)=INUSE") in new stack
-- Executing [1275@app-pagegroups:6] Gosub("PJSIP/1210-0000190d", "app-paging,ssetup,1()") in new stack
-- Executing [ssetup@app-paging:1] Set("PJSIP/1210-0000190d", "_SIPURI=") in new stack
-- Executing [ssetup@app-paging:2] Set("PJSIP/1210-0000190d", "_ALERTINFO=Ring Answer") in new stack
-- Executing [ssetup@app-paging:3] Set("PJSIP/1210-0000190d", "_CALLINFO=<uri>;answer-after=0") in new stack
-- Executing [ssetup@app-paging:4] Set("PJSIP/1210-0000190d", "_SIPURI=intercom=true") in new stack
-- Executing [ssetup@app-paging:5] Set("PJSIP/1210-0000190d", "_DTIME=5") in new stack
-- Executing [ssetup@app-paging:6] Set("PJSIP/1210-0000190d", "_ANSWERMACRO=") in new stack
-- Executing [ssetup@app-paging:7] Set("PJSIP/1210-0000190d", "PAGE_CONF=1507918462302") in new stack
-- Executing [ssetup@app-paging:8] Return("PJSIP/1210-0000190d", "") in new stack
-- Executing [1275@app-pagegroups:7] Set("PJSIP/1210-0000190d", "PAGEMODE=PAGE") in new stack
-- Executing [1275@app-pagegroups:8] Set("PJSIP/1210-0000190d", "PAGE_MEMBERS=") in new stack
-- Executing [1275@app-pagegroups:9] Set("PJSIP/1210-0000190d", "PAGE_CONF_OPTS=") in new stack
-- Executing [1275@app-pagegroups:10] Set("PJSIP/1210-0000190d", "ANNOUNCEMENT=beep") in new stack
-- Executing [1275@app-pagegroups:11] Set("PJSIP/1210-0000190d", "STREAM=NONE") in new stack
-- Executing [1275@app-pagegroups:12] AGI("PJSIP/1210-0000190d", "page.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/page.agi
-- Executing [s@app-page-stream:1] Wait("Local/s@app-page-stream-00000595;2", "1") in new stack
-- Called s@app-page-stream
-- Called PAGErtp@app-paging/n
-- Executing [PAGErtp@app-paging:1] Macro("Local/PAGErtp@app-paging-00000596;2", "autoanswer,rtp") in new stack
-- Executing [s@macro-autoanswer:1] GotoIf("Local/PAGErtp@app-paging-00000596;2", "1?knowndial") in new stack
-- Goto (macro-autoanswer,s,19)
-- Executing [s@macro-autoanswer:19] Set("Local/PAGErtp@app-paging-00000596;2", "DIAL=MulticastRTP/basic/224.0.0.1:7001") in new stack
-- Executing [s@macro-autoanswer:20] ExecIf("Local/PAGErtp@app-paging-00000596;2", "0?Set(DIAL=DAHDIticastRTP/basic/224.0.0.1:7001)") in new stack
-- Executing [s@macro-autoanswer:21] GotoIf("Local/PAGErtp@app-paging-00000596;2", "0?macro") in new stack
-- Executing [s@macro-autoanswer:22] GotoIf("Local/PAGErtp@app-paging-00000596;2", "0?pjsipua") in new stack
-- Executing [s@macro-autoanswer:23] Set("Local/PAGErtp@app-paging-00000596;2", "USERAGENT=") in new stack
-- Executing [s@macro-autoanswer:24] Goto("Local/PAGErtp@app-paging-00000596;2", "uafin") in new stack
-- Goto (macro-autoanswer,s,28)
-- Executing [s@macro-autoanswer:28] ExecIf("Local/PAGErtp@app-paging-00000596;2", "1?Set(USERAGENT=rtp)") in new stack
-- <PJSIP/1210-0000190d>AGI Script page.agi completed, returning 0
-- Executing [s@macro-autoanswer:29] ExecIf("Local/PAGErtp@app-paging-00000596;2", "0?Set(PAGE_VOL=;volume=)") in new stack
-- Executing [s@macro-autoanswer:30] ExecIf("Local/PAGErtp@app-paging-00000596;2", "0?Set(CALLINFO=<sip:broadworks.net>;answer-after=0)") in new stack
-- Executing [s@macro-autoanswer:31] ExecIf("Local/PAGErtp@app-paging-00000596;2", "0?Set(ALERTINFO=Intercom)") in new stack
-- Executing [s@macro-autoanswer:32] ExecIf("Local/PAGErtp@app-paging-00000596;2", "0?Set(ALERTINFO=info=Auto Answer)") in new stack
-- Executing [s@macro-autoanswer:33] ExecIf("Local/PAGErtp@app-paging-00000596;2", "0?Set(ALERTINFO=ring-answer)") in new stack
-- Executing [s@macro-autoanswer:34] ExecIf("Local/PAGErtp@app-paging-00000596;2", "0?Set(ALERTINFO=<http://www.sangoma.com>;info=external)") in new stack
-- Executing [s@macro-autoanswer:35] ExecIf("Local/PAGErtp@app-paging-00000596;2", "0?Set(ALERTINFO=<http://example.com>;info=alert-autoanswer)") in new stack
-- Executing [s@macro-autoanswer:36] ExecIf("Local/PAGErtp@app-paging-00000596;2", "1?Set(__SIP_URI_OPTIONS=intercom=true)") in new stack
-- Executing [PAGErtp@app-paging:2] NoOp("Local/PAGErtp@app-paging-00000596;2", "") in new stack
-- Executing [PAGErtp@app-paging:3] GotoIf("Local/PAGErtp@app-paging-00000596;2", "1?doptions") in new stack
-- Goto (app-paging,PAGErtp,6)
-- Executing [PAGErtp@app-paging:6] ExecIf("Local/PAGErtp@app-paging-00000596;2", "1?Set(_DOPTIONS=b(autoanswer^s^1(Ring Answer,<uri>;answer-after=0)))") in new stack
-- Executing [PAGErtp@app-paging:7] Dial("Local/PAGErtp@app-paging-00000596;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 [1275@app-pagegroups:13] Set("PJSIP/1210-0000190d", "CONFBRIDGE(user,template)=page_user_duplex") in new stack
-- Executing [1275@app-pagegroups:14] Set("PJSIP/1210-0000190d", "CONFBRIDGE(user,admin)=yes") in new stack
-- Executing [1275@app-pagegroups:15] Set("PJSIP/1210-0000190d", "CONFBRIDGE(user,marked)=yes") in new stack
-- Executing [1275@app-pagegroups:16] Answer("PJSIP/1210-0000190d", "") in new stack
-- MulticastRTP/0x7f44b90f60f0 Internal Gosub(autoanswer,s,1(Ring Answer,<uri>;answer-after=0)) start
-- Executing [s@autoanswer:1] GosubIf("MulticastRTP/0x7f44b90f60f0", "1?func-set-sipheader,s,1(Alert-Info,Ring Answer)") in new stack
-- Executing [s@func-set-sipheader:1] NoOp("MulticastRTP/0x7f44b90f60f0", "Sip Add Header function called. Adding Alert-Info = Ring Answer") in new stack
-- Executing [s@func-set-sipheader:2] Set("MulticastRTP/0x7f44b90f60f0", "HASH(_SIPHEADERS,Alert-Info)=Ring Answer") in new stack
-- Executing [s@func-set-sipheader:3] Return("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [s@autoanswer:2] GosubIf("MulticastRTP/0x7f44b90f60f0", "1?func-set-sipheader,s,1(Call-Info,<uri>;answer-after=0)") in new stack
-- Executing [s@func-set-sipheader:1] NoOp("MulticastRTP/0x7f44b90f60f0", "Sip Add Header function called. Adding Call-Info = <uri>;answer-after=0") in new stack
-- Executing [s@func-set-sipheader:2] Set("MulticastRTP/0x7f44b90f60f0", "HASH(_SIPHEADERS,Call-Info)=<uri>;answer-after=0") in new stack
-- Executing [s@func-set-sipheader:3] Return("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [s@autoanswer:3] Gosub("MulticastRTP/0x7f44b90f60f0", "func-apply-sipheaders,s,1()") in new stack
-- Executing [s@func-apply-sipheaders:1] ExecIf("MulticastRTP/0x7f44b90f60f0", "0?Set(CHANNEL(hangup_handler_push)=crm-hangup,s,1)") in new stack
-- Executing [s@func-apply-sipheaders:2] NoOp("MulticastRTP/0x7f44b90f60f0", "Applying SIP Headers to channel") in new stack
-- Executing [s@func-apply-sipheaders:3] Set("MulticastRTP/0x7f44b90f60f0", "SIPHEADERKEYS=Call-Info,Alert-Info") in new stack
-- Executing [s@func-apply-sipheaders:4] While("MulticastRTP/0x7f44b90f60f0", "1") in new stack
-- Executing [s@func-apply-sipheaders:5] Set("MulticastRTP/0x7f44b90f60f0", "sipheader=<uri>;answer-after=0") in new stack
-- Executing [s@func-apply-sipheaders:6] SIPAddHeader("MulticastRTP/0x7f44b90f60f0", "Call-Info: <uri>;answer-after=0") in new stack
-- Executing [s@func-apply-sipheaders: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 [s@func-apply-sipheaders:8] EndWhile("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [s@func-apply-sipheaders:4] While("MulticastRTP/0x7f44b90f60f0", "1") in new stack
-- Executing [s@func-apply-sipheaders:5] Set("MulticastRTP/0x7f44b90f60f0", "sipheader=Ring Answer") in new stack
-- Executing [s@func-apply-sipheaders:6] SIPAddHeader("MulticastRTP/0x7f44b90f60f0", "Alert-Info: Ring Answer") in new stack
-- Executing [s@func-apply-sipheaders: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 [s@func-apply-sipheaders:8] EndWhile("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [s@func-apply-sipheaders:4] While("MulticastRTP/0x7f44b90f60f0", "0") in new stack
-- Executing [s@func-apply-sipheaders:9] Return("MulticastRTP/0x7f44b90f60f0", "") in new stack
-- Executing [s@autoanswer: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/PAGErtp@app-paging-00000596;2
-- <MulticastRTP/0x7f44b90f60f0> Playing 'beep.ulaw' (language 'en')
   > 0x7f44b91fe220 -- Probation passed - setting RTP source address to 10.2.2.102:2248
-- Executing [1275@app-pagegroups: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/PAGErtp@app-paging-00000596;1 answered
   > Launching ConfBridge(1507918462302,,,user_menu) on Local/PAGErtp@app-paging-00000596;1
-- Channel Local/PAGErtp@app-paging-00000596;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/PAGErtp@app-paging-00000596;2 joined 'simple_bridge' basic-bridge <e2d4c651-10bc-4157-b209-de812682d6c9>
-- Executing [s@app-page-stream:2] Answer("Local/s@app-page-stream-00000595;2", "") in new stack
-- Local/s@app-page-stream-00000595;1 answered
   > Launching Wait(5) on Local/s@app-page-stream-00000595;1
-- Executing [s@app-page-stream:3] Set("Local/s@app-page-stream-00000595;2", "CONFBRIDGE(user,template)=page_user_duplex") in new stack
-- Executing [s@app-page-stream:4] Set("Local/s@app-page-stream-00000595;2", "CONFBRIDGE(user,marked)=yes") in new stack
-- Executing [s@app-page-stream:5] ConfBridge("Local/s@app-page-stream-00000595;2", "1507918462302,,,") in new stack
-- Channel Local/s@app-page-stream-00000595;2 joined 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Channel PJSIP/1210-0000190d left 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Executing [h@app-pagegroups:1] ExecIf("PJSIP/1210-0000190d", "1?Set(DEVICE_STATE(Custom:PAGE1275)=NOT_INUSE)") in new stack
-- Executing [h@app-pagegroups:2] GosubIf("PJSIP/1210-0000190d", "0?record-page,1()") in new stack
-- Executing [h@app-pagegroups:3] ExecIf("PJSIP/1210-0000190d", "0?System(rm .sln)") in new stack
-- Executing [h@app-pagegroups:4] ExecIf("PJSIP/1210-0000190d", "0?System(rm -f /var/spool/asterisk/outgoing/)") in new stack
-- Channel Local/s@app-page-stream-00000595;2 left 'softmix' base-bridge <0bdc6d0e-a5ca-41ff-9487-12de006e15af>
-- Channel Local/PAGErtp@app-paging-00000596;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/PAGErtp@app-paging-00000596;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/PAGErtp@app-paging-00000596;2'
cfafreepbx-sbcc*CLI>
Disconnected from Asterisk server
Asterisk cleanly ending (0).
Executing last minute cleanups
[root@cfafreepbx-sbcc ~]#

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