BLF unavailable and Grandstream handsets

I’ve seen a lot of forum posts about this issue, but haven’t seen a resolution or a distinctive ‘solution’ to the problem, so I’ll try and collate what I know and see what FreePBX can do to help, if anything, or see how to work around the problem.
I’m using FreePBX 13.0.190.19 which is on asterisk 13.14.0.
Using exclusively Grandstream phones, in this instance it’s the GXP2170 phones with multiple BLF indicators.
Setup the BLF as normal, BLF option and the extension to watch, works fine UNLESS the phone is offline/Unavailable. If a phone is disconnected, I see in asterisk the extension shows this:

2011/2011                 172.16.2.44                              D  No         No          A  5060     UNREACHABLE

So this extension was online and went offline, however the BLF key is still showing GREEN indicating the extension is online. Checking the hints:

[email protected]      : SIP/2011&Custom:DND2  State:Unavailable     Presence:                Watchers  3

So it certainly looks like it’s correctly setting the “Unavailable” hint, but the handset still shows extension 2011 as GREEN (Hinting at it being available).
I’ve ran a tcpdump to view the state being sent to the handset on an endpoint going Unreachable/Unavailable and I see the following sent:

Via: SIP/2.0/UDP 172.16.2.5:5060;branch=z9hG4bK45f25664;rport
Max-Forwards: 70
From: <sip:[email protected]>;tag=as1bb41598
To: <sip:[email protected]>;tag=2002958125
Contact: <sip:[email protected]:5060>
Call-ID: [email protected]
CSeq: 290 NOTIFY
User-Agent: FPBX-13.0.190.19(13.14.0)
Subscription-State: active
Event: dialog
Content-Type: application/dialog-info+xml
Content-Length: 205

<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="188" state="full" entity="sip:[email protected]">
<dialog id="2045">
<state>terminated</state>
</dialog>
</dialog-info>

This seems odd, why set the state to “terminated” when it should get an unreachable type state? Or is there no difference in state between offline/unavailable and idle/not on a call? If not, why not!

Thanks for any info/assistance, I’m going to be posting this to the Grandstream forums also to see if this is something on the phone side also.

Have u tried switching to Asterisk 11 vs 13 for troubleshooting?? Does everything react in the same way? I’m using a very similar setup without these issues you describe but I’m using asterisk 11.

Use the latest beta grandstream firmware solves the blf issues for me