Dear all,

i want to run the INS APP but most of the times the NMEA messages are not seen by the openimu and so there isn't position available.
I have the openimu 300ZI eval kit, u-blox zed-f9p and pc running ubuntu 18.04 with u-center 20.01 and vscode.
My procedure is the following:

  • everything is connected in the right way because sometimes i was able to let it work (so, if the connection was incorrect i would never get position in aceinna navigation studio)
  • i connect ublox to pc and i set in ucenter the required NMEA messages to output on UART 1 (RMC, GGA, VTG);
  • i open vs code (build the app, upload it to openimu board);
  • run openimu (once connected with cli i can see all the parameters included those for gps);
  • if i type record it writes me a csv file with the columns of GPS position all 0;
  • if i run python and i open aceinna navi studio in chrome it has the same behaviuor (works everything but no position from gps);
    I can't figure out why sometimes it works and sometimes not; i always do the same procedure.
    I'm a little bit confused.
    Con anyone help me?



I followed this connection.

Since you make it work sometimes, I assume the connection and baud rate are right. So you can first check if NMEA is the only output message via ucenter. You can do this using some serail tool on PC to see the output from the receiver.

Yes, i've already checked it. I've enabled NMEA GGA, RMC,VTG as the guide says. Opening a serial monitor or via text console of u-center i can see them.
What could be the problem?
I'm running out of ideas.



please check your GPS baud rate, in source code and in u-center.

In a serial monitor, can you see other messages than NMEA GGA/VTG/RMC? There may be some binary-format packets that should be disabled. Besides, are you sure the GPS protocol in the INS app is configured to NMEA?
If the above are confirmed, you need to dive into the taskGps.c to figure out why.

In the file Userconfiguration.c is set to NMEA protocol and 115200 gpsbaudrate.
In ucenter i've disabled all msg other then the three NMEA that i need. My target is to let them communicate via UART1 so in ucenter i have activated the UART1 and USB (just to see if i can see message on serial monitor) in port configuration.
Maybe this could be a problem?
Anyway in the manual is said that if i want to use header P2 (where i have actually connected rx out and tx in of the GPS) the header on 5-6 of P1 should be off. For example if Serial Channel 1 used for connection with some external device (GPS or other).
But this is in contrast with the photo of pin connection that i have found where is clear that every jumper on P1 is ON.


Hi matteo,

I tried both the jumper ON and OFF, it worked fine.
When I first got this app to work, I tried the following steps. You can follow these steps.

  1. Are you using the latest code? The latest code should be released around late in 2019. If no, get the latest code and then continue. If yes, Continue.
  2. In the function TaskGps() in taskGps.c, you can check (by debugging in vscode or outputting debug messages) if the app can run to the line

If not(unlikely), please tell me. If yes, that means the taskGps is working, and continue.
3. In GPSHandler(), check if the app can run into


and then into

parseNMEAMessage(tmp, gpsMsg, GPSData);

If so, that means the app can run into the GNSS message decoder as in UserConfiguration.C, and continue. If not, you need to check your configuration.
4. In parseNMEAMessage(), you can see the final results. There are a few things you can do.
4.1 check if gpsMsg contains actual NMEA messages.
4.2 check if the app can run into processNMEAMessage().
4.3 in processNMEAMessage(), check if the app can run into _handleNMEAmsg().
4.4 and in _handleNMEAmsg(), you can check if all three messages can be decoded.

You can actually directly check step4.

Log in to reply