BLFs stop working after about a day

As it says in the subject, on an almost daily basis BLFs stop working for a couple of phones (as in others can’t see their status). Using core show hints I see that they are showing as Idle, even when they are on a call. Restarting Asterisk tends to cure this but only temporarily. I have tried restarting the whole system (PBX and phones).

The configuration is 22 Snom 360s with expansion modules (extra keys) all with firmware version 7.3.30, all connected to Asterisk 1.6.1.6, they are all on the same local network which is used exclusively for the phones. There is a single circuit of ISDN2 used as a backup and sip trunks provided by a remote kamailio box for incoming and outgoing calls.

From the general context of sip.conf:

notifyringing=yes
notifyhold=yes
callcounter=yes ; added after problem started with no noticeable effect
counteronpeer=yes ; added after problem started with no noticeable effect
busylevel=1 ; added after problem started with no noticeable effect
limitonpeers=yes

A typical phone’s SIP profile (*****s represents either the DDI or a password):

[]
type=friend
host=dynamic
context=company1internal
callerid=

secret=*****
defaultuser=*****
nat=no
subscribecontext=company1blfhints
call-limit=4
callgroup=1
pickupgroup=1

from extensions.conf

[company1blfhints]
exten => ,hint,Sip/

I have been in touch with the manufacturers of the phones, they claim it may be related to high CPU load on the phones, this is impossible to check without upgrading the firmware to a beta version (something I am unwilling to try at this stage). I have taken steps to reducing the CPU load on the phones, but again, this has had no effect.

EDIT: I forgot to mention, the problems started around the time I added the following to the dialplan:

[company1internal]
exten => _.,1,Dial(local/${EXTEN}@company2internal/n)

I renamed what used to be [company1internal] to [company2internal] at the same time (this was to fix a problem with call recording cutting off when outbound calls got transfered, even with AUDIOHOOK_INHERIT(MixMonitor)=yes)

UPDATE: had 2 weeks with it working, then the problem re-occured, did core show hints while I was mid conversation with someone using one of the handsets and their extension showed as Idle but with the correct number of watchers