Nano CH340G + SIM7600E-H: LTE insufficient signal despite strong network availability

@lastchancename
...sorry, I have to open a new topic as I am not allowed to answer more than three times on an existing thread...
For anyone interested the history of this problem starts in post #13 of the following thread Problem Arduino and SIM7600 communication

Now back to the topic:
how do I have to modify the code correctly? Currently the modem is set to 9600 Baud and is reached via COM Port 3. I have set Serial1.begin to 9600, but that does not do the trick.
Now the code returns the error: 'Serial1' was not declared in this scope.

Yeah, you’ll have to rename Serial1 to whatever port instance you’re using… (that Serial1 is on a different chip with multiple hardware ports)

Then as discussed, you can test type and see the modem responses to your hearts content.

I wasn’t aware that you can’t contribute to your own thread…?!
Maybe check with the mods on that. (the flag icon, or use the forum category)

I was answering to an existing thread, which is not mine. There I can only respond three times.
Hope this is without restrictions now...

Anyway, I still do not understand how to make the necessary change.
Using COM Port 3 do I have to to change Serial1 to Serial3?

If I've understood the problem from your previous posts, you are not having any trouble talking between your Arduino and the SIM7600 module over a serial connection.

image

Your problem comes when the Arduino issues a command to check the signal strength of the radio connection to the LTE network and complains that it is unusable (yellow highlight).

You have the antenna connected correctly and not, for example, in the GPS socket ?

Hi, correct. Communication between SIM7600E and Arduino is working properly.
Antenna is definitely in the LTE Socket. But it is "only" an internal sticker antenna with 0,5-2 dBi signal amplification. However, the place where I am testing this is on the second floor and my celphone has full LTE signal - that is why I thought, the problem might actually not be the antenna... wrong assumption? Shoud I first try to get a better antenna?

Maybe show also a picture of the reverse side of that module with the antenna.
Also show how you have connected this and how it is all powered. Those modules have a high power requirement which may not be met directly from a Uno etc. and may require some stabilisation time.

But this is not really my expertise area. I had some experimental 2G based systems but, in the meantime, we've lost 2G here so I take an interest in peoples' experience with the 4G technology with a view to restarting at some point. It is not only the choice of device itself, but the appropriate data subscription, support of SIM cards etc.

OK, below additional info: The whole system is described on beelogger.de, I am using a beelogger universal with solar powered AkkuShield and the mentioned SIM7600E-H breakout bord.

  1. Backside of SIM7600E-H

  2. Power supply comes (in the final version) from a solar charged Akkushield with 2 x 3200 mAh Li-Ion batteries as below. For the current tests this is not relevant as I supply the power from a power supply unit. Anyway, the SIM7600E power supply is coming from the main board, not from the Nano.

  3. Setup of the main board with Nano, SIM7600E-H, battery backed EEPROM, 2 HX711 breakout boards for interpretation of the weighing cell signals.

Perhaps one additional info:
When I continue the interrupted test sketch with "w", at the end of the serial monitor output there is a -56dB signal stated. So first the system says signal is insufficient with -1dB, and then it states -56

Hope this is of any use...

Can you show the initial part of the output to the serial monitor where the version levels of the Beelogger software are/maybe printed (depending on the debug level)

In any case, can you confirm that you are using the latest version of this software ? I found this recent comment in the code of SIM76_ssl_beelogger.cpp which sounds possibly relevant to what you have experienced
V 1.0.2 fix reading signal level and a date Serial.println(F("SSL 03-09-2021"));

edit

This contains the test sketch beelogger_LTE_SSL_Test_210904.ino and the supporting library SIM76_ssl_beelogger.h / .cpp beelogger_MinimalTest.zip (8.1 KB)

The software is the latest. I have been in contact with the beelogger specialists, but they suggest, that the problem is possibly sitting deeper in the SIM7600E-H compared to the SIM7600E-L1C.
The L1C (which is the reference for which the documentation was written) can do LTE-FDD: B1/3/B7/B8/B20, the H-Series in addition LTE-B38/B40/B41. Normally in automatic mode the module should select the correct bandwidth, but it is possible, that the module is picking a band that does not communicate with the necessary services. So how can I test the different bands to find out if this is the problem?

The modified sketch you provided returns a compilation error which I cannot fix:

Arduino: 1.8.16 (Windows 10), Board: "Arduino Nano, ATmega328P (Old Bootloader)"

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `SIM_SERIAL'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::ssl_data(char const*)'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::purgeSerial()'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::sendCommand(char const*, unsigned int, char const*)'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::init(unsigned int)'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::shutdown()'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::start(char const*, char const*, char const*)'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::ssl_init()'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::ssl_start()'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::ssl_stop()'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::ssl_open(char const*)'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::ssl_close()'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::getSignalQuality()'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\SIM7600_SSL_beelogger\SIM76_ssl_beelogger.cpp.o (symbol from plugin): In function `SIM_SERIAL':

