reset SKM53 baud rate (SOLVED)


I've managed to get my SKM53 GPS module running until I changed the baud rate. Since then I am able only to read garbage characters from the module's serial. Of course I've configured the serial to the baud rate set. Is there a way to factory reset the module?

gpsSerial.println("$PMTK251,115200*1F"); // this is how I've set the GPS baud rate
gpsSerial.begin(115200); // this is how I've set GPS serial line baud rate
gpsSerial.println("$PMTK104*37"); // this doesn't work as I can't communicate with GPS

SKM53 has a reset pin but it does nothing when connected to +5V and stops communication while connected to GND.

The module:

Looking forward to see any hints. Best regards.

After many various attempts I've made one desperate - switched VCC and GND for a second. It has reset the GPS module!!! :open_mouth:

Now currently working or not???

You just connect respective pin GND, VCCC, TX and RX pin and open Serial Monitor With bare minimum program. where you can get data . Check whether read garbage value or not

AMPS-N: Now currently working or not???

After module reset all works and is back to normal. But changing baud rate (by eg $PMTK251,38400*27) makes it producing garbage even if i set gpsSerial.begin(38400); :~ Not sure if I have enough courage to change it again from the default 9600...

AMPS-N: You just connect respective pin GND, VCCC, TX and RX pin and open Serial Monitor With bare minimum program. where you can get data . Check whether read garbage value or not

Sure, It was working before I first changed baud rate.

Can you paste your code Here.
Here have attached Code for your reference, You can use this code directly with Setup as mentioned.

also try to attach your code along with error on Serial output monitor

main_c.rar (1.5 KB)

Thanks AMPS-N, but your code doesn't contain code telling GPS module what baud rate to operate on. It only tells Arduino to talk with GPS module @ 9600.

You might not check code Properly . about GPS tx and TX pin defined under GPS.c. also baudrate set to 9600. extract code and connect tx-8 and rx-9

I know the baudrate is set to 9600 in your code. My GPS module now communicates with arduino @ 9600, but I want it to communicate at higher speed.

But nevermind, we clearly don't understand each other.


when i use your main_C code i got some errors , i have take snapshot of these error and attach it.please check and give me the solution

Hy, i have a similar problem:
I have an Arduino DUE connected to a Adafruit ultimate GPS Breakout on Serial1 port (pin 18, 19).
The GPS is powered by the DUE board.

I can connect to GPS at 9600, but i want to set a higher baud rate (57600), but it run only after a board reset (pushing reset button on board) or opening the IDE serial monitor (that force a board reset).

If i not change the default baud rate all work ok (without need a reset).

Why this ?
There is something wrong in the Serial configuration ?
Can i debug it ?


This is my code:

#include <TinyGPS++.h>

static const uint32_t GPSBaud = 9600;

// The TinyGPS++ object
TinyGPSPlus gps;

int led = 13;

void setup() {

  pinMode(led, OUTPUT);

  //Serial1.flush(); // with or without this not work
  // Other GPS Config
  Serial1.println("$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28"); // message output
  Serial1.println("$PMTK220,200*2C"); // 5hz NMEA
  Serial1.println("$PMTK300,200,0,0,0,0*2F"); // 5hz FIX
  Serial1.println("$PGCMD,33,1*6C"); // get antenna status

  Serial.println(F("A simple demonstration of TinyGPS++ with an attached GPS module"));
  Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
  Serial.println(F("by Mikal Hart"));
  digitalWrite(led, HIGH);
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);
  delay(1000);               // wait for a second

void loop() {
  // This sketch displays information every time a new sentence is correctly encoded.
  while (Serial1.available() > 0) {
    char c =;
    if (gps.encode(c))
  if (millis() > 5000 && gps.charsProcessed() < 10) {
    Serial.println(F("No GPS detected: check wiring."));

void displayInfo()
  Serial.print(F("Location: ")); 
  if (gps.location.isValid()) {
    //digitalWrite(led, HIGH);
    Serial.print(, 6);
    Serial.print(gps.location.lng(), 6);
  } else {
    digitalWrite(led, LOW);

  Serial.print(F("  Date/Time: "));
  if ( {
    digitalWrite(led, HIGH);
  } else {
    digitalWrite(led, LOW);

  Serial.print(F(" "));
  if (gps.time.isValid()) {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
  } else {