Как стать автором
Обновить

Эмбарго на A-GPS или почему смартфоны стали плохо определять местоположение

Время на прочтение5 мин
Количество просмотров139K

Ориентировочно с мая 2022 года в разных темах на форуме 4PDA и других интернет-площадках начали появляться сообщения вида "Что-то смартфон стал плохо ловить спутники GPS и показывать точное местоположение". Многие связывали это с обновлениями прошивок, пробовали откатываться на старые версии, использовать различные приложения, дергающие различные API Android для сброса настроек GPS,...
Объединяло все эти жалобы два момента: все смартфоны на чипах Qualcomm Snapdragon различных поколений, и все пользователи были из РФ.

Но давайте по порядку.

Disclaimer: я не специалист GNSS и могу в чем-то ошибаться. Для раскладывания по полочкам знаний о GPS очень помогли комментарии @Jef239к одному посту.

Чтобы устройство могло определить свое местоположение по спутниковым навигационным системам (GPS, ГЛОНАСС, Galileo, Beidou, ...), ему надо принимать и успешно декодировать сигналы минимум от четырех спутников, для которых устройство знает их точное положение.

Эфемериды - это точное положение спутника на ближайшие несколько часов. Каждый спутник передает только свои эфемериды, и их прием занимает порядка 20-60 секунд.

Альманахи - это ориентировочное положение всех спутников группировки на ближайшие недели. Имея альманахи, помня свое старое местоположение и зная текущее время, устройство на старте может не анализировать всю полосу частот, а сразу вычислить, какие спутники на каких частотах (с учетом доплеровского смещения) можно ожидать услышать. Правда, это дает обратный эффект например после перелета в другой город. Прием альманахов на смартфоне занимает минимум 10-15 минут при уверенном сигнале. (В комментариях подсказывают: полное время передачи суперкадра - 12.5 минут для NAVSTAR/GPS и 2.5 минуты для GLONASS, но на практике на смартфоне в городе у меня всегда получалось больше)

Устройства без связи с интернетом (скажем, автономные GPS-навигаторы) получают эти данные только со спутников, и холодный старт на открытой местности обычно занимает несколько минут.
Устройства с доступом в интернет могут получать эфемериды, альманахи и время через интернет (это и называется A-GPS). Кроме того, смартфоны также могут определять свое приблизительное местоположение, используя информацию о вышках мобильных операторов или точках WiFi. Даже если у вас в настройках выключена геолокация по сетям от Google/Apple, некоторые приложения (скажем, 2ГИС или Яндекс Карты) могут использовать свои базы.

Благодаря всему этому люди привыкли видеть приблизительное местоположение уже через несколько секунд после открытия карты, а еще через несколько секунд ожидают увидеть точную точку на карте... А многие сейчас вообще считают, что геолокация работает только через интернет и в лесу без покрытия мобильной сети местоположение не определить в принципе - этому мнению способствует и динамическая подгрузка карт через интернет.

Итак, летом Android-смартфон стал определять местоположение с очень большой задержкой. Открываю GPSTest и пробую понять что происходит:

  • Смартфон видит сигналы от 7 спутников GPS, 4 спутников GLONASS и 3 спутников Galileo (столбец C/N0).

  • Есть эфемериды ("E" в столбце Flags) только одного спутника GPS, одного спутника GLONASS (но мы его не слышим сейчас) и одного спутника Galileo.

  • Есть альманахи для GLONASS и Galileo ("A" в стобце Flags) и в списке отображается, какие еще спутники предположительно можем услышать.

Если подождать подольше, смартфон получит эфемериды еще парочки спутников и сможет рассчитать свое местоположение, а в столбце Flags у использованных для вычисления местоположения спутников появится "U" (used):

Постойте, а почему это у нас нет альманахов для GPS? Ведь A-GPS в большинстве смартфонов в первую очередь передает данные для GPS!
Бездумно пробую в меню GPSTest нажать "Clear Assist data", "Inject PSDS data", перезапускаю приложение, перезагружаю смартфон... Теперь вообще ничего нет, и приходится ждать минут десять, пока появятся эфемериды хотя бы 4 спутников. Да, явно не работает A-GPS. На ум лезут мысли про блокировки Роскомнадзора...

А откуда там смартфон получает данные A-GPS? Гуглежка подсказывает аббревиатуры XTRA, SUPL, ...
Отключаю мобильную сеть, оставляю только WiFi, запускаю tcpdump на роутере, "Clear Assist data", перезагрузка, ищу в дампе что-нибудь интересное...

"embargo.xboxprod.izatcloud.net". Имя говорит само за себя.
"embargo.xboxprod.izatcloud.net". Имя говорит само за себя.

Смартфон идет за файлом http://path3.xtracloud.net/xtra3Mi_eph.bin
Из РФ домен "path3.xtracloud.net" резолвится так:

path3.xtracloud.net.    32      IN      CNAME   path3_new.qcomgeo2.com.
path3_new.qcomgeo2.com. 29      IN      CNAME   embargo.xboxprod.izatcloud.net.
embargo.xboxprod.izatcloud.net. 26 IN   A       54.70.12.181
embargo.xboxprod.izatcloud.net. 26 IN   A       54.70.147.98
embargo.xboxprod.izatcloud.net. 26 IN   A       34.215.213.136

Отдаваемый файл xtra3Mi_eph.bin весит 191 байт.

С виртуалки в Европе:

path3.xtracloud.net.    0       IN      CNAME   path3_new.qcomgeo2.com.
path3_new.qcomgeo2.com. 0       IN      CNAME   xtrapath6.xboxprod.izatcloud.net.
xtrapath6.xboxprod.izatcloud.net. 0 IN  A       18.66.97.127
xtrapath6.xboxprod.izatcloud.net. 0 IN  A       18.66.97.57
xtrapath6.xboxprod.izatcloud.net. 0 IN  A       18.66.97.95
xtrapath6.xboxprod.izatcloud.net. 0 IN  A       18.66.97.23

И файл уже имеет размер 386 байт.

Все эти домены принадлежат Qualcomm. Формат данных A-GPS - проприетарный и у каждого вендора свой.

Завернув трафик смартфона в VPN на роутере, A-GPS ожил. Таким образом, стало понятно, что проблема наверняка затрагивает не одну модель, и не одного производителя смартфонов - а большинство смартфонов на чипах Qualcomm.

Как заметил @ValdikSSв комментариях, NS-сервер домена qcomgeo2.com похоже обрабатывает EDNS Client Subnet (подсеть клиента) из DNS-запроса, который передают многие публичные DNS-серверы. Таким образом, возможно простым решением может быть использование DNS-серверов, не передающих эти данные.

Возможно, некоторые производители используют другие адреса и проксируют данные через себя, но как минимум Asus, Nokia и OnePlus получают данные с этого адреса. При получении файла с домена embargo.xboxprod.izatcloud.net некоторые смартфоны затирают данные альманахов как минимум для GPS, даже если они были получены со спутников.


Обновление: в комментариях выяснили (1, 2), что как минимум некоторые смартфоны на чипах Samsung Exynos и Huawei Kirin, а так же некоторые смартфоны Samsung на чипах Qualcomm для получения информации A-GPS используют домен gllto.glpals.com, который сейчас для IP-адресов РФ выдает ошибку 403:

$ wget http://gllto1.glpals.com/4day/v4/latest/lto2.dat
--2022-10-24 20:59:30--  http://gllto1.glpals.com/4day/v4/latest/lto2.dat
Resolving gllto1.glpals.com (gllto1.glpals.com)... 68.232.34.9
Connecting to gllto1.glpals.com (gllto1.glpals.com)|68.232.34.9|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2022-10-24 20:59:30 ERROR 403: Forbidden.

Судя по SOA-записи домена glpals.com, этот домен принадлежит Broadcom:

glpals.com.             7       IN      SOA     ns1.glpals.com. gps_netops.broadcom.com. 2019011001 7200 900 1209600 86400

Таким образом, можно говорить о том, что устройства с чипами GNSS от Broadcom тоже не имеют возможности обновлять информацию A-GPS в РФ.

Теги:
Хабы:
+291
Комментарии341

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн