Radek Suski
Radek Suski

Reputation: 1392

No GPS on Raspberry Pi LineageOS 18.1

UPDATED See edit!

I have installed LineageOS 18.1 for Raspberry Pi 4 (which is an awesome piece of software) and everything seems to be working correctly. With the exception of GPS. I have an A9G connected to the Pi. It is connected to the first Pi's UART and I can see the data coming on ttyAMA0.

:/ # microcom -s 9600 /dev/ttyAMA0 
$GNGGA,092800.998,4955.7547,N,00900.2330,E,0,0,,102.0,M,48.0,M,,*5E
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$BDGSA,A,1,,,,,,,,,,,,,,,*0F
$GPGSV,1,1,00*79
$BDGSV,1,1,00*68
$GNRMC,092800.998,V,4955.7547,N,00900.2330,E,0.000,0.00,211021,,,N*55
$GNVTG,0.00,T,,M,0.000,N,0.000,K,N*2C
$GNGGA,092801.998,4955.7547,N,00900.2330,E,0,0,,102.0,M,48.0,M,,*5F
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$BDGSA,A,1,,,,,,,,,,,,,,,*0F
$GPGSV,1,1,00*79
$BDGSV,1,1,00*68
$GNRMC,092801.998,V,4955.7547,N,00900.2330,E,0.000,0.00,211021,,,N*54
$GNVTG,0.00,T,,M,0.000,N,0.000,K,N*2C
$GNGGA,092802.998,4955.7547,N,00900.2330,E,0,0,,102.0,M,48.0,M,,*5C

I changed the GPS receiver to use ttyAMA0 in /vendor/build.prop

# GPS ro.kernel.android.gps=ttyAMA0

I also trying with adding

ro.kernel.android.gpsttybaud = 9600

or

ro.kernel.android.gps.speed = 9600

But not a single App can receive GPS data. I have the feeling I am missing something very simple but essential.

Any help very appreciated

EDIT Ok, I am a step further. The first problem was apparently, what a bummer, a permission issue. I adjusted it in the file: /vendor/ueventd.rc

From:

/dev/ttyAMA0 0660 bluetooth bluetooth
To:

/dev/ttyAMA0 0660 system radio

Now it seems that the data is being received and correctly interpreted. But when I open a GPS testing App, the signal is flickering. It almost like if something else is reading from ttyACM0.

Is it possible?

just to clarify what I mean with "flickering", please take a look at https://cloud.sobi.pro/f/68f0398aea1549918376/

Upvotes: 1

Views: 1454

Answers (2)

Radek Suski
Radek Suski

Reputation: 1392

I recently found this old post of mine and I thought I'd share some of my findings.

So, the flickering was caused by GLONASS NMEA string ($GLGSV). Basically, GPS and Galileo were reporting "GPS Fix" whilst GLONASS was reporting "No Fix" thus the "flickering".

The issue, I assume, is that we are not using a dedicated driver but a generic console driver. A proper driver would probably filter the noise out.

As I switched from my previous setup, Raspberry Pi with LineageOS to a x86 tablet + Fedora + Waydroid, I used socat to create a virtual terminal and used a simple bash script to filter the GLONASS output out of the NMEA string.

Hope that helps someone.

Upvotes: 0

Kevin Zack
Kevin Zack

Reputation: 11

I also had the same flickering issue. I can see it in a map program or with physics toolbox where I can see the GPS LAT LONG. It flickers between the "real" position and 0.00000 for the LAT and LONG.

I am using LineageOS17.1 on a Raspberry Pi 4

my Ultimate GPS USB is from Adafruit and is on /dev/ttyUSB0

I tried updating build.prop in both /vendor and /system with the

ro.kernel.android.gps.speed = 9600

and

ro.kernel.android.gps = ttyUSB0

The solution that I eventually used was to remove the r0.kernel... from both build.prop and use the app GPS Connector

https://play.google.com/store/apps/details?id=de.pilablu.gpsconnector&hl=en_US&gl=US

Enable in developer options under "select mock location app" you can select the GPS Connector.

You can have the GPS Connector app start at boot.

If you find a more elegant solution than using an app, please reply.

Upvotes: 1

Related Questions