Пользователь
0,0
рейтинг
16 декабря 2012 в 03:00

Разработка → gps.conf для всех, или как ускорить работу GPS на Android

Сегодня в очередной раз задумался над темой плохого приема GPS сигнала на моем китайском смартфоне Jiayu G2. Но, неожиданно для меня, проблема решилась буквально за пару минут — «китаец» находит спутники в течение 20 секунд. А теперь обо всем по-порядку.

В октябре мне пришел китайский телефон, заказанный на Aliexpress. Телефон за такие деньги отличный, и все было бы идеально, но модуль GPS находил спутники очень-очень долго, примерно за час, не быстрее. И это при включенном Wi-Fi и установленных галочках A-GPS и GPS EPO assistance. Меня это совсем не радовало и пришлось вспоминать полезный пост в блоге livejournal, советами из которого я пользовался настраивая еще свой первый смартфон на Android. Суть сводилась к редактированию gps.conf вспомогательными программами. «Китайскому приятелю» это помогло, но после первого (и пока последнего) сброса на заводские настройки GPS стал ловить еще хуже — оставлял на час на открытом воздухе в на поиск спутников и никакого результата. И вот сегодня я начал опять искать тот полезный пост в блоге livejournal и наткнулся на обновление в шапке поста:
image

«Фантастика!» подумал я и без промедления перешел по ссылке. По сравнению с первым постом в этот раз предлагались еще более конкретные действия, а именно заменить содержимое файла gps.conf (его можно найти по пути /etc/gps.conf, должны быть root-права) на следующие настройки:

NTP_SERVER=ua.pool.ntp.org
NTP_SERVER=0.ua.pool.ntp.org
NTP_SERVER=1.ua.pool.ntp.org
NTP_SERVER=2.ua.pool.ntp.org
NTP_SERVER=3.ua.pool.ntp.org
NTP_SERVER=europe.pool.ntp.org
NTP_SERVER=0.europe.pool.ntp.org
NTP_SERVER=1.europe.pool.ntp.org
NTP_SERVER=2.europe.pool.ntp.org
NTP_SERVER=3.europe.pool.ntp.org
XTRA_SERVER_1=/data/xtra.bin
AGPS=/data/xtra.bin
AGPS=http://xtra1.gpsonextra.net/xtra.bin
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
DEFAULT_AGPS_ENABLE=TRUE
DEFAULT_USER_PLANE=TRUE
REPORT_POSITION_USE_SUPL_REFLOC=1
QOS_ACCURACY=50
QOS_TIME_OUT_STANDALONE=60
QOS_TIME_OUT_agps=89
QosHorizontalThreshold=1000
QosVerticalThreshold=500
AssistMethodType=1
AgpsUse=1
AgpsMtConf=0
AgpsMtResponseType=1
AgpsServerType=1
AgpsServerIp=3232235555
INTERMEDIATE_POS=1
C2K_HOST=c2k.pde.com
C2K_PORT=1234
SUPL_HOST=FQDN
SUPL_HOST=lbs.geo.t-mobile.com
SUPL_HOST=supl.google.com
SUPL_PORT=7276
SUPL_SECURE_PORT=7275
SUPL_NO_SECURE_PORT=3425
SUPL_TLS_HOST=FQDN
SUPL_TLS_CERT=/etc/SuplRootCert
ACCURACY_THRES=5000
CURRENT_CARRIER=common


Эти настройки рассчитаны на жителей Украины, но для жителей России их очень легко адаптировать заменив ua.pool на ru.pool.

Далее нужно перезагрузить Android, а затем запустить программу для работы с GPS и наслаждаться стабильным сигналом.

image

От себя могу добавить, что я пользуюсь приложением GPS Status и после перезагрузки при первом запуске приложения я сделал сброс данных кэша: в программе вызываем меню, далее выбираем Tools, там Manage A-GPS state и жмем Reset, а затем Download.

