Retired Product

This is a retired product. There is an updated version available: GPS-12751

Creative Commons images are CC BY-NC-SA 3.0

Description: Replacement:GPS-12751. The new rev of the EM-406A is available! Instead of only 20 channels the new EM-506 has a total of 48 and plenty more features, go check it out! This page is for reference only.

The EM-406A GPS receiver from USGlobalSat based on the spectacular SiRF StarIII chipset. This complete module is built upon the same technology as the ET-301, but includes on-board voltage regulation, LED status indicator, battery backed RAM, and a built-in patch antenna! 6-pin interface cable included.

The EM406A module makes a great gift for that special someone who’s interested in playing with GPS. For more gift ideas check out the SparkFun Gift Guide!

Not sure which GPS module is right for you? Check out our GPS buying guide!

Note: The cables we have been getting with these have a gray wire on alternating sides of the connector. Check the datasheet for correct pinout. Don’t pay attention to which wire is gray, reference the pinout of the actual module.

Features:

  • 20-Channel Receiver
  • Extremely high sensitivity : -159dBm
  • 10m Positional Accuracy / 5m with WAAS
  • Hot Start : 1s
  • Warm Start : 38s
  • Cold Start : 42s
  • 70mA at 4.5-6.5V
  • Outputs NMEA 0183 and SiRF binary protocol

Dimensions:

  • 30mm x 30mm x 10.5mm
  • 16g including cable

Documents:

Recommended Products