(.text+0x0): multiple definition of `CGPRS_SIM76_SSL::getLocation(GSM_LOCATION*)'

sketch\SIM76_ssl_beelogger.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1

Fehler beim Kompilieren für das Board Arduino Nano.

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

I didn't modify the sketch. I simply picked out the latest test sketch and two associated files, from the archive, so you could check if you had this version. I'm sorry I did not make that clear.

If you are using the latest version of the software and test sketch, then you can ignore that.

However, since you have shown that the test sketch later delivered a better value of signal strength ( -56 dB ), there is one modification I could make to allow the loop which performs the signal level test to obtain a new value of the signal strength until 'w' is entered into the serial console. At the moment, it simply repeats the old value given.

The comment about the different SIM7600E versions does highlight the risk of getting a version not compatible with the local networks, but yours should be compatible with European networks.

Your test sketch appears to fail here marked // *********************** after it has passed all the preliminary checks and early in the loop():

      if (OK) {

        do {  // make GET calls

          float Checksum =  TempIn  +  TempOut +  FeuchteIn  +  FeuchteOut;
          Checksum +=  Licht +  Gewicht + Solarspannung + Batteriespannung + Service;

          strcpy_P(parameter, serverName);
          if (gprs.ssl_open(parameter) == 0) {  // Start SSL
            Serial.println(F("\n\rConnect Fehler"));    // ***********************
            OK = false;
          }
          else {
            Serial.println(F("\n\rCon!"));
          }

After this, it goes on to test the signal quality and returns -56 dB

The first thing to try is to wait say 30 seconds after you see "Signalstärke unbrauchbar " before entering 'w' in the serial console to proceed further.

OK, did that. The result is the same.
New is, that also at the end of the monitor output the signal strength is given with -2dB, not the high value from previous days. That's a new mystery...

OK. You could try this small addition to the sketch in setup(). The idea is, that during the wait loop, it keeps testing the signal strength and printing the results until a 'w' is entered as the serial console.

Fluctuating signal strength could also be a consequence of inadequate power but you have said you are using lithium batteries which should be enough.

//OLD CODE
    delay(1000);
    char c = 'm';
    int Signal = gprs.getSignalQuality();
    if ((Signal > -10)) {
      Serial.print(F("Signalstärke unbrauchbar "));
      while (c != 'w') {
        c = Serial.read();
        delay(1000);
      }
    }

You just have to add the four marked lines //* new *// into the code

//NEW CODE	
    delay(1000);
    char c = 'm';
    int Signal = gprs.getSignalQuality();
    if ((Signal > -10)) {
      Serial.print(F("Signalstärke unbrauchbar "));
      while (c != 'w') {
        c = Serial.read();
        delay(1000);
		Signal = gprs.getSignalQuality();    //* new *//
		Serial.print(F("Signal Strength ")); //* new *//
		Serial.print(Signal);  				 //* new *//
        Serial.println(F(" dB")); 			 //* new *//
      }
    }

i'm facing error in following code

delay(1000);
char shareit = 'm';
int Signal = gprs.getSignalQuality();
if ((Signal > -10)) {
Serial.print(F("Signalstärke unbrauchbar "));
while (c != 'w') {
c = Serial.read();
delay(1000);
}
}

Well, if you want to join in this thread, please do but let's be sure you have the same setup as the OP (TO)

What is the exact type of network the module example SIM7600xxx ?

Show how you have connected the module to the Arduino and also how you are powering it.

Code addition is working, thanks. Now look at this interesting output (I only include the output starting with the usual failure): Signal strength is now indicated with -62 dB... and not at all fluctuating. But at the end it is back to -2 dB. Strange. I am not familiar with C-programming, but why is gprs.getSignalQuality used when this is a 4G / LTE module? Or is this just a generic term for wireless signal?
BTW - I am on a fixed power supply for testing, no batteries.

gprs is just the name given to a object of the class CGPRS_SIM76_SSL which handles the SIM7600 module. I guess there is a bit of history there.:

CGPRS_SIM76_SSL gprs;

The actual getSignalQuality() method is here in SIM76_ssl_beelogger.cpp

/**************************************************************************/
/*!
    @brief   get signal quality on the given entwork
*/
/**************************************************************************/
int CGPRS_SIM76_SSL::getSignalQuality()
{
  char buf[8] = "AT+CSQ";
  sendCommand(buf,10000,","); // suche nach Komma zw. rssi und ber
  char *p = strstr(buffer, "CSQ: ");
  if (p) {
    int n = atoi(p + 5);
    if (n == 99 || n == -1) return -1;
    return n * 2 - 114;
  } else {
   return -2; 
  }
}

It looks like it issues the AT command "AT+CSQ" and is prepared to wait up to 10 seconds to find a ',' returned. Once it gets that, it looks for what follows "CSQ". If that doesn't work it returns -2 (which you keep seeing).

What fixed power supply are you using? If that is not particularly strong, that would be one thing to suspect.

Also, what is connected to the Nano pin A2 ? This is in your test sketch #define GSM_Power_Pin A2

You can switch on enhanced debugging by changing the following '0' characters to '1'
in SIM76_ssl_beelogger.cpp

// Debug Information Datenempfang aktivieren, Serial.begin() muss in Hauptsketch
#define DEB_data 0
// erweiterte Debuginformationen
#define DEB_more 0
#define DEB_cmd  0

You may also be able to find some simple tests which involve connecting the serial monitor to the SIM7600 directly and issuing commands to test its network connectivity, say sending an SMS to your smart phone.

Fixed power supply is quite big. I have set it to 10 V which are reduced by the energy management on the mainboard to the 4 V required by the SIM7600E.
Imax I have limited to 15000 mA. The solar powered setup is using two 3.200 mA Li-Ion batteries, so insufficient power should not be a problem.
Anyway - I will test the system with the batteries to make sure there is nothing wrong with my power supply unit (built this myself 30 years ago...).

Pin A2 is connected to the level converter of the SIM7600E.
image
It connects to A2 and then distributes to the upper 1K resistor and the diode IN5818 above it.

I switched on enhanced debugging as you suggested, however, the serial monitor ouput is the same. Is there any other place where I can see the enhanced debugging?

Will find out about the SMS test as soon as I can - next two days travelling. Can it be done with AT+CMGS directly when connecting the SIM7600E via USB, or do I need a sketch for this?

Thanks for all your suggestions so far!

  1. A 15 Amp power supply would appear to rule out any problems with power.

  2. I'm not sure about your description of the connection between Nano pin A2 and your module. I'm guessing that this is (somewhow) connected to POWERKEY/PWRKEY on the SIM7600 module.

  3. I don't understand the problem with the enhanced debugging since that writes to Serial just like the other commands which have written to the serial console. The first thing to suspect is that the file you have modified is not being used by this sketch and maybe there are multiple versions. Rename it and see if there is a complaint at compilation time about it being missing.

  4. I've found this documentation for a DFROBOT SIM7600 module which includes as schematic, instructions and some simple tests. SIM7600CE-T_4G(LTE)_Shield_V1.0_SKU_TEL0124-DFRobot . Is there anything similar for your module ? Some of the tests could be useful. The only thing I noticed is that Software Serial is run at 115200 baud, which is really too high, and the SMS test requires a termination character of 0x1A. Their [DFROBOT's] serial console supports this so maybe try that.

  1. I double checked the power supply unit and actually the gauge has the wrong unit (mA x 100 instead of mA x 10). Remembered, that when I built it we did not have the correct gauge and used this one instead...) Could not believe the 15 A and the real value is 1,5 A. Just to be sure I tried with 5 A (which is max), but the result was the same.
    In Addition I used the setup with the BatteryShield and 2 x 3200 mA batteries also with the same result. So I guess the final conclusion here is, that the power supply is sufficient.

  2. Nano A2 goes to SIM7600E K-PWRKEY
    image
    In between are a couple of resistors, a diode and a bipolar transistor.
    If the routing is relevant I can describe it to you, but generally the system is proven and has been built many times, so I do not think, that the general power supply concept is faulty.

  3. Not sure why, but now I got the extended debugging in the serial monitor.
    It is included in the attached pdf-document. Is there a way to provide this serial monitor outputs in a better way here directly?
    LTE SSL Mode Test 04_Serial Monitor Output.pdf (55,2 KB)
    On the first signal strength feedback the monitor now delivers -72 dB. Anyway, later it still returns a Connect Error and if I look at the Webserver, where the test data should be displayed, nothing has been received there. Does the new output give you additional hints, what the problem might be? Could it possibly be as simple as an insufficiently strong LTE antenna?

  4. Still working on that. In the new monitor output there is a line quite at the beginning stating "SMS done" - could this already be a successful SMS-test?

Until the dBi gets above 3, your antenna looses power, not amplified power or received signal.
Paul