How to connect GPS to BeagleBoneBlue

Santa recently brought us a brand new GPS Receiver – EM-506 (48 Channel). He clearly had to read a GPS BUYING GUIDE as this is exactly what we just needed!

  • 48-Channel Receiver
  • Extremely high sensitivity : -163dBm
  • 2.5m Positional Accuracy
  • Hot Start : 1s
  • Warm Start : 35s / 15s with CGEE
  • Cold Start : 35s / 15s with CGEE
  • Power: 45-55mA at 4.5-6.5V
  • Size: 30mm x 30mm x 10.7mm
  • Weight: 16g including cable
GPS Receiver - EM-506 (48 Channel)

I’ve left Sebi to explore it for couple days, but at some stage he got stacked and couldn’t move forward. It looked like that device is not sending any signals. Well when you get seriously lost it’s a time to RTFM!

On a picture below you can see in a left bottom corner the GPIO and serial JST connectors table. The one we are after is UART (Universal asynchronous receiver-transmitter) labelled as UART (GPS).

BeagleBone - labelled diagram

However connecting our GPS module to that connector did nothing – like completely nothing. Our BBB didn’t register anything, the LED on that EM-506 practically dead.

Another source of information than was EM-506 Datasheet which sort of indicates that it is a potentially power-hungry beast needing 45-55mA at 4.5-6.5V. And that gave me a clue to connect an external power – and voila – RED LED finally turned ON!

Red LED!

Well, Red LED is on .. but what it actually means? Documentation is quite sparse here, not mentioning anything about its colour.

LED indicator for GPS fix or not fix
LED OFF: Receiver switch off
LED ON: No fixed, Signal searching
LED Flashing: Position Fixed

So let’s assume it is powered on. Now how do we read any data out of it? It took a quite a bit of Googling and finally I was able to cross-reference some clues from different projects which indicated to use the tio – a simple TTY terminal I/O application to easily connect to TTY devices for basic input/output. However there are plenty of those on our BBB.

Reading more through the BBB UG, I sort of ruled out that those /dev/ttyOx are those we need to check and started poking them one by one and at some stage one of them (/dev/ttyO2) started printing some garbage on the screen!

Sebi quickly suggested that this is a wrong baud rate and while documentation was again bit too flexible about which baud should we use (Baud rate based on flash memory setting), we applied trial & error approach again and got a text data out on 4800 bauds!

Also our mysterious RED LED started flashing! So what are we looking at?


This is GPGGA – Global Positioning System Fixed Data Output command
UTC Time 124210.000 hhmmss.sss
Latitude 2712.2975
Southern Hemisphere
Longitude 15305.6828
Postion Fix Indicator 1 (GPS SPS Mode, fix valid)
Satellites Used 05
Horizontal Dilution of Precision 2.3
MSL Altitude – +25.5 meters
Geoid Separation +37.9 meters
Diff. Ref. Station ID 0000
Checksum *77

Translated to the GoogleMaps it takes us across the water to Beachmere, Queensland, Australia. Why there (Beachmere is about 10km away) and not to our house? No idea yet, but that’s clearly for another day. šŸ™‚


One thought on “How to connect GPS to BeagleBoneBlue

Leave a Reply