Customer Comments

  • I can’t seem to get it to lock outside on a clear day. I’m using an mbed controller wired up exactly as it is in the example.

    $GPGSV,1,1,00*79
    $GPRMC,195258.455,V,,,,,,,180212,,,N*43
    $GPGGA,195259.455,,,,,0,00,,,M,0.0,M,,0000*51
    $GPGSA,A,1,,,,,,,,,,,*1E
    $GPRMC,195259.455,V,,,,,,,180212,,,N*42
    $GPGGA,195300.455,,,,,0,00,,,M,0.0,M,,0000*5C
    $GPGSA,A,1,,,,,,,,,,,*1E
    $GPRMC,195300.455,V,,,,,,,180212,,,N*4F
    

    This is what the data looks like that I’m getting. As you can see with the GSA messages it is saying that lock is not available. I’m using this device outside with a clear sky and it is wired up exactly as shown in demonstration. Any ideas?

    This is what it shows when I power cycle the gps. $PSRFTXT,Version2:F-GPS-03-10062312A $PSRFTXT,WAAS Enable66 $PSRFTXT,TOW: 59402718 $PSRFTXT,WK: 167560 $PSRFTXT,POS: 6378137 0 02A $PSRFTXT,CLK: 9625025 $PSRFTXT,CHNL: 1273 $PSRFTXT,Baud rate: 480065

    I tried an external power supply from the lab at my school that was isolated from the 5V supply from the mbed controller and still no lock. I walked around my block, even put the device in my truck on the dash and drove for a half hour thinking movement would help it and still no lock. The device just has the solid red light that never blinks. Is it possible my device is bad?

  • It did its first cold start acquisition from my bench top in under 30 seconds. My trusty old Garmin takes forever to lock up from the same location. The little LED indicator is really helpful too.
    The Serial interface is not RS232. It is TTL level and inverted from normal RS232. The serial signal is 8 bits, no parity and one stop bit. Or at least that’s what works for me.

  • I do a lot of rockhounding in the deep forest, hills, remote areas, canyons, etc…
    This GPS engine really shines, easily handling conditions which throw Oncore VP, STMicro, Asin, Rockwell Jupiter, and other engines I have used, into an endless search for over half an hour with not even a 2D lock (I have a few spots I like to stop and test engines at, while eating lunch).
    Later, I wired in a Lucent Quad-Helix GPS antenna, and on a few mountainous/canyon treks, which in the past have left hundreds of bread crumb track tidbits, due to the loss of signal with the very same antenna, I got a single continous trail log.
    Highly recommended, it ROCKS!!!

    • How do you replace the antenna on the EM-406A?

    • I’d love to know how you removed the existing antenna as well. Though I doubt considering the age of your post that you won’t reply to this thread :-(
      Figured I try anyway.
      chris.

  • Every time I hook up my this GPS module to my arduino using the breakout board here https://www.sparkfun.com/products/11818 the arduino turns off and when connected to my computer displays a message saying that it was drawing too much current. The LED was blinking in the beginning but I cant get it to work since. I hooked it up using this diagram/tutorial http://bildr.org/2011/06/em406a-gps-arduino/. Please Help!!

  • I purchased this GPS, an arduino YUN, and the GPS shield from this cite. To my understanding it is the same as the GPS Retail Kit sold here too. However, when i go to run any code to test the GPS i have NO CONNECTION. Another user said i needed to convert from RS232 to Serial, but i havnt found anything about that in any online guides. Is it possible i have a bad RX-TX connection? how can i test to see what is and isnt working?

  • Greetings all-can’t get new unit to lock or generate any output after two hours in the window–the red light flashes every second. GP-635 locked right away as did another GPS module, so wiring and reception appear to be okay.

    SiRFDemo solution looks interesting but can’t figure out the software option–I’m current running a very simple sketch [loop(); setup();] on an Uno and can’t establish communications.

    DOA, perhaps?

    • Oh no! It sounds like it may indeed be DOA. Contact techsupport at sparkfun dot com with your order number and they’ll be able to assist you further.

  • I have the SparkFun GPS shield and the 406 GPS unit. I have confirmed connection between the GPS RX to Arduino TX and GPS TX to Arduino RX with an ohmmeter. I’m running the current example sketch listed under the GPS Shield listing but I get no data. I do get:

    GPS Shield QuickStart Example Sketch v12

    waiting for lock

    But nothing more. I have open skies and the activity light on the GPS is flashing away but after 7 minutes still nothing is printed out on the serial monitor other than the above two sentences. I have confirmed +5v and GND on the GPS 406 plug to the Arduino board. The sketch compiled OK with no errors. I’m using the UNO board and power through the USB from my laptop. Switch is in the DLINE position and the ON/OFF switch is in the ON position. Does the case of the GPS unit have to be totally insulated from the shield? I mounted it with thin double sided tape but on the prototyping area which I assume is not connected to anything. I may try some double sided foam tape to lift it above the board to see if that could be causing a problem. My old Garmin gets a fix in a minute or two in the same location. Does anyone have any idea of what the heck is going on here? Also posted on the GPS Shield page to cover all bases.

  • I want to interface this GPS with a MCB1700 board (LPC 1768 Microcontroller onboard) through UART. Do i need to use a logic level shifter to interface. The pin on the board says this

    “5v Tolerant pad providing digital I/O functions with TTL levels and hysteresis. This pin is pulled up to a voltage level of 2.3V to 2.6V”

    How much voltage does this GPS receiver ouput? Does it require level shifter to interface with a microcontroller?

  • Has anyone been able to interface this GPS module with the SiRF demo software (for re-configuring the module) through the Sparkfun GPS shield (v14) and an Arduino? And if so, how? Thank you.

  • sentryGun53 :

    1) launch SirfDemo

    2) select Setup/data, choose the COM port

    3) select Action/Synchronize protocol & baud rate

    4) select Action/initialize data source,check Factory reset

  • Measured with an MSO-28 USB scope, the PPS pulse is 1.1 µs wide and 2.8 V high.

    In NMEA mode, the module work fine at 57600 baud :

    $PSRF100,1,56700,8,1,0*36

    and at 115200 baud too:

    $PSRF100,1,115200,8,1,0*05

  • While trying to change the baud rate of this module, I think I mistakenly set the protocol to SiRF by sending this command:

    “$PSRF100,0,19200,8,1,0*39\r\n”

    Now, I can’t get the TinyGPS library to read the incoming data at either 19200 baud or the default 4800 baud (which was working fine before I sent the command).

    How can I set this back to NMEA at 4800 baud?

    • I see that the settings are saved on a battery-backed RAM on the device. Is there a way to factory reset the module, perhaps by temporarily removing this battery?

  • can this be integrate with an fpga?

  • how can I find the baud rate of this gps module?

    • The default is 4800bps. This info is in the datasheet. If you want to change the baud rate, look at the NMEA reference manual.

  • The link to the GPS Tutorial by Michael Simpson appears to be broken.

  • Re My last comment.

    I meant - Because the 1pps pulse is very narrow, many scopes will not detect it.

  • Can anyone tell me what the default paramaters are for the TX port? I have an application which just needs to read the NMEA data - not transmit anything to the GPS. I need to know what to set the port parameters to.

    Is it true that if I am not using the RX port on the GPS I must pull the port up? There seem to be a couple of versions of the datasheet about, one says to do this, another doesn’t say anything.

    Lastly, I tried to look at the 1pps output on a scope to verify it was there. My scope cannot see it. Like many other GPS rx the duration of the pulse is very small so some scopes will detect it. So I used a probe connected to an audio amplifier and could hear 1pps “clicks”. So I assume this helps. I guess you might be able to do this with Walkperson earphones at a pinch.

    It is a very nice little unit and much easier to get results with than some of the “old school” Trimble boards I have. if only the documentation was better….

    Regards,

    Steve

  • I’m having lots of difficulty getting valid data with this module, it seems like every 5 or so sends across the UART are valid. Any reason for this?

    EDIT: data’s not actually valid, it sends this: $GPGSV,3,1,12,22,57,351,,29,56,166,,14,54,179,31,06,51,298,7C
    $GPGSV,3,2,12,21,51,062,26,18,38,030,,03,29,310,,32,19,253,
    7A
    $GPGSV,3,3,12,15,16,040,,16,16,259,,30,10,224,,09,09,079,7B
    $GPRMC,100517.441,V,,,,,,,180612,,,N
    42

  • does anyone know what the maximum altitude is for this receiver?

  • In case anyone is curious, the factory confirmed that these modules have static navigation turned off as default.

  • This GPS receiver hooks up directly to a Nikon D7000 or D90. Both the output voltage of the Nikon (5.9V) and its input level match the specifications. I soldered the cable to it and it worked immediately. No additional components were needed (http://emergingdrake.blogspot.com/2011/10/gps-for-nikon-d7000-or-d90.html)

  • If anybody is curious about using this module as a clock reference, you can get ZDA messages using this command:
    $PSRF103,08,00,01,00*2C\r\n

    • This unit works very well for setting up a GPS clock with NTP.
      Using

      $PSRF103,08,00,01,00*2C
      

      the unit will output ZDA messages about ~100 ms after the PPS signal.

      For my clock project I use PPS line, and set the unit to only output ZDA messages once a second. This setup works very well with NTP.

  • Does anybody know the technical name of the end connector used on the EM-406A cable. We need to order a female plug to fit on a PCB we are designing around this GPS.Cheers.

    • Possibly “ublox”, but here is one:

      https://store.diydrones.com/FTDI_GPS_Adapter_cable_15_cm_p/ca-0001-09.htm

      (Although it looks like it only has 4 cables…)

  • Mine came in a free stuff box unpackaged and the thingy on top is crooked. Can it still be used?

  • Just wondering, I’m using this GPS with an arduino, and want to know if it’s possible to put the GPS into standby or reduced power mode without powering down the arduino. I’m fine with it reacquiring signal when it the GPS is powered up again.
    How would i do this?
    Thanks!

  • I’m getting different TX levels (on pin 4) when I measure pin 4 directly on the EM-406A (from 1 vdc up to 3vdc) and when I measure the TX pin on the output of the evaluation board, < +.5vdc to > -5vdc. My application works fine when receiving signals from the eval. board but not direct from the GPS. Is this normal?

    • The evaluation board outputs actual RS232C for a serial port, which (ideally) swings +5V(space) to -5V(mark) over the course of the signal. Direct from the EM-406A, it’d be just logic-level output, and inverted compared to the RS232C.

  • I purchased an EM-406A GPS with evaluation board. Got good nav “fix” in the basement right out of the box. Ultimately, I want to mount the EM-406A (without the evaluation board) in a vehicle which will supply NMEA data to my APRS Byonics “Pocket Tracker” – which works fine on the bench when receiving data thru the DB-9 connector on the eval board – but when operating the EM-406A without the evaluation board (even though the LED flashes indicating a GPS lock), the Pocket Tracker reports my coordinates as “!0000.000/00000.000”. Any suggestions? Many TNX

  • Can this unit be wired to an arduino w/o the shield? I’m thinking of using this with an Arduino Pro Mini 328 and am trying to aim for a tiny form factor.

    • You can use it without the shield by connecting just 5V, GND, Tx, and Rx but I have yet to get it to work with an Arduino Pro 5V/16MHz so I don’t know how successful you would be with the Pro Mini. It works just fine without a shield on the Uno.

  • I have the EM-406A working with an Arduino board (No sheild), I am able to read everything and the position is lock.
    My question is about the pin6 that provide 1 pulse-per-second. I am trying to see the pulse on a scope (I am probing between pin 6 and pin 1) but I have nothing, do I need to put a pull-up resistor on pin 6 in order to get the pulse? If the answer is yes, what would be the value of this resistor?
    Thanks

    • [edit] The signal is definitely there. It needs no pull-up, but is EXTREMELY narrow. I doubt you’ll ever actually see it on an oscilloscope. It might trigger it but once it starts sweeping it will be gone.

      I actually hooked up an old-fashioned crystal earphone to that pin(A trick I’ve also used to debug serial things) and heard a definite “tick, tick, tick”. It may also trigger a logic probe.

      If you hooked it up to a flip-flop divider, you could turn it into wide pulses that anything could easily read.

  • Would there be any reason why I couldn’t connect the Vcc to a data pin on an arduino mega so that I can control it via a data pin, or do I need to use a transistor to control it? I’ve tried it on a breadboard and it seems to be functional, but I’d hate find out that it will end up drawing too much power down the line or something.

    • Sparkfun feature list says 70ma current, datasheet says 44ma current.
      Either way, I wouldn’t recommend powering it directly from an output pin.

  • Handy setup strings for the EM-406A:
    <br />
    <br />
    *
    NMEA 8N1 various baud rates:
    <br />
    $PSRF100,1,1200,8,1,0,*2D
    <br />
    $PSRF100,1,2400,8,1,0,*28
    <br />
    $PSRF100,1,4800,8,1,0,*22
    <br />
    $PSRF100,1,9600,8,1,0,*21
    <br />
    $PSRF100,1,19200,8,1,0,*14
    <br />
    $PSRF100,1,38400,8,1,0,*11
    <br />
    <br />
    Debug On:
    <br />
    $PSRF105,1,*3E
    <br />
    Debug Off:
    <br />
    $PSRF105,0,*3F
    <br />
    <br />
    Select WGS84 Datum:
    <br />
    $PSRF106,21,*0F

  • I left the example program run for a half our and no fix. Anyone else have the problem? I printed out the data coming in from newsoft serial and it looks like valid NMEA data, just not acquiring any sats.

  • Does Sparkfun leave these modules set at the factory defaults of 4800 8N1 NMEA protocol as shipped from Sparkfun, or does Sparkfun reconfigure them prior to shipping?

    • We do not reconfigure these before shipping. They should be set at 4800 8N1 when you receive it.

  • I would be very interested to see if anyone has written any elegant code to translate the Lat/Lon data into UTM (Universal Transverse Mercator) format.
    Is anyone aware of such code?
    I looked into writing some myself and the formulas appear to be pretty messy, so I figured I’d check first rather than waste a lot of time doing what’s already been done.

  • Can anyone comment/help me understand the 5m accuraty with WAAS in the feature set? I have the EM-406A module, and not sure how to enable this (if possible).

    • Download SirfDemo software for free. This allows you to change settings in the receiver through your computers serial port. One setting allows enable/disable of WAAS.

  • I’m thinking of deploying this (EM406) module on an ocean buoy hooked up to some telemetry so that I can check on the buoy’s position.<br />
    Does anyone have an opinion as to whether or not the normal wave action (not a storm) will allow the module to achieve a lock? Thank you, Marc

    • I think you don’t have much to worry about in terms of buoy motion. Modules like this are at the heart of recievers used in cars, and such units maintain lock under vehicle motion that is more extreme than what a buoy would experience. (GPS works fine in a jet going 500 mph, too.) This unit should work nicely for your application – just keep it above the sea surface, and I don’t just mean dry. Water will severly attenuate a microwave signal and compromise lock.

  • Is it possible to pull out raw GPS measurements from this chip. Such as pseudorange measurements witha PRN number of the transmitting satellite. I would also appreciate a web link to highly detailed documentation of data that can be pulled out from this ship set. THANK YOU :)

  • I did some fields measurements.
    Conditions:
    - unit stationary
    - clear sky, no obstructions
    - position sampled 391 times
    Results:
    Radius of circle enclosing 50% of the samples: 0.76 m.
    Radius of circle enclosing 95% of the samples: 2.05 m.
    All measurements were within a 2.3 m (lat) X 2.5 m (lon) rectangle.
    Notes:
    1. The circle centers are the sample mean. The sample mean itself was in error by about 1 m, per inspection on gpsvisualizer.com.
    2. The unit has a resolution of 1e-5 lat/lon, or about 1 m.

  • Here is a essential web site to get you started fast ====> http://arduiniana.org/libraries/newsoftserial/

  • Be sure to get the corresponding GPS Shield. The connector is MORE than mildly inconvenient. I’d go so far as to say the pins are ‘inaccessible’ without the GPS Shield.
    Anybody have a source for the receptacle of this cable? I’m having a hard time sourcing one in Los Angeles.
    I guess one could cut the end off and solder on you’re own wire, but I doubt this is a recommended solution.

  • This unit makes GPS very easy with Arduino, have a look at the things I made with it here - http://wp.me/pQmjR-Ty

  • Mine takes up to 2 minutes to start streaming data if I haven’t turned it on in a while and if it’s more than a couple hundred feet from where I last turned it on. Other than that it works exactly as described. I’ve found that the TinyGPS arduino library is extremely helpful for parsing the NMEA data: http://arduiniana.org/libraries/tinygps/

  • Not sure if anyone else has had this issue but this unit is returning very precise information… it’s just not accurate. My position is consistently reading about 20 miles south and 5 miles east of where I really am.

    • Are you sure you’re treating your data correctly? I originally thought I was having a similar issue until I realized that it gives coordinates in degrees and minutes (with the decimal in the minutes number) rather than degrees and decimal degrees. This information is in the NMEA spec.
      Plotting the coordinates on google maps gave me a location about 8 miles from my real location, but correcting the format gave me my actual location to within 10 ft.

      • Oren, thank you! This was the problem I was seeing. After going through the NMEA spec I’ve cleared it up. Thanks so much =).

      • Shazb0t, if this isn’t the case, drop us an email at tech support

  • PUBLIC SERVICE ANNOUNCEMENT: THIS UNIT WILL NOT WORK AT AN ALTITUDE OVER 18000 METERS (60000 FEET)
    This unit uses a Sirf-III GPS chipset has a limitation that buyers should know about. THIS UNIT WILL NOT WORK AT AN ALTITUDE OVER 18000 METERS (60000 FEET). This doesn’t matter to most people, but is important to hobbyists that take part in high altitude weather ballooning, amateur rocketry, etc. Someone I know mistakenly purchased a Sirf-based unit for ballooning and I’m hoping to save people from making the same mistake.
    I’m going to post this in the comments section of all the Sirf-based Sparkfun products in the hope of saving someone from from making the same mistake. I apologize if the Sparkfun guys consider this spamming, that isn’t my intent. It, also, isn’t my intent to drive business away from Sparkfun. They have an awesome collection of GPS products and many of the other modules don’t have this limitation.

    • Thanks for this! I was looking at buying this module for a high-altitude project that I am working on. Any recommendations of a receiver that will function around 120,000+ feet? Assume that the other issues of radiation, temperature, etc are solved.

    • What are you doing at 60,000 feet? flying a top secret military fighter aircraft?
      Dude, today’s airliners fly at 35,000 to 40,000 feet.
      and if your using high altitude balloons, why do you need gps data the entire time? it doesnt matter till it starts coming down.

      • To add to this, having been on quite a few balloon flights, half the fun is the chase, and you can’t do that unless you’re getting real-time position data while the thing has caught the jet stream at 90,000' and is heading for Kansas at 100mph…
        Once it bursts, GPS fixes are dicey since the payload can be falling in excess of the speed of sound and tumbling like mad. If you’re already chasing it, you can get close enough to the drop zone to actually see it hit the ground (which greatly increases your chances of recovering it). It’s great fun to be in a caravan madly navigating dirt roads in the middle of nowhere, making educated guesses of wind direction at various altitudes and how fast the thing is falling to get yourselves as close as possible to the landing point.
        Needless to say balloon flights are a BLAST. Check out www.eoss.org for flight reports and examples of the realtime maps they generate.

      • Actually you’d want to be under the balloon fairly quickly as it comes down fast.
        For those who don’t know, the 60,000 ft is one of a few dynamic limits put on GPS modules for civilian use, the 60,000 ft limit is the most used.
        Some units have been found to break that limit, obviously from the above post, this isn’t one of them.

        • Thanks for the info, I had no idea. Is there any way around this? Preferably one that doesn’t end in jail time. :)
          (Yay for commenting on an 18 month old post.)

          • Probably way too late for you, but I wanted to add that receivers based on the u-blox 6 chipset will definitely work up to 50 km altitude and 500 m/s speed (independent limits). Above 600 m/s, position will not be reported. Otherwise, there is no limit on altitude alone.

          • You could create your own homebrew GPS receiver.

            http://lea.hamradio.si/~s53mv/navsats/theory.html

          • Not that I am aware of

  • I’m wondering if anyone could point me in the direction of information concerning the considerations involved in choosing/designing an enclosure for a GPS module such as this one.
    What sorts of materials are the GPS frequencies particularly transparent and/or opaque to? How direction dependent is the reception of the ceramic antenna?
    Both experience and experimental data welcome.
    Thanks,
    Ian

    • Plastics: Most will work just fine. There are a few that are implanted with metal, but they are very rare. So as long as you use thin-ish plastic (less than ¾") you should get fine reception.
      Antenna: Make sure you point the ceramic up. All other orientations will skew the location and lose potential satellites. It doesn’t have to be perfectly flat, just up. Be sure to checkout our GPS tutorial (buying guide) mentioned in the product description for more on antennas.

    • A good way to tell if a material will attenuate or absorb RF energy is to briefly subject it to microwave radiation. Put the material to be tested in your microwave oven, briefly start the oven and see if the material gets warm. If the material heats up (especially if it heats rapidly) It likely absorbs RF energy and would not be a good candidate for enclosing antennas.

  • Greetings,
    I want to reduce consumption GPS module without disconnecting the power supply so as to allow a hot start when prompted and the position within 1 second.
    thank you very much.

    • A hot start is when the module has stored the location of satellites in memory. When powering back on it looks in these location for satellite data.
      This particular module has a built in backup power supply. AS long as you stop and start the module in the same place it should hot start.
      If you move a long way away from the ‘turn off’ position, then a warm or cold start may occur.

      • want a liltle help can this em 406 a can be attached to an fpga module?

        • Yes, almost certainly. The device uses a standard UART interface for communication.

          Don’t take this the wrong way, but if you’re asking a question like that, then an FPGA is likely going to be over your head (for now)?

          A simple microcontroller (such an Arduino) might be simpler. Good luck in your endeavours!

  • It’s fantastic!
    Just bought, Powered inside my home, near a windows, and in 12 seconds it found the signals!
    I’m using in my system of telemetry!
    http://sites.google.com/site/ricolk32/telemetria

Customer Reviews

No reviews yet.