For my upcoming Arduino Project i needed a GPS module.

I found a BIG problem with this method,
after you cut the power to the module, the baud rate resets its self to Factory setting.
You can connect a battery to de backup power, but this isn’t always practical

i'm going to try to fix this problem.

I’ve fixed the problem, and changed this instructable!
by using the orignal software of 

I bought one, but could not get it working

finely I found out how to fix this,
and I wanted to share this if you ever want to do the same :)

Step 1: Getting Started:

For my upcoming Arduino Project i needed a GPS module,
The project contains a Arduino, GPS Module, a bunch of sensors, a grafic LCD and a car :)

so I order one from EBay.
a MT3339 PA6C GPS

on the page said that the Baud rate of the Module was 115200.
I did not think I would matter, so I order the part.

After I received the part I hooked it up to my Arduino en protoboard.
I found 2 libraries for Arduino i could use with my GPS

- Adafruit: https://github.com/adafruit/Adafruit-GPS-Library
- TinyGPS http://arduiniana.org/libraries/tinygps/

Step 2: Raw Data

To get an idea of the data that was send from the GPS module I connected the GPS strait to the RX and TX port of the Arduino

(GPS) RX  --> (Arduino) 0
(GPS) TXS --> (Arduino) 1
(GPS) Power -->  Arduino 3.3v
(GPS) GND --> (Arduino) GND.

and used no code at all.

void setup() {}
void loop() {}

The data I received in the Serial monitor (baud rate of 115200)


as you can see, there are some numbers, and a set of coordinates.
I can figure out the speed on the basis of the data.

but I wanted to use the one of the Libraries.

Step 3: Problems

So I used Adafruit LIB.
(example file: Parsing)

I change the wires to match the input as in the Arduino File

But the data coming out of de Serial monitor was:

Adafruit GPS library basic test!
Time: 0:0:0.0
Date: 0/0/200
Fix: 0 quality: 0

no fixes or info whatsoever.

After a close look I found out that the GPS baudrate was set to 9600.


I changed it to 115200, a set by the Seller.
to my despondent did dint work.

After some googling and probing I found out that the GPS baud rate was TO fast for the Arduino to handle.
So I had to bring I down to 9600.

Step 4: Changing the Baud Rate

For the program to work you’ll need a USB-to-serial adapter,
A Arduino can do this just fine, thanks to its onboard ATMEGA16U2.

Fist Load a Empty program on your Arduino:

void setup() {}
void loop() {}

Connect the wires:

(GPS) RX  --> (Arduino) 0
(GPS) TXS --> (Arduino) 1
(GPS) Power -->  Arduino 3.3v
(GPS) GND --> (Arduino) GND.

Download the file attached on this page, names "MT3339-Tool-and-Firmware.zip"

-Unpack the zip.

Although this is the official Software and Firmware from the 
you must pay attention to what you’re doing.
If not used properly, for example: selecting the wrong Agent or ROM you could brick
your GPS unit.
And am not responsible for your mistakes!

-Start up “PowerFlash.exe”.

-Click the “Download Agent” button. (See picture 1)

-Select “MTK_AllInOne_DA_MT3339_E3”.

-Click the “ROM” button.

-Go into the “MT3339” map and Select one of the 3 files:

the file names explain there properties
for example:  AXN2.10_5013_3339_96.1151100.1

3339 = Model number.
96     = baud rate without the zeros (9600).
1 = 1 Hz.

You see I included the 115200-10Hz and the 38400-5Hz files as well,
just incase you want to go back to the High baud rate.

-Click "Connect"
-Click "Download"

-The program now run for a minutes or 2.
it will first show a red progress bar, and then a blue one.

-After its din you will see the text

Flash Download]
     Flash Type:[AMD] AM29DL640D/G, AM41DL6408G, S29JL064H
     Take(57) secs to test.

Or something like this (See picture 2)

-and finally  hit “STOP

-You can check this by Opening Arduino SDK, Opening the Serial Monitor, and setting the baudrate to 9600

(See picture 3)

-Pull out the power, wait a few seconds, en power it back up,

-now open the serial monitor again at 9600 baud rate.
 u will see more date, even after its power down!

Step 5: DONE

You now have change the Baud rate of the GPS module,
even after power loss!

To check this again and have useful data, reload the Adafruit (parsing) example file.
reconnect the wires to the correct inputs.

Check the Baud rate is set to 9600


Open the Serial monitor.
And if everything went as is should, the Serial monitor must display something like this:

Adafruit GPS library basic test!

Time: 21:24:35.0
Date: 11/8/2013
Fix: 1 quality: 1
Location: 5143.6821N, 517.1298E
Speed (knots): 0.44
Angle: 275.06
Altitude: -7.70
Satellites: 8

<p>That was a good article! Thanks! Could you please provide the source of the firmwares, or at least the one for the 3339, 4800 baud and 1Hz??</p><p>Thanks in advance,</p><p>Stelios.</p>
Thank you a lot ! I was digging this way too but didn't found this software. Thanks again.
Hi, and thx for this instructable which is just in time with the arrival of my MT3339. I was having the same issue you have. But mine even don't change baudrate at all with your methode. Do you have an idea?
Oke, ive fix the problem, Read the instructable again :)
I am now looking for a method to change the settings by sending a code,<br>this code must be send each time you power down/up the GPS.<br>at the moment I haven&rsquo;t time to test this, but I will try it as soon as possible.<br><br>here a list with the commands:<br>http://www.adafruit.com/datasheets/PMTK_A08.pdf<br>at page 8 you will find the command to set the baud rate.<br>

About This Instructable




Bio: I’m a 28 year old Programmer with a interest in Electronics and Cars
More by bram2202:3D Printer Compact Arduino GPS Speedo + and more Change Baudrate of MT3339 With Arduino (fixed) 
Add instructable to: