Почему в ваших кастомах плохо работает GPS

Это перевод исследования формучанина WangChung с форума http://rootzwiki.com о настройках, твиках GPS. Человек занялся исследованием ситуации и откопал кучу информации. Оригинал вы можете прочесть здесь http://rootzwiki.com/topic/28989-the-end-all-be...

Это перевод исследования формучанина WangChung с форума http://rootzwiki.com о настройках, твиках GPS. Человек занялся исследованием ситуации и откопал кучу информации. Оригинал вы можете прочесть здесь http://rootzwiki.com/topic/28989-the-end-all-be-all-guide-to-your-gps/

Постараюсь описать все это максимально кратко. Я исследовал несколько файлов gps.conf, которые в своих релизах ROM'ов используют разные разработчики, а также скрипты для модификаций, твиков, которые обычно описывают как "ЛУЧШИЙ ФИКС GPS!!!111стоодиннадцать". В этих файлах, на самом деле, много НЕВЕРНОЙ, НЕВЕРНОЙ, НЕВЕРНОЙ информации. И вот почему.

Первое, что обнаруживается - подавляющее большинство "твиков", которые вы можете найти, берут свое начало с XDA, но по мере распространения по форумам и сайтам, вбирали в себя все больше мусора. Не используйте этот пример, он содержит ошибки настроек!

NTP_SERVER=COUNTRY.pool.ntp.org

NTP_SERVER=0.COUNTRY.pool.ntp.org

NTP_SERVER=1.COUNTRY.pool.ntp.org

NTP_SERVER=2.COUNTRY.pool.ntp.org

NTP_SERVER=3.COUNTRY.pool.ntp.org

NTP_SERVER=0.REGION.pool.ntp.org

NTP_SERVER=1.REGION.pool.ntp.org

NTP_SERVER=2.REGION.pool.ntp.org

NTP_SERVER=3.REGION.pool.ntp.org

XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin

XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin

XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin

# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info

# 4 - Debug, 5 - Verbose

DEBUG_LEVEL =0

# Intermediate position report, 1=enable, 0=disable

INTERMEDIATE_POS=0

# Accuracy threshold for intermediate positions

# less accurate positions are ignored, 0 for passing all positions

ACCURACY_THRES=0

# Report supl ref location as position, 1=enable, 0=disable

REPORT_POSITION_USE_SUPL_REFLOC=1

# Wiper (wifi positioning), 1=enable, 0=disable

ENABLE_WIPER=1

################################

##### AGPS server settings #####

################################

# FOR SUPL SUPPORT, set the following

SUPL_HOST=supl.google.com

SUPL_PORT=7276

SUPL_NO_SECURE_PORT=3425

 

SUPL_SECURE_PORT=7275

SUPL_TLS_HOST=FQDN

SUPL_TLS_CERT=/etc/SuplRootCert

# FOR C2K PDE SUPPORT, set the following

C2K_HOST=c2k.pde.com

C2K_PORT=1234

CURRENT_CARRIER=common

DEFAULT_AGPS_ENABLE=TRUE

DEFAULT_SSL_ENABLE=FALSE

# TRUE for "User Plane", FALSE for "Control Plane"

DEFAULT_USER_PLANE=TRUE

Объяснение, почему этот конфиг неправильный

Вначале вы видите множество серверов. Некоторые авторы кастомов и твикоделы пошли так далеко, что даже скопировали все NTP серверы США/мира (в буквальном смысле) и вставили их в конфигурационный файл. Проблема в том, что смартфон пытается подключиться ко всем этим серверам. И если "*.pool.ntp.org" почти никогда не бывает в дауне, то некоторые хосты в бизнес доменах и .edu, обычно мертвы уже в момент создания кастома. Смартфон ждет ответа от них... и ждет... и ждет... до тех пор, пока не получит отлуп о невозможности подключиться к сервису. Умножьте эти ожидания на 15 и более - все это куча впустую потраченного времени. А ведь достаточно было прописать ТОЛЬКО пул Северной Америки.

Нужен пруф?

http://gitorious.org/android-eeepc/base/blobs/fd9f42a6967370490cd2c66e628ccbf2eacc4a4b/location/java/com/android/internal/location/GpsLocationProvider.java

Этот код показывает, как на самом деле Android использует файл gps.conf. Прокрутите чуть вниз и посмотрите на уровне строки 161. "Сколько ждать, если имеется сетевая проблемы получения данных с NTP или XTRA; текущее значение - 5 минут." Похоже на время, необходимое для синхронизации при фиговом GPS, правда? И запомните, что это относится НА КАЖДОЕ СОЕДИНЕНИЕ/К КАЖДОМУ СЕРВЕРУ, перечисленным к конфигурационном файле.

Далее SUPL_HOST. На самом деле в примере значение параметра корректно, хотя существует и другие значения для ввода. Гугл - один из лучших. Свои параметры используют Nokia (supl.nokia.com), Sony (supl.sonyericcson.com), T-Mobile (10.176.29.225) и некоторые другие. Учтите, что вы можете прописать только ОДИН сервер для SUPL_HOST. Если вы видите что-то вроде этого, то знайте - это мусор:

SUPL_HOST=FQDN

Вот это (все такие классы) НЕПРАВИЛЬНО, НЕПРАВИЛЬНО, НЕПРАВИЛЬНО!!! В конфиге говорят = FQDN, то есть у вас спрашивают HOST=ЗДЕСЬ САМ ХОСТ. FQDN - это Fully Qualified Domain Name (полностью определенное имя домена), то есть вас просят в этом поле ВПИСАТЬ его; запрашивают это имя. А так как код не закомментирован, он выполняется; производятся попытки подключения к несуществующему "FQDN". Соединение, само-собою, подвиснет, а затем отвалится по таймату. Такое мусорное значение намного хуже пустого. Это как кричать "Эй, ты!" в толпе из миллиардов человек.

Как вам это? Видели эту строку? SUPL_TLS_HOST=ЭЙ, ТЫ! М-дааааа...

Касаемо этого SUPL_TLS_HOST - обычно этот параметр определяется оператором. Для T-Mobile, мы увидим "lbs .geo.t-mobile.com" и это значение корректро для сертификата. И снова, тут может быть только ОДИН КОНКРЕТНЫЙ сервер. Если у вас все равно остаются проблемы подключения, попробуйте удалить/закомментировать эту строку полностью.

Далее поддержка C2K PDE. Здесь кроется небольшая заковырка, ведь полянка ВЫГЛЯДИТ совершенно нормально (в конце-концов, у нее ведь есть имя, верно?), но это не так. Первый показатель, что здесь что-то не так - это странный номер порта "1234". Хмммм, у меня такой же код был на чемодане. Не вдаваясь в детали, это значение для проверки GPS антенны в стенах производителя и значение "c2k .pde.com" не валидно. Оно актуально только для тестирования в лабораторном окружении.

Я уверен, что владельцы сайта "pde.com" ради возросшему мобильному трафигу, но они не помогут людям получить нужные данные A-GPS. ЭТО ПОЛЕ ДОЛЖНО БЫТЬ УДАЛЕНО ИЗ ВАШЕГО КОНФИГУРАЦИОННОГО ФАЙЛА. ВЫ НЕ ИСПОЛЬЗУЕТЕ ЕГО, ВЫ И НЕ СМОЖЕТЕ ЕГО ИСПОЛЬЗОВАТЬ. НЕ ТРАТЬТЕ БУКВЫ. :)

Раз уж заговорили об этом. SUPL_SECURE_PORT и SUPL_NO_SECURE_PORT по умолчанию вообще отсутствуют в нормальных конфигах. Не знаю, кто впервые вписал их в конфиги кастомных прошивок, но делать им там нечего.

Вообще, в конфиге еще есть ошибки, но не вижу смысла переводить их все. Читателям уже очевидно, что во многих кастомах просто мусор, который значительно ухудшает работу GPS. Автор текста привел пример нормальной конфигурации, для Америки, конечно. Посмотрите, как одно должно выглядеть.

NTP_SERVER=north-america.pool.ntp.org

XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin

XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin

XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin

SUPL_HOST=10.176.29.225

SUPL_PORT=7275

SUPL_TLS_HOST=lbs.geo.t-mobile.com

SUPL_TLS_CERT=/etc/SuplRootCert

PHONE_TYPE=UMTS

👍 / 👎

Тогда можно поддержать её лайком в соцсетях. На новости сайта вы ведь уже подписались? ;)

Или хотя бы оставить довольный комментарий, чтобы мы знали, какие темы наиболее интересны читателям. Кроме того, нас это вдохновляет. Форма комментариев ниже.