Снимаю шляпу перед автором оригинального поста, уважаемым mechanicuss. Его совет помог не только мне, и может помочь еще многим страдающим.

На этом все. Всем чистого неба и стабильного сигнала из космоса.
@Woonder64
карма
6,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (73)

  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Вы не одиноки с Link'ом. До и после внесений изменений бесконечный поиск. «Починилось» указанной ниже в комментах программой FasterGPS.
    • 0
      Можете попробовать вот эту программу: play.google.com/store/apps/details?id=ru.bars.qagps
      Писали по моему заказу — она по расписанию или при зарядке включает WiFi, и загружает альманах GPS.

      Помогает тем, кто не держит постоянно включенным Интернет.
      • 0
        Отличная идея для автоматизации. Спасибо.

        А не могли бы вы поподробнее рассказать о создании программы? Сколько это стоило по деньгам, времени и усилиям, как нашли программиста, как с ним взаимодействовали и всё в таком духе. Для людей, далеких от разработки, это было бы полезным.
        • +1
          Разработка стоила 0, программист был лично знакомый, это была его первая программа…
          Не думаю, что этот пример будет интересен )
  • –1
    Зачем репостить инфу из других форумов?
    Давно знаю про это с форумов 4pda, никаких тут секретов и откровений нет — телефон настроен на регион, в котором ты его покупаешь.
    Кроме того, параметры gps не во всех прошивках всех телефонов будут одинаковы. У меня, например, конфиг гораздо короче и я поправил только ntp сервер на белорусский. Действительно быстрее работает.
    • +6
      Мы очень рады, что Вы давно это знали уже и у Вас все настроено. Но статья писалась для всех, кому нужно, тот читает, кому нет, проходит дальше. Я этого не знал и для меня это стало открытием, мне очень помогла она
      • –1
        если бы это не гуглилось за пять минут — я бы ничего не писал.
        • +11
          Дело в том, что не все знают, что это ВООБЩЕ можно как либо ускорить. Я не знаю детальных принципов работы GPS и поэтому, если не подобная статья, чудом попавшая мне на глаза, я бы и дальше сидел и ждал по 10 минут, пока спутники найдет
          • +9
            дело в том, что если вас не устраивает gps и вам это интересно, вы начинаете пользоваться поиском. И тут же находите все что надо. С учетом модели вашего телефона, который может вообще не содержать gps.conf.
            Или конфиг может содержать нестандартные, но обязательные для вашего телефона поля. А вы радостно копируете конфиг с любимого хабра и чешете репу, а чего это стало не лучше, а хуже и где вообще мой гпс???
            Статья аредная. Никаких толком пояснений и вида «Ух ты, нашел под свой телефон солюшн!». Такое в блог нормально, но не как статью.
            • 0
              Нет, я тут коммент решил оставить изза Ваших слов — "… Давно знаю про это..."
              • +3
                В далекие 4 года назад, когда я купил свой samsung i 740, он ловил спутники 2-3 минуты на горячую и 6-10 минут на холодную.
                Я решил, что это странно, погуглил модель GPS модуля (SirfStar III LT), посмотрел, что такие стоят в куче навитаторов, на которые никто не жалуется, погуглил, нашел FAQ на 4pda, гласячий — ставьте тулзу для управления модулем, включайте режим sirf star binary, отключайте static navigation. Делать после каждого включения телефона т.к. настройки не запоминаются.
                Скриптово не нашел как делать.
                Тем не менее проблема была решена. Холодный старт около 30 секунд.

                Выбирая новый телефон себе или друзьям, я ищу про него различного рода инфу — брак, основные недоделки, с чем придется столкнуться или возможно придется повозиться.
                Использую 4pda. Почти реклама.
                Просматриваю FAQ для выбранных моделей.
                Обычно почти для любого есть пункт GPS.

                В своем нынешнем телефоне (у меня чуть больше года) GPS не трогал первый год. Меня все устраивало, спутники находил быстро, точность достаточная.
                Потом в поисках инфы о свежей прошивке (все жду андроид 4.1) все же из праздного любопытства «да ладно, можно лучше?» открыл пункт мануала. Там две рекомендации — если используете не в том регионе — поменяйте пул и залейте эфемериды.
                Попробовал — да, стало еще быстрее. Даже дома начал ловить до 5ти спутников. Видимо, ККС начал использовать местную, а не забугорную.

                Суть — RTFM.
                А если лень сразу — то читайте по мере необходимости или доставучести проблемы.

                Поэтому я думаю об этом посте как о достойной записи в личный блог.
                • 0
                  Просто интересно: каким образом настройки фильтра позиции (Static navigation) влияют на скорость старта устройства? То есть я могу предположить, что там есть какое-то неявное влияние, но вообще эта настройка обязана влиять только на выдачу уже определенных приемником координат, а не на скорость начала их определения на более низком уровне.
                  • –1
                    Статическая навигация это попытка усреднить координаты исходя из того, что объект неподвижен. В движении будет мешать точному определению координат.
                    На скорость нахождения спутников не влияет.
                    • +1
                      Вот и я об этом. Если быть совсем точным — это фильтр, сглаживающий мгновенные изменения вектора скорости. Применяется он к текущим координатам на основании последовательности определенных ранее. При стоянии на месте — ликвидирует «дрожание» координат, при начале движения некоторое время заставляет приемник «не замечать» этого, а при изменении направления движения сглаживает угол трека, создавая впечатление «заноса».
                      Спросил именно по той причине, что не могу себе представить связь этого фильтра и холодного/теплого старта, и все это смахивает на очередное «шаманство» без понимания механизмов. Вроде «открыть и закрыть капот, если машина не заводится».
                      • 0
                        Дело в том, что в моем старом телефоне стат навигация авттматически включается при переходе в режим сирф байнари. Поэтому ее нужно отключать и акцент на этом все же важен.
          • +3
            дополню.
            Оказалось, вам рут нужен. И вы радостно шьетесь кривым рутованным ядром хорошо если от вашего аппарата и превращаете его в кирпич. А ведь никто в статье не предепредил вас.
            Есть для таких вещей спец. форумы, сайты и т.п.
            Хабр, конечно, IT ресурс, но как вы по себе могли заметить, вы не такой здоровский юзер, как могло казаться ранее, ведь даже гуглом не попользовались чообы решить свои проблемы с навигацией. Может не так сильно вам это мешало? Так значит и сами ы нашли, если бы совсем достало.
            • –1
              Я привык пользоваться нормальной техникой, которая из коробки работает нормально и без напильника. А тут купил и подумал, что может у андроида фишка такая, что он хреново ловит спутники (остался осадок от КПК с виндой, где холодный запуск проходил на открытом воздухе, стоя на месте и в черении 10-15 минут). Когда юзал КПК, я думал это нормально, что так и должно быть
              • 0
                А она нормально и работает. Просто покупайте в своем регионе.
                • –1
                  Вы меня за дурака считаете? Я телефон свой в фирменном магазине HTC покупал (в своем регионе)
                  • +1
                    не считал и не считаю. Но все симптомы говорили о не верном регионе в прошивке, а это странно для телефона, купленного вами.
                  • 0
                    Больше скажу. Если бы наши и ваши опсосы нормально поддерживали a gps, то и тем таких не встречалось.
                    • +1
                      Никак не связан AGPS с операторами сотовой связи. Телефон отсылает в google какие видит вокруг сотовые сети и wifi точки доступа и он ему в ответ координаты где это находится. А если включен GPS-приемник, то телефон отсылает свою координату и точки которые рядом, тем самым пополняя базу данных.
                      • –1
                        Ага, видит он базовую станцию. А она координаты свои не отдает. И чем это вам поможет?
                        • 0
                          Гугл (и не только) давно насобирал базу соответствия между координатами и сочитанием CID, LAC, MNC, MCC, которые передает БС сотового оператора. Поиграть в это можно здесь 114.142.154.28/LBSY/ например.
    • +3
      Это не сервер, а пул серверов. Можно просто указать только один адрес pool.ntp.org и забыть о проблеме.
      Что конкретно поменялось у автора статьи мне не понятно. Может теперь GPS стал тупо брать параметры от сотовых вышек и потом уже подводиться по спутникам, вот и кажется что быстро (google знает с точностью до пары метров где моя wifi точка :)
    • 0
      Вы бы привели ссылку на другие форумы всё-таки. А топикстартеру большое спасибо за поднятие вопроса — я, вот, например, и не подозревал, что наконец-то заставить работать GPS на девайсе настолько просто.
      • 0
        • 0
          Тогда уж site:4pda.ru. Видимо, изначально вы имели в виду эту тему? Здешний топик всё же побогаче данными.
          • 0
            Я имел в виду, инфу найти проще простого, туча описаний под тучу девайсов.
            И мануалы точно так же работают.
  • 0
    У меня на HTC прописан сервер из north-america. Рут прав, к сожалению, нет, чтобы заменить и попробовать.
  • +1
    На кастомных прошивках, в т.ч. Cyanogen Mod чаще всего прописана Северная Америка, надо ее забывать его менять. Но Inquisitor прав, это было известно больше двух лет назад, об этом написано на многих форумах.
  • 0
    а есть ли способы без root привилегий?
    • 0
      GPS status вроде не требует рут прав для заливки альманаха. Н
      Это поможет, если примерное местоположение вы определяете по сотовым вышкам.
  • +7
    А что конкретно поменялось в gps.conf кроме ntp-сервера, который, собственно, и из американского пула будет работать (ну пусть дольше на пару секунд)?
    Что означает какой параметр?
    Или изменилось то, что раньше альманах xtra1.gpsonextra.net/xtra.bin не подгружался?
  • +3
    На самом деле, скорость работы GPS зависит от точного времени на телефоне. Это касается всех телефонов с GPS модулем, не только андроидов. У меня была похожая проблема на iphone 3GS — спутники очень долго находит или совсем не находит.

    Оказалось, что в телефоне не точное время. Толи сотовый провайдер не поддерживает синхронизацию времени, толи еще что-то. Но стоило синхронизировать время через интернет 1 раз — телефон несколько дней находит спутники за 6-25 секунд в любую погоду. До тех пор пока время на телефоне не «уйдет» в большую погрешность. Я синхронизирую время при помощи утилиты NTPdate через вайфай.

    • +2
      GPS модуль, получив сигнал от первого найденного спутника, синхронизирует свое время (да, оно у него есть независимо от телефонного), альманах и эфемериды. А затем остальные еще не найденный спутники находит, используя полученные данные т.к. это избавляет от необходимости пытаться искать спутники, которые в данный момент времени точно не в зоне приема.
      • 0
        Погрешность определения времени по сигналу одного спутника — порядка 10 мс. С ntp сервера время подтягивается примерно с такой же точностью.

        Проблема как раз найти этот первый спутник, а этому при схемах поисках, используемых всякими qualcomm'ами, очень способствует наличие точного времени и свежих эфемерид.
    • 0
      Технически, отклонение времени даже на десяток минут на это влиять катастрофически не должно, хотя определенное влияние — оказывает.
    • 0
      У меня на андроиде всё заработало (со скачиваемым альманахом) и без синхроницации времени.
  • +7
    Для тех кому лень подключать телефон к компьютеру и править на нем конфиг есть утилитка для этого: FasterGPS
  • +4
    на 4pda уже давным-давно это все расписано.
    • +3
      Вот и я говорю — хочешь настроить телефон — идешь на спец. форум.
  • 0
    Для изменения gps.conf уже даже есть отдельное приложение.
  • +7
    Уже подумалось, что на хабре таки будет подробное описание каждого пункта и «что для чего делаем». А тут очередная копипаста.
  • +1
    А это нормально, что в этом конфиге дублируются поля?
    NTP_SERVER=ua.pool.ntp.org
    NTP_SERVER=0.ua.pool.ntp.org
    NTP_SERVER=1.ua.pool.ntp.org
    NTP_SERVER=2.ua.pool.ntp.org
    NTP_SERVER=3.ua.pool.ntp.org

    NTP_SERVER=europe.pool.ntp.org
    NTP_SERVER=0.europe.pool.ntp.org
    NTP_SERVER=1.europe.pool.ntp.org
    NTP_SERVER=2.europe.pool.ntp.org
    NTP_SERVER=3.europe.pool.ntp.org
    • +2
      Да, в два раза быстрее будет ловить спутники.
      Но специалисты рекомендуют дублировать поля раз пять-шесть, чтобы достичь наиболее оптимальный результат
      • +1
        мм, откуда вы так уверены в семантике этих строк?.. А ну как означает это не переопределение одиночной переменной, а пополнение списка?? :)
    • 0
      Я не стал изобретать непроверенных решений и у себя сделал банальный конфиг:
      NTP_SERVER=ru.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=supl.google.com
      SUPL_PORT=7276

      Ай да парсер! Ай да сукин сын! Не захотел переносы строк в теге code кушать.
      • 0
        Разобрался — AgpsUse=1 — вот что ускоряет работу и GPS-приложение GPS-Test приведенный в данной статье берет информацию из AGPS в то время когда ищет спутники или теряет их и в итоге получение координат происходит быстрее.
        • 0
          По-моему, практически везде A-GPS должен быть по дефолту включен.
          А вот уже указанные выше параметры влияют на получение нужной информации для A-GPS. К примеру, на CyanogenMod на моем HTC Wildfire S, GPS тоже долго искал, пока я не прописал русский NTP-пул и не указал SUPL_HOST и SUPL_PORT. После этого A-GPS сразу стал работать как надо.
  • +2
    Непонятно… ntp.server помогают только если интернет доступен? То есть без интернета, холодный старт все равно будет долго работать?
    И еще вопрос, как можно GPS подсказать, где ты находишься, не имея интернета. Влияет ли на это само время на телефоне, например, переехал, а часы перевести забыл.
    • 0
      Да, это только для интернета. Решение «без интернета» — в моем комменте выше.

      Неточное время на телефоне — ухудшает время горячего/теплого фикса, но не фатально.
  • 0
    Я правильно понимаю, что это относится только к устройствам с A-GPS?
    • +1
      Все, что gps-ресивер может использовать для ускорения холодного старта, если он не поддерживает aGPS, это точное время и приблизительные координаты текущего положения. xtra.bin для него, естественно, бесполезен, т.к. он не умеет брать эфемериды из файлов.
      • 0
        Умеет на самом деле. A-GPS умеет получать их из сотовых сетей, а простой GPS умеет хранить в памяти.
        • 0
          Уточнение если он не поддерживает aGPS вы, видимо, не заметили.

          Ресиверы без поддержки assisted gps умеют хранить в памяти только текущий альманах, полученный со спутника. Подсовывание им данных альманаха путем непосредственной записи чего-то в память стандартной пряктикой не является.
          • 0
            Заметил. И это не верно.
            Как же работают автомобильные навигаторы, находящие спутники за 30 секунд с холодного старта? Видимо, это колдовство? :)
            Flash память есть для этого в GPS модулях. В том же SIRF Star III есть память для эфемерид и альманаха. В LT версии она тоже есть, но не всегда используется из драйверов модуля в телефонах (в моем i740 не используется драйвером, зануляется при ребуте, но может быть заполнена софтверно и используется при поиске спутников).
            Так это уже далеко не самый интересный GPS модуль.
            И сама по себе идея хранить альманах — ведь затем он и хранится, чтобы ускорить следующий старт.
            Кроме того, A-GPS — это все же расширение над GPS.
            • +1
              Вы все валите в кучу и зациклились на телефонах и новых ресиверах. А меж тем есть еще и старые, где кроме альманаха, который получен со спутника, ничего не хранится, и стандартными командами туда ничего никак через интерфейс не положить.

              Для Sirf IV в даташите написано «холодный старт за 30 секунд», а перед этим дано определение, что такое «холодный старт»: ни альманаха, ни эфемериса, только точное время.
              Так что 30 секунд вместо 13 минут достигается иным способом, а не хранением альманаха где-то в секретном месте. Холодный старт остается холодным. Просто обычное хранение актуального альманаха делает старт из холодного теплым. Некоторые новые приемники, к слову, вообще может быть возможно запустить с холодного старта только по специальной команде или если устройство лишено любого питания, как внешнего, так и внутреннего.

              AGPS — это не «расширение над GPS», а собирательное название разных вспомогательных технологий (некоторые конторы разное понимают под assistance), которые ускоряют или уточняют определение координат дополнительно путем хранения предсказанных эфемерид, получения начальной позиции по сотовым вышкам и так далее.
              • 0
                А я разве что-то другое написал?
                • 0
                  Да, вы неким образом смешали в кучу обычный теплый старт приемников без всякого aGPS и «подогретый» холодный — с его поддержкой. Это разные процессы.
                  • 0
                    Теплый старт GPS приемника не обязывает его быть A-GPS приемником.
                    Я так понял, вы уверены в обратном?
                    • 0
                      Вы неправильно поняли. Читайте всю ветку заново.
  • 0
    На xda есть ветка AGPS Patch 3.1 у меня desire s ловит спутники моментально, иногда меньше чем 5 сек.
  • 0
    а если gps.conf вообще нет и не было, но все шустренько работает за 10 секунд? zopo 500, 4.0.3.
  • 0
    ну я лично постоянно тоже корректировал ручками gps.conf, особенно когда прошивку менял. Но потом нашёл программку которая выбираю страну и т.д. почти тоже самое настраивает и телефон за 20-30 сек тоже начинает ловить.
    play.google.com/store/apps/details?id=org.fastergps&hl=ru
    • 0
      Строго говоря, 30 секунд — это время холодного (то есть не ускоренного ни чем кроме точного времени) старта для современных gps-чипов, в соответствии с тем, что написано в datasheet. А если все происходило дольше, то это указывает на то, что раньше нормальному определению координат не только ничего не помогало, но и что-то мешало.
      • 0
        Все очень просто очень долго у меня определяет потому что ntp serevera штатов по умолчанию стоят у меня по крайней мере в galaxy nexus. Так что ничего как бы не мешает кроме этого, а бывает и быстрее старт, но если гпс не вырубать вовсе.
  • 0
    Вот если бы было описание работы и возможных значений для всех полей, а не только NTP-серверов — было бы прекрасно. А так — не раскрыта тема до конца, к сожалению.
    • +1
      FasterGPS в гуглплее лежит. Она редактирует gps.conf через и подсказывает какие значения могут быть.
  • 0
    Мучился такой же проблемой на своем Huawei Shine, никакие пляски с бубном не помогали, перепробовал все тайм-зоны. Помогло только включение опции EPO (прогноз траекторий движения спутников, обновлять нужно раз в месяц) и часовой первый прогон с программой Статус GPS, которая фигурирует в вашей статье, дабы проинициализировать, в дальнейшем подключается менее чем за минуту. При этом gps.conf настроен на Европу, собственно в таком виде, в каком он мне пришел из Поднебесной.
  • 0
    Вот тут кто-то обьясняет, почему не нужна куча NTP серверов и что все гайды неверны :)
    • 0
      Спасибо за поправки. Я подозревал про ненужность FQDN, но вот про такое сильное торможение при множественных серверах — ценное уточнение.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.