Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Galileo support #58

Closed
agrotux opened this issue Apr 28, 2016 · 39 comments

Comments

@agrotux
Copy link

commented Apr 28, 2016

Hi!
I bought a phone that supposedly has a galileo positioning module built in. Unfortunately I have no idea how to verify that. How can I check with this app which positioning systems I can access?

@barbeau barbeau added the enhancement label Apr 28, 2016

@barbeau

This comment has been minimized.

Copy link
Owner

commented Apr 28, 2016

@tomte Nice! Just install the app on Google Play, and then take a screenshot and post it here (just drag/drop into issue).

Based on the satellite ID values shown in the app, we should hopefully be able to figure out if some previously unknown IDs show up. Unknown IDs will still show up with an American flag next to them, as that's the current default behavior in the app. If we can identify the ID range for Galileo satellites, I can update app to show an EU flag next to Galileo satellites.

More here on why I need the ID range of Galileo satellites.

@agrotux

This comment has been minimized.

Copy link
Author

commented Apr 28, 2016

doesn't look good...

screenshot_2016-04-28-20-38-38

@barbeau

This comment has been minimized.

Copy link
Owner

commented Apr 28, 2016

Hmmmm, yes, 1-32 should be GPS IIRC, and 70-88 is GLONASS. So nothing unidentified yet.

What city/country are you located in? It could be possible that your device supports Galileo but there aren't any Galileo satellites currently visible to your device. Also, can you share your device make/model (e.g., Samsung Galaxy S6)?

@agrotux

This comment has been minimized.

Copy link
Author

commented Apr 28, 2016

The location is sweden and it is a snopow m9. I guess I have glonass inbuilt instead of galileo...

@barbeau

This comment has been minimized.

Copy link
Owner

commented Apr 28, 2016

That may be the case. From some quick Googling it seems the only GNSS listed in the device specs is GPS.

@agrotux

This comment has been minimized.

Copy link
Author

commented Apr 28, 2016

Anyway - thank you for the help. If I get my hands on something with galileo I let you know!

@barbeau

This comment has been minimized.

Copy link
Owner

commented Apr 28, 2016

Sounds good, thanks! I'll leave this issue open so anyone else with Galileo can chime in as well :).

@bluezed

This comment has been minimized.

Copy link

commented Sep 19, 2016

Hi there,
just wondering if there has been any progress with this?
I've just bought a new BQ Aquaris X5 Plus which is supposed to be able to receive Galileo data but with your App I can only see GPS, GLONASS and Baidou.
Let me know if there's anything I can do to help with testing or similar.
Thanks!

@barbeau

This comment has been minimized.

Copy link
Owner

commented Sep 19, 2016

@bluezed Awesome! Yes - could you please post a screenshot of the main Status screen here, after your device has acquired a fix?

The Galileo satellites will likely currently show up as US NAVSTAR, as that is the default if the ID for the satellite isn't recognized. So, any satellites outside of the known US NAVSTAR ID range showing up as NAVSTAR should be Galileo.

Here's the IF block that controls what a satellite gets labeled as based on it's ID:
https://github.com/barbeau/gpstest/blob/master/GPSTest/src/main/java/com/android/gpstest/util/GpsTestUtil.java#L27

@bluezed

This comment has been minimized.

Copy link

commented Sep 19, 2016

Here's a quick screenshot.
screenshot

Doesn't look like there are any "NAVSTAR" IDs. Could that be because the Galileo PRNs appear to be pre-fixed with the letter "E" and in your code you're expecting int values?

Is there anywhere to view the "raw" data in you app? Maybe that could be useful...

@barbeau

This comment has been minimized.

Copy link
Owner

commented Sep 19, 2016

The sats with PRNs from 1-32 with the American flags are the USA's NAVSTAR GPS system. If the Android platform was providing information to the app about Galileo satellites, they should show up with an American flag (for now) with a PRN outside of 1-32. I would then update the app to show an EU flag for those PRNs to add "Galileo support" - but you'd be able to see the Galileo raw data there before I make any changes.

Here is a good wiki page that discusses the IDs for the known PRN ranges for other GNSS:
https://github.com/mvglasow/satstat/wiki/NMEA-IDs#galileo

Could that be because the Galileo PRNs appear to be pre-fixed with the letter "E" and in your code you're expecting int values?

The Android platform itself uses integer values in the original GPS.Listener - https://developer.android.com/reference/android/location/GpsSatellite.html#getPrn().

However, looking at the Android docs, Google did recently add a new API where you can extract the GNSS type explicitly - https://developer.android.com/reference/android/location/GnssStatus.html

I'll look at updating the app to take advantage of this, although it would only be available on Android N 7.0 and higher.

What version of Android is on your device?

@bluezed

This comment has been minimized.

Copy link

commented Sep 20, 2016

Thanks for the explanation. Unfortunately I've only got Android 6 but the rumour is that Android 7 will come to this phone at some point as well.

I've now raised a ticket with the phone manufacturer to clarify why I cannot see Galileo satellites so we'll see what they say.

From what I can make out there's currently no Android app that shows Galileo satellites using the on-board sensor, only some that can use external devices so maybe it is currently a platform limitation...?

@barbeau

This comment has been minimized.

Copy link
Owner

commented Sep 20, 2016

From what I can make out there's currently no Android app that shows Galileo satellites using the on-board sensor, only some that can use external devices so maybe it is currently a platform limitation...?

Based on my experience, I think you're correct. Android 6 and lower was designed primarily for providing NAVSTAR GPS (USA) satellite info, which have numeric PRNs (satellite IDs). They crammed GLONASS, Beidou, and QZSS into this same model by mapping satellites to numbers outside of the NAVSTAR PRN range. It seems like Galileo IDs are alphanumeric, which means they wouldn't fit into this same model. It seems like instead of trying to continue this trend of mapping other GNSS satellites to numeric IDs, Google decided to deprecate the old API and move to a new one that explicitly labels the satellites with the GNSS constellation, and then can provide the IDs that are unique to that GNSS but not globally unique. This is a better solution as it better represents the real world, but unfortunately because it requires Android 7.0 it's going to take a while for devices to catch up.

@barbeau

This comment has been minimized.

Copy link
Owner

commented Sep 20, 2016

I've added an answer to my Galileo question on GIS StackExchange here, which details the new satellite IDs for Android 7.0 and higher:
http://gis.stackexchange.com/a/211229/12198

@mbavaro

This comment has been minimized.

Copy link

commented Sep 22, 2016

Hi all I am also following this thread closely now. I agree that better multi-GNSS support is given in Android Nougat, but the chipset is already capable of tracking Galileo with special PRN identifiers so once the baseband firmware is enabled it should show up on the satellite list (or the NMEA senstences anyway). I think Aquaris X5-Plus does not have the Galileo-enabled baseband yet and it will be provided with an OTA later this year. But I noticed now that Galaxy Note 7 and Tp-Link Neffos X1 also claim Galileo support. Would be good if somebody could try them for us here.

@bluezed

This comment has been minimized.

Copy link

commented Sep 22, 2016

Quick update about what I got back from BQ support...

Basically the current firmware on the device is "deaf" to the Galileo signal and hence the data does not show up even though the hardware is capable of receiving it already. Once Galileo is actually operational they'll release an OTA update to enable it on the phone.

So it is as suspected and my guess is that the update will then be to Android 7 at the same time. Wait and see ;)

@mbavaro

This comment has been minimized.

Copy link

commented Oct 7, 2016

Would it be possible to have an EU flag for PRNs 301-330?

screenshot_20161007-135712

More importantly, how to log all the raw NMEA then?

@barbeau

This comment has been minimized.

Copy link
Owner

commented Oct 7, 2016

@mbavaro Yes! Thanks for sharing! Can you provide any more information on the device this screenshot came from, or how you know the range is 301-330? It would be great to have an official reference for this.

