MKR1400 uses same amount of current after applying LowPower.deepSleep()

I am simply connecting a battery to an MKR 1400 board and measure the current usage which is about 50mA.
The problem is after I apply LowPower.deepSleep(), which works fine as I lose USB logging usually, the power usage is still 50mA. Any help would be appreciated.

The problem is after I apply LowPower.deepSleep(), which works fine as I lose USB logging usually, the power usage is still 50mA.

How do you accurately measure the power consumption if the USB is still connected?

Post your code. Do you put the GSM module into power off mode? You can start it again using the PB08 pin of the SAMD21.

The USB is not attached. I put an inline multimeter. The connection is to Vin or Vcc.
This is the full code:

/*
 SMS sender
 This sketch, for the MKR GSM 1400 board,sends an SMS message
 you enter in the serial monitor. Connect your Arduino with the
 GSM shield and SIM card, open the serial monitor, and wait for
 the "READY" message to appear in the monitor. Next, type a
 message to send and press "return". Make sure the serial
 monitor is set to send a newline when you press return.

 Circuit:
 * MKR GSM 1400 board
 * Antenna
 * SIM card that can send SMS

 created 25 Feb 2012
 by Tom Igoe
*/

// Include the GSM library
#include <MKRGSM.h>
#include <ArduinoLowPower.h>

#include "arduino_secrets.h" 
// Please enter your sensitive data in the Secret tab or arduino_secrets.h
// PIN Number
const char PINNUMBER[] = SECRET_PINNUMBER;
const int pin = 8;

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup() {
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  //while (!Serial) {
   // ; // wait for serial port to connect. Needed for native USB port only
 // }

  Serial.println("SMS Messages Sender");

  // connection state
  bool connected = false;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while (!connected) {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
      connected = true;
    } else {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
    // Attach a wakeup interrupt on pin 8, calling repetitionsIncrease when the device is woken up
  LowPower.attachInterruptWakeup(pin, repetitionsIncrease, CHANGE);
}

volatile int repetitions = 10;
void repetitionsIncrease() {
  // This function will be called once on device wakeup
  // You can do some little operations here (like changing variables which will be used in the loop)
  // Remember to avoid calling delay() and long running functions since this functions executes in interrupt context
  repetitions ++;
}


void loop() {

  //Serial.print("Enter a mobile number: ");
  //char remoteNum[20];  // telephone number to send sms
  //readSerial(remoteNum);
  //Serial.println(remoteNum);

  // sms text
  //Serial.print("Now, enter SMS content: ");
  //char txtMsg[200];
  //readSerial(txtMsg);
  //Serial.println("SENDING");
  //Serial.println();
  //Serial.println("Message:");
  //Serial.println(txtMsg);

    digitalWrite(LED_BUILTIN, HIGH);
    delay(100);
    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
  // send the message
  sms.beginSMS("0413556955");
  sms.print("MKRAutoSend");
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");
  //delay(5000);
  LowPower.deepSleep();
}

/*
  Read input serial
 */
int readSerial(char result[]) {
  int i = 0;
  while (1) {
    while (Serial.available() > 0) {
      char inChar = Serial.read();
      if (inChar == '\n') {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if (inChar != '\r') {
        result[i] = inChar;
        i++;
      }
    }
  }
}

The USB is not attached. I put an inline multimeter. The connection is to Vin or Vcc.

You wrote the opposite: "which works fine as I lose USB logging usually,". You cannot loose the USB logging if the USB is not connected.

This is the full code:

As I assumed, you don't power down the GSM device before going to sleep (AT+CPWROFF).

That was a separate test using USB. Later I directly powered the pin. Inst LowPower.deepSleep() suppose to shut down all GSM stuff. I added this gsmAccess.shutdown() but still the power usage stays constant after and before these commands.

LowPower.deepSleep() suppose to shut down all GSM stuff.

That's not true. Please link to the documentation that says that the GSM module is shut down too.

I added this gsmAccess.shutdown() but still the power usage stays constant after and before these commands.

Post a wiring diagram of your setup that also shows how you measure the current consumption! If above command doesn't change the current consumption I get the impression that your measurement or powering method is not correct.

I attached the diagram. I also applied the gsmAccess.shutdown().