Dual-frequency GNSS on Android devices
L1+L5 support for GPS is here! …or is it?
It’s an exciting time for Global Navigation Satellite Systems (GNSS) on Android. Android Nougat 7.0 brought official support for multiple GNSS constellations beyond U.S. GPS (including GLONASS, QZSS, BeiDou, and Galileo), as well as the ability to collect and process raw pseudorange measurements and navigation messages within an Android app. Android P is providing developer options for testing real-time kinematic (RTK), or carrier-phase measurements, for the first time using embedded GNSS. Galileo, the European Union GNSS, is now operational with 22 satellites in Initial Services and nearing completion, and is already supported by a number of mobile devices. Other embedded device sensors are being fused with GNSS measurements for better location info (e.g., barometric sensors for altitude).
One of the most promising enhancements to position accuracy is the introduction of “dual-frequency” GNSS support. Dual-frequency GNSS means that the receiver tracks more than one radio signal from each satellites on different frequencies — for GPS, this is L1 and L5, and on Galileo E1 and E5a.
The more advanced L5/E5a signals are less prone to multipath errors and therefore can be used to refine position accuracy to the order of 30 cm (versus today’s 5 meters). From a user’s perspective, this is the difference between a real-time navigation app knowing which road you’re on and which lane you’re in. And, because multipath errors due to building reflections are a key problem in urban canyons, dual-frequency GNSS promises better accuracy and precision in some of the most challenging city environments. This means better wayfinding directions near and in buildings, and, with other technologies, possibly even down to which floor of a building you’re on. This IEEE article, as well as the 2018 Google I/O presentation “How to get one-meter location-accuracy from Android devices,” give detailed overviews of the benefits of tracking multiple GNSS carrier frequencies.
Does your device support L1 + L5?
First, let’s start with the easiest way to tell if your Android device supports both L1 and L5 signals.
GPSTest - Apps on Google Play
GPSTest displays real-time information for satellites in view of your device. A vital open-source test tool for…
Then, look for any “L5” or “E5a” values in the “CF” (Carrier Frequency) column:
As you can see above, the Samsung Galaxy S8+ (SM-G955U) doesn’t show any CF info.
And, as of June 2018, I haven’t seen any devices that actually do show carrier frequency data. (EDIT September 8th, 2018 — The Xiaomi Mi 8 with Android P beta finally shows CF values! Other Android P devices are showing CF values now too. See subsections below for details).
This leads to two questions:
- What’s the status of Android support for dual frequency GNSS?
- Are there any devices out there that support dual frequency?
Android 8.0 support
In Android 8.0 Oreo (API Level 26), there is a new method to get the carrier frequency for each satellite signal in view. The developer documentation for
Gets the carrier frequency of the signal tracked.
For example it can be the GPS central frequency for L1 = 1575.45 MHz, or L2 = 1227.60 MHz, L5 = 1176.45 MHz, varying GLO channels, etc. If the field is not set, it is the primary common use central frequency, e.g. L1 = 1575.45 MHz for GPS. For an L1, L5 receiver tracking a satellite on L1 and L5 at the same time, two measurements will be reported for this same satellite, in one all the values related to L1 will be filled, and in the other all of the values related to L5 will be filled
GnssStatus.getCarrierFrequencyHz() returns a floating point value. So, to show the user a label like “L5” in an Android app, a developer needs to translate the raw number of
1176450000.000 Hz to the string “L5”.
This means that an app must maintain a mapping of all carrier frequency numbers to labels for all GNSS, which is a bit of a pain. I and another contributor managed to scrape together this info from a variety of authoritative (and some less authoritative) sources and turned it into this table:
I then translated that mapping into code for GPSTest, and the resulting label shows up in the CF (Carrier Frequency) column on the Status screen IF the device provides this data.
In summary — Android Oreo (API 26) and higher (and the GPSTest Android app) officially support multiple GNSS frequencies.
So, what about device support?
Broadcom made a splash in September 2017 by announcing the launch of the BCM47755 GNSS chip that officially supports multiple carrier frequencies:
More specifically, BCM47755 supports:
- GPS — L1 C/A + L5
- Galileo — E1 + E5a
- QZSS — L1 + L5
- GLONASS — L1
- BeiDou — B1
And, Broadcom said that the BCM47755 would appear in 2018 smartphones, but not which ones.
So, is this chip included in any devices currently on the market? If so, is dual-frequency GNSS enabled? Here’s where things get a bit murkier.
Samsung Galaxy S9/S9+
The Samsung Galaxy S9 and S9+ released on March 11, 2018 are prime candidates for dual frequency support. However, the official Samsung Galaxy S9 spec only says:
…location (GPS, Galileo, Glonass, BeiDou)
*Galileo and BeiDou coverage may be limited. BeiDou may not be available for certain countries.
That doesn’t help. Let’s look at the actual hardware — here’s a teardown of the S9+:
Samsung Galaxy S9 Teardown
Posted: March 1, 2018 - Updated March 21, 2018 We have decapped the Samsung Exynos 9810 AP PoP and gotten the images of…
There are two different chipset variants of the S9/S9+:
- Qualcomm Snapdragon 845 (U.S., Latin America, Chinese, and Japanese markets)
- Samsung Exynos 9810 (European and other markets)
Qualcomm is a competitor to Broadcom, and therefore it’s unlikely that a Qualcomm SoC (and therefore any device based on the Snapdragon series) will include the BCM47755. (EDIT: I thought we’d never see a Broadcom chip in a Qualcomm SoC device, but the Xiaomi Mi 8 proved me wrong! See the next section for details)
However, the teardown shows that the Exynos variant has a “Broadcom BCM47752 GNSS Receiver” — close, but this isn’t the exact “47755” that we were looking for.
So what’s the difference between the 47752 and 47755? If you find out, let me know :). Broadcom’s spec sheet for the BCM4775x family doesn’t provide any details about the 47752 (or the yet-unseen 47754), and also doesn’t say that the entire 4775x family supports dual-frequency GNSS. Only the 47755 and 47758 models are specifically called out as supporting L5 and E5a. As a result, the exact specs on the 44752 remain a mystery.
No matter what the documentation does or doesn’t say, here’s the most important info— users of the Galaxy S9 Exynos variant are reporting that they ̶c̶a̶n̶’̶t̶ ̶s̶e̶e̶ ̶c̶a̶r̶r̶i̶e̶r̶ ̶f̶r̶e̶q̶u̶e̶n̶c̶i̶e̶s̶ can’t see dual-frequency information (EDIT January 25, 2019 — With Android P, users can now see single frequency carrier information). Here’s a screenshot:
Which leads to more questions:
- Does the Broadcom BCM47752 chip support dual-frequency GNSS?
- If so, does the Galaxy S9/S9+ Exynos variant need a firmware update to enable it?
For the adventurous spirits out there, it may be possible to enable dual-frequency support on the Exynos Galaxy S9/S9+ by editing system config files — we don’t know yet.
If you want to go down this road, first note that this requires root and, as with any changes to your device unsanctioned by Samsung, could potentially brick your S9 or otherwise leave it less than fully functional. So, you’ve been warned.
According to user cr2 on XDA Developers, here are the steps that may enable dual-frequency GNSS support on the Exynos Galaxy S9/S9+:
- Find the file
/vendor/etc/gps.xmlon your device
gps.xml, find the
- Replace the
MultiCarrRFModelines with the following (you also might want to save the current lines in case you need to revert these changes):
MultiCarrLnaMask ="L1_EXT_ON | L5_EXT_ON"
Save the file, reboot your S9 and fire up the GPSTest app — does CF data appear?
If not, try these values (it adds
L2 on the 2nd line):
Xiaomi Mi 8
According to leaks of the retail box prior to launch, the Xiaomi Mi 8 was rumored to feature “dual-GPS”. Immediately following the device launch on May 31st, The Verge and TechPP both reported that the Mi 8 does indeed support the L1 and L5 bands of GPS. The EU GSA, the organization that operates Galileo, capped this off with a definitive press release on June 4th with the following information:
Xiaomi — one of the fastest growing mobile brands — has launched the world’s first dual-frequency GNSS smartphone. Fitted with a Broadcom BCM47755 chip, the Xiaomi Mi 8, launched on May 31, is the world’s first smartphone providing up to decimetre-level accuracy for location-based services and vehicle navigation…. The BCM47755, introduced last year, is a dual-frequency (E1/L1+E5/L5) GNSS chip that can compute location with an accuracy of up to a few decimetres.…
Interestingly, the Xiaomi Mi 8 uses a Qualcomm Snapdragon 845 SoC, and therefore must leverage the BCM47755 in addition to the main SoC to support dual-frequency GNSS.
Initial versions of the Xiaomi Mi 8 firmware seemed to support dual-frequency GNSS but didn’t show CF values in GPSTest because the
GnssStatus.getCarrierFrequencyHz() function didn’t work properly (circa June to August 2018).
However, on September 8th a user shared a screenshot showing that the latest Android P beta update (MIUI 10 Global 8.9.11 Beta) does indeed show CF values!
So, it looks like Xiaomi fixed the issue with
GnssStatus.getCarrierFrequencyHz() not being populated, which is great!
Also, it’s a little suspicious that the device is reporting using nearly ALL satellites (“U” indicator in “Flags” column) to compute a fix — is this another bug?
Samsung Galaxy Note 9
The Samsung Galaxy Note 9 was announced on August 9, 2018. However, the live-stream event made no mention of dual-frequency GNSS. In the first teardown of the Note 9 by Russian site hi-tech.mail.ru, presumably of the Exynos variant, you can’t see the printing on the chips on the portion of the board that housed the BCM47752 on the Galaxy S9, so we can’t yet tell if a BCM 4775X chip is included in the Note 9 Exynos. In TechInsight’s teardown of the Note 9 Snapdragon 845 variant there is no BCM4775X chip to be found. The Note 9 launched on August 24th, and while I haven’t seen a teardown of the Exynos variant with high resolution photos yet, the initial screenshots don’t look promising.
Huawei Mate 20 and Mate 20 Pro
Huawei launched the Mate 20 and Mate 20 Pro on October 16, 2018, and — tl;dr — it supports dual-frequency! However, there is a twist. Instead of using the Broadcom chipset, these devices use the Kirin 980, which is also being marketed as the “World 1st 7nm Mobile AI Chipset”. But, more importantly for this article, the Kirin 980 website says:
The GPS is supported by industry leading L1 + L5 dual frequency ultra-precise positioning to give you a more accurate target location when using map navigation, even in complex terrains.
And it looks like dual-frequency extends to Galileo and QZSS too, according to the Mate 20 Pro specs:
GPS (L1 + L5 dual band) / AGPS / Glonass / BeiDou / Galileo (E1 + E5a dual band) / QZSS (L1 + L5 dual band)
Initial Mate 20 screenshots did not show any CF values, and while Huawei fixed this bug in build 188.8.131.52, L5 and E5a signals still weren’t displayed. However, it looks like Huawei finally got it right in 184.108.40.2060, as L5 and E5a signals are now shown to be in-use:
Xiaomi Mi Mix 3
Samsung Galaxy S10
On November 14th, Samsung announced the Exynos 9 Series (9820) application processor, which powers the international variants of the Galaxy S10. The Exynos 9820 specs did not include any mention of dual-frequency GNSS. However, based on a tear down it looks like Samsung put a Broadcom BCM47752KLB1G chip in the Exynos S10+, which appears to be the same mysterious model that appeared in the S9. Unfortunately, though, so far screenshots aren’t showing any L5 signals. Is it possible that L5 support could be enabled on the S10 by hacking the config?
On December 5th Qualcomm announced the Snapdragon 855, which powers the U.S., Latin America, Chinese, and Japanese variants of the S10. The Snapdragon 855 specs say (emphasis mine):
Satellite Systems Support: GPS, GLONASS, Beidou, Galileo, QZSS, SBAS, Dual frequency GNSS
However, on February 20th, 2019 Samsung made no mention of dual-frequency GNSS at their press event, and the Samsung S10 family spec sheet doesn’t mention dual-frequency. And, strangely, based on screenshots from users is appears that some S10 Snapdragon models support dual-frequency, while others do not. So far the only Snapdragon variant to show dual-frequency in-use for GPS, Galileo, and QZSS is the SM-G9730 (S10) and SM-G9750 (S10+) from Hong Kong (International GSM only, no CDMA):
Here are the S10 Snapdragon models that users have submitted screenshot for that do NOT seem to support dual-frequency:
- S10 International (SM-G973F) and S10+ International (SM-G975F)
- S10 AT&T (assumed to be SM-G973U) and S10+ A&T (SM-G75U)
- S10 Sprint (SM-G973XU) and S10+ Sprint (SM-G975XU)
If anyone else gets their hands on other variants of the Snapdragon S10, S10+, or S10e, please run GPSTest and let me know what you see! Please include a screenshot of your Android system “Settings->About phone” so your exact model number is included.
Honor View 20 (V20)
Honor announced the View 20 in December of 2018, and it’s specs claim dual-frequency GNSS using the Kirin 980 chipset. Early versions of the device didn’t display CF values, but the update from Magic 2.0 to 2.1 fixed it!
LG G8 ThinQ
On February 24th, LG revealed the LG G8 ThinQ, another Snapdragon 855 device…but again, no mention of dual frequency GNSS. And unfortunately this photo of a Sprint floor model (likely the LMG820UM0) does not show dual-frequency GNSS:
LG V50 ThinQ 5G
Same as the above — launched February 24th, Snapdragon 855, no mention of dual-frequency…
Sony Xperia 1
Another of the 2019 Snapdragon 855 devices, but again, the official specs make no mention of dual-frequency GNSS.
Xiaomi Mi 9
The Xiaomi Mi 9 uses the Snapdragon 855, but, unlike other Snapdragon 855 devices, it does officially claim to support dual frequency for GPS:L1+L5 and Galileo:E1+E5a! And screenshots do indeed show L5 and E5a signals!
Huawei P30 and P30 Pro
Announced on March 26, 2019, the Huawei P30 and P30 Pro specs do claim dual-frequency support:
GPS (L1 + L5 Dual Band) / AGPS / Glonass / BeiDou / Galileo (E1 + E5a Dual Band) / QZSS (L1 + L5 Dual Band)
And a screenshot of the P30 and P30 Pro (below) does indeed show L5 and E5a in use!
In an article on April 4th, 2019, OPPO’s Vice President, Shen Yiren, said:
The 10x hybrid zoom version uses dual-frequency GPS.
And the below screenshot confirms it!
Lenovo Z6 Pro and Youth Edition
On April 23, 2019, Lenovo announced the Z6 Pro, based on the Snapdragon 855, which claims dual-frequency support. On May 9th, it also announced that the Z6 Youth Edition will also have dual-frequency GNSS. And according to this GPS World article, the Z6 Youth Edition will use the Allystar HD8040 series chipset and claims sub-meter accuracy, as well as being the first to support dual-frequency for Beidou using the new BDS phase III signal B2a.
However, screenshots from the Z6 Youth Edition (with 11.0.049 ST Android 9) tell a different story — no L5 or E5a satellites are visible!
But if you look close, multiple records for some satellite IDs are shown — I’m guessing it’s a bug, and one of the pair are L5/E5a. Hopefully Lenovo fixes this soon!
In early May 2019 Google revealed the Pixel 3A, which uses the Snapdragon 670 chipset. Unfortunately, this means no dual-frequency support, as a screenshot shows.
OnePlus 7 and 7 Pro
These devices launched in mid-May 2019, and the specs, which feature a Snapdragon 855, claim dual-frequency support:
GPS (L1+L5 Dual Band), GLONASS, Galileo (E1+E5a Dual Band), Beidou, SBAS, A-GPS
And here’s the screenshot to prove it:
Asus ZenFone 6
According to the Asus specs, the ZenFone 6 supports dual-frequency:
> Support GPS (Dual bands, L1+L5), GLONASS (G1), BDS (B1), GALILEO (Dual bands, E1+E5a), QZSS (Dual bands, L1+L5)
Xiaomi Redmi K20 and K20 Pro
Specs for the K20 Pro indicate dual-frequency GNSS via a Snapdragon 855! However, the K20 isn’t expected to support L5, as it has only a Snapdragon 730.
Xiaomi Mi 9T and 9T Pro
Rumor had it that the Mi 9T and 9T Pro are a re-branded Redmi K20 and K20 Pro, and if so the 9T Pro would support dual-frequency GNSS as well. Xiaomi has confirmed that the Mi 9T won’t have dual-frequency GNSS. But the below screenshot shows that the 9T Pro does support L1+L5 and E1+E5a!
Samsung Galaxy Note 10 and 10+ (and 5G variants)
Samsung announced the Galaxy Note 10, 10+, and 5G variants on August 7, 2019. Despite having a Snapdragon 855 chipset in North America, China, and Japan (and the new Exynos 9825 with the BCM47755 in Europe and elsewhere), the Note 10 specs page only says “ Location (GPS, Galileo, Glonass, BeiDou)”.
Apparently the Note 10 5G(SM-N971N) and Note 10+ 5G (SM-N976N) South Korean variants do support GPS L5!
A user is also reporting that dual-frequency is working on a Note 10+ that was pre-ordered on T-Mobile in the U.S. (SM-N975U):
Someone else ran GPSTest on a Samsung Note 10+ Costco demo unit (SM-N975XU) in the U.S. and saw dual-frequency! Another user is reporting that Samsung Galaxy Note 10+ 5G UK EE (SM-N976B) also shows dual-frequency, although GNSS stops working when 5G is enabled (!). Notebookcheck.net is showing some screenshots for the Galaxy Note 10+ (SM-N975F) w/ Exynos processor that does have dual-frequency displayed, as does a user’s screenshot.
But how about the rest? Screenshots please!
Google Pixel 4 and Pixel 4 XL
The new Pixel 4 devices officially launched on October 15, 2019, with both devices sporting a Snapdragon 855. At first glance the tech specs simply say:
GPS,⁸ GLONASS, Galileo⁸
But, if you scroll allll the way down to the bottom to read the footnotes, it says:
⁸Dual Band (L1+L5) or (E1 +E5a). Support — coming soon
Apparently “coming soon” means December 10th— release QQ1B.191205.012.A1 has landed on some devices showing dual-frequency!
Released in October 2019, the OnePlus 7T sports the Qualcomm Snapdragon 855+, and shows dual-frequency GNSS!
Samsung Galaxy S20, S20+, and S20 Ultra 5G
The Samsung Galaxy S20 family was released on March 6th, 2020. The Snapdragon 865 is certainly capable of dual-frequency, while Exynos 990 is not — but it appears from this teardown that the Exynos 990 is paired with a dual-frequency-capable Broadcom BCM47755 (an interesting difference from the mysterious BCM47752 that appeared in the S9 and S10 models, and closer to the design in the Note 10 Exynos family).
So far, looks like the T-Mobile variant of the S20 Ultra 5G shows dual-frequency! And this article includes a screenshot of the European Exynos S20 Ultra variant, also with dual-frequency! This post also shows a Exynos variant Galaxy S20+ (SM-G985F) with dual frequency, and a user shared that the S20 Exynos variant (SM-G980F/DS) does as well.
Xiaomi Redmi Note 9 Pro Max
The Redmi Note 9 Pro Max was announced on March 11th. And GPSTest was actually featured in the launch event!! Not only is dual-frequency supported, but so is the Indian GNSS NavIC/IRNSS via a Qualcomm Snapdragon 720G chipset. This article has a screenshot.
OnePlus 8 and 8 Pro
Xiaomi Mi 10 Lite 5G
The Mi 10 Lite 5G was released in late May 2020 with a Qualcomm Snapdragon 765G chipset, and the screenshot of GPSTest shows dual-frequency GNSS!
Samsung Note 20 Ultra
The Note 20 Ultra was released in mid August 2020, with the Snapdragon 865 Plus for U.S. and other variants, and the Exynos 990 for the European markets. Based on this screenshot, looks like the U.S. unlocked variant (SM-N986U1) does indeed support dual-frequency GNSS, as does the Exynos variant (SM-N986B/DS).
Google Pixel 4a and 4a 5G
The Pixel 4a was released in August 2020 with the Qualcomm Snapdragon 730G chipset. Unfortunately, this means no dual-frequency support.
However, the Pixel 4a 5G was announced on Sept 30th with a release date of Oct 15, 2020, and will have a Qualcomm Snapdragon 765G — this means it should support dual-frequency GNSS. However, users have shared screenshots showing that dual frequency is NOT supported. More screenshots welcome!
Google Pixel 5
Samsung Galaxy S20 FE 5G
The Galaxy S20 FE 5G was released later than the rest of the S20 family on October 2, 2020. With a Snapdragon 865, it should be capable of dual-frequency! BUT! On November 15th a user reported that their S20 FE 5G is NOT showing dual-frequency, as did another with Canadian model SM-G781W. Please send in more screenshots with your model numbers and let me know what you see!
OnePlus Nord N10
Released in October 2020, the Nord N10 sports a Snapdragon 690 and shows dual-frequency.
Samsung Galaxy S21, S21+, S21 Ultra
The U.S. variants of the S21, S21+, and S21 Ultra all feature the Snapdragon 888, which supports dual-frequency GNSS. And it looks like the S21 Ultra (SM-G998U1) does support dual-frequency!
The Snapdragon variant of the S21+ (SM-G996U1) also supports dual-frequency.
But does the EU variant with the Exynos 2100 chipset? The first screenshots from a Galaxy S21 SM-G991B below suggests no.
Interestingly, though, this review and screenshot of the S21 Ultra Exynos variant DOES show dual-frequency GNSS, as it seems to contain a BCM4775 chip as well. Interestingly, looking at the GPSTest Database, apparently the S21 base variant (Exynos and Snapdragon) do NOT support dual-frequency GNSS — it seems dual-frequency has been reserved for the S21+ and S21 Ultra variants.
It initially seemed that the mysterious Broadcom BCM47752 chip in the Exynos variant of the Samsung Galaxy S9/S9+ was the prime candidate for dual-frequency GNSS support in a commercially-available Android devices. However, the Xiaomi Mi 8 (launched on May 31st, 2018) was the first commercially-available phone to officially support dual-frequency, showing GPS, Galileo, and QZSS in GPSTest! Other supporting devices that have launched since include the Huawei Mate 20/20 Pro in mid-October (using the Kirin 980 chipset), Xiaomi Mi Mix 3, Huaewi P30 and P30Pro, OPPO Reno, Lenovo Z6 Pro and Youth Edition, and OnePlus 7 and 7 Pro. Support for dual-frequency support in the Snapdragon 855 chipset announced in early December 2018 promises to bring dual-frequency support to many future devices in U.S., Latin America, Chinese, and Japanese markets, and we have seen support in the Hong Kong variant of the Galaxy S10! But, all other variants of the S10 don’t show dual-frequency support (??). However, starting in mid-2019, more devices, including the Note 10 and 10+, started showing dual-frequency GNSS in GPSTest.
One important item of note — if you’re testing an older dual-frequency device in the U. S., you may not see Galileo satellites.
So, can you see L1+L5 signals using the GPSTest app on your device?
If so, let me know in the comments below. In the mean time, I’ll be digging for more information and will update this article when I find it.
Finally, if you’re interested in testing the GNSS accuracy of the device, check out the new Accuracy feature in GPSTest!
EDIT June 2019 — I’ve created a table of devices mentioned in this article for quick reference — see:
EDIT April 2021 — I’ve created a way for GPSTest users to directly contribute the capabilities of their devices, including dual-frequency support, to a crowd-sourced database — the GPSTest Database. Read more here:
Crowdsourcing GNSS capabilities of Android devices
Introducing the GPSTest Database
- XDA Developers thread on S9 Exynos and dual frequency support— https://forum.xda-developers.com/galaxy-s9/help/gps-receiver-exynos-model-t3748641/
- European Global Navigation Satellite Systems Agency (GSA). “World’s first dual-frequency GNSS smartphone hits the market,” June 4, 2018. https://www.gsa.europa.eu/newsroom/news/world-s-first-dual-frequency-gnss-smartphone-hits-market
Non-smartphone dual-frequency hardware
- STMicroelectronics Teseo APP (Automotive Precise Positioning) receiver
- u-blox F9 technology platform (e.g., ZED-F9P multi-band GNSS module as covered by GPS World)
- u-blox ANN-MB multi‑band active GNSS antenna, as covered by GPS World