A NMEA logger has been on my TODO list for a while (#30), although that will probably come with a future release, as part of a UI overhaul. The current tabbed UI doesn't offer a great place to put this.

@mbavaro

This comment has been minimized.

Copy link

commented Oct 7, 2016

I cannot say too much.. it is indeed a preview of the Aquaris X5+. The choice of PRN 300+ is arbitrary as far as I know. If not logging NMEA, how could one record all the observations taken by your app - or some similar app if you are aware of one? I have searched GooglePlay but most seem bloatware.. I just need a text log file to parse.

@barbeau

This comment has been minimized.

Copy link
Owner

commented Oct 7, 2016

Sure, understandable.

If you're able to install Android Studio, I could probably pull together a quick build that would just dump the NMEA output to the system log. To see this, you'd connect your device to your machine via USB cable, open Android Studio, and look at Android Monitor - from here you could copy the system output out of Android Monitor into a text editor (see screenshot below). It wouldn't be a pretty UI (actually no UI), but it would at least let you see the NMEA output.

Would this work?

image

barbeau added a commit that referenced this issue Oct 8, 2016
Add PRN range for Galileo
* Used on API Level 23 (Android 6.0.1) and lower
* Based on early Aquaris X5+ - see #58 (comment).
@mbavaro

This comment has been minimized.

Copy link

commented Oct 10, 2016

Hello Sean, it's probably too early to jump into doing more work on this (also in perspective of the soon to come changes brought by Nougat). Let me first see if I can perform my duties without wasting too much of your time. I will anyway keep you up-to-date with my findings. Again a big thank you for applying the Galileo delta.

@barbeau barbeau closed this in 5d559cd Oct 10, 2016

barbeau added a commit that referenced this issue Oct 10, 2016
Merge pull request #59 from barbeau/gnssListener
Fix #58 - Add Galileo support
@barbeau

This comment has been minimized.

Copy link
Owner

commented Oct 10, 2016

FYI for those following this thread - I'm in the process of setting up a beta channel via Google Play to push the new changes to support Galileo. I'll try to publish this new version tonight - I'll also post more instructions then about how to sign up for the beta.

@mbavaro

This comment has been minimized.

Copy link

commented Oct 10, 2016

Wow.. thanks!

@barbeau

This comment has been minimized.

Copy link
Owner

commented Oct 11, 2016

Beta testing group is now set up, and you can sign up to get beta releases via Google Play by following these instructions:
https://github.com/barbeau/gpstest/blob/master/BETA_TESTING.md

However, I ran into a few issues publishing a new release that I need to sort out. I'll post again when I actually push out the new beta release that contains Galileo and Android N support.

@barbeau

This comment has been minimized.

Copy link
Owner

commented Oct 12, 2016

Alright, I've published a new version (v2.1.4) that includes Galileo support and dumping NMEA output to system logs as a beta (visible in Android Studio via Android Monitor). Instructions to sign up for beta are at https://github.com/barbeau/gpstest/blob/master/BETA_TESTING.md. I'll work on adding documentation soon for installing Android Studio and seeing NMEA output in Android Monitor and will post here when that's updated. Feedback welcome!

@barbeau

This comment has been minimized.

Copy link
Owner

commented Nov 8, 2016

Just realized that I never updated this thread - Galileo support is now in production release on Google Play, and docs for setting up logging via Android Studio are here:
https://github.com/barbeau/gpstest/blob/master/LOGGING.md

@nicoladinisio

This comment has been minimized.

Copy link

commented Apr 13, 2017

Dear Sean,

I continue on this old post on Galileo Support. I have a BQ Aquaris X5 plus with

GPS Test 2.1.10
Android 7.1.1 (patch level March 1st, 2017)

As of now I can see GPS, GLONASS and BEIDOU satellites, but no Galileo is shown, even though at the moment 11 Galileo satellites are reported as operational by the GSA

https://www.gsc-europa.eu/system-status/Constellation-Information

@barbeau

This comment has been minimized.

Copy link
Owner

commented Apr 13, 2017

@nicoladinisio

This comment has been minimized.

Copy link

commented Apr 13, 2017

@bluezed

This comment has been minimized.

Copy link

commented Apr 14, 2017

Hi guys,
I'm in Nauders, Austria today and I see 3 Galileo satellites.
Attached a screenshot...

Screenshot

EDIT: Now there are even 5 ;)

