No music on hold

FreePBX 15.0.29
Yealink T42S etc. phones
running chan_pjsip
Problem - when a call is put on hold it has dead silence. The “default” music on hold is selected for both inbound and outbound routes.
The “default” music, is the default music that comes with FreePBX.
Looking at the log, we can see the call come in, ring, get answered. But no indication of anything when call is put on Hold using the Yealink Hold softkey.
I wonder if the Yealink is somehow doing some sort of local hold? Or have I missed something in FreePBX…
Pretty important, customers think we have hung up on them, and aren’t pleased!
Thanks in advance!!!

Use pjsip set logger on, and look for a Re-INVITE with either c = 0.0.0.0 or a=sendonly. If you are not seeing one of these, Asterisk is not being told the call is on hold.

If you are, are you using G.729 in passthrough only mode?

some more info - in the log I see:
[2023-03-06 15:26:08] NOTICE[2123]: res_pjsip_sdp_rtp.c:145 rtp_check_timeout: Disconnecting channel ‘PJSIP/405-000001a2’ for lack of audio RTP activity in 30 seconds
at the time that my hold was disconnected

more info: Tried with Linphone as well. Call drops after 30 seconds (gives the lack of audio message just like the Yealink did above. Once call is put on hold I can’t un-Hold it on the Linphone.

Logs also have
[2023-03-06 16:06:41] ERROR[10165][C-00000059]: pbx_functions.c:608 ast_func_read: Function SIP_HEADER not registered
[2023-03-06 16:06:41] ERROR[10165][C-00000059]: pbx_functions.c:651 ast_func_read2: Function SIP_HEADER not registered

And no, I didn’t see a Re-INVITE from Linphone test.

These are completely normal for FreePBX.

Does ending the call normally from the Linphone work correctly and promptly? It sounds like no Re-INVITE/UPDATE is getting through, but that could be because it is going to the wrong place. If so, the BYE to end a call would also go to the wrong place. (Typically failing to set external signalling address when behind NAT, but could also be a temporary firewall rule expiring.

The failure to unhold is possibly because the hold hasn’t been acknowledged and the unhold cannot start until that happens, as you can’t have more than one Re-INVITE live at any one time.

Hang up in Linphone doesn’t immediately terminate the outside call. Seems like it times out at 30 seconds. Linphone isn’t maybe the best test as it is on a VPN. Probably need to get in to the office and check on-prem with the Yealinks…

Subject to provision of adequate logging, you are not sending LinPhone the correct public signalling address.

It sounds as though you are behind more than one NAT. in which case you will need to define mutliple transports, which can only be done using the customisation files, not the GUI.

Well I think I found the (dumb, simple) problem. Along the way it was decided to put the phone system on a different sub-net… 192.168.Y.* instead of 192.168.X.* after we had done the initial testing.
So? Well I never went into Settings (Asterisk SIP Settings) and added 192.168.Y.0 / 24 as another LOCAL network. Added that, and now music on hold is working.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.