RAK1910 not getting any gps

Hi, I have the RAK1910 connected to the RAK4631 via the RAK19007, a RAK1904 is also connected.
I’m programming with Arduino BSP using this github example https://github.com/RAKWireless/WisBlock/blob/master/examples/common/sensors/RAK1910_GPS_UBLOX7/Readme.md .
The code works and everything but I can’t get any decoded location, this is what I get :

I also tried to use the GPS tracker code but I get the same thing, no gps.
I positionned the device next to a window where I get satellite connection with the RAK field tester and I’ve for more than 15 min with nothing coming out. I know that device get some gps because when I print the tmp_data I can see the time, the date and even the coordinate.


But I also get some pretty funky stuff :

I’ve read in this topic that you need to use the code from github and not the arduino example but it doesn’t change anything.

Yes I tried multiple time on different location and outside, yes the gps antenna is connected, no the module is not crooked on the 19007.

Do you have any idea of what it could be ?

I’ve been in this situation before where RAK1910 isn’t getting any data. I cant exactly recall but it just suddenly works maybe because I tried to fix the antenna connection, or maybe the fixing time is enough.

My idea in your case is the when you test on RAK1910 example, the almanac is not updated yet then when you switched to the GPS Tracker example, the almanac was updated so you can now see coordinates when you print tmp_data.

You can try again on RAK1910 example if you can now see coordianates.

As for the GPS Tracker, the tmp_data is appended by the received char c for the 1 second in a for loop so you see how it is being incremented. Instead of printing tmp_data, it might be better just to print the char c that was received.

Were you able to send uplink? If not, then the newData flag wasn’t set which means the GPS library wasnt able to parse the GPS NMEA values.

Hi, thx for your answer, I don’t really get what the almanac is. For the NMEA packets, I was able to get those with the 1910 example code, not the GPS Tracker. I let it run for couple of hours now but nothing changed, still no location printed out on the serial monitor. I removed the board from the encIoser and also tried to reconnect the board and the antenna.
For the GPS tracker code, I was able to see the join request on TTN and the device was connected to TTN but nothing more since it wont send a uplink without gps coordonate.

Hi @NinoFa ,

I understand now that you get the NMEA data on RAK1910. Thanks for clarification.

However, this one you shared is the printout of the tmp_data which comes from the GPS Tracker example.


As I previously said, instead of printing the tmp_data, just comment out the line that print the variable c so what you will see are the char by char data coming from the UART.

This is the GPS Tracker code and I highlight some sections that I think can be helpful on us troubleshooting.

  • Serial.write(c); - Let’s see if we get the NMEA data.
  • gps.encode(c) - It could be that this function fails to parse so newData is not asserted high.
  • if(newData) - Was this condition satisfied? Or it is really 0 and ignored?

Here’s what I got :

Also I added a lign in the end :

I think that the NMEA packet are shifted once I start receiving some gps information, above I received the time and date. The device is inside a building so no coordinate yet. I did receive coordinate using my phone for the serial monitor next to a window and everything seems to get mixed and shifted.

However, when I start the device I get a organized packet without shift :

Here is what I get with Hercules, you can see everything :

$GNRMC,072455.00,V,250124,N62{0D}{0A}$GNVTG,N2E{0D}{0A}$GNGGA,072455.00,0,00,99.99,79{0D}{0A}$GNGSA,A,1,99.99,99.99,99.992E{0D}{0A}$GNGSA,A,1,99.99,99.99,99.992E{0D}{0A}$GPGSV,1,1,01,18,3577{0D}{0A}$GLGSV,1,1,0065{0D}{0A}$GNGLL,072455.00,V,N55{0D}{0A} CHARS=140648 SENTENCES=0 CSUM ERR=0{0D}{0A}{0D}{0A}$GNRMC,072456.00,V,250124,N61{0D}{0A}$GNVTG,N2E{0D}{0A}$GNGGA,072456.00,0,00,99.99,7A{0D}{0A}$GNGSA,A,1,99.99,99.99,99.992E{0D}{0A}$GNGSA,A,1,99.99,99.99,99.992E{0D}{0A}$GPGSV,1,1,01,18,3577{0D}{0A}$GLGSV,1,1,0065{0D}{0A}$GNGLL,072456.00,V,N56{0D}{0A} CHARS=140914 SENTENCES=0 CSUM ERR=0{0D}{0A}{0D}{0A}$GNRMC,072457.00,V,250124,N60{0D}{0A}$GNVTG,N2E{0D}{0A}$GNGGA,072457.00,0,00,99.99,7B{0D}{0A}$GNGSA,A,1,99.99,99.99,99.992E{0D}{0A}$GNGSA,A,1,99.99,99.99,99.992E{0D}{0A}$GPGSV,1,1,01,18,3577{0D}{0A}$GLGSV,1,1,0065{0D}{0A}$GNGLL,072457.00,V,N57{0D}{0A} CHARS=141180 SENTENCES=0 CSUM ERR=

I used a online decoder and I get my position :

Hi @NinoFa ,

I did test on my end. Fixing of GPS took around 8mins.

To display the Long, Lat value, I have to put it in main loop else the code can stop. I also introduce new variables that will hold the long and lat values so I can display them.


Here’s the screen shot of the data.

I am using TTI Sandbox and I can decode the payload as welll.

It appears to me that your setup wasn’t able to decode the gps coordinates.

So I tried few things, but I think that the gps.encode(c) function never return true, even when I have a gps fix.
I’ve added some serial print but I never get those.

I also tried to set newdata to true manually but I can’t get the latitude and longitude and it print ** No characters received from GPS: check wiring **, even though I can see the time, date, coordinate, etc in the nmea packets.

Is possible the library is no more suited for the gps module ? Is the module broken or something ?
I’m gonna try to download a older version of the tinygps library.

Do you have any suggestion ?

Thx anyway for your help.

My bad there’s no older version of tinygps X)

Do you have any suggestions ? I’m running out of idea …

Hi @NinoFa ,

It is very likely that the library wasn’t able to parse it correctly. You can try to use a different library like the more maintained TinyGPSplus. But you have to adjust the code.

If you want to still use TinyGPS, you can try this suggestion.

If you look on our NMEA sentences, my setup has $GPRMC and $GPGGA that produces the coordinates. While in your setup, you have $GNGGA. This different likely causes the error that’s why the coordinate are not parsed correctly.