Screenshot 2

@nicoladinisio

This comment has been minimized.

Copy link

commented Apr 14, 2017

@bluezed

This comment has been minimized.

Copy link

commented Apr 14, 2017

Same phone as you with same versions and all.

I'm near Meran, Italy now and can see 3 Galileo satellites right now.

tmp_22411-screenshot_20170414-1732051685338641

@nicoladinisio

This comment has been minimized.

Copy link

commented Apr 14, 2017

@barbeau

This comment has been minimized.

Copy link
Owner

commented Apr 15, 2017

Column after the flags is carrier-to-noise-density ratio (C/N0) on Android 7.0 and higher. This determines if the receiver can lock onto and decode information from the satellite radio waves (larger numbers are better).

If this is blank, it's very likely that the receiver can't actually see a signal for that satellite.

The columns to the right of C/N0 are Elevation and Azimuth of the satellite, or its approximate position in the sky - this comes from the Galileo almanac information. In a standalone GNSS receiver (i.e., no assistance information) the receiver would need to decode the almanac information from the GNSS signal itself - so, no signal, no almanac. However, networked devices can speed up time to first fix by downloading the almanac info directly from a server. This is what Android devices do (and you can actually download the almanac data for Galileo yourself at https://www.gsc-europa.eu/system-status/almanac-data. Looks like it was last updated about 3 days ago).

So, it appears the device was able to grab the Galileo almanac data from somewhere, which is why there is an "A" in the right-most column, and why you can see the Elevation and Azimuth info. However, it seems like it can't actually see/decode any live Galileo signals, hence why C/N0 is blank.

If you're not seeing any Galileo almanac info on your device, try making sure you have a good Internet connection, and then power off and on your device. When it's back up, again confirm you're connected to the Internet, and start up GPSTest again. I'm not exactly sure of the mechanism used to fetch assistance data on all devices/networks today (I assume it's SUPL, and I'd also assume that for official Android devices they are using a Google SUPL server), but this could differ per cell provider as well if your device is locked to a particular provider.

In GPSTest you can try tapping on the 3 dots in the upper right corner and choosing "Inject XTRA Data", but I'm guessing that won't have any effect on assistance data (if not, it will say "Platform doesn't support injecting XTRA data") . I don't believe that XTRA data is used anymore for most modern devices - all Android 7.0 devices I've seen so far don't support it.

@nicoladinisio

This comment has been minimized.

Copy link

commented Apr 15, 2017

@barbeau

This comment has been minimized.

Copy link
Owner

commented Apr 18, 2017

@nicoladinisio The satellite at the bottom is likely SBAS, or an unknown. As long as you have Android 7.0 or higher (and your device OEM has implemented the API correctly) all Galileo sats should be labeled with EU flag.

As to missing Almanac and lack of Galileo signals - I'd strongly suggest you contact your device OEM and as what you should be able to see given the Android/firmware version on your device (and report back here :) ). They are really the only one that will be able to answer the question and give specifics.

@Nippey

This comment has been minimized.

Copy link

commented Aug 2, 2017

Screenshot from Galaxy S8+ (SM-G955F) / Stock Android 7.0
screenshot_20170802-205808

Came here from gis.stackexchange

@barbeau

This comment has been minimized.

Copy link
Owner

commented Aug 3, 2017

Thanks @Nippey!

@kanchudeep

This comment has been minimized.

Copy link

commented Aug 14, 2017

Screenshot taken on OnePlus 5 (Android 7.1.1/OxygenOS 4.5.8):
oneplus-5

Note:

  1. I'm in Northern part of India.
  2. Reception is not continuous... Comes and goes.
  3. Have locked onto five satellites also at times.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
7 participants
You can’t perform that action at this time.