MyTetra Share
Делитесь знаниями!
Как исправить настройки GPS чтобы быстро искались спутники на Huawei Honor 6
Время создания: 03.01.2019 16:00
Текстовые метки: android, андроид, huawei, honor, gps, ГЛОНАСС, GLONASS, спутники, поиск, альманах
Раздел: Компьютер - Android
Запись: xintrea/mytetra_syncro/master/base/1546520452yu93ugeho3/text.html на raw.github.com

В какой-то момент телефон Huawei Honor 6 начал постоянно терять спутники. В Интернете пишут, что это происходит потому, что в новых прошивках, которые прилетают "по воздуху", сделаны некорректные настройки для работы с GPS-обстановкой, которые справедливы для Китая, и очень плохо работают для других регионов земного шара. Ну то есть, китайцы тупо забывают поставить правильные настройки GPS в новую прошивку, и корпорация Huawei в этом не исключение.


Для исправления ситуации потребуются права Root, без этого никуда. В Интернете до недавнего времени не было вменяемой информации о получении Root на телефоне Huawei Honor 6. Поэтому пришлось самому разбираться с рутованием телефона, на что ушло несколько лет, потому что постоянно опускались руки. В результате была написана серия статей:





Имея права Root, можно начинать править настройки GPS.



Где хранятся настройки GPS


В операционной системе Android есть файл /system/etc/gps.conf. Именно в нем хранятся базовые настройки подсистемы GPS. Ненастроенный файл gps.conf выглядит примерно так:



NTP_SERVER=pool.ntp.org

XTRA_SERVER_1=http://gllto1.glpals.com/7day/v3/latest/lto2.dat

XTRA_SERVER_2=http://gllto2.glpals.com/7day/v3/latest/lto2.dat

XTRA_SERVER_3=http://gllto.glpals.com/7day/v4/latest/lto2.dat

SUPL_HOST=supl.google.com

SUPL_PORT=7275



Его нужно заменить на файл, специально настроенный для региона, где эксплуатируется телефонный аппарат.



Получение нового gps.conf


Существует онлайн-коллекция файлов gps.conf для разных регионов земного шара:



https://app.box.com/s/w57s1v1n3hie7l5lk28i



В этой коллекции несколько страниц, и на второй странице можно найти каталог для региона Russia, в котором лежит полный файл gps.conf. На момент написания статьи, его содержимое следующее:



NTP_SERVER=ntp2.ntp-servers.net

NTP_SERVER=ntp1.vniiftri.ru

NTP_SERVER=ntp2.vniiftri.ru

NTP_SERVER=ntp3.vniiftri.ru

NTP_SERVER=ntp4.vniiftri.ru

NTP_SERVER=ntp0.ntp-servers.net

NTP_SERVER=ntp1.ntp-servers.net

NTP_SERVER=ntp3.ntp-servers.net

NTP_SERVER=ntp4.ntp-servers.net

NTP_SERVER=ntp5.ntp-servers.net

NTP_SERVER=ntp6.ntp-servers.net

NTP_SERVER=ntp7.ntp-servers.net

NTP_SERVER=ntp.scx.ru

NTP_SERVER=ntp1.kangran.su

NTP_SERVER=ntp2.kangran.su

NTP_SERVER=ntp3.kangran.su

NTP_SERVER=ntp4.kangran.su

NTP_SERVER=ntp21.vniiftri.ru

NTP_SERVER=ntp.psn.ru

NTP_SERVER=ntp.vld.ru

NTP_SERVER=ntp.sonur.ru

NTP_SERVER=ntp.ab2b.ru

NTP_SERVER=rtr.firmacem.ru

NTP_SERVER=ntp.letinet.ru

NTP_SERVER=ru.pool.ntp.org

NTP_SERVER=0.ru.pool.ntp.org

NTP_SERVER=1.ru.pool.ntp.org

NTP_SERVER=2.ru.pool.ntp.org

NTP_SERVER=3.ru.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



Именно эти опции и нужно прописать в файл /system/etc/gps.conf.



Изменение файла gps.conf


Перед изменением данного файла, необходимо сделать его резервную копию. Для работы по копированию и изменению файла проще всего использовать утилиту adb на компьютере. Ведь команды удобнее набирать нормальной клавиатурой на экране компьютера, чем тыкаться по тачскрину с маленькими кнопочками.


Вначале надо через adb запустить шелл, который будет выполнять команды прямо на Android системе. Делается это так:



> ./adb shell

shell@hwH60:/ $  



Затем, чтобы иметь возможность изменять системные файлы Android, надо получить права суперпользователя, делается это командой su (уже внутри запущенного шелла, естественно). В результате SuperSu сделает запрос, можно ли шеллу давать права рута. Если нажать "Разрешить", то шелл заработает под рутовыми правами.


Теперь можно перейти в каталог с файлом и сделать его копию:



# cd /system/etc


# ls -la | grep gps

-rw-r--r-- root     root          253 2016-04-05 16:15 gps.conf

-rw-r--r-- root     root         3592 2016-04-05 16:15 gps4752config.xml

-rw-r--r-- root     root         9306 2016-04-05 16:15 gps4752config_cl.xml

-rw-r--r-- root     root         3660 2016-04-05 16:15 gps47531config.xml

-rw-r--r-- root     root         9428 2016-04-05 16:15 gps47531config_cl.xml


# cp gps.conf gps.conf.01  

cp: gps.conf.01: Read-only file system



Вот так сюрприз! Даже под рутом невозможно сделать копию файла в каталоге /system/etc. Почему? Потому что в Android всё что можно монтируется в Read Only, а остальное огораживается через SELinux. Поэтому без соответствующих разрешений в манифесте приложения, программы не могут нормально работать даже со сторонними флешками, не говоря уже о системных разделах.

Чтобы обойти эту проблему, нужно временно перемонрировать файловую систему, в которой находится каталог/system/etc в режим чтения-записи (rw).

Вначале следует определить точку монтирования:



# mount | grep system                                    

/dev/block/platform/hi_mci.0/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0



Для перемонтирования используется такая команда:



# mount -o rw,remount /system



Если перемонтировалось правильно, то новый режим будет rw:



# mount | grep system                                    

/dev/block/platform/hi_mci.0/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0



После этого команда cp для создания резервного файла сработает без ошибок.


Далее можно просто скопировать новое содержимое в буфер обмена компьютера, и дать команду:



# cat > gps.conf



после чего вставить текст из буфера обмена и нажать Ctrl+C для выхода из cat-программы. Следует следить, чтобы в файл прописалась и самая последняя строчка. Проверить содержимое файла можно командой:



# cat gps.conf



После этих действий надо дать два раза команду exit. Первая команда сделает выход из su, вторая команда - из шелла adb.


Все! После этого необходимо выйти на улицу, и запустить программу GPS Test. В настройках надо нажать «Clear AGPS», это очистит кэш от старых данных, после чего надо перезагрузить устройство. После чего снова надо запустить GPS Test и проверить работу GPS. Желательно проверять скорость поиска спутников на открытой местности.



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования