Yealink Phones don't pass CallerID on Parked Call

We are still having this issue where a parked call is not passing the callerID. Sangoma confirmed this is a yealink issue. Can anyone advise on what needs set on these phones to correct? When the call comes in, you see the outside callerID, but after the call ends, the history shows slow number.

  • Steps to reproduce issue [It’s very helpful for us to fix your issue. Please describe it in detailed steps with expected result and actual result]

Call gets Answered on T58V and put on park. Call is picked up from Park on T46s

freepbx is set to Trust RPID set to yes

Send RPID is set to Send P-Asserted-Identity header

When T46S picks up call, the history shows the parked call slot of 71 instead of the outside callerID

Screenshot attached.

  • Troubleshooting files (Please upload the debug files :PCAP trace, level 6 syslog, config.bin to attachment,you can refer here to how to catch these files).

Any troubleshooting you have done?
1.) Factory reset phone, same result

2.) updated firmware, same result

3.) entered a ticket with Sangoma support and they confirm it’s an issue with the phone or config setting

  • Probability of this issue? Inevitable or accidental? Has never worked

***** How many phones does customer have and how many phones have this issue? 15

Is there any other information you want to share?

http://device.ip/screencapture is your friend.


You have a few settings to look at.

Under Account → Advanced

caller ID source was set to PAI-RPID-FROM and I have changed to FROM and RTP was not set to compulsory. I’ll post results. Everything else was like yours

Update: Same result

IIRC I did that on the extension level (PBX), not on the phone level. and it worked for me.

I think I see your problem. It is not that the phone is not showing caller ID. The phone is showing what you dialed.

Inbound call, I often talk to myself.



In that retrieved scenario, you want to show the caller ID of the parked call. But that was an outbound call placed by the phone. So by default it is going to show your dialed number.

The answer to this one is to set your CID source to PREFERENCE in Account -> Advanced

account.1.cid_source = 6

By default, this is the preference, it is not changeable in the phone GUI. You have to use provisioning files.
sip.cid_source.preference = P-Preferred-Identity, P-Asserted-Identity, Remote-Party-ID, From

Note, this could affect other inbound caller ID visibility depending on how you get inbound CID.

I made those changes but seems the yealink firmware was a bit behind on the 58A causing them not to provision properly. The entire GUI is the android now and I heard previous had bugs.

Edit: This post was in direct reply to the now edited post above that stated this.

End Edit

It certainly is an option on the T46S.

How old is your firmware? This was added in that was released in October of 2016.

The first version of EPM firmware to support the T46S was 1.17 and that had firmware While firmware bundle 1.18 has

This has nothing to do with what the T46S does.

It’s the primary answered phone, then gets set to park, then the T46s picks it up

upgraded to from

No option on the old version

This has nothing to do with the T46S and what it shows.

It happens from all the yealink phones regardless of model.

Now it won’t log any outbound caller ID lol. Incoming fixed but now it only logs internal caller ID for outbound

So I have a few company sites with older Polycom SP IP450’s, 550’s, VVX’es, etc. But have deployed a new site with Yealink T29G’s. Have a test one at my desk. I see this same behavior, but it’s intended to work this way by default, correct? Your outbound call log naturally displays the numbers that your phone has dialed. Picking up a parked call by dialing 71 would log you dialing 71. But I understand where you are coming from.

We have most of our sites with a dedicated front desk receptionist. I added some custom code into the configuration files so that when they pickup a parked call using the Flash Operator Panel web app, it displays which park zone number the call was parked on, along with their caller ID. This also appears on the phone display and in the call logs. But that’s only when Flash Operator Panel is used to park and pickup the call. Just using the feature codes on the phone itself doesn’t present the caller ID when picking up.


exten => X.,2,GotoIf($["${PARKBUTTON}" = “PARK/default”]?5)
exten => X.,3,GotoIf($["${PARKBUTTON}" = “”]?5)
exten => X.,4,Set(PARKINGLOT=${PARKBUTTON:5})
exten => X.,5,Set(CALLERID(name)=
________${RETURN_EXTENSION}) ; this properly displays the caller ID and the parking extension for parked calls.
exten => _X.,6,Park(,sc(${RETURN_CONTEXT},${RETURN_EXTENSION},1))

There is no custom code needed. It works on every other system I have but this customer is Unique. There must be a CallerID setting for outbound somewhere?

All I know is my scenario above works the same on various phone makes and models. Everything from Polycom SP IP’s VVX’es to Yealinks. To me I usually like easier. If I can place code in one place one time and don’t have to worry about which IP phones are involved then I’m happy so far :smiley:

how do you apply that code?

In my system I added that to the /etc/asterisk/extensions_override_fop2.conf file. So this works as expected when parking and picking up callers using FOP2. And when parked callers are returned to the parker using FOP2 this is displayed as expected. Both on the FOP2 app and on the phone display.

I just set send trust RPID to NO to solve this issue. No code needed.