For everybody developing electronic boards, getting GPS data is very useful.

Thanks to this receiver, you can now pair with LE GPS app and upgrade your projects to position aware device!

Hardware target

This receiver version is dedicated to the nRF51822 excellent Bluetooth 4.0 Low Energy SoC designed by Nordic.
See Nordic nRF51822 for more info
One of the best ready to use submodule on the market is the MDBT40 from Raytac.

Free firmware

Availble on my Github page with all info.

This free firmware can run on any nRF51822 with this capabilities:

  • 256 KB of flash.
  • 32 KB of RAM.

Please note that you may find previous revisions of this SoC with 128 KB of Flash or 16 KB of RAM. This firmware may or may not work on it, as it is untested for the moment.

Specially designed for happy hobbyists, this version has been tested and runs on the RedbearLab Nano board v1.5. (v1.0 has only 16KB of RAM, it might work, but I didn’t try).

RedbearLab Nano

RedbearLab Nano

The RedbearLab Nano board is really easy to use and integrate in any Arduino, Raspberry Pi, etc. projects.
Use the MK20 RedbearLab USB board to flash this firmware. This firmware already contains the S120 Softdevice.
If you don’t feel soldering or flashing, I sell ready to use Nano boards. Contact me for that.


The pairing with LE GPS transmitter is really easy and automatic. Turn on LE GPS or any other standard LNS capable device.

Turn on your nRF51822 board. LE GPS Receiver firmware boots up and starts to scan for a GPS. Once LNS found it tries to pair and bound. You might need to accept on the GPS side the pairing process. Then the receiver starts to get GPS data and produces the ouptput.


This free version will ouptut data to the UART:

  • 38400 Baud rate
  • 8n1
  • No flow controll

This allows you to directly get bytes on an Arduino or a Raspberry Pi for example.

Please note that the UART I/O are 3.3v only! Raspberry Pi is ok, Arduino are mostly 5v, so it needs a level adapter.


Once the UART connected and LE GPS bonded, you’ll receive a stream of ASCII bytes.

For easy parsing, each line is terminated by \r\n characters (0x0D 0x0A).

The data sentences start with a $ character and data are comma ( , ) separated.

Boot header

When the device is powered up, it shows this header

Copyright (c) 2015 XD Appfactory.
All Rights Reserved.
LEGPS receiver free version 1.0


Once the GPS send a valid position, you’ll receive this sentence:


The construction of the sentence is $LEGPS-POS,1,2,3,4,5 where:

  1. Latitude in degrees
  2. N for north, S for south
  3. Longitude in degrees
  4. E for East, W for West
  5. Altitude in meters


If the GPS send a valid time, you’ll receive this sentence:


The construction of the sentence is $LEGPS-UTC,1,2,3,4,5,6 where:

  1. Year YYYY
  2. Month MM from 1 to 12
  3. Day DD from 1 to 31
  4. Hours HH from 1 to 23
  5. Minutes MM from 1 to 59
  6. Seconds SS from 1 to 59


If the GPS send heading or speed, you’ll receive this sentence:


The construction of the sentence is $LEGPS-MOV,1,2 where:

  1. Speed in meters/second
  2. Heading from 0 to 360 in degrees


If the GPS send its battery level, you’ll receive this sentence:


The construction of the sentence is $LEGPS-BAT,1 where:

  1. Battery level over 100 (as in %)

PRO firmware

As a freelance I offer my services to create a professional version of this firmware with many upgraded features. I can also add specific and custom features.

Feel free to contact me for any requests.

SoC support

I can build a specific firmware for 128KB of flash and 16KB of RAM


You can get a specific firmware with SPI support.

You can get UART flow control, multiple Baud rate support.


Get professionnal NMEA output to feed a standard GPS data parser.

Comments are closed.