Что с ней так? Своё негодование вы можете высказать на zelebb@gmail.com или в комментариях. Мы постараемся учесть ваше пожелание в будущем, чтобы улучшить качество материалов сайта. А сейчас проведём воспитательную работу с автором.

Прокомментировать в Telegram-чате

Фото автораАвтор: Umnik

Поговорить?


Уже наговорили:
Аватар автораVasya:
промт?
Аватар автораFrozenSE:
Не, роботы столько орфографических ошибок допустить не могут. А тут они в каждом предложении.
Аватар автораUmnik:
Делал перевод с очень большим перерывом и уже и забыл, что сначала переводил почти дословно для ускорения :(

В общем, поправил перевод, сделал его более понятным, поправил очевидные ошибки.
Аватар автораDreamer...:
Очень интересно.
Надо свой файлик проверить))) Хотя спутники за 15 сек находит...
Аватар автораАлександр:
Ну а для России как будет? Вместо america прописать ru и все или пойдем дальше. SUPL_HOST=10.176.29.225 Оставляем?
SUPL_TLS_HOST=lbs.geo.t-mobile.com (почему mobile.com) а не google.com
Для чего эти два пункта :
SUPL_TLS_CERT=/etc/SuplRootCert
PHONE_TYPE=UMTS
И вообще нужен ли этот конфиг если андроид выше 4.1
Аватар автораАлександр:
Такой бред ,просто незнаю.Насчет строк 1234,обращение адоеса в неизвестно куда,можно пробить ip(действующий,оператора,или лабораторный).ntp pool- есть ru,есть europe,(америка-стоковое значение,андроид собирается там).пул времени(синхронизации) можно выбрать из ru(быстрее,)если нахождение в России),время и синхронизация будет соответствовать действительности.Еще в коде линукса пишется europe.Автор ,разберите код framework-res,поставляемых андроид для россии и европы,-там сказано,прямо в коде,что europe.Местоположение наши операторы берут от google.(спутники,загрузка некоторых файлов,ntp провайдер или fusion location).Теперь,когда спутники подключаются,что бы ты писал или нет, в конфиг файле,это есть в бинарном файле mnld и библиотеке mnld.so(agps)-там написано откуда,куда грузить и что получать,там же есть и EPO,который так же есть в коде servises .jar,это уже причем настроено.Во вторых когда мобильный интернет,инфо поставляется от оператора(цепочка-геослужбы-оператор-смартфон).Библиотека mnld подгружает данные которые нужны,совмеснои ЕРО.в конф. файле можно написать сколько угодно действующих провайдеров,и выбрать в инж. меню.По умолчанию будет выбиратся всегда один выбранный.любой.действующий.
Wiper-кнопка в менню высокая точность или же определение координат по wifi(bt,sim и тд).
Debug level-всплывающая информация о некоторых ошибках(Si)
SUPL_TLS_HOST-указывает,есть ли у провайдера tls канал,если нет то fdn(то есть в конфиге дает дописать значение если появится у провайдера),всегда по умолчанию идет supl host,если есть tls(выбрано),то кода обычный host занят,обращается туда,определенный промежуток времени написан в servises.у провайдера может быть и то и другое или одним целым в любом хосте(экономия).FQDN система пропустит.(то есть #)

SUPL_SECURE_PORT и SUPL_NO_SECURE_PORT каналы провайдера для защищенной и свободной инфо.То есть сертифицированная модель берет инфо по secure предоставляя сертификат(/etc),по no secure провайдер дает данные без сертификата,общие.если занят основной канал.значение SECURE PORT присутствует у крупных производителей.
Смартфон не будет получать отлуп,он просто пропустит неимеющиеся(неуказанный в коде значения).Строки с дефолтной конфигурацией в разных версиях дроида имеют место быть.И только в коде.Нет значения в коде ,можно и не писать ничего в конфиге.Оно как конфиг таблица для ygps ,lbs.Можно даже и удалить конфиг файлы,gps будет работать отталкиваясь от своих библиотек и кода framework.
Аватар автораАлександр:
А почему плохо ловит GPS - экономия на дешевых чипах и плохая инженерная конструкция.Всё просто.На чем собрано,то и получите.Хороший чип и продуманная инженерная конфигурация на "голом" gps,без конфигов,без интернет -в ясную погоду 2 секунды коннект,в плохую -10.

Читайте нас где удобно

Ещё на эту тему было

Для тех, кто долистал

Ай-ти шуточка бонусом. Apple: Think different! Samsung: Same shit!