Dial failed for some reason with DIALSTATUS = CHANUNAVAIL and HANGUPCAUSE = 0

Hi!
Need some advice.
I’m using some Huawei E173 modems as trunks via chan_dongle. They mostly work fine except for some outbound calls. When I initiate a call I get something like this in the CLI:
– Executing [s@macro-dialout-trunk:28] GotoIf(“SIP/100-00000008”, “1?outnum:skipoutnum”) in new stack
– Goto (macro-dialout-trunk,s,29)
– Executing [s@macro-dialout-trunk:29] Set(“SIP/100-00000008”, “the_num=0991234567”) in new stack
– Executing [s@macro-dialout-trunk:30] Dial(“SIP/100-00000008”, “dongle/dongle2/0991234567,300,Tt”) in new stack
– Called dongle/dongle2/0991234567
– Dongle/dongle2-0100000000 is making progress passing it to SIP/100-00000008
== Everyone is busy/congested at this time (1:0/0/1)
– Executing [s@macro-dialout-trunk:31] NoOp(“SIP/100-00000008”, “Dial failed for some reason with DIALSTATUS = CHANUNAVAIL and HANGUPCAUSE = 0”) in new stack
– Executing [s@macro-dialout-trunk:32] GotoIf(“SIP/100-00000008”, “0?continue,1:s-CHANUNAVAIL,1”) in new stack
– Goto (macro-dialout-trunk,s-CHANUNAVAIL,1)
– Executing [s-CHANUNAVAIL@macro-dialout-trunk:1] Set(“SIP/100-00000008”, “RC=0”) in new stack
– Executing [s-CHANUNAVAIL@macro-dialout-trunk:2] Goto(“SIP/100-00000008”, “0,1”) in new stack
– Goto (macro-dialout-trunk,0,1)
– Executing [0@macro-dialout-trunk:1] Goto(“SIP/100-00000008”, “continue,1”) in new stack
– Goto (macro-dialout-trunk,continue,1)
– Executing [continue@macro-dialout-trunk:1] NoOp(“SIP/100-00000008”, “TRUNK Dial failed due to CHANUNAVAIL HANGUPCAUSE: 0 - failing through to other trunks”) in new stack

But the trunk is not busy, it can send USSD requests and accepts incoming calls. If I restart Asterisk by pressing “Apply config” in FreePBX interface, the next call to the same destination is passed fine. And many other, but then the problem returns.
Could you advise, where to look for the origin of the problem? What is it likely to be, a problem with chan_dongle or Huawei modem itself or with the FreePBX config?