BG77 TCP/IP server sometimes not receiving a message

We have developed a PCBA with the BG77.

We setup a TCP Server, waiting for a message, receive a message, close the connection. Open a TCP Client, send a message, close the connection. Every 5 minutes this sequence will loop.

Every once in a while, once or twice a day, we do not receive a message when in TCP Server. The only solution to receive a message again is to reboot the BG77.

We have integrated the ‘Jamming’ functionality into the code, but we have not seen any jamming. Therefore, it is impossible for us to know when the module is not functioning.

We use buffer access-mode for the TCP server, there is no +QUIRC: recv message when we expect there to be one.

Did terminal send the data successfully? Can the server successfully receive the data sent by the terminal?

The Client sent the data successfully, but we did not receive anything. I have monitored the UART lines and there is no data received. I do not see a +quirc: recv .
Right now I integrated a ping feature in my state machine to check if something is wrong.

Yes, your method is very good

I have tested this for the entire weekend. Pinging was done every 3 seconds. The connection was still there, but the TCP message still did not arrive.

Can you hand me the link to the latest version of the BG77 firmware? I am doubting the module(BG77) at this moment.

Please provide your current firmware version

The current version is: BG77LAR02A04

I have sent the latest firmware to your email,pls check,and I hope you can click the :yellow_heart: for me

1 Like

(post deleted by author)

This is my version: BG77LAR02A04_01.006.01.006 is there a DFOTA version available? If not, can I have it as soon as possible.

I have received the DFOTA files from your colleagues. But it does not solve the issue. I still occasionally not receive a +qiurc message. This happens every now and then. Rebooting the module solves it most of the time, but in that case I have missed a message.

Hello @willem.selten

just curious. Is your BG77 setup to use M1 or NB2? Also, are any power saving modes (PSM or eDRX) enabled?

Thanks
Felix

We use LTE-M1 at the moment and all power saving modes are disabled.

Hello @willem.selten

hmm, so latency shouldn’t be an issue.

BTW: A too weak power supply can cause this effects. (I’ve seen similar issues in the past with all kind of modems which went away with a proper power supply.)

Have you double-checked the layout of your PCBA? Is the power supply strong enough and the traces wide enough to deliver the necessary current?

According to the BG77 Hardware Design document a power supply which can deliver 700 mA or more is recommended.

Thanks
Felix

The PSU is capable of delivering 1A continuously. The 3V3 is a complete copper plane. So the voltage drop is unlikely over there. The wires after the Ferrite Bead are really short and not longer than 5mm and around 0.6mm wide.

I have added an extra 10000uF capacitor to this 3V3 line near the BG77. This didn’t change anything.

I have measured the voltage and it dropped a maximum of 0.2VDC. So the voltage was 3.1VDC at minimum. Which is significantly higher than the 2.8VDC stated in the Hardware Design document.

I have measured it again and came to the conclusion that I’ve measured noise instead of an actual signal. So the voltage drop is so insignificant that it is unnoticeable.

After some extensive testing, I came to the conclusion that a reboot is required to regain full functionality.

Furthermore, when executing a AT+QISTATE it can occur that an +QIURC messages happens between my command and the response. Is there a way to give priority to the command and postpone the QIURC message?

Hello @willem.selten

In the past few days I ran some tests with setups similar to yours (server and client; server only) and I can confirm that after about 99 successful iterations my BG77 stops reporting reception of new data.

I can also confirm that when my BG77 is in that state only a reboot (power-cycle) or AT+CFUN=1,1 seems to get BG77 out of that state.

That said, I still have a test setup running, which recently surpassed about 1000 successful iterations. The setup is like yours with the difference that I started the local server once and keep it running instead of starting and stopping it for ever iteration. E.g.

  1. start local server (if not already running)
  2. wait for external client to connect
  3. external client connects
  4. external client sends data
  5. local server read data
  6. external client disconnects
  7. local server disconnects as well
    (leave local server running - do not stop local server)
  8. local client connects to external server
  9. local client sends data
  10. local client disconnects
  11. start over with step 1

Hope this helps.

Note: BG77 firmware used for testing: BG77LAR02A04_01.201.01.201

Admin note: I will probably hit the max number of posts to a given topic limit as a new user after this post - so I might not be able to respond any further for some time.

Thanks
Felix

1 Like

Thank you!

I have implemented the proposed solution. Let’s hope that this will be the solution to the problem. We will keep